Merge branch 'master' into frontend
This commit is contained in:
@@ -28,6 +28,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Thelia\Core\Event\Document\DocumentCreateOrUpdateEvent;
|
||||
use Thelia\Core\Event\Document\DocumentDeleteEvent;
|
||||
use Thelia\Core\Event\Document\DocumentEvent;
|
||||
use Thelia\Core\Event\UpdateFilePositionEvent;
|
||||
use Thelia\Exception\ImageException;
|
||||
use Thelia\Model\ConfigQuery;
|
||||
use Thelia\Tools\FileManager;
|
||||
@@ -195,6 +196,11 @@ class Document extends BaseCachedFile implements EventSubscriberInterface
|
||||
$event->setModelDocument($event->getModelDocument());
|
||||
}
|
||||
|
||||
public function updatePosition(UpdateFilePositionEvent $event)
|
||||
{
|
||||
return $this->genericUpdatePosition($event->getQuery(), $event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Take care of deleting document in the database and file storage
|
||||
*
|
||||
@@ -218,6 +224,7 @@ class Document extends BaseCachedFile implements EventSubscriberInterface
|
||||
TheliaEvents::DOCUMENT_DELETE => array("deleteDocument", 128),
|
||||
TheliaEvents::DOCUMENT_SAVE => array("saveDocument", 128),
|
||||
TheliaEvents::DOCUMENT_UPDATE => array("updateDocument", 128),
|
||||
TheliaEvents::DOCUMENT_UPDATE_POSITION => array("updatePosition", 128),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Thelia\Core\Event\Image\ImageCreateOrUpdateEvent;
|
||||
use Thelia\Core\Event\Image\ImageDeleteEvent;
|
||||
use Thelia\Core\Event\Image\ImageEvent;
|
||||
use Thelia\Core\Event\UpdateFilePositionEvent;
|
||||
use Thelia\Model\ConfigQuery;
|
||||
use Thelia\Tools\FileManager;
|
||||
use Thelia\Tools\URL;
|
||||
@@ -301,6 +302,11 @@ class Image extends BaseCachedFile implements EventSubscriberInterface
|
||||
$event->setModelImage($event->getModelImage());
|
||||
}
|
||||
|
||||
public function updatePosition(UpdateFilePositionEvent $event)
|
||||
{
|
||||
return $this->genericUpdatePosition($event->getQuery(), $event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Take care of deleting image in the database and file storage
|
||||
*
|
||||
@@ -441,6 +447,7 @@ class Image extends BaseCachedFile implements EventSubscriberInterface
|
||||
TheliaEvents::IMAGE_DELETE => array("deleteImage", 128),
|
||||
TheliaEvents::IMAGE_SAVE => array("saveImage", 128),
|
||||
TheliaEvents::IMAGE_UPDATE => array("updateImage", 128),
|
||||
TheliaEvents::IMAGE_UPDATE_POSITION => array("updatePosition", 128),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,6 +59,11 @@
|
||||
<requirement key="parentType">.*</requirement>
|
||||
<requirement key="parentId">\d+</requirement>
|
||||
</route>
|
||||
<route id="admin.image.update-position" path="/admin/image/type/{parentType}/{parentId}/update-position">
|
||||
<default key="_controller">Thelia\Controller\Admin\FileController::updateImagePositionAction</default>
|
||||
<requirement key="parentType">.*</requirement>
|
||||
<requirement key="parentId">\d+</requirement>
|
||||
</route>
|
||||
<route id="admin.image.update.view" path="/admin/image/type/{parentType}/{imageId}/update" methods="get">
|
||||
<default key="_controller">Thelia\Controller\Admin\FileController::viewImageAction</default>
|
||||
<requirement key="parentType">.*</requirement>
|
||||
@@ -90,6 +95,11 @@
|
||||
<requirement key="parentType">.*</requirement>
|
||||
<requirement key="parentId">\d+</requirement>
|
||||
</route>
|
||||
<route id="admin.document.update-position" path="/admin/document/type/{parentType}/{parentId}/update-position">
|
||||
<default key="_controller">Thelia\Controller\Admin\FileController::updateDocumentPositionAction</default>
|
||||
<requirement key="parentType">.*</requirement>
|
||||
<requirement key="parentId">\d+</requirement>
|
||||
</route>
|
||||
<route id="admin.document.update.view" path="/admin/document/type/{parentType}/{documentId}/update" methods="get">
|
||||
<default key="_controller">Thelia\Controller\Admin\FileController::viewDocumentAction</default>
|
||||
<requirement key="parentType">.*</requirement>
|
||||
|
||||
@@ -25,6 +25,7 @@ namespace Thelia\Controller\Admin;
|
||||
|
||||
use Propel\Runtime\Exception\PropelException;
|
||||
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
||||
use Thelia\Core\Event\UpdateFilePositionEvent;
|
||||
use Thelia\Core\HttpFoundation\Response;
|
||||
use Thelia\Core\Security\Resource\AdminResources;
|
||||
use Thelia\Core\Event\Document\DocumentCreateOrUpdateEvent;
|
||||
@@ -519,6 +520,8 @@ class FileController extends BaseAdminController
|
||||
*/
|
||||
public function deleteImageAction($imageId, $parentType)
|
||||
{
|
||||
$message = null;
|
||||
|
||||
$this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE);
|
||||
$this->checkXmlHttpRequest();
|
||||
|
||||
@@ -569,14 +572,134 @@ class FileController extends BaseAdminController
|
||||
'image'
|
||||
)
|
||||
);
|
||||
$message = $this->getTranslator()
|
||||
->trans(
|
||||
'Fail to delete image for %id% with parent id %parentId% (Exception : %e%)',
|
||||
array(
|
||||
'%id%' => $imageDeleteEvent->getImageToDelete()->getId(),
|
||||
'%parentId%' => $imageDeleteEvent->getImageToDelete()->getParentId(),
|
||||
'%e%' => $e->getMessage()
|
||||
),
|
||||
'image'
|
||||
);
|
||||
}
|
||||
|
||||
$message = $this->getTranslator()
|
||||
->trans(
|
||||
'Images deleted successfully',
|
||||
array(),
|
||||
'image'
|
||||
if(null === $message) {
|
||||
$message = $this->getTranslator()
|
||||
->trans(
|
||||
'Images deleted successfully',
|
||||
array(),
|
||||
'image'
|
||||
);
|
||||
}
|
||||
|
||||
return new Response($message);
|
||||
}
|
||||
|
||||
public function updateImagePositionAction($parentType, $parentId)
|
||||
{
|
||||
$message = null;
|
||||
|
||||
$imageId = $this->getRequest()->request->get('image_id');
|
||||
$position = $this->getRequest()->request->get('position');
|
||||
|
||||
$this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE);
|
||||
$this->checkXmlHttpRequest();
|
||||
|
||||
$fileManager = new FileManager($this->container);
|
||||
$imageModelQuery = $fileManager->getImageModelQuery($parentType);
|
||||
$model = $imageModelQuery->findPk($imageId);
|
||||
|
||||
if ($model === null || $position === null) {
|
||||
return $this->pageNotFound();
|
||||
}
|
||||
|
||||
// Feed event
|
||||
$imageUpdateImagePositionEvent = new UpdateFilePositionEvent(
|
||||
$fileManager->getImageModelQuery($parentType),
|
||||
$imageId,
|
||||
UpdateFilePositionEvent::POSITION_ABSOLUTE,
|
||||
$position
|
||||
);
|
||||
|
||||
// Dispatch Event to the Action
|
||||
try {
|
||||
$this->dispatch(
|
||||
TheliaEvents::IMAGE_UPDATE_POSITION,
|
||||
$imageUpdateImagePositionEvent
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
|
||||
$message = $this->getTranslator()
|
||||
->trans(
|
||||
'Fail to update image position',
|
||||
array(),
|
||||
'image'
|
||||
) . $e->getMessage();
|
||||
}
|
||||
|
||||
if(null === $message) {
|
||||
$message = $this->getTranslator()
|
||||
->trans(
|
||||
'Image position updated',
|
||||
array(),
|
||||
'image'
|
||||
);
|
||||
}
|
||||
|
||||
return new Response($message);
|
||||
}
|
||||
|
||||
public function updateDocumentPositionAction($parentType, $parentId)
|
||||
{
|
||||
$message = null;
|
||||
|
||||
$documentId = $this->getRequest()->request->get('document_id');
|
||||
$position = $this->getRequest()->request->get('position');
|
||||
|
||||
$this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE);
|
||||
$this->checkXmlHttpRequest();
|
||||
|
||||
$fileManager = new FileManager($this->container);
|
||||
$documentModelQuery = $fileManager->getDocumentModelQuery($parentType);
|
||||
$model = $documentModelQuery->findPk($documentId);
|
||||
|
||||
if ($model === null || $position === null) {
|
||||
return $this->pageNotFound();
|
||||
}
|
||||
|
||||
// Feed event
|
||||
$documentUpdateDocumentPositionEvent = new UpdateFilePositionEvent(
|
||||
$fileManager->getDocumentModelQuery($parentType),
|
||||
$documentId,
|
||||
UpdateFilePositionEvent::POSITION_ABSOLUTE,
|
||||
$position
|
||||
);
|
||||
|
||||
// Dispatch Event to the Action
|
||||
try {
|
||||
$this->dispatch(
|
||||
TheliaEvents::DOCUMENT_UPDATE_POSITION,
|
||||
$documentUpdateDocumentPositionEvent
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
|
||||
$message = $this->getTranslator()
|
||||
->trans(
|
||||
'Fail to update document position',
|
||||
array(),
|
||||
'document'
|
||||
) . $e->getMessage();
|
||||
}
|
||||
|
||||
if(null === $message) {
|
||||
$message = $this->getTranslator()
|
||||
->trans(
|
||||
'Document position updated',
|
||||
array(),
|
||||
'document'
|
||||
);
|
||||
}
|
||||
|
||||
return new Response($message);
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ class SessionController extends BaseAdminController
|
||||
$this->getSecurityContext()->setAdminUser($user);
|
||||
|
||||
// Log authentication success
|
||||
AdminLog::append("admin", "LOGIN", "Authentication successful", $request, $user);
|
||||
AdminLog::append("admin", "LOGIN", "Authentication successful", $request, $user, false);
|
||||
|
||||
/**
|
||||
* FIXME: we have tou find a way to send cookie
|
||||
|
||||
@@ -147,7 +147,7 @@ abstract class BaseController extends ContainerAware
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Symfony\Component\HttpFoundation\Request
|
||||
* @return \Thelia\Core\HttpFoundation\Request
|
||||
*/
|
||||
protected function getRequest()
|
||||
{
|
||||
|
||||
@@ -408,6 +408,7 @@ final class TheliaEvents
|
||||
* Save given documents
|
||||
*/
|
||||
const DOCUMENT_UPDATE = "action.updateDocument";
|
||||
const DOCUMENT_UPDATE_POSITION = "action.updateDocumentPosition";
|
||||
|
||||
/**
|
||||
* Delete given document
|
||||
@@ -428,6 +429,7 @@ final class TheliaEvents
|
||||
* Save given images
|
||||
*/
|
||||
const IMAGE_UPDATE = "action.updateImages";
|
||||
const IMAGE_UPDATE_POSITION = "action.updateImagePosition";
|
||||
|
||||
/**
|
||||
* Delete given image
|
||||
|
||||
60
core/lib/Thelia/Core/Event/UpdateFilePositionEvent.php
Normal file
60
core/lib/Thelia/Core/Event/UpdateFilePositionEvent.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* */
|
||||
/* Thelia */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : info@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* This program is free software; you can redistribute it and/or modify */
|
||||
/* it under the terms of the GNU General Public License as published by */
|
||||
/* the Free Software Foundation; either version 3 of the License */
|
||||
/* */
|
||||
/* This program is distributed in the hope that it will be useful, */
|
||||
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
|
||||
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
|
||||
/* GNU General Public License for more details. */
|
||||
/* */
|
||||
/* You should have received a copy of the GNU General Public License */
|
||||
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
/* */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace Thelia\Core\Event;
|
||||
|
||||
use Propel\Runtime\ActiveQuery\ModelCriteria;
|
||||
|
||||
class UpdateFilePositionEvent extends UpdatePositionEvent
|
||||
{
|
||||
protected $query;
|
||||
|
||||
/**
|
||||
* @param ModelCriteria $query
|
||||
* @param $object_id
|
||||
* @param null $mode
|
||||
* @param null $position
|
||||
*/
|
||||
public function __construct(ModelCriteria $query, $object_id, $mode, $position = null)
|
||||
{
|
||||
parent::__construct($object_id, $mode, $position);
|
||||
|
||||
$this->setQuery($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ModelCriteria $query
|
||||
*/
|
||||
public function setQuery(ModelCriteria $query)
|
||||
{
|
||||
$this->query = $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ModelCriteria|null
|
||||
*/
|
||||
public function getQuery()
|
||||
{
|
||||
return $this->query;
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,11 @@ use Symfony\Component\HttpFoundation\Request as BaseRequest;
|
||||
class Request extends BaseRequest
|
||||
{
|
||||
|
||||
private $excludeContent = array(
|
||||
'username',
|
||||
'password'
|
||||
);
|
||||
|
||||
public function getProductId()
|
||||
{
|
||||
return $this->get("product_id");
|
||||
@@ -66,4 +71,17 @@ class Request extends BaseRequest
|
||||
{
|
||||
return parent::getSession();
|
||||
}
|
||||
|
||||
public function toString($withContent = true)
|
||||
{
|
||||
$string =
|
||||
sprintf('%s %s %s', $this->getMethod(), $this->getRequestUri(), $this->server->get('SERVER_PROTOCOL'))."\r\n".
|
||||
$this->headers."\r\n";
|
||||
|
||||
if (true === $withContent) {
|
||||
$string .= $this->getContent();
|
||||
}
|
||||
|
||||
return $string;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
namespace Thelia\Core\Security\Exception;
|
||||
|
||||
class RessourceException extends \RuntimeException
|
||||
class ResourceException extends \RuntimeException
|
||||
{
|
||||
const UNKNOWN_EXCEPTION = 0;
|
||||
|
||||
@@ -18,7 +18,7 @@ class AdminLog extends BaseAdminLog
|
||||
* @param Request $request
|
||||
* @param Base\Admin $adminUser
|
||||
*/
|
||||
public static function append($resource, $action, $message, Request $request, BaseAdminUser $adminUser = null) {
|
||||
public static function append($resource, $action, $message, Request $request, BaseAdminUser $adminUser = null, $withRequestContent = true) {
|
||||
|
||||
$log = new AdminLog();
|
||||
|
||||
@@ -29,7 +29,7 @@ class AdminLog extends BaseAdminLog
|
||||
->setResource($resource)
|
||||
->setAction($action)
|
||||
->setMessage($message)
|
||||
->setRequest($request->__toString())
|
||||
->setRequest($request->toString($withRequestContent))
|
||||
;
|
||||
|
||||
try {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ use Propel\Runtime\Connection\ConnectionInterface;
|
||||
|
||||
class CategoryDocument extends BaseCategoryDocument
|
||||
{
|
||||
use \Thelia\Model\Tools\ModelEventDispatcherTrait;
|
||||
use \Thelia\Model\Tools\PositionManagementTrait;
|
||||
|
||||
/**
|
||||
@@ -49,4 +50,14 @@ class CategoryDocument extends BaseCategoryDocument
|
||||
{
|
||||
return $this->getCategoryId();
|
||||
}
|
||||
|
||||
public function preDelete(ConnectionInterface $con = null)
|
||||
{
|
||||
$this->reorderBeforeDelete(
|
||||
array(
|
||||
"category_id" => $this->getCategoryId(),
|
||||
)
|
||||
);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ use Propel\Runtime\Connection\ConnectionInterface;
|
||||
|
||||
class ContentDocument extends BaseContentDocument
|
||||
{
|
||||
use \Thelia\Model\Tools\ModelEventDispatcherTrait;
|
||||
use \Thelia\Model\Tools\PositionManagementTrait;
|
||||
|
||||
/**
|
||||
@@ -49,4 +50,14 @@ class ContentDocument extends BaseContentDocument
|
||||
{
|
||||
return $this->getContentId();
|
||||
}
|
||||
|
||||
public function preDelete(ConnectionInterface $con = null)
|
||||
{
|
||||
$this->reorderBeforeDelete(
|
||||
array(
|
||||
"content_id" => $this->getContentId(),
|
||||
)
|
||||
);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ use Propel\Runtime\Connection\ConnectionInterface;
|
||||
|
||||
class FolderDocument extends BaseFolderDocument
|
||||
{
|
||||
use \Thelia\Model\Tools\ModelEventDispatcherTrait;
|
||||
use \Thelia\Model\Tools\PositionManagementTrait;
|
||||
|
||||
/**
|
||||
@@ -49,4 +50,14 @@ class FolderDocument extends BaseFolderDocument
|
||||
{
|
||||
return $this->getFolderId();
|
||||
}
|
||||
|
||||
public function preDelete(ConnectionInterface $con = null)
|
||||
{
|
||||
$this->reorderBeforeDelete(
|
||||
array(
|
||||
"folder_id" => $this->getFolderId(),
|
||||
)
|
||||
);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ use Propel\Runtime\Connection\ConnectionInterface;
|
||||
|
||||
class ProductDocument extends BaseProductDocument
|
||||
{
|
||||
use \Thelia\Model\Tools\ModelEventDispatcherTrait;
|
||||
use \Thelia\Model\Tools\PositionManagementTrait;
|
||||
|
||||
/**
|
||||
@@ -50,4 +51,14 @@ class ProductDocument extends BaseProductDocument
|
||||
return $this->getProductId();
|
||||
}
|
||||
|
||||
public function preDelete(ConnectionInterface $con = null)
|
||||
{
|
||||
$this->reorderBeforeDelete(
|
||||
array(
|
||||
"product_id" => $this->getProductId(),
|
||||
)
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -23,10 +23,12 @@
|
||||
|
||||
namespace Thelia\Module;
|
||||
|
||||
use Thelia\Model\Order;
|
||||
|
||||
interface PaymentModuleInterface extends BaseModuleInterface
|
||||
{
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function pay();
|
||||
public function pay(Order $order);
|
||||
}
|
||||
|
||||
@@ -3,8 +3,8 @@ namespace Thelia\Tests\Action;
|
||||
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Thelia\Exception\UrlRewritingException;
|
||||
use Thelia\Model\Base\ProductQuery;
|
||||
use Thelia\Model\Base\RewritingUrlQuery;
|
||||
use Thelia\Model\ProductQuery;
|
||||
use Thelia\Model\RewritingUrlQuery;
|
||||
use Thelia\Model\ConfigQuery;
|
||||
use Thelia\Rewriting\RewritingResolver;
|
||||
use Thelia\Tools\URL;
|
||||
|
||||
Reference in New Issue
Block a user