Merge branch 'cleanmaster' into modules

This commit is contained in:
Etienne Roudeix
2013-12-12 15:45:45 +01:00
19 changed files with 290 additions and 23 deletions

View File

@@ -106,7 +106,11 @@ class Category extends BaseCategory
public function preDelete(ConnectionInterface $con = null)
{
$this->dispatchEvent(TheliaEvents::BEFORE_DELETECATEGORY, new CategoryEvent($this));
$this->reorderBeforeDelete();
$this->reorderBeforeDelete(
array(
"parent" => $this->getParent(),
)
);
return true;
}

View File

@@ -9,6 +9,7 @@ use Propel\Runtime\Connection\ConnectionInterface;
class CategoryImage extends BaseCategoryImage
{
use \Thelia\Model\Tools\ModelEventDispatcherTrait;
use \Thelia\Model\Tools\PositionManagementTrait;
/**
@@ -52,4 +53,13 @@ class CategoryImage extends BaseCategoryImage
return $this->getCategoryId();
}
public function preDelete(ConnectionInterface $con = null)
{
$this->reorderBeforeDelete(
array(
"category_id" => $this->getCategoryId(),
)
);
return true;
}
}

View File

@@ -7,6 +7,7 @@ use Propel\Runtime\Connection\ConnectionInterface;
class ContentImage extends BaseContentImage
{
use \Thelia\Model\Tools\ModelEventDispatcherTrait;
use \Thelia\Model\Tools\PositionManagementTrait;
/**
@@ -49,4 +50,14 @@ class ContentImage extends BaseContentImage
{
return $this->getContentId();
}
public function preDelete(ConnectionInterface $con = null)
{
$this->reorderBeforeDelete(
array(
"content_id" => $this->getContentId(),
)
);
return true;
}
}

View File

@@ -94,7 +94,11 @@ class Folder extends BaseFolder
public function preDelete(ConnectionInterface $con = null)
{
$this->dispatchEvent(TheliaEvents::BEFORE_DELETEFOLDER, new FolderEvent($this));
$this->reorderBeforeDelete();
$this->reorderBeforeDelete(
array(
"parent" => $this->getParent(),
)
);
return true;
}

View File

@@ -7,6 +7,7 @@ use Propel\Runtime\Connection\ConnectionInterface;
class FolderImage extends BaseFolderImage
{
use \Thelia\Model\Tools\ModelEventDispatcherTrait;
use \Thelia\Model\Tools\PositionManagementTrait;
/**
@@ -49,4 +50,14 @@ class FolderImage extends BaseFolderImage
{
return $this->getFolderId();
}
public function preDelete(ConnectionInterface $con = null)
{
$this->reorderBeforeDelete(
array(
"folder_id" => $this->getFolderId(),
)
);
return true;
}
}

View File

@@ -7,6 +7,7 @@ use Propel\Runtime\Connection\ConnectionInterface;
class ProductImage extends BaseProductImage
{
use \Thelia\Model\Tools\ModelEventDispatcherTrait;
use \Thelia\Model\Tools\PositionManagementTrait;
/**
@@ -49,4 +50,14 @@ class ProductImage extends BaseProductImage
{
return $this->getProductId();
}
public function preDelete(ConnectionInterface $con = null)
{
$this->reorderBeforeDelete(
array(
"product_id" => $this->getProductId(),
)
);
return true;
}
}

View File

@@ -199,19 +199,26 @@ trait PositionManagementTrait {
}
}
protected function reorderBeforeDelete()
protected function reorderBeforeDelete($fields = array())
{
// Find DATABASE_NAME constant
$mapClassName = self::TABLE_MAP;
$sql = sprintf("UPDATE `%s` SET position=(position-1) WHERE parent=:parent AND position>:position", $mapClassName::TABLE_NAME);
$data = array();
$whereCriteria = array();
foreach($fields as $field => $value) {
$whereCriteria[] = $field . '=:' . $field;
$data[':' . $field] = $value;
}
$data[':position'] = $this->getPosition();
$sql = sprintf("UPDATE `%s` SET position=(position-1) WHERE " . (count($whereCriteria)>0 ? implode(" AND ", $whereCriteria) : '1') . " AND position>:position", $mapClassName::TABLE_NAME);
$con = Propel::getConnection($mapClassName::DATABASE_NAME);
$statement = $con->prepare($sql);
$statement->execute(array(
':parent' => $this->getParent(),
':position' => $this->getPosition()
));
$statement->execute($data);
}
}