From 417ed2e324331b4dd11bb4227f4de2135d8422a2 Mon Sep 17 00:00:00 2001 From: Etienne Roudeix Date: Fri, 8 Nov 2013 14:35:29 +0100 Subject: [PATCH 1/7] change signature --- .../Admin/AbstractCrudController.php | 16 ++++++------- .../Controller/Admin/AddressController.php | 2 +- .../Controller/Admin/AdminLogsController.php | 2 +- .../Controller/Admin/AreaController.php | 6 ++--- .../Controller/Admin/AttributeController.php | 2 +- .../Controller/Admin/BaseAdminController.php | 7 +++--- .../Controller/Admin/CategoryController.php | 8 +++---- .../Controller/Admin/ConfigController.php | 2 +- .../Controller/Admin/ContentController.php | 4 ++-- .../Controller/Admin/CountryController.php | 2 +- .../Controller/Admin/CouponController.php | 12 +++++----- .../Controller/Admin/CurrencyController.php | 4 ++-- .../Controller/Admin/CustomerController.php | 10 ++++---- .../Controller/Admin/FeatureController.php | 2 +- .../Controller/Admin/FileController.php | 24 +++++++++---------- .../Controller/Admin/HomeController.php | 2 +- .../Controller/Admin/LangController.php | 18 +++++++------- .../Controller/Admin/LanguageController.php | 2 +- .../Admin/MailingSystemController.php | 4 ++-- .../Controller/Admin/ModuleController.php | 6 ++--- .../Controller/Admin/OrderController.php | 10 ++++---- .../Controller/Admin/ProductController.php | 24 +++++++++---------- .../Controller/Admin/ProfileController.php | 6 ++--- .../Admin/ShippingZoneController.php | 8 +++---- .../Controller/Admin/SystemLogController.php | 4 ++-- .../Controller/Admin/TaxRuleController.php | 6 ++--- .../Controller/Admin/TemplateController.php | 8 +++---- .../Admin/TranslationsController.php | 4 ++-- .../Thelia/Core/Security/SecurityContext.php | 22 +++++++++++++++-- core/lib/Thelia/Core/Template/Loop/Auth.php | 18 +++++++++++++- .../Smarty/Plugins/AdminUtilities.php | 8 ++++++- .../Core/Template/Smarty/Plugins/Security.php | 3 ++- .../admin/default/includes/module-block.html | 11 +++++++-- 33 files changed, 158 insertions(+), 109 deletions(-) diff --git a/core/lib/Thelia/Controller/Admin/AbstractCrudController.php b/core/lib/Thelia/Controller/Admin/AbstractCrudController.php index 689ac9b1b..11ed4fc50 100644 --- a/core/lib/Thelia/Controller/Admin/AbstractCrudController.php +++ b/core/lib/Thelia/Controller/Admin/AbstractCrudController.php @@ -267,7 +267,7 @@ abstract class AbstractCrudController extends BaseAdminController */ public function defaultAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::VIEW)) return $response; return $this->renderList(); } @@ -279,7 +279,7 @@ abstract class AbstractCrudController extends BaseAdminController public function createAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::CREATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::CREATE)) return $response; $error_msg = false; @@ -340,7 +340,7 @@ abstract class AbstractCrudController extends BaseAdminController public function updateAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; // Load the object $object = $this->getExistingObject(); @@ -366,7 +366,7 @@ abstract class AbstractCrudController extends BaseAdminController public function processUpdateAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $error_msg = false; @@ -431,7 +431,7 @@ abstract class AbstractCrudController extends BaseAdminController public function updatePositionAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; try { $mode = $this->getRequest()->get('mode', null); @@ -465,7 +465,7 @@ abstract class AbstractCrudController extends BaseAdminController protected function genericUpdatePositionAction($object, $eventName, $doFinalRedirect = true) { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; if ($object != null) { @@ -499,7 +499,7 @@ abstract class AbstractCrudController extends BaseAdminController public function setToggleVisibilityAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $changeEvent = $this->createToggleVisibilityEvent($this->getRequest()); @@ -521,7 +521,7 @@ abstract class AbstractCrudController extends BaseAdminController public function deleteAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::DELETE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::DELETE)) return $response; // Get the currency id, and dispatch the delet request $deleteEvent = $this->getDeleteEvent(); diff --git a/core/lib/Thelia/Controller/Admin/AddressController.php b/core/lib/Thelia/Controller/Admin/AddressController.php index 26f97c9b3..b4583018b 100644 --- a/core/lib/Thelia/Controller/Admin/AddressController.php +++ b/core/lib/Thelia/Controller/Admin/AddressController.php @@ -59,7 +59,7 @@ class AddressController extends AbstractCrudController public function useAddressAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $address_id = $this->getRequest()->request->get('address_id'); diff --git a/core/lib/Thelia/Controller/Admin/AdminLogsController.php b/core/lib/Thelia/Controller/Admin/AdminLogsController.php index 1c7b6542f..5f3fadb0f 100644 --- a/core/lib/Thelia/Controller/Admin/AdminLogsController.php +++ b/core/lib/Thelia/Controller/Admin/AdminLogsController.php @@ -32,7 +32,7 @@ class AdminLogsController extends BaseAdminController public function defaultAction() { - if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::VIEW)) return $response; // Render the edition template. return $this->render('admin-logs'); diff --git a/core/lib/Thelia/Controller/Admin/AreaController.php b/core/lib/Thelia/Controller/Admin/AreaController.php index 79c549201..2464ad0cb 100644 --- a/core/lib/Thelia/Controller/Admin/AreaController.php +++ b/core/lib/Thelia/Controller/Admin/AreaController.php @@ -231,7 +231,7 @@ class AreaController extends AbstractCrudController public function addCountry() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $areaCountryForm = new AreaCountryForm($this->getRequest()); $error_msg = null; @@ -273,7 +273,7 @@ class AreaController extends AbstractCrudController public function removeCountry() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $request = $this->getRequest(); $removeCountryEvent = new AreaRemoveCountryEvent($request->request->get('areai_id', 0), $request->request->get('country_id', 0)); @@ -284,7 +284,7 @@ class AreaController extends AbstractCrudController public function updatePostageAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $areaUpdateForm = new AreaPostageForm($this->getRequest()); $error_msg = null; diff --git a/core/lib/Thelia/Controller/Admin/AttributeController.php b/core/lib/Thelia/Controller/Admin/AttributeController.php index 9644d6651..ce1ca3072 100644 --- a/core/lib/Thelia/Controller/Admin/AttributeController.php +++ b/core/lib/Thelia/Controller/Admin/AttributeController.php @@ -235,7 +235,7 @@ class AttributeController extends AbstractCrudController protected function addRemoveFromAllTemplates($eventType) { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; try { if (null !== $object = $this->getExistingObject()) { diff --git a/core/lib/Thelia/Controller/Admin/BaseAdminController.php b/core/lib/Thelia/Controller/Admin/BaseAdminController.php index a36318232..5d10c65b6 100755 --- a/core/lib/Thelia/Controller/Admin/BaseAdminController.php +++ b/core/lib/Thelia/Controller/Admin/BaseAdminController.php @@ -118,17 +118,18 @@ class BaseAdminController extends BaseController * Check current admin user authorisations. An ADMIN role is assumed. * * @param mixed $resources a single resource or an array of resources. + * @param mixed $modules a single module or an array of modules. * @param mixed $accesses a single access or an array of accesses. * * @return mixed null if authorization is granted, or a Response object which contains the error page otherwise - * */ - protected function checkAuth($resources, $accesses) + protected function checkAuth($resources, $modules, $accesses) { $resources = is_array($resources) ? $resources : array($resources); + $modules = is_array($modules) ? $modules : array($modules); $accesses = is_array($accesses) ? $accesses : array($accesses); - if ($this->getSecurityContext()->isGranted(array("ADMIN"), $resources, $accesses)) { + if ($this->getSecurityContext()->isGranted(array("ADMIN"), $resources, $modules, $accesses)) { // Okay ! return null; } diff --git a/core/lib/Thelia/Controller/Admin/CategoryController.php b/core/lib/Thelia/Controller/Admin/CategoryController.php index 018aa3586..3a8428766 100755 --- a/core/lib/Thelia/Controller/Admin/CategoryController.php +++ b/core/lib/Thelia/Controller/Admin/CategoryController.php @@ -215,7 +215,7 @@ class CategoryController extends AbstractCrudController public function setToggleVisibilityAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $event = new CategoryToggleVisibilityEvent($this->getExistingObject()); @@ -295,7 +295,7 @@ class CategoryController extends AbstractCrudController public function addRelatedContentAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $content_id = intval($this->getRequest()->get('content_id')); @@ -325,7 +325,7 @@ class CategoryController extends AbstractCrudController public function addRelatedPictureAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) { + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) { return $response; } @@ -353,7 +353,7 @@ class CategoryController extends AbstractCrudController public function deleteRelatedContentAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $content_id = intval($this->getRequest()->get('content_id')); diff --git a/core/lib/Thelia/Controller/Admin/ConfigController.php b/core/lib/Thelia/Controller/Admin/ConfigController.php index 67aec848a..fe18720b6 100644 --- a/core/lib/Thelia/Controller/Admin/ConfigController.php +++ b/core/lib/Thelia/Controller/Admin/ConfigController.php @@ -186,7 +186,7 @@ class ConfigController extends AbstractCrudController public function changeValuesAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $variables = $this->getRequest()->get('variable', array()); diff --git a/core/lib/Thelia/Controller/Admin/ContentController.php b/core/lib/Thelia/Controller/Admin/ContentController.php index 0b850734c..82d9ec8bd 100644 --- a/core/lib/Thelia/Controller/Admin/ContentController.php +++ b/core/lib/Thelia/Controller/Admin/ContentController.php @@ -69,7 +69,7 @@ class ContentController extends AbstractCrudController public function addAdditionalFolderAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $folder_id = intval($this->getRequest()->request->get('additional_folder_id')); @@ -97,7 +97,7 @@ class ContentController extends AbstractCrudController public function removeAdditionalFolderAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $folder_id = intval($this->getRequest()->request->get('additional_folder_id')); diff --git a/core/lib/Thelia/Controller/Admin/CountryController.php b/core/lib/Thelia/Controller/Admin/CountryController.php index 0ef2f1006..d950cc487 100644 --- a/core/lib/Thelia/Controller/Admin/CountryController.php +++ b/core/lib/Thelia/Controller/Admin/CountryController.php @@ -235,7 +235,7 @@ class CountryController extends AbstractCrudController public function toggleDefaultAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $content = null; if (null !== $country_id = $this->getRequest()->get('country_id')) { $toogleDefaultEvent = new CountryToggleDefaultEvent($country_id); diff --git a/core/lib/Thelia/Controller/Admin/CouponController.php b/core/lib/Thelia/Controller/Admin/CouponController.php index 0169a16b9..167a13d55 100755 --- a/core/lib/Thelia/Controller/Admin/CouponController.php +++ b/core/lib/Thelia/Controller/Admin/CouponController.php @@ -62,7 +62,7 @@ class CouponController extends BaseAdminController */ public function browseAction() { - $this->checkAuth(AdminResources::COUPON, AccessManager::VIEW); + $this->checkAuth(AdminResources::COUPON, array(), AccessManager::VIEW); $args['urlReadCoupon'] = $this->getRoute( 'admin.coupon.read', @@ -94,7 +94,7 @@ class CouponController extends BaseAdminController */ public function readAction($couponId) { - $this->checkAuth(AdminResources::COUPON, AccessManager::VIEW); + $this->checkAuth(AdminResources::COUPON, array(), AccessManager::VIEW); // Database request repeated in the loop but cached $search = CouponQuery::create(); @@ -122,7 +122,7 @@ class CouponController extends BaseAdminController public function createAction() { // Check current user authorization - $response = $this->checkAuth(AdminResources::COUPON, AccessManager::CREATE); + $response = $this->checkAuth(AdminResources::COUPON, array(), AccessManager::CREATE); if ($response !== null) { return $response; } @@ -170,7 +170,7 @@ class CouponController extends BaseAdminController public function updateAction($couponId) { // Check current user authorization - $response = $this->checkAuth(AdminResources::COUPON, AccessManager::UPDATE); + $response = $this->checkAuth(AdminResources::COUPON, array(), AccessManager::UPDATE); if ($response !== null) { return $response; } @@ -274,7 +274,7 @@ class CouponController extends BaseAdminController */ public function getConditionInputAction($conditionId) { - $this->checkAuth(AdminResources::COUPON, AccessManager::VIEW); + $this->checkAuth(AdminResources::COUPON, array(), AccessManager::VIEW); $this->checkXmlHttpRequest(); @@ -304,7 +304,7 @@ class CouponController extends BaseAdminController */ public function updateConditionsAction($couponId) { - $this->checkAuth(AdminResources::COUPON, AccessManager::VIEW); + $this->checkAuth(AdminResources::COUPON, array(), AccessManager::VIEW); $this->checkXmlHttpRequest(); diff --git a/core/lib/Thelia/Controller/Admin/CurrencyController.php b/core/lib/Thelia/Controller/Admin/CurrencyController.php index 504877157..be780a13b 100644 --- a/core/lib/Thelia/Controller/Admin/CurrencyController.php +++ b/core/lib/Thelia/Controller/Admin/CurrencyController.php @@ -185,7 +185,7 @@ class CurrencyController extends AbstractCrudController public function updateRatesAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; try { $this->dispatch(TheliaEvents::CURRENCY_UPDATE_RATES); @@ -203,7 +203,7 @@ class CurrencyController extends AbstractCrudController public function setDefaultAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $changeEvent = new CurrencyUpdateEvent($this->getRequest()->get('currency_id', 0)); diff --git a/core/lib/Thelia/Controller/Admin/CustomerController.php b/core/lib/Thelia/Controller/Admin/CustomerController.php index 9719748fc..b4f434e3c 100644 --- a/core/lib/Thelia/Controller/Admin/CustomerController.php +++ b/core/lib/Thelia/Controller/Admin/CustomerController.php @@ -45,13 +45,13 @@ class CustomerController extends BaseAdminController { public function indexAction() { - if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, array(), AccessManager::VIEW)) return $response; return $this->render("customers", array("display_customer" => 20)); } public function viewAction($customer_id) { - if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, array(), AccessManager::VIEW)) return $response; return $this->render("customer-edit", array( "customer_id" => $customer_id )); @@ -65,7 +65,7 @@ class CustomerController extends BaseAdminController */ public function updateAction($customer_id) { - if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, array(), AccessManager::UPDATE)) return $response; $message = false; @@ -121,7 +121,7 @@ class CustomerController extends BaseAdminController public function createAction() { - if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, AccessManager::CREATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, array(), AccessManager::CREATE)) return $response; $message = null; @@ -171,7 +171,7 @@ class CustomerController extends BaseAdminController public function deleteAction() { - if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, AccessManager::DELETE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, array(), AccessManager::DELETE)) return $response; $message = null; diff --git a/core/lib/Thelia/Controller/Admin/FeatureController.php b/core/lib/Thelia/Controller/Admin/FeatureController.php index 1be5dfeec..8ff3a972e 100644 --- a/core/lib/Thelia/Controller/Admin/FeatureController.php +++ b/core/lib/Thelia/Controller/Admin/FeatureController.php @@ -235,7 +235,7 @@ class FeatureController extends AbstractCrudController protected function addRemoveFromAllTemplates($eventType) { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; try { if (null !== $object = $this->getExistingObject()) { diff --git a/core/lib/Thelia/Controller/Admin/FileController.php b/core/lib/Thelia/Controller/Admin/FileController.php index 5c712898a..f4d2c3f73 100755 --- a/core/lib/Thelia/Controller/Admin/FileController.php +++ b/core/lib/Thelia/Controller/Admin/FileController.php @@ -71,7 +71,7 @@ class FileController extends BaseAdminController */ public function saveImageAjaxAction($parentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); if ($this->isParentTypeValid($parentType)) { @@ -161,7 +161,7 @@ class FileController extends BaseAdminController */ public function saveDocumentAjaxAction($parentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); if ($this->isParentTypeValid($parentType)) { @@ -239,7 +239,7 @@ class FileController extends BaseAdminController */ public function getImageListAjaxAction($parentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); $args = array('imageType' => $parentType, 'parentId' => $parentId); @@ -256,7 +256,7 @@ class FileController extends BaseAdminController */ public function getDocumentListAjaxAction($parentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); $args = array('documentType' => $parentType, 'parentId' => $parentId); @@ -273,7 +273,7 @@ class FileController extends BaseAdminController */ public function getImageFormAjaxAction($parentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); $args = array('imageType' => $parentType, 'parentId' => $parentId); @@ -290,7 +290,7 @@ class FileController extends BaseAdminController */ public function getDocumentFormAjaxAction($parentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); $args = array('documentType' => $parentType, 'parentId' => $parentId); @@ -307,7 +307,7 @@ class FileController extends BaseAdminController */ public function viewImageAction($imageId, $parentType) { - if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE)) { + if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE)) { return $response; } try { @@ -336,7 +336,7 @@ class FileController extends BaseAdminController */ public function viewDocumentAction($documentId, $parentType) { - if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE)) { + if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE)) { return $response; } try { @@ -365,7 +365,7 @@ class FileController extends BaseAdminController */ public function updateImageAction($imageId, $parentType) { - if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE)) { + if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE)) { return $response; } @@ -442,7 +442,7 @@ class FileController extends BaseAdminController */ public function updateDocumentAction($documentId, $parentType) { - if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE)) { + if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE)) { return $response; } @@ -519,7 +519,7 @@ class FileController extends BaseAdminController */ public function deleteImageAction($imageId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); $fileManager = new FileManager($this->container); @@ -591,7 +591,7 @@ class FileController extends BaseAdminController */ public function deleteDocumentAction($documentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); $fileManager = new FileManager($this->container); diff --git a/core/lib/Thelia/Controller/Admin/HomeController.php b/core/lib/Thelia/Controller/Admin/HomeController.php index 8679b28e6..e8711f97d 100644 --- a/core/lib/Thelia/Controller/Admin/HomeController.php +++ b/core/lib/Thelia/Controller/Admin/HomeController.php @@ -33,7 +33,7 @@ class HomeController extends BaseAdminController public function defaultAction() { - if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::VIEW)) return $response; // Render the edition template. return $this->render('home'); diff --git a/core/lib/Thelia/Controller/Admin/LangController.php b/core/lib/Thelia/Controller/Admin/LangController.php index ccf980c81..e7862badc 100644 --- a/core/lib/Thelia/Controller/Admin/LangController.php +++ b/core/lib/Thelia/Controller/Admin/LangController.php @@ -51,7 +51,7 @@ class LangController extends BaseAdminController public function defaultAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::VIEW)) return $response; return $this->renderDefault(); } @@ -72,7 +72,7 @@ class LangController extends BaseAdminController public function updateAction($lang_id) { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $this->checkXmlHttpRequest(); @@ -96,7 +96,7 @@ class LangController extends BaseAdminController public function processUpdateAction($lang_id) { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $error_msg = false; @@ -138,7 +138,7 @@ class LangController extends BaseAdminController public function toggleDefaultAction($lang_id) { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $this->checkXmlHttpRequest(); $error = false; @@ -169,7 +169,7 @@ class LangController extends BaseAdminController public function addAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::CREATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::CREATE)) return $response; $createForm = new LangCreateForm($this->getRequest()); @@ -211,7 +211,7 @@ class LangController extends BaseAdminController public function deleteAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::DELETE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::DELETE)) return $response; $error_msg = false; @@ -235,7 +235,7 @@ class LangController extends BaseAdminController public function defaultBehaviorAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $error_msg = false; @@ -267,7 +267,7 @@ class LangController extends BaseAdminController public function domainAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $error_msg = false; $langUrlForm = new LangUrlForm($this->getRequest()); @@ -314,7 +314,7 @@ class LangController extends BaseAdminController private function domainActivation($activate) { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $error_msg = false; diff --git a/core/lib/Thelia/Controller/Admin/LanguageController.php b/core/lib/Thelia/Controller/Admin/LanguageController.php index 7559cb5cc..b91124277 100644 --- a/core/lib/Thelia/Controller/Admin/LanguageController.php +++ b/core/lib/Thelia/Controller/Admin/LanguageController.php @@ -35,7 +35,7 @@ class LanguageController extends BaseAdminController { public function defaultAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::VIEW)) return $response; return $this->render("languages"); } diff --git a/core/lib/Thelia/Controller/Admin/MailingSystemController.php b/core/lib/Thelia/Controller/Admin/MailingSystemController.php index cfe6f06dd..1fe79c353 100644 --- a/core/lib/Thelia/Controller/Admin/MailingSystemController.php +++ b/core/lib/Thelia/Controller/Admin/MailingSystemController.php @@ -36,7 +36,7 @@ class MailingSystemController extends BaseAdminController public function defaultAction() { - if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::VIEW)) return $response; // Hydrate the form abd pass it to the parser $data = array( @@ -64,7 +64,7 @@ class MailingSystemController extends BaseAdminController public function updateAction() { // Check current user authorization - if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::UPDATE)) return $response; $error_msg = false; diff --git a/core/lib/Thelia/Controller/Admin/ModuleController.php b/core/lib/Thelia/Controller/Admin/ModuleController.php index 24f297cbf..c9cd97359 100644 --- a/core/lib/Thelia/Controller/Admin/ModuleController.php +++ b/core/lib/Thelia/Controller/Admin/ModuleController.php @@ -180,7 +180,7 @@ class ModuleController extends AbstractCrudController public function indexAction() { - if (null !== $response = $this->checkAuth(AdminResources::MODULE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::MODULE, array(), AccessManager::VIEW)) return $response; $moduleManagement = new ModuleManagement(); $moduleManagement->updateModules(); @@ -190,7 +190,7 @@ class ModuleController extends AbstractCrudController public function toggleActivationAction($module_id) { - if (null !== $response = $this->checkAuth(AdminResources::MODULE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::MODULE, array(), AccessManager::UPDATE)) return $response; $message = null; try { $event = new ModuleToggleActivationEvent($module_id); @@ -222,7 +222,7 @@ class ModuleController extends AbstractCrudController public function deleteAction() { - if (null !== $response = $this->checkAuth(AdminResources::MODULE, AccessManager::DELETE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::MODULE, array(), AccessManager::DELETE)) return $response; $message = null; try { diff --git a/core/lib/Thelia/Controller/Admin/OrderController.php b/core/lib/Thelia/Controller/Admin/OrderController.php index 54dcc3059..0a293278e 100644 --- a/core/lib/Thelia/Controller/Admin/OrderController.php +++ b/core/lib/Thelia/Controller/Admin/OrderController.php @@ -47,7 +47,7 @@ class OrderController extends BaseAdminController { public function indexAction() { - if (null !== $response = $this->checkAuth(AdminResources::ORDER, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::VIEW)) return $response; return $this->render("orders", array("display_order" => 20)); } @@ -60,7 +60,7 @@ class OrderController extends BaseAdminController public function updateStatus($order_id = null) { - if (null !== $response = $this->checkAuth(AdminResources::ORDER, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE)) return $response; $message = null; @@ -111,7 +111,7 @@ class OrderController extends BaseAdminController public function updateDeliveryRef($order_id) { - if (null !== $response = $this->checkAuth(AdminResources::ORDER, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE)) return $response; $message = null; @@ -146,7 +146,7 @@ class OrderController extends BaseAdminController public function updateAddress($order_id) { - if (null !== $response = $this->checkAuth(AdminResources::ORDER, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE)) return $response; $message = null; @@ -212,7 +212,7 @@ class OrderController extends BaseAdminController protected function generatePdf($order_id, $fileName) { - if (null !== $response = $this->checkAuth(AdminResources::ORDER, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE)) return $response; $html = $this->renderRaw( $fileName, diff --git a/core/lib/Thelia/Controller/Admin/ProductController.php b/core/lib/Thelia/Controller/Admin/ProductController.php index a711ada52..9aa2d279e 100644 --- a/core/lib/Thelia/Controller/Admin/ProductController.php +++ b/core/lib/Thelia/Controller/Admin/ProductController.php @@ -407,7 +407,7 @@ class ProductController extends AbstractCrudController public function setToggleVisibilityAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $event = new ProductToggleVisibilityEvent($this->getExistingObject()); @@ -483,7 +483,7 @@ class ProductController extends AbstractCrudController { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $content_id = intval($this->getRequest()->get('content_id')); @@ -509,7 +509,7 @@ class ProductController extends AbstractCrudController { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $content_id = intval($this->getRequest()->get('content_id')); @@ -561,7 +561,7 @@ class ProductController extends AbstractCrudController public function addAccessoryAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $accessory_id = intval($this->getRequest()->get('accessory_id')); @@ -586,7 +586,7 @@ class ProductController extends AbstractCrudController public function deleteAccessoryAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $accessory_id = intval($this->getRequest()->get('accessory_id')); @@ -642,7 +642,7 @@ class ProductController extends AbstractCrudController public function setProductTemplateAction($productId) { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $product = ProductQuery::create()->findPk($productId); @@ -739,7 +739,7 @@ class ProductController extends AbstractCrudController public function addAdditionalCategoryAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $category_id = intval($this->getRequest()->request->get('additional_category_id')); @@ -764,7 +764,7 @@ class ProductController extends AbstractCrudController public function deleteAdditionalCategoryAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $category_id = intval($this->getRequest()->get('additional_category_id')); @@ -861,7 +861,7 @@ class ProductController extends AbstractCrudController public function addProductSaleElementAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $event = new ProductSaleElementCreateEvent( $this->getExistingObject(), @@ -885,7 +885,7 @@ class ProductController extends AbstractCrudController public function deleteProductSaleElementAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $event = new ProductSaleElementDeleteEvent( $this->getRequest()->get('product_sale_element_id',0), @@ -944,7 +944,7 @@ class ProductController extends AbstractCrudController protected function processProductSaleElementUpdate($changeForm) { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $error_msg = false; @@ -1053,7 +1053,7 @@ class ProductController extends AbstractCrudController public function buildCombinationsAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $error_msg = false; diff --git a/core/lib/Thelia/Controller/Admin/ProfileController.php b/core/lib/Thelia/Controller/Admin/ProfileController.php index 909d055b8..9b83c30b7 100644 --- a/core/lib/Thelia/Controller/Admin/ProfileController.php +++ b/core/lib/Thelia/Controller/Admin/ProfileController.php @@ -221,7 +221,7 @@ class ProfileController extends AbstractCrudController public function updateAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $object = $this->getExistingObject(); @@ -306,7 +306,7 @@ class ProfileController extends AbstractCrudController public function processUpdateResourceAccess() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $error_msg = false; @@ -355,7 +355,7 @@ class ProfileController extends AbstractCrudController public function processUpdateModuleAccess() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $error_msg = false; diff --git a/core/lib/Thelia/Controller/Admin/ShippingZoneController.php b/core/lib/Thelia/Controller/Admin/ShippingZoneController.php index 8e8f38eec..82b630398 100644 --- a/core/lib/Thelia/Controller/Admin/ShippingZoneController.php +++ b/core/lib/Thelia/Controller/Admin/ShippingZoneController.php @@ -42,13 +42,13 @@ class ShippingZoneController extends BaseAdminController public function indexAction() { - if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, array(), AccessManager::VIEW)) return $response; return $this->render("shipping-zones", array("display_shipping_zone" => 20)); } public function updateAction($shipping_zones_id) { - if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, array(), AccessManager::VIEW)) return $response; return $this->render("shipping-zones-edit", array( "shipping_zones_id" => $shipping_zones_id )); @@ -59,7 +59,7 @@ class ShippingZoneController extends BaseAdminController */ public function addArea() { - if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, array(), AccessManager::UPDATE)) return $response; $shippingAreaForm = new ShippingZoneAddArea($this->getRequest()); $error_msg = null; @@ -94,7 +94,7 @@ class ShippingZoneController extends BaseAdminController public function removeArea() { - if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, array(), AccessManager::UPDATE)) return $response; $shippingAreaForm = new ShippingZoneRemoveArea($this->getRequest()); $error_msg = null; diff --git a/core/lib/Thelia/Controller/Admin/SystemLogController.php b/core/lib/Thelia/Controller/Admin/SystemLogController.php index 96621717c..118f06efb 100644 --- a/core/lib/Thelia/Controller/Admin/SystemLogController.php +++ b/core/lib/Thelia/Controller/Admin/SystemLogController.php @@ -86,7 +86,7 @@ class SystemLogController extends BaseAdminController public function defaultAction() { - if (null !== $response = $this->checkAuth(AdminResources::SYSTEM_LOG, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::SYSTEM_LOG, array(), AccessManager::VIEW)) return $response; /* const VAR_LEVEL = "tlog_level"; @@ -121,7 +121,7 @@ class SystemLogController extends BaseAdminController public function saveAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $error_msg = false; diff --git a/core/lib/Thelia/Controller/Admin/TaxRuleController.php b/core/lib/Thelia/Controller/Admin/TaxRuleController.php index 2e6cb2b70..b85123505 100644 --- a/core/lib/Thelia/Controller/Admin/TaxRuleController.php +++ b/core/lib/Thelia/Controller/Admin/TaxRuleController.php @@ -219,7 +219,7 @@ class TaxRuleController extends AbstractCrudController public function updateAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $object = $this->getExistingObject(); @@ -237,7 +237,7 @@ class TaxRuleController extends AbstractCrudController public function setDefaultAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $setDefaultEvent = new TaxRuleEvent(); @@ -255,7 +255,7 @@ class TaxRuleController extends AbstractCrudController public function processUpdateTaxesAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $error_msg = false; diff --git a/core/lib/Thelia/Controller/Admin/TemplateController.php b/core/lib/Thelia/Controller/Admin/TemplateController.php index fd7df6bb2..5e551679d 100644 --- a/core/lib/Thelia/Controller/Admin/TemplateController.php +++ b/core/lib/Thelia/Controller/Admin/TemplateController.php @@ -211,7 +211,7 @@ class TemplateController extends AbstractCrudController public function addAttributeAction() { // Check current user authorization - if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, array(), AccessManager::UPDATE)) return $response; $attribute_id = intval($this->getRequest()->get('attribute_id')); @@ -235,7 +235,7 @@ class TemplateController extends AbstractCrudController public function deleteAttributeAction() { // Check current user authorization - if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, array(), AccessManager::UPDATE)) return $response; $event = new TemplateDeleteAttributeEvent( $this->getExistingObject(), @@ -270,7 +270,7 @@ class TemplateController extends AbstractCrudController public function addFeatureAction() { // Check current user authorization - if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, array(), AccessManager::UPDATE)) return $response; $feature_id = intval($this->getRequest()->get('feature_id')); @@ -294,7 +294,7 @@ class TemplateController extends AbstractCrudController public function deleteFeatureAction() { // Check current user authorization - if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, array(), AccessManager::UPDATE)) return $response; $event = new TemplateDeleteFeatureEvent( $this->getExistingObject(), diff --git a/core/lib/Thelia/Controller/Admin/TranslationsController.php b/core/lib/Thelia/Controller/Admin/TranslationsController.php index 30ebbcdb2..654a3ffdf 100644 --- a/core/lib/Thelia/Controller/Admin/TranslationsController.php +++ b/core/lib/Thelia/Controller/Admin/TranslationsController.php @@ -161,14 +161,14 @@ class TranslationsController extends BaseAdminController public function defaultAction() { - if (null !== $response = $this->checkAuth(AdminResources::TRANSLATIONS, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::TRANSLATIONS, array(), AccessManager::VIEW)) return $response; return $this->renderTemplate(); } public function updateAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; return $this->renderTemplate(); } diff --git a/core/lib/Thelia/Core/Security/SecurityContext.php b/core/lib/Thelia/Core/Security/SecurityContext.php index 128feb516..c5051af67 100755 --- a/core/lib/Thelia/Core/Security/SecurityContext.php +++ b/core/lib/Thelia/Core/Security/SecurityContext.php @@ -123,7 +123,7 @@ class SecurityContext * * @return Boolean */ - final public function isGranted(array $roles, array $resources, array $accesses) + final public function isGranted(array $roles, array $resources, array $modules, array $accesses) { // Find a user which matches the required roles. $user = $this->getCustomerUser(); @@ -140,7 +140,7 @@ class SecurityContext return false; } - if (empty($resources) || empty($accesses)) { + if ((empty($resources) && empty($modules)) || empty($accesses)) { return true; } @@ -172,6 +172,24 @@ class SecurityContext } } + foreach ($modules as $module) { + if ($module === '') { + continue; + } + + $module = strtolower($module); + + if (!array_key_exists($module, $userPermissions)) { + return false; + } + + foreach ($accesses as $access) { + if (!$userPermissions[$module]->can($access)) { + return false; + } + } + } + return true; } diff --git a/core/lib/Thelia/Core/Template/Loop/Auth.php b/core/lib/Thelia/Core/Template/Loop/Auth.php index ef466d3e9..072193f34 100755 --- a/core/lib/Thelia/Core/Template/Loop/Auth.php +++ b/core/lib/Thelia/Core/Template/Loop/Auth.php @@ -60,6 +60,12 @@ class Auth extends BaseLoop implements ArraySearchLoopInterface new AlphaNumStringListType() ) ), + new Argument( + 'module', + new TypeCollection( + new AlphaNumStringListType() + ) + ), new Argument( 'access', new TypeCollection( @@ -79,10 +85,20 @@ class Auth extends BaseLoop implements ArraySearchLoopInterface { $roles = $this->getRole(); $resource = $this->getResource(); + $module = $this->getModule(); $access = $this->getAccess(); + if(null !== $module) { + $in = true; + } + try { - if (true === $this->securityContext->isGranted($roles, $resource === null ? array() : $resource, $access === null ? array() : $access)) { + if (true === $this->securityContext->isGranted( + $roles, + $resource === null ? array() : $resource, + $module === null ? array() : $module, + $access === null ? array() : $access) + ) { // Create an empty row: loop is no longer empty :) $loopResult->addRow(new LoopResultRow()); diff --git a/core/lib/Thelia/Core/Template/Smarty/Plugins/AdminUtilities.php b/core/lib/Thelia/Core/Template/Smarty/Plugins/AdminUtilities.php index 0be66997a..78e1c8f5b 100644 --- a/core/lib/Thelia/Core/Template/Smarty/Plugins/AdminUtilities.php +++ b/core/lib/Thelia/Core/Template/Smarty/Plugins/AdminUtilities.php @@ -69,6 +69,7 @@ class AdminUtilities extends AbstractSmartyPlugin { // The required permissions $resource = $this->getParam($params, 'resource'); + $module = $this->getParam($params, 'module'); $access = $this->getParam($params, 'access'); // The base position change path @@ -92,7 +93,12 @@ class AdminUtilities extends AbstractSmartyPlugin */ - if ($permissions == null || $this->securityContext->isGranted("ADMIN", array($resource), array($access))) { + if ($permissions == null || $this->securityContext->isGranted( + "ADMIN", + $resource === null ? array() : array($resource), + $module === null ? array() : array($module), + array($access)) + ) { return $this->fetch_snippet($smarty, 'includes/admin-utilities-position-block', array( 'admin_utilities_go_up_url' => URL::getInstance()->absoluteUrl($path, array('mode' => 'up', $url_parameter => $id)), diff --git a/core/lib/Thelia/Core/Template/Smarty/Plugins/Security.php b/core/lib/Thelia/Core/Template/Smarty/Plugins/Security.php index 4f8b0ccc2..46a45c0c4 100755 --- a/core/lib/Thelia/Core/Template/Smarty/Plugins/Security.php +++ b/core/lib/Thelia/Core/Template/Smarty/Plugins/Security.php @@ -55,9 +55,10 @@ class Security extends AbstractSmartyPlugin { $roles = $this->_explode($this->getParam($params, 'role')); $resources = $this->_explode($this->getParam($params, 'resource')); + $modules = $this->_explode($this->getParam($params, 'module')); $accesses = $this->_explode($this->getParam($params, 'access')); - if (! $this->securityContext->isGranted($roles, $resources, $accesses)) { + if (! $this->securityContext->isGranted($roles, $resources, $modules, $accesses)) { $ex = new AuthenticationException( sprintf("User not granted for roles '%s', to access resources '%s' with %s in context '%s'.", diff --git a/templates/admin/default/includes/module-block.html b/templates/admin/default/includes/module-block.html index f11be5331..d9ea61993 100644 --- a/templates/admin/default/includes/module-block.html +++ b/templates/admin/default/includes/module-block.html @@ -39,9 +39,16 @@
-{* {loop type="auth" name="can_change" role="ADMIN" resource="admin.modules" access="VIEW"} + + + + {loop type="auth" name="can_change" role="ADMIN" module=$CODE access="VIEW"} + {intl l="Configure"} + {/loop} + + {*loop type="auth" name="can_change" role="ADMIN" resource="admin.modules" access="VIEW"} - {/loop}*} + {/loop*} {loop type="auth" name="can_change" role="ADMIN" resource="admin.modules" access="UPDATE"} From e71fc7659e64f7935addd2edc8be2c0f98bbd95a Mon Sep 17 00:00:00 2001 From: Etienne Roudeix Date: Fri, 8 Nov 2013 14:37:03 +0100 Subject: [PATCH 2/7] remove fakeCB --- reset_install.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/reset_install.sh b/reset_install.sh index 83288a509..4409dc783 100755 --- a/reset_install.sh +++ b/reset_install.sh @@ -42,6 +42,5 @@ php Thelia module:activate Colissimo echo -e "\n\033[01;34m[INFO] Activating Payment Module(s)\033[00m\n" php Thelia module:activate Cheque -php Thelia module:activate FakeCB -echo -e "\n\033[00;32m[SUCCESS] Reset done\033[00m\n" \ No newline at end of file +echo -e "\n\033[00;32m[SUCCESS] Reset done\033[00m\n" From be9aba9fb8eedcfd49aca4fe1a9e2890eda033ce Mon Sep 17 00:00:00 2001 From: Etienne Roudeix Date: Fri, 8 Nov 2013 15:11:45 +0100 Subject: [PATCH 3/7] fix stuff + module management --- core/lib/Thelia/Core/Security/SecurityContext.php | 8 ++++++-- core/lib/Thelia/Model/Admin.php | 15 ++++++++++++--- install/insert.sql | 5 ++--- .../admin/default/includes/module-block.html | 4 ++-- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/core/lib/Thelia/Core/Security/SecurityContext.php b/core/lib/Thelia/Core/Security/SecurityContext.php index c5051af67..e97a19877 100755 --- a/core/lib/Thelia/Core/Security/SecurityContext.php +++ b/core/lib/Thelia/Core/Security/SecurityContext.php @@ -177,14 +177,18 @@ class SecurityContext continue; } + if(!array_key_exists('module', $userPermissions)) { + return false; + } + $module = strtolower($module); - if (!array_key_exists($module, $userPermissions)) { + if (!array_key_exists($module, $userPermissions['module'])) { return false; } foreach ($accesses as $access) { - if (!$userPermissions[$module]->can($access)) { + if (!$userPermissions['module'][$module]->can($access)) { return false; } } diff --git a/core/lib/Thelia/Model/Admin.php b/core/lib/Thelia/Model/Admin.php index 84fb65b35..7c88ee8d2 100755 --- a/core/lib/Thelia/Model/Admin.php +++ b/core/lib/Thelia/Model/Admin.php @@ -35,15 +35,24 @@ class Admin extends BaseAdmin implements UserInterface return AdminResources::SUPERADMINISTRATOR; } - $userPermissionsQuery = ProfileResourceQuery::create() + $userResourcePermissionsQuery = ProfileResourceQuery::create() ->joinResource("resource", Criteria::LEFT_JOIN) ->withColumn('resource.code', 'code') ->filterByProfileId($profileId) ->find(); + $userModulePermissionsQuery = ProfileModuleQuery::create() + ->joinModule("module", Criteria::LEFT_JOIN) + ->withColumn('module.code', 'code') + ->filterByProfileId($profileId) + ->find(); + $userPermissions = array(); - foreach($userPermissionsQuery as $userPermission) { - $userPermissions[$userPermission->getVirtualColumn('code')] = new AccessManager($userPermission->getAccess()); + foreach($userResourcePermissionsQuery as $userResourcePermission) { + $userPermissions[$userResourcePermission->getVirtualColumn('code')] = new AccessManager($userResourcePermission->getAccess()); + } + foreach($userModulePermissionsQuery as $userModulePermission) { + $userPermissions['module'][strtolower($userModulePermission->getVirtualColumn('code'))] = new AccessManager($userModulePermission->getAccess()); } return $userPermissions; diff --git a/install/insert.sql b/install/insert.sql index c49f3e210..42470c72b 100755 --- a/install/insert.sql +++ b/install/insert.sql @@ -47,8 +47,7 @@ INSERT INTO `config` (`name`, `value`, `secured`, `hidden`, `created_at`, `updat INSERT INTO `module` (`id`, `code`, `type`, `activate`, `position`, `full_namespace`, `created_at`, `updated_at`) VALUES (1, 'TheliaDebugBar', 1, 1, 1, 'TheliaDebugBar\\TheliaDebugBar', NOW(), NOW()), (2, 'Colissimo', 2, 0, 1, 'Colissimo\\Colissimo', NOW(), NOW()), -(3, 'Cheque', 3, 0, 1, 'Cheque\\Cheque', NOW(), NOW()), -(4, 'FakeCB', 3, 0, 2, 'FakeCB\\FakeCB', NOW(), NOW()); +(3, 'Cheque', 3, 0, 1, 'Cheque\\Cheque', NOW(), NOW()); INSERT INTO `module_i18n` (`id`, `locale`, `title`, `description`, `chapo`, `postscriptum`) VALUES ('1', 'en_US', 'Debug bar', NULL, NULL, NULL), @@ -1225,7 +1224,7 @@ INSERT INTO resource (`id`, `code`, `created_at`, `updated_at`) VALUES (14, 'admin.configuration.language', NOW(), NOW()), (15, 'admin.configuration.mailing-system', NOW(), NOW()), (16, 'admin.configuration.message', NOW(), NOW()), -(17, 'admin.configuration.module', NOW(), NOW()), +(17, 'admin.module', NOW(), NOW()), (18, 'admin.order', NOW(), NOW()), (19, 'admin.product', NOW(), NOW()), (20, 'admin.configuration.profile', NOW(), NOW()), diff --git a/templates/admin/default/includes/module-block.html b/templates/admin/default/includes/module-block.html index d9ea61993..1cfdec3c2 100644 --- a/templates/admin/default/includes/module-block.html +++ b/templates/admin/default/includes/module-block.html @@ -50,11 +50,11 @@ {/loop*} - {loop type="auth" name="can_change" role="ADMIN" resource="admin.modules" access="UPDATE"} + {loop type="auth" name="can_change" role="ADMIN" resource="admin.module" access="UPDATE"} {/loop} - {loop type="auth" name="can_delete" role="ADMIN" resource="admin.modules" access="DELETE"} + {loop type="auth" name="can_delete" role="ADMIN" resource="admin.module" access="DELETE"} {/loop}
From ac74c1d61d9063627bf21815ee4dc6c9689a2b40 Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Sat, 9 Nov 2013 18:28:01 +0100 Subject: [PATCH 4/7] Refactored back-office customer management --- core/lib/Thelia/Action/Customer.php | 5 +- .../Thelia/Config/Resources/routing/admin.xml | 20 +- .../Controller/Admin/AddressController.php | 55 ++- .../Controller/Admin/CustomerController.php | 284 +++++++-------- .../Controller/NullControllerInterface.php | 19 - .../Customer/CustomerCreateOrUpdateEvent.php | 24 +- .../Core/Event/Customer/CustomerEvent.php | 22 +- .../Event/Customer/CustomerLoginEvent.php | 14 +- .../Core/Template/Assets/AsseticHelper.php | 120 ++++-- .../Thelia/Core/Template/Loop/Customer.php | 89 ++++- core/lib/Thelia/Form/CustomerUpdateForm.php | 17 +- templates/admin/default/admin-layout.tpl | 2 +- .../default/ajax/address-update-modal.html | 111 ------ templates/admin/default/customer-edit.html | 341 ++++++++---------- templates/admin/default/customers.html | 100 ++++- .../customer_address_form_fields.html | 124 +++++++ templates/default/assets/less/styles.less | 1 - 17 files changed, 748 insertions(+), 600 deletions(-) delete mode 100755 core/lib/Thelia/Controller/NullControllerInterface.php delete mode 100644 templates/admin/default/ajax/address-update-modal.html create mode 100644 templates/admin/default/includes/customer_address_form_fields.html diff --git a/core/lib/Thelia/Action/Customer.php b/core/lib/Thelia/Action/Customer.php index 9fee8b69e..34f0b418c 100755 --- a/core/lib/Thelia/Action/Customer.php +++ b/core/lib/Thelia/Action/Customer.php @@ -83,9 +83,10 @@ class Customer extends BaseAction implements EventSubscriberInterface public function delete(CustomerEvent $event) { - $customer = $event->getCustomer(); + if (null !== $customer = $event->getCustomer()) { - $customer->delete(); + $customer->delete(); + } } private function createOrUpdateCustomer(CustomerModel $customer, CustomerCreateOrUpdateEvent $event) diff --git a/core/lib/Thelia/Config/Resources/routing/admin.xml b/core/lib/Thelia/Config/Resources/routing/admin.xml index a966b2608..823e037b5 100755 --- a/core/lib/Thelia/Config/Resources/routing/admin.xml +++ b/core/lib/Thelia/Config/Resources/routing/admin.xml @@ -109,19 +109,17 @@ - Thelia\Controller\Admin\CustomerController::indexAction + Thelia\Controller\Admin\CustomerController::defaultAction - - Thelia\Controller\Admin\CustomerController::viewAction - \d+ - - - + Thelia\Controller\Admin\CustomerController::updateAction - \d+ + + Thelia\Controller\Admin\CustomerController::processUpdateAction + + Thelia\Controller\Admin\CustomerController::deleteAction @@ -146,14 +144,12 @@ Thelia\Controller\Admin\AddressController::createAction - + Thelia\Controller\Admin\AddressController::updateAction - \d+ - + Thelia\Controller\Admin\AddressController::processUpdateAction - \d+ diff --git a/core/lib/Thelia/Controller/Admin/AddressController.php b/core/lib/Thelia/Controller/Admin/AddressController.php index 26f97c9b3..a89366583 100644 --- a/core/lib/Thelia/Controller/Admin/AddressController.php +++ b/core/lib/Thelia/Controller/Admin/AddressController.php @@ -42,7 +42,7 @@ class AddressController extends AbstractCrudController public function __construct() { parent::__construct( - 'address', + 'registration_date', null, null, @@ -50,10 +50,7 @@ class AddressController extends AbstractCrudController TheliaEvents::ADDRESS_CREATE, TheliaEvents::ADDRESS_UPDATE, - TheliaEvents::ADDRESS_DELETE, - null, - null - + TheliaEvents::ADDRESS_DELETE ); } @@ -79,7 +76,7 @@ class AddressController extends AbstractCrudController \Thelia\Log\Tlog::getInstance()->error(sprintf("error during address setting as default with message %s", $e->getMessage())); } - $this->redirectToRoute('admin.customer.update.view', array(), array('customer_id' => $address->getCustomerId())); + $this->redirectToEditionTemplate(); } /** @@ -99,13 +96,14 @@ class AddressController extends AbstractCrudController } /** - * Hydrate the update form for this object, before passing it to the update template + * Fills in the form data array * - * @param \Thelia\Model\Address $object + * @param unknown $object + * @return multitype:NULL */ - protected function hydrateObjectForm($object) + protected function createFormDataArray($object) { - $data = array( + return array( "label" => $object->getLabel(), "title" => $object->getTitleId(), "firstname" => $object->getFirstname(), @@ -120,8 +118,16 @@ class AddressController extends AbstractCrudController "phone" => $object->getPhone(), "company" => $object->getCompany() ); + } - return new AddressUpdateForm($this->getRequest(), "form", $data); + /** + * Hydrate the update form for this object, before passing it to the update template + * + * @param \Thelia\Model\Address $object + */ + protected function hydrateObjectForm($object) + { + return new AddressUpdateForm($this->getRequest(), "form", $this->createFormDataArray($object)); } /** @@ -240,7 +246,8 @@ class AddressController extends AbstractCrudController */ protected function renderListTemplate($currentOrder) { - // TODO: Implement renderListTemplate() method. + // We render here the customer edit template. + return $this->renderEditionTemplate(); } /** @@ -248,9 +255,10 @@ class AddressController extends AbstractCrudController */ protected function renderEditionTemplate() { - return $this->render('ajax/address-update-modal', array( - "address_id" => $this->getRequest()->get('address_id'), - "customer_id" => $this->getExistingObject()->getCustomerId() + return $this->render('customer-edit', array( + "address_id" => $this->getRequest()->get('address_id'), + "page" => $this->getRequest()->get('page'), + "customer_id" => $this->getCustomerId() )); } @@ -259,8 +267,11 @@ class AddressController extends AbstractCrudController */ protected function redirectToEditionTemplate() { - $address = $this->getExistingObject(); - $this->redirectToRoute('admin.customer.update.view', array(), array('customer_id' => $address->getCustomerId())); + // We display here the custromer edition template + $this->redirectToRoute('admin.customer.update.view', array( + "page" => $this->getRequest()->get('page'), + "customer_id" => $this->getCustomerId() + )); } /** @@ -279,8 +290,7 @@ class AddressController extends AbstractCrudController */ protected function performAdditionalDeleteAction($deleteEvent) { - $address = $deleteEvent->getAddress(); - $this->redirectToRoute('admin.customer.update.view', array(), array('customer_id' => $address->getCustomerId())); + $this->redirectToEditionTemplate(); } /** @@ -298,4 +308,11 @@ class AddressController extends AbstractCrudController { $this->redirectToEditionTemplate(); } + + protected function getCustomerId() { + if (null !== $address = $this->getExistingObject()) + return $address->getCustomerId(); + else + return $this->getRequest()->get('customer_id', 0); + } } diff --git a/core/lib/Thelia/Controller/Admin/CustomerController.php b/core/lib/Thelia/Controller/Admin/CustomerController.php index 9719748fc..ec55b3e43 100644 --- a/core/lib/Thelia/Controller/Admin/CustomerController.php +++ b/core/lib/Thelia/Controller/Admin/CustomerController.php @@ -35,171 +35,96 @@ use Thelia\Form\Exception\FormValidationException; use Thelia\Model\CustomerQuery; use Thelia\Core\Translation\Translator; use Thelia\Tools\Password; +use Thelia\Model\AddressQuery; +use Thelia\Model\Address; /** * Class CustomerController * @package Thelia\Controller\Admin * @author Manuel Raynaud */ -class CustomerController extends BaseAdminController +class CustomerController extends AbstractCrudController { - public function indexAction() + public function __construct() { - if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, AccessManager::VIEW)) return $response; - return $this->render("customers", array("display_customer" => 20)); + parent::__construct( + 'customer', + 'lastname', + 'customer_order', + + AdminResources::CUSTOMER, + + TheliaEvents::CUSTOMER_CREATEACCOUNT, + TheliaEvents::CUSTOMER_UPDATEACCOUNT, + TheliaEvents::CUSTOMER_DELETEACCOUNT + ); } - public function viewAction($customer_id) + protected function getCreationForm() { - if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, AccessManager::VIEW)) return $response; - return $this->render("customer-edit", array( - "customer_id" => $customer_id - )); + return new CustomerCreateForm($this->getRequest()); } - /** - * update customer action - * - * @param $customer_id - * @return mixed|\Thelia\Core\HttpFoundation\Response - */ - public function updateAction($customer_id) + protected function getUpdateForm() { - if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, AccessManager::UPDATE)) return $response; - - $message = false; - - $customerUpdateForm = new CustomerUpdateForm($this->getRequest()); - - try { - $customer = CustomerQuery::create()->findPk($customer_id); - - if (null === $customer) { - throw new \InvalidArgumentException(sprintf("%d customer id does not exist", $customer_id)); - } - - $form = $this->validateForm($customerUpdateForm); - - $event = $this->createEventInstance($form->getData()); - $event->setCustomer($customer); - - $this->dispatch(TheliaEvents::CUSTOMER_UPDATEACCOUNT, $event); - - $customerUpdated = $event->getCustomer(); - - $this->adminLogAppend(AdminResources::CUSTOMER, AccessManager::UPDATE, sprintf("Customer with Ref %s (ID %d) modified", $customerUpdated->getRef() , $customerUpdated->getId())); - - if ($this->getRequest()->get("save_mode") == "close") { - $this->redirectToRoute("admin.customers"); - } else { - $this->redirectSuccess($customerUpdateForm); - } - - } catch (FormValidationException $e) { - $message = sprintf("Please check your input: %s", $e->getMessage()); - } catch (PropelException $e) { - $message = $e->getMessage(); - } catch (\Exception $e) { - $message = sprintf("Sorry, an error occured: %s", $e->getMessage()." ".$e->getFile()); - } - - if ($message !== false) { - \Thelia\Log\Tlog::getInstance()->error(sprintf("Error during customer update process : %s.", $message)); - - $customerUpdateForm->setErrorMessage($message); - - $this->getParserContext() - ->addForm($customerUpdateForm) - ->setGeneralError($message) - ; - } - - return $this->render("customer-edit", array( - "customer_id" => $customer_id - )); + return new CustomerUpdateForm($this->getRequest()); } - public function createAction() + protected function getCreationEvent($formData) { - if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, AccessManager::CREATE)) return $response; - - $message = null; - - $customerCreateForm = new CustomerCreateForm($this->getRequest()); - - try { - - $form = $this->validateForm($customerCreateForm); - - $data = $form->getData(); - $data["password"] = Password::generateRandom(); - - $event = $this->createEventInstance($form->getData()); - - - - $this->dispatch(TheliaEvents::CUSTOMER_CREATEACCOUNT, $event); - - $successUrl = $customerCreateForm->getSuccessUrl(); - - $successUrl = str_replace('_ID_', $event->getCustomer()->getId(), $successUrl); - - $this->redirect($successUrl); - - - }catch (FormValidationException $e) { - $message = sprintf("Please check your input: %s", $e->getMessage()); - } catch (PropelException $e) { - $message = $e->getMessage(); - } catch (\Exception $e) { - $message = sprintf("Sorry, an error occured: %s", $e->getMessage()." ".$e->getFile()); - } - - if ($message !== false) { - \Thelia\Log\Tlog::getInstance()->error(sprintf("Error during customer creation process : %s.", $message)); - - $customerCreateForm->setErrorMessage($message); - - $this->getParserContext() - ->addForm($customerCreateForm) - ->setGeneralError($message) - ; - } - - return $this->render("customers", array("display_customer" => 20)); + return $this->createEventInstance($formData); } - public function deleteAction() + protected function getUpdateEvent($formData) { - if (null !== $response = $this->checkAuth(AdminResources::CUSTOMER, AccessManager::DELETE)) return $response; + $event = $this->createEventInstance($formData); - $message = null; + $event->setCustomer($this->getExistingObject()); - try { - $customer_id = $this->getRequest()->get("customer_id"); - $customer = CustomerQuery::create()->findPk($customer_id); + return $event; + } - if (null === $customer) { - throw new \InvalidArgumentException(Translator::getInstance("The customer you want to delete does not exist")); - } + protected function getDeleteEvent() + { + return new CustomerEvent($this->getExistingObject()); + } - $event = new CustomerEvent($customer); + protected function eventContainsObject($event) + { + return $event->hasCustomer(); + } - $this->dispatch(TheliaEvents::CUSTOMER_DELETEACCOUNT, $event); - } catch (\Exception $e) { - $message = $e->getMessage(); - } + protected function hydrateObjectForm($object) + { + // Get default adress of the customer + $address = $object->getDefaultAddress(); - $params = array( - "customer_page" => $this->getRequest()->get("customer_page", 1) + // Prepare the data that will hydrate the form + $data = array( + 'id' => $object->getId(), + 'firstname' => $object->getFirstname(), + 'lastname' => $object->getLastname(), + 'email' => $object->getEmail(), + 'title' => $object->getTitleId(), + + 'company' => $address->getCompany(), + 'address1' => $address->getAddress1(), + 'address2' => $address->getAddress2(), + 'address3' => $address->getAddress3(), + 'phone' => $address->getPhone(), + 'cellphone' => $address->getCellphone(), + 'zipcode' => $address->getZipcode(), + 'city' => $address->getCity(), + 'country' => $address->getCountryId(), ); - if ($message) { - $params["delete_error_message"] = $message; - } - - $this->redirectToRoute("admin.customers", $params); + // A loop is used in the template + return new CustomerUpdateForm($this->getRequest(), 'form', $data); + } + protected function getObjectFromEvent($event) + { + return $event->hasCustomer() ? $event->getCustomer() : null; } /** @@ -209,26 +134,75 @@ class CustomerController extends BaseAdminController private function createEventInstance($data) { $customerCreateEvent = new CustomerCreateOrUpdateEvent( - $data["title"], - $data["firstname"], - $data["lastname"], - $data["address1"], - $data["address2"], - $data["address3"], - $data["phone"], - $data["cellphone"], - $data["zipcode"], - $data["city"], - $data["country"], - isset($data["email"])?$data["email"]:null, - isset($data["password"]) ? $data["password"]:null, - $this->getRequest()->getSession()->getLang()->getId(), - isset($data["reseller"])?$data["reseller"]:null, - isset($data["sponsor"])?$data["sponsor"]:null, - isset($data["discount"])?$data["discount"]:null, - isset($data["company"])?$data["company"]:null + $data["title"], + $data["firstname"], + $data["lastname"], + $data["address1"], + $data["address2"], + $data["address3"], + $data["phone"], + $data["cellphone"], + $data["zipcode"], + $data["city"], + $data["country"], + isset($data["email"])?$data["email"]:null, + isset($data["password"]) && ! empty($data["password"]) ? $data["password"]:null, + $this->getRequest()->getSession()->getLang()->getId(), + isset($data["reseller"])?$data["reseller"]:null, + isset($data["sponsor"])?$data["sponsor"]:null, + isset($data["discount"])?$data["discount"]:null, + isset($data["company"])?$data["company"]:null ); return $customerCreateEvent; } -} + + protected function getExistingObject() + { + return CustomerQuery::create()->findPk($this->getRequest()->get('customer_id', 0)); + } + + protected function getObjectLabel($object) + { + return $object->getRef() . "(".$object->getLastname()." ".$object->getFirstname().")"; + } + + protected function getObjectId($object) + { + return $object->getId(); + } + + protected function getEditionArguments() + { + return array( + 'customer_id' => $this->getRequest()->get('customer_id', 0), + 'page' => $this->getRequest()->get('page', 1) + ); + } + + protected function renderListTemplate($currentOrder) + { + return $this->render('customers', array( + 'customer_order' => $currentOrder, + 'display_customer' => 20, + 'page' => $this->getRequest()->get('page', 1) + )); + } + + protected function redirectToListTemplate() + { + $this->redirectToRoute('admin.customers', array( + 'page' => $this->getRequest()->get('page', 1)) + ); + } + + protected function renderEditionTemplate() + { + return $this->render('customer-edit', $this->getEditionArguments()); + } + + protected function redirectToEditionTemplate() + { + $this->redirectToRoute("admin.customer.update.view", $this->getEditionArguments()); + } +} \ No newline at end of file diff --git a/core/lib/Thelia/Controller/NullControllerInterface.php b/core/lib/Thelia/Controller/NullControllerInterface.php deleted file mode 100755 index 6e832aff6..000000000 --- a/core/lib/Thelia/Controller/NullControllerInterface.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - -interface NullControllerInterface -{ - /** - * Nothing to do - */ - public function noAction(Request $request); - -} diff --git a/core/lib/Thelia/Core/Event/Customer/CustomerCreateOrUpdateEvent.php b/core/lib/Thelia/Core/Event/Customer/CustomerCreateOrUpdateEvent.php index 2c59c2899..2c45942f3 100755 --- a/core/lib/Thelia/Core/Event/Customer/CustomerCreateOrUpdateEvent.php +++ b/core/lib/Thelia/Core/Event/Customer/CustomerCreateOrUpdateEvent.php @@ -31,7 +31,7 @@ use Thelia\Model\Customer; * @package Thelia\Core\Event * @author Manuel Raynaud */ -class CustomerCreateOrUpdateEvent extends ActionEvent +class CustomerCreateOrUpdateEvent extends CustomerEvent { //base parameters for creating new customer protected $title; @@ -53,11 +53,6 @@ class CustomerCreateOrUpdateEvent extends ActionEvent protected $discount; protected $company; - /** - * @var \Thelia\Model\Customer - */ - protected $customer; - /** * @param int $title the title customer id * @param string $firstname @@ -242,21 +237,4 @@ class CustomerCreateOrUpdateEvent extends ActionEvent { return $this->sponsor; } - - /** - * @param Customer $customer - */ - public function setCustomer(Customer $customer) - { - $this->customer = $customer; - } - - /** - * @return Customer - */ - public function getCustomer() - { - return $this->customer; - } - } diff --git a/core/lib/Thelia/Core/Event/Customer/CustomerEvent.php b/core/lib/Thelia/Core/Event/Customer/CustomerEvent.php index f11bb7f2d..e76f23955 100755 --- a/core/lib/Thelia/Core/Event/Customer/CustomerEvent.php +++ b/core/lib/Thelia/Core/Event/Customer/CustomerEvent.php @@ -28,13 +28,23 @@ use Thelia\Core\Event\ActionEvent; class CustomerEvent extends ActionEvent { - public $customer; + public $customer = null; - public function __construct(Customer $customer) + public function __construct(Customer $customer = null) { $this->customer = $customer; } + /** + * @param Customer $customer + */ + public function setCustomer(Customer $customer) + { + $this->customer = $customer; + + return $this; + } + /** * @return \Thelia\Model\Customer */ @@ -43,4 +53,12 @@ class CustomerEvent extends ActionEvent return $this->customer; } + /** + * @return bool + */ + public function hasCustomer() + { + return $this->customer != null; + } + } diff --git a/core/lib/Thelia/Core/Event/Customer/CustomerLoginEvent.php b/core/lib/Thelia/Core/Event/Customer/CustomerLoginEvent.php index 56c29bf6c..0a046177e 100755 --- a/core/lib/Thelia/Core/Event/Customer/CustomerLoginEvent.php +++ b/core/lib/Thelia/Core/Event/Customer/CustomerLoginEvent.php @@ -26,17 +26,7 @@ namespace Thelia\Core\Event\Customer; use Thelia\Core\Event\ActionEvent; use Thelia\Model\Customer; -class CustomerLoginEvent extends ActionEvent +class CustomerLoginEvent extends CustomerEvent { - protected $customer; - - public function __construct(Customer $customer) - { - $this->customer = $customer; - } - - public function getCustomer() - { - return $this->customer; - } + // Nothing specific :) } diff --git a/core/lib/Thelia/Core/Template/Assets/AsseticHelper.php b/core/lib/Thelia/Core/Template/Assets/AsseticHelper.php index 12ed85ad2..6892d45a8 100755 --- a/core/lib/Thelia/Core/Template/Assets/AsseticHelper.php +++ b/core/lib/Thelia/Core/Template/Assets/AsseticHelper.php @@ -22,7 +22,6 @@ /*************************************************************************************/ namespace Thelia\Core\Template\Assets; - use Assetic\AssetManager; use Assetic\FilterManager; use Assetic\Filter; @@ -59,7 +58,7 @@ class AsseticHelper $am = new AssetManager(); $fm = new FilterManager(); - if (! empty($filters)) { + if (!empty($filters)) { $filter_list = explode(',', $filters); foreach ($filter_list as $filter_name) { @@ -67,36 +66,37 @@ class AsseticHelper $filter_name = trim($filter_name); switch ($filter_name) { - case 'less' : - $fm->set('less', new Filter\LessphpFilter()); - break; + case 'less': + $fm->set('less', new Filter\LessphpFilter()); + break; - case 'sass' : - $fm->set('sass', new Filter\Sass\SassFilter()); - break; + case 'sass': + $fm->set('sass', new Filter\Sass\SassFilter()); + break; - case 'cssembed' : - $fm->set('cssembed', new Filter\PhpCssEmbedFilter()); - break; + case 'cssembed': + $fm->set('cssembed', new Filter\PhpCssEmbedFilter()); + break; - case 'cssrewrite': - $fm->set('cssrewrite', new Filter\CssRewriteFilter()); - break; + case 'cssrewrite': + $fm->set('cssrewrite', new Filter\CssRewriteFilter()); + break; - case 'cssimport': - $fm->set('cssimport', new Filter\CssImportFilter()); - break; + case 'cssimport': + $fm->set('cssimport', new Filter\CssImportFilter()); + break; - case 'compass': - $fm->set('compass', new Filter\CompassFilter()); - break; + case 'compass': + $fm->set('compass', new Filter\CompassFilter()); + break; - default : - throw new \InvalidArgumentException("Unsupported Assetic filter: '$filter_name'"); - break; + default: + throw new \InvalidArgumentException("Unsupported Assetic filter: '$filter_name'"); + break; } } - } else { + } + else { $filter_list = array(); } @@ -106,7 +106,7 @@ class AsseticHelper $factory->setAssetManager($am); $factory->setFilterManager($fm); - $factory->setDefaultOutput('*'.(! empty($asset_type) ? '.' : '').$asset_type); + $factory->setDefaultOutput('*' . (!empty($asset_type) ? '.' : '') . $asset_type); $factory->setDebug($debug); @@ -129,7 +129,7 @@ class AsseticHelper // // before generating 3bc974a-ad3ef47.css, delete 3bc974a-* files. // - if ($dev_mode == true || ! file_exists($target_file)) { + if ($dev_mode == true || !file_exists($target_file)) { if (ConfigQuery::read('process_assets', true)) { @@ -144,7 +144,8 @@ class AsseticHelper foreach ($filter_list as $filter) { if ('?' != $filter[0]) { $asset->ensureFilter($fm->get($filter)); - } elseif (!$debug) { + } + elseif (!$debug) { $asset->ensureFilter($fm->get(substr($filter, 1))); } } @@ -155,6 +156,67 @@ class AsseticHelper } } - return rtrim($output_url, '/').'/'.$asset_target_path; + return rtrim($output_url, '/') . '/' . $asset_target_path; } -} + + // Create a hash of the current assets directory + public function getStamp($directory) + { + + $stamp = ''; + + foreach (new \DirectoryIterator($directory) as $fileInfo) { + + if ($fileInfo->isDot()) continue; + + if ($fileInfo->isDir()) { + $stamp .= $this->getStamp($fileInfo->getPathName()); + } + + if ($fileInfo->isFile()) { + $stamp .= $fileInfo->getMTime(); + } + } + + return $stamp; + } + + public function copyAssets($from_directory, $to_directory) + { + + echo "copy $from_directory to $to_directory\n"; + + $iterator = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($from_directory, \RecursiveDirectoryIterator::SKIP_DOTS), + \RecursiveIteratorIterator::SELF_FIRST); + + foreach ($iterator as $item) { + if ($item->isDir()) { + $dest_dir = $to_directory . DIRECTORY_SEPARATOR . $iterator->getSubPathName(); + + if (!is_dir($dest_dir)) { + if (file_exists($dest_dir)) { + @unlink($dest_dir); + } + + if (!mkdir($dest_dir, 0777, true)) { + throw new \RuntimeException( + "Failed to create directory $dest_dir. Please check that your web server has the proper access rights"); + } + } + } + else { + $dest_file = $to_directory . DIRECTORY_SEPARATOR . $iterator->getSubPathName(); + + if (file_exists($dest_file)) { + @unlink($dest_file); + } + + if (!copy($item, $dest_file)) { + throw new \RuntimeException( + "Failed to copy $source_file to $dest_file. Please check that your web server has the proper access rights"); + } + } + } + } +} \ No newline at end of file diff --git a/core/lib/Thelia/Core/Template/Loop/Customer.php b/core/lib/Thelia/Core/Template/Loop/Customer.php index 949103556..f955cd217 100755 --- a/core/lib/Thelia/Core/Template/Loop/Customer.php +++ b/core/lib/Thelia/Core/Template/Loop/Customer.php @@ -36,6 +36,9 @@ use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Model\CustomerQuery; use Thelia\Type\TypeCollection; use Thelia\Type; +use Thelia\Model\OrderQuery; +use Thelia\Model\Map\OrderAddressTableMap; +use Thelia\Model\Map\OrderTableMap; /** * @@ -65,7 +68,22 @@ class Customer extends BaseLoop implements SearchLoopInterface, PropelSearchLoop ) ), Argument::createBooleanTypeArgument('reseller'), - Argument::createIntTypeArgument('sponsor') + Argument::createIntTypeArgument('sponsor'), + new Argument( + 'order', + new TypeCollection( + new Type\EnumListType(array( + 'id', 'id_reverse', + 'reference', 'reference_reverse', + 'firstname', 'firstname_reverse', + 'lastname', 'lastname_reverse', + 'last_order', 'last_order_reverse', + 'order_amount', 'order_amount_reverse', + 'registration_date', 'registration_date_reverse' + )) + ), + 'lastname' + ) ); } @@ -151,6 +169,49 @@ class Customer extends BaseLoop implements SearchLoopInterface, PropelSearchLoop $search->filterBySponsor($sponsor, Criteria::EQUAL); } + $orders = $this->getOrder(); + + foreach ($orders as $order) { + switch ($order) { + case 'id': + $search->orderById(Criteria::ASC); + break; + case 'id_reverse': + $search->orderById(Criteria::DESC); + break; + + case 'reference': + $search->orderByRef(Criteria::ASC); + break; + case 'reference_reverse': + $search->orderByRef(Criteria::DESC); + break; + + case 'lastname': + $search->orderByLastname(Criteria::ASC); + break; + case 'lastname_reverse': + $search->orderByLastname(Criteria::DESC); + break; + + case 'firstname': + $search->orderByFirstname(Criteria::ASC); + break; + case 'firstname_reverse': + $search->orderByFirstname(Criteria::DESC); + break; + + case 'registration_date': + $search->orderByCreatedAt(Criteria::ASC); + break; + case 'registration_date_reverse': + $search->orderByCreatedAt(Criteria::DESC); + break; + + + } + } + return $search; } @@ -158,16 +219,24 @@ class Customer extends BaseLoop implements SearchLoopInterface, PropelSearchLoop public function parseResults(LoopResult $loopResult) { foreach ($loopResult->getResultDataCollection() as $customer) { + $loopResultRow = new LoopResultRow($customer); - $loopResultRow->set("ID", $customer->getId()); - $loopResultRow->set("REF", $customer->getRef()); - $loopResultRow->set("TITLE", $customer->getTitleId()); - $loopResultRow->set("FIRSTNAME", $customer->getFirstname()); - $loopResultRow->set("LASTNAME", $customer->getLastname()); - $loopResultRow->set("EMAIL", $customer->getEmail()); - $loopResultRow->set("RESELLER", $customer->getReseller()); - $loopResultRow->set("SPONSOR", $customer->getSponsor()); - $loopResultRow->set("DISCOUNT", $customer->getDiscount()); + + $loopResultRow + ->set("ID" , $customer->getId()) + ->set("REF" , $customer->getRef()) + ->set("TITLE" , $customer->getTitleId()) + ->set("FIRSTNAME" , $customer->getFirstname()) + ->set("LASTNAME" , $customer->getLastname()) + ->set("EMAIL" , $customer->getEmail()) + ->set("RESELLER" , $customer->getReseller()) + ->set("SPONSOR" , $customer->getSponsor()) + ->set("DISCOUNT" , $customer->getDiscount()) + + ->set("LAST_ORDER_DATE" , $lastOrder != null ? $lastOrder->getCreatedAt() : '') + ->set("LAST_ORDER_AMOUNT" , $lastOrder != null ? $lastOrder->getCreatedAt() : '') + ->set("LAST_ORDER_CURRENCY" , $lastOrder != null ? $lastOrder->getCreatedAt() : '') + ; $loopResult->addRow($loopResultRow); } diff --git a/core/lib/Thelia/Form/CustomerUpdateForm.php b/core/lib/Thelia/Form/CustomerUpdateForm.php index 06e094ec7..7442309be 100755 --- a/core/lib/Thelia/Form/CustomerUpdateForm.php +++ b/core/lib/Thelia/Form/CustomerUpdateForm.php @@ -82,6 +82,21 @@ class CustomerUpdateForm extends BaseForm "for" => "lastname" ) )) + ->add("email", "email", array( + "constraints" => array( + new Constraints\NotBlank() + ), + "label" => Translator::getInstance()->trans("Email address"), + "label_attr" => array( + "for" => "email" + ) + )) + ->add("password", "text", array( + "label" => Translator::getInstance()->trans("Password"), + "label_attr" => array( + "for" => "email" + ) + )) ->add("address1", "text", array( "constraints" => array( new Constraints\NotBlank() @@ -89,7 +104,7 @@ class CustomerUpdateForm extends BaseForm "label_attr" => array( "for" => "address" ), - "label" => Translator::getInstance()->trans("Street Address") + "label" => Translator::getInstance()->trans("Street Address ") )) ->add("address2", "text", array( "label" => Translator::getInstance()->trans("Address Line 2"), diff --git a/templates/admin/default/admin-layout.tpl b/templates/admin/default/admin-layout.tpl index 03a011866..5a8d564e2 100644 --- a/templates/admin/default/admin-layout.tpl +++ b/templates/admin/default/admin-layout.tpl @@ -22,7 +22,7 @@ {block name="before-bootstrap-css"}{/block} - {stylesheets file='assets/less/*' filters='less,cssembed'} + {stylesheets file='assets/less/main.less' filters='less,cssembed'} {/stylesheets} diff --git a/templates/admin/default/ajax/address-update-modal.html b/templates/admin/default/ajax/address-update-modal.html deleted file mode 100644 index 687c51b57..000000000 --- a/templates/admin/default/ajax/address-update-modal.html +++ /dev/null @@ -1,111 +0,0 @@ -{* Update an Address *} - -{form name="thelia.admin.address.update"} - -{* Capture the dialog body, to pass it to the generic dialog *} -{capture "edit_address_dialog"} - - {form_hidden_fields form=$form} - - {form_field form=$form field='label'} -
- - -
- {/form_field} - - {form_field form=$form field='company'} -
- - -
- {/form_field} - - {form_field form=$form field='title'} -
- - - -
- {/form_field} - - {form_field form=$form field='firstname'} -
- - -
- {/form_field} - - {form_field form=$form field='lastname'} -
- - -
- {/form_field} - - {form_field form=$form field='address1'} -
- - -
- -
- {form_field form=$form field='address2'} - - {/form_field} -
- -
- {form_field form=$form field='address3'} - - {/form_field} -
- {/form_field} - - {form_field form=$form field='zipcode'} -
- - -
- {/form_field} - - {form_field form=$form field='city'} -
- - -
- {/form_field} - - {form_field form=$form field='country'} -
- - -
- {/form_field} - -{/capture} - - {include - file = "includes/generic-create-dialog.html" - - dialog_id = "edit_address_dialog" - dialog_title = {intl l="Edit an address"} - dialog_body = {$smarty.capture.edit_address_dialog nofilter} - -dialog_ok_label = {intl l="Edit this address"} -dialog_cancel_label = {intl l="Cancel"} - -form_action = {url path="/admin/address/save/{$address_id}"} -form_enctype = {form_enctype form=$form} -form_error_message = $form_error_message -} - -{/form} \ No newline at end of file diff --git a/templates/admin/default/customer-edit.html b/templates/admin/default/customer-edit.html index 79aff3119..97f94deb2 100644 --- a/templates/admin/default/customer-edit.html +++ b/templates/admin/default/customer-edit.html @@ -30,18 +30,21 @@
{form name="thelia.admin.customer.update"} -
+ -
-
- - -
-
- {form_hidden_fields form=$form} + {include + file="includes/inner-form-toolbar.html" + hide_flags = true + close_url = {url path='/admin/customers'} + } + + {form_hidden_fields form=$form} + + + {form_field form=$form field='success_url'} - + {/form_field} {if $form_error}
{$form_error_message}
{/if} @@ -51,7 +54,7 @@ {form_field form=$form field='title'}
- + + +
{/form_field} {form_field form=$form field='lastname'}
- - + + +
+ {/form_field} + + {form_field form=$form field='email'} +
+ + +
+ {/form_field} + + {form_field form=$form field='password'} +
+ +
{/form_field} @@ -81,50 +98,50 @@ {form_field form=$form field='company'}
- - + +
{/form_field} {form_field form=$form field='address1'}
- - + +
{/form_field} {form_field form=$form field='address2'}
- +
{/form_field} {form_field form=$form field='address3'}
- +
{/form_field} {form_field form=$form field='zipcode'}
- - + +
{/form_field} {form_field form=$form field='city'}
- - + +
{/form_field} {form_field form=$form field='country'}
- +
@@ -149,13 +166,14 @@ {intl l="Address"} - {intl l="Actions"} + {intl l="Actions"} {loop name="address" type="address" customer="$customer_id" backend_context="1" default="0"} + {$LABEL}
{loop name="address.title" type="title" id=$TITLE}{$SHORT}{/loop} {$FIRSTNAME} {$LASTNAME}
{$ADDRESS1} @@ -166,21 +184,21 @@
{$TITLE} {/loop} {if $PHONE} -
P:{$PHONE} +
{intl l="Phone"}: {$PHONE} {/if} {if $CELLPHONE} -
P:{$CELLPHONE} +
{intl l="Cellular phone"}: {$CELLPHONE} {/if}
- +
- + - + @@ -262,168 +280,117 @@
-
- {* Add an Address *} +{* -- Add an Address -------------------------------------------------------- *} - {form name="thelia.admin.address.create"} +{form name="thelia.admin.address.create"} - {* Capture the dialog body, to pass it to the generic dialog *} - {capture "address_creation_dialog"} + {* Capture the dialog body, to pass it to the generic dialog *} + {capture "address_creation_dialog"} - {form_hidden_fields form=$form} - - {form_field form=$form field='success_url'} - - {/form_field} - {form_field form=$form field='label'} -
- - -
- {/form_field} + {include file='includes/customer_address_form_fields.html' customer_id=$customer_id page=$page} - {form_field form=$form field='company'} -
- - -
- {/form_field} - - {form_field form=$form field='title'} -
- - - -
- {/form_field} - - {form_field form=$form field='firstname'} -
- - -
- {/form_field} - - {form_field form=$form field='lastname'} -
- - -
- {/form_field} - - {form_field form=$form field='address1'} -
- - -
- -
- {form_field form=$form field='address2'} - - {/form_field} -
- -
- {form_field form=$form field='address3'} - - {/form_field} -
- {/form_field} - - {form_field form=$form field='zipcode'} -
- - -
- {/form_field} - - {form_field form=$form field='city'} -
- - -
- {/form_field} - - {form_field form=$form field='country'} -
- - -
- {/form_field} - - {/capture} - - {include - file = "includes/generic-create-dialog.html" - - dialog_id = "address_creation_dialog" - dialog_title = {intl l="Create an address"} - dialog_body = {$smarty.capture.address_creation_dialog nofilter} - - dialog_ok_label = {intl l="Create this address"} - dialog_cancel_label = {intl l="Cancel"} - - form_action = {url path='/admin/address/create'} - form_enctype = {form_enctype form=$form} - form_error_message = $form_error_message - } - - {/form} - - - - - {* Default confirmation dialog *} - - {capture "use_address_dialog"} - {/capture} {include - file = "includes/generic-confirm-dialog.html" + file = "includes/generic-create-dialog.html" - dialog_id = "use_address_dialog" - dialog_title = {intl l="Use address by default"} - dialog_message = {intl l="Do you really want to use this address by default ?"} + dialog_id = "address_creation_dialog" + dialog_title = {intl l="Create a customer address"} + dialog_body = {$smarty.capture.address_creation_dialog nofilter} - form_action = {url path='/admin/address/use'} - form_content = {$smarty.capture.use_address_dialog nofilter} + dialog_ok_label = {intl l="Create this address"} + dialog_cancel_label = {intl l="Cancel"} + + form_action = {url path='/admin/address/create'} + form_enctype = {form_enctype form=$form} + form_error_message = $form_error_message } - {* Delete confirmation dialog *} +{/form} - {capture "delete_address_dialog"} - - {/capture} +{* -- Update an Address ----------------------------------------------------- *} - {include - file = "includes/generic-confirm-dialog.html" +{if $address_id > 0} + {form name="thelia.admin.address.update"} - dialog_id = "delete_address_dialog" - dialog_title = {intl l="Delete address"} - dialog_message = {intl l="Do you really want to delete this address ?"} + {* Capture the dialog body, to pass it to the generic dialog *} - form_action = {url path='/admin/address/delete'} - form_content = {$smarty.capture.delete_address_dialog nofilter} - } + {capture "address_update_dialog"} + + + {include file='includes/customer_address_form_fields.html' customer_id=$customer_id page=$page} + + {/capture} + + {include + file = "includes/generic-create-dialog.html" + + dialog_id = "address_update_dialog" + dialog_title = {intl l="Edit a customer address"} + dialog_body = {$smarty.capture.address_update_dialog nofilter} + + dialog_ok_label = {intl l="Save this address"} + dialog_cancel_label = {intl l="Cancel"} + + form_action = {url path="/admin/address/save"} + form_enctype = {form_enctype form=$form} + form_error_message = $form_error_message + } + + {/form} +{/if} + +{* -- Confirm making an address the default --------------------------------- *} + +{capture "use_address_dialog"} + + + + +{/capture} + +{include + file = "includes/generic-confirm-dialog.html" + + dialog_id = "use_address_dialog" + dialog_title = {intl l="Use address by default"} + dialog_message = {intl l="Do you really want to use this address by default ?"} + + form_action = {url path='/admin/address/use'} + form_content = {$smarty.capture.use_address_dialog nofilter} +} + +{* -- Delete confirmation dialog -------------------------------------------- *} + +{capture "delete_address_dialog"} + + + + +{/capture} + +{include + file = "includes/generic-confirm-dialog.html" + + dialog_id = "delete_address_dialog" + dialog_title = {intl l="Delete address"} + dialog_message = {intl l="Do you really want to delete this address ?"} + + form_action = {url path='/admin/address/delete'} + form_content = {$smarty.capture.delete_address_dialog nofilter} +} {/block} + {block name="javascript-initialization"} + {javascripts file='assets/js/main.js'} {/javascripts} {/block} \ No newline at end of file diff --git a/templates/admin/default/customers.html b/templates/admin/default/customers.html index ba083b61c..9dff5e9c3 100644 --- a/templates/admin/default/customers.html +++ b/templates/admin/default/customers.html @@ -7,9 +7,6 @@ {block name="check-access"}view{/block} {block name="main-content"} - {assign var=customer_page value={$smarty.get.page|default:1}} - -
@@ -41,27 +38,83 @@ - {intl l="customer ref"} + {admin_sortable_header + current_order=$customer_order + order='reference' + reverse_order='reference_reverse' + path={url path='/admin/customers'} + request_parameter_name='customer_order' + label="{intl l='Reference'}" + } - {module_include location='category_list_header'} + {module_include location='customer_list_header'} - - {intl l="firstname & lastname"} + + {admin_sortable_header + current_order=$customer_order + order='lastname' + reverse_order='lastname_reverse' + path={url path='/admin/customers'} + request_parameter_name='customer_order' + label="{intl l='Last name'}" + } - - {intl l="last order"} + + {admin_sortable_header + current_order=$customer_order + order='firstname' + reverse_order='firstname_reverse' + path={url path='/admin/customers'} + request_parameter_name='customer_order' + label="{intl l='First name'}" + } - {intl l='order amount'} + + {admin_sortable_header + current_order=$customer_order + order='registration_date' + reverse_order='registration_date_reverse' + path={url path='/admin/customers'} + request_parameter_name='customer_order' + label="{intl l='Registration date'}" + } + + {intl l='Date of last order'} + {intl l='Last order amount'} + +{* TODO + + {admin_sortable_header + current_order=$customer_order + order='last_order' + reverse_order='last_order_reverse' + path={url path='/admin/customers'} + request_parameter_name='customer_order' + label="{intl l='Date of last order'}" + } + + + + {admin_sortable_header + current_order=$customer_order + order='order_amount' + reverse_order='order_amount_reverse' + path={url path='/admin/customers'} + request_parameter_name='customer_order' + label="{intl l='Last order amount'}" + } + +*} {intl l='Actions'} - {loop name="customer_list" type="customer" current="false" visible="*" backend_context="1" page={$customer_page} limit={$display_customer}} + {loop name="customer_list" type="customer" current="false" visible="*" order=$customer_order backend_context="1" page=$page limit=$display_customer} {assign "lastOrderDate" ''} {assign "lastOrderAmount" ''} {assign "lastOrderCurrency" ''} @@ -75,14 +128,23 @@ {/loop} - {$REF} + {$REF} - {$FIRSTNAME} {$LASTNAME} + {$LASTNAME} + + {$FIRSTNAME} + + + {module_include location='customer_list_row'} + + {format_date date=$CREATE_DATE} + + {$lastOrderDate} @@ -94,7 +156,7 @@
{loop type="auth" name="can_change" role="ADMIN" resource="admin.customer" access="UPDATE"} - + {/loop} {loop type="auth" name="can_send_mail" role="ADMIN" resource="admin.customer" access="VIEW"} @@ -111,10 +173,10 @@ - +
    - {if $customer_page != 1} + {if $page != 1}
  • «
  • {else}
  • «
  • @@ -137,7 +199,7 @@ {/if}
- + @@ -163,7 +225,7 @@ {form_field form=$form field='success_url'} {* on success, redirect to the edition page, _ID_ is replaced with the created object ID, see controller *} - + {/form_field} {form_field form=$form field="password"} @@ -283,7 +345,7 @@ {* Delete confirmation dialog *} {capture "delete_customer_dialog"} - + {/capture} diff --git a/templates/admin/default/includes/customer_address_form_fields.html b/templates/admin/default/includes/customer_address_form_fields.html new file mode 100644 index 000000000..d86b7921e --- /dev/null +++ b/templates/admin/default/includes/customer_address_form_fields.html @@ -0,0 +1,124 @@ +{* Customer address creation / modification fields, used in the customer-edit.html template *} + +{form_hidden_fields form=$form} + + + + +{form_field form=$form field='success_url'} + +{/form_field} + +{form_field form=$form field='label'} +
+ + +
+{/form_field} + +{form_field form=$form field='company'} +
+ + +
+{/form_field} + +{form_field form=$form field='title'} +
+ + + +
+{/form_field} + +
+
+ {form_field form=$form field='firstname'} +
+ + +
+ {/form_field} +
+
+ {form_field form=$form field='lastname'} +
+ + +
+ {/form_field} +
+
+ +{form_field form=$form field='address1'} +
+ + +
+ +
+ {form_field form=$form field='address2'} + + {/form_field} +
+ +
+ {form_field form=$form field='address3'} + + {/form_field} +
+{/form_field} + +
+
+ {form_field form=$form field='zipcode'} +
+ + +
+ {/form_field} +
+
+ {form_field form=$form field='city'} +
+ + +
+ {/form_field} +
+
+ +{form_field form=$form field='country'} +
+ + +
+{/form_field} + +
+
+ {form_field form=$form field='phone'} +
+ + +
+ {/form_field} +
+
+ {form_field form=$form field='cellphone'} +
+ + +
+ {/form_field} +
+
+ diff --git a/templates/default/assets/less/styles.less b/templates/default/assets/less/styles.less index f226cbd67..d1d9dbf56 100755 --- a/templates/default/assets/less/styles.less +++ b/templates/default/assets/less/styles.less @@ -1,4 +1,3 @@ - /* Bootstrap */ @import "bootstrap/bootstrap.less"; From d2087b994a824bc86750389557b70be25eefb327 Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Sat, 9 Nov 2013 19:38:38 +0100 Subject: [PATCH 5/7] Fixed customer edit routes --- .../Controller/Admin/CustomerController.php | 22 ++++++++++--------- templates/admin/default/customer-edit.html | 1 - templates/admin/default/orders.html | 4 ++-- templates/admin/default/search.html | 8 +++---- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/core/lib/Thelia/Controller/Admin/CustomerController.php b/core/lib/Thelia/Controller/Admin/CustomerController.php index f312167c5..a3239542c 100644 --- a/core/lib/Thelia/Controller/Admin/CustomerController.php +++ b/core/lib/Thelia/Controller/Admin/CustomerController.php @@ -107,18 +107,20 @@ class CustomerController extends AbstractCrudController 'lastname' => $object->getLastname(), 'email' => $object->getEmail(), 'title' => $object->getTitleId(), - - 'company' => $address->getCompany(), - 'address1' => $address->getAddress1(), - 'address2' => $address->getAddress2(), - 'address3' => $address->getAddress3(), - 'phone' => $address->getPhone(), - 'cellphone' => $address->getCellphone(), - 'zipcode' => $address->getZipcode(), - 'city' => $address->getCity(), - 'country' => $address->getCountryId(), ); + if ($address !== null) { + $data['company'] = $address->getCompany(); + $data['address1'] = $address->getAddress1(); + $data['address2'] = $address->getAddress2(); + $data['address3'] = $address->getAddress3(); + $data['phone'] = $address->getPhone(); + $data['cellphone'] = $address->getCellphone(); + $data['zipcode'] = $address->getZipcode(); + $data['city'] = $address->getCity(); + $data['country'] = $address->getCountryId(); + } + // A loop is used in the template return new CustomerUpdateForm($this->getRequest(), 'form', $data); } diff --git a/templates/admin/default/customer-edit.html b/templates/admin/default/customer-edit.html index 97f94deb2..24087a756 100644 --- a/templates/admin/default/customer-edit.html +++ b/templates/admin/default/customer-edit.html @@ -9,7 +9,6 @@
- {loop name="customer_edit" type="customer" current="false" id="$customer_id" backend_context="1" lang="$edit_language_id"}
diff --git a/templates/admin/default/search.html b/templates/admin/default/search.html index a39eda982..d96558ea9 100644 --- a/templates/admin/default/search.html +++ b/templates/admin/default/search.html @@ -9,7 +9,7 @@
- +
@@ -86,7 +86,7 @@ {form_field form=$form field='city'}
- +
{/form_field}
@@ -95,7 +95,7 @@ {form_field form=$form field='country'}
- {loop type="country" name="country1"} {/loop} @@ -108,7 +108,7 @@ {form_field form=$form field='phone'}
- +
{/form_field}
@@ -116,9 +116,8 @@ {form_field form=$form field='cellphone'}
- +
{/form_field}
-
- +
\ No newline at end of file diff --git a/templates/default/assets/less/styles.less b/templates/default/assets/less/styles.less index d1d9dbf56..158fbcfde 100755 --- a/templates/default/assets/less/styles.less +++ b/templates/default/assets/less/styles.less @@ -8,4 +8,4 @@ @import "thelia/import.less"; /* Theme */ -@import "../themes/default/less/import.less"; \ No newline at end of file +@import "../themes/default/less/import.less"; diff --git a/templates/default/layout.tpl b/templates/default/layout.tpl index d89694ab5..6261893d7 100644 --- a/templates/default/layout.tpl +++ b/templates/default/layout.tpl @@ -1,3 +1,5 @@ +{* Declare assets directory, relative to template base directory *} +{declare_assets directory='assets'} {block name="no-return-functions"}{/block} - + + + %kernel.environment% + - + - %kernel.environment% + + diff --git a/core/lib/Thelia/Core/Template/Assets/AssetManagerInterface.php b/core/lib/Thelia/Core/Template/Assets/AssetManagerInterface.php new file mode 100644 index 000000000..d9109b2c8 --- /dev/null +++ b/core/lib/Thelia/Core/Template/Assets/AssetManagerInterface.php @@ -0,0 +1,53 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Core\Template\Assets; + +interface AssetManagerInterface { + /** + * Prepare an asset directory. + * + * @param string $source_assets_directory the full path to the source asstes directory + * @param string $web_assets_directory_base the base directory of the web based asset directory + * @throws \RuntimeException if something goes wrong. + */ + public function prepareAssets($source_assets_directory, $web_assets_directory_base); + + /** + * Generates assets from $asset_path in $output_path, using $filters. + * + * @param string $asset_path the full path to the asset file (or file collection, e.g. *.less) + * + * @param string $web_assets_directory_base the full disk path to the base assets output directory in the web space + * @param string $output_url the URL to the base assets output directory in the web space + * + * @param string $asset_type the asset type: css, js, ... The generated files will have this extension. Pass an empty string to use the asset source extension. + * @param array $filters a list of filters, as defined below (see switch($filter_name) ...) + * + * @param boolean $debug the debug mode, true or false + * + * @throws \InvalidArgumentException if an invalid filter name is found + * @return string The URL to the generated asset file. + */ + public function processAsset($asset_path, $web_assets_directory_base, $output_url, $asset_type, $filters, $debug); +} \ No newline at end of file diff --git a/core/lib/Thelia/Core/Template/Assets/AsseticHelper.php b/core/lib/Thelia/Core/Template/Assets/AsseticAssetManager.php similarity index 96% rename from core/lib/Thelia/Core/Template/Assets/AsseticHelper.php rename to core/lib/Thelia/Core/Template/Assets/AsseticAssetManager.php index 0f3e00d54..b5356bee6 100755 --- a/core/lib/Thelia/Core/Template/Assets/AsseticHelper.php +++ b/core/lib/Thelia/Core/Template/Assets/AsseticAssetManager.php @@ -38,10 +38,17 @@ use Symfony\Component\Filesystem\Exception\IOException; * * @author Franck Allimant */ -class AsseticHelper +class AsseticAssetManager implements AssetManagerInterface { + protected $developmentMode; + protected $source_file_extensions = array('less', 'js', 'coffee', 'html', 'tpl', 'htm', 'xml'); + public function __construct($developmentMode) + { + $this->developmentMode = $developmentMode; + } + /** * Create a stamp form the modification time of the content of the given directory and all of its subdirectories * @@ -175,7 +182,7 @@ class AsseticHelper $fs = new Filesystem(); - //FIXME: lock the stuff ? + // FIXME: locking or not locking ? /* $lock_file = "$web_assets_directory_base/assets-".md5($source_assets_directory)."-generation-lock.txt"; @@ -286,11 +293,10 @@ class AsseticHelper * @param array $filters a list of filters, as defined below (see switch($filter_name) ...) * * @param boolean $debug true / false - * @param boolean $dev_mode true / false. If true, assets are not cached and always compiled. * @throws \InvalidArgumentException if an invalid filter name is found * @return string The URL to the generated asset file. */ - public function asseticize($asset_path, $web_assets_directory_base, $output_url, $asset_type, $filters, $debug, $dev_mode = false) + public function processAsset($asset_path, $web_assets_directory_base, $output_url, $asset_type, $filters, $debug) { $asset_name = basename($asset_path); $input_directory = realpath(dirname($asset_path)); @@ -330,7 +336,7 @@ class AsseticHelper Tlog::getInstance()->addDebug("Asset destination name: ", $asset_destination_path); // We generate an asset only if it does not exists, or if the asset processing is forced in development mode - if (! file_exists($asset_destination_path) || ($dev_mode && ConfigQuery::read('process_assets', true)) ) { + if (! file_exists($asset_destination_path) || ($this->developmentMode && ConfigQuery::read('process_assets', true)) ) { $writer = new AssetWriter($output_directory); diff --git a/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php b/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php index daa204dbc..dd8491bb2 100755 --- a/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php +++ b/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php @@ -25,32 +25,30 @@ namespace Thelia\Core\Template\Smarty\Assets; use Thelia\Core\Template\Assets\AsseticHelper; use Thelia\Tools\URL; +use Thelia\Core\Template\Assets\AssetManagerInterface; class SmartyAssetsManager { const ASSET_TYPE_AUTO = ''; - private $assetic_manager; + private $assetsManager; private $web_root; private $path_relative_to_web_root; - private $developmentMode; /** * Creates a new SmartyAssetsManager instance * - * @param string $web_root the disk path to the web root (with final /) - * @param string $path_relative_to_web_root the path (relative to web root) where the assets will be generated - * @param boolean $developmentMode true / false. If true, assets are not cached, and always generated. + * @param AssetManagerInterface $assetsManager an asset manager instance + * @param string $web_root the disk path to the web root (with final /) + * @param string $path_relative_to_web_root the path (relative to web root) where the assets will be generated */ - public function __construct($web_root, $path_relative_to_web_root, $developmentMode) + public function __construct(AssetManagerInterface $assetsManager, $web_root, $path_relative_to_web_root) { $this->web_root = $web_root; $this->path_relative_to_web_root = $path_relative_to_web_root; - $this->developmentMode = $developmentMode; - - $this->assetic_manager = new AsseticHelper(); + $this->assetsManager = $assetsManager; } public function prepareAssets($assets_directory, \Smarty_Internal_Template $template) { @@ -61,12 +59,10 @@ class SmartyAssetsManager if ($asset_dir_absolute_path === false) throw new \Exception("Failed to get real path of '".$tpl_dir . DS . $assets_directory."'"); - $modified = $this->assetic_manager->prepareAssets( + $this->assetsManager->prepareAssets( $asset_dir_absolute_path, $this->web_root . $this->path_relative_to_web_root ); - - } public function computeAssetUrl($assetType, $params, \Smarty_Internal_Template $template) @@ -86,25 +82,14 @@ class SmartyAssetsManager $asset_file = basename($file); if ($asset_dir === false) throw new \Exception("Failed to get real path of '".$tpl_dir.'/'.dirname($file)."'"); -/* - $url = $this->assetic_manager->asseticize( - $asset_dir.'/'.$asset_file, - $this->web_root . DS . $this->path_relative_to_web_root, - URL::getInstance()->absoluteUrl($this->path_relative_to_web_root, null, URL::PATH_TO_FILE),// PATH only - $assetType, - $filters, - $debug, - $this->developmentMode - ); -*/ - $url = $this->assetic_manager->asseticize( + + $url = $this->assetsManager->processAsset( $asset_dir . DS . $asset_file, $this->web_root . $this->path_relative_to_web_root, URL::getInstance()->absoluteUrl($this->path_relative_to_web_root, null, URL::PATH_TO_FILE /* path only */), $assetType, $filters, - $debug, - $this->developmentMode + $debug ); return $url; diff --git a/core/lib/Thelia/Core/Template/Smarty/Plugins/Assetic.php b/core/lib/Thelia/Core/Template/Smarty/Plugins/Assets.php similarity index 94% rename from core/lib/Thelia/Core/Template/Smarty/Plugins/Assetic.php rename to core/lib/Thelia/Core/Template/Smarty/Plugins/Assets.php index 808f4a2f6..e4c220ed5 100755 --- a/core/lib/Thelia/Core/Template/Smarty/Plugins/Assetic.php +++ b/core/lib/Thelia/Core/Template/Smarty/Plugins/Assets.php @@ -27,16 +27,17 @@ use Thelia\Core\Template\Smarty\SmartyPluginDescriptor; use Thelia\Core\Template\Smarty\AbstractSmartyPlugin; use Thelia\Core\Template\Smarty\Assets\SmartyAssetsManager; use Thelia\Model\ConfigQuery; +use Thelia\Core\Template\Assets\AssetManagerInterface; -class Assetic extends AbstractSmartyPlugin +class Assets extends AbstractSmartyPlugin { public $assetManager; - public function __construct($developmentMode) + public function __construct(AssetManagerInterface $assetsManager) { $asset_dir_from_web_root = ConfigQuery::read('asset_dir_from_web_root', 'assets'); - $this->assetManager = new SmartyAssetsManager(THELIA_WEB_DIR, $asset_dir_from_web_root, $developmentMode == 'dev'); + $this->assetManager = new SmartyAssetsManager($assetsManager, THELIA_WEB_DIR, $asset_dir_from_web_root); } public function declareAssets($params, \Smarty_Internal_Template $template)