diff --git a/adm/themes/default/template/controllers/customers/helpers/view/view.tpl b/adm/themes/default/template/controllers/customers/helpers/view/view.tpl index 82bebfc..7aa91ec 100755 --- a/adm/themes/default/template/controllers/customers/helpers/view/view.tpl +++ b/adm/themes/default/template/controllers/customers/helpers/view/view.tpl @@ -266,6 +266,7 @@

{/if} +{*
@@ -302,6 +303,7 @@

{/if}
+*} {if $products AND count($products)}
diff --git a/cache/__class_index.php b/cache/__class_index.php new file mode 100644 index 0000000..5e8e448 --- /dev/null +++ b/cache/__class_index.php @@ -0,0 +1,4346 @@ + + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'AbstractLoggerCore' => + array ( + 'path' => 'classes/log/AbstractLogger.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'Adapter_AddressFactory' => + array ( + 'path' => 'Adapter/Adapter_AddressFactory.php', + 'type' => 'class', + 'override' => false, + ), + 'Adapter_CacheManager' => + array ( + 'path' => 'Adapter/Adapter_CacheManager.php', + 'type' => 'class', + 'override' => false, + ), + 'Adapter_Configuration' => + array ( + 'path' => 'Adapter/Adapter_Configuration.php', + 'type' => 'class', + 'override' => false, + ), + 'Adapter_Database' => + array ( + 'path' => 'Adapter/Adapter_Database.php', + 'type' => 'class', + 'override' => false, + ), + 'Adapter_EntityMapper' => + array ( + 'path' => 'Adapter/Adapter_EntityMapper.php', + 'type' => 'class', + 'override' => false, + ), + 'Adapter_EntityMetaDataRetriever' => + array ( + 'path' => 'Adapter/Adapter_EntityMetaDataRetriever.php', + 'type' => 'class', + 'override' => false, + ), + 'Adapter_Exception' => + array ( + 'path' => 'Adapter/Adapter_Exception.php', + 'type' => 'class', + 'override' => false, + ), + 'Adapter_HookManager' => + array ( + 'path' => 'Adapter/Adapter_HookManager.php', + 'type' => 'class', + 'override' => false, + ), + 'Adapter_PackItemsManager' => + array ( + 'path' => 'Adapter/Adapter_PackItemsManager.php', + 'type' => 'class', + 'override' => false, + ), + 'Adapter_ProductPriceCalculator' => + array ( + 'path' => 'Adapter/Adapter_ProductPriceCalculator.php', + 'type' => 'class', + 'override' => false, + ), + 'Adapter_ServiceLocator' => + array ( + 'path' => 'Adapter/Adapter_ServiceLocator.php', + 'type' => 'class', + 'override' => false, + ), + 'Adapter_StockManager' => + array ( + 'path' => 'Adapter/Adapter_StockManager.php', + 'type' => 'class', + 'override' => false, + ), + 'Address' => + array ( + 'path' => 'override/classes/Address.php', + 'type' => 'class', + 'override' => false, + ), + 'AddressController' => + array ( + 'path' => 'override/controllers/front/AddressController.php', + 'type' => 'class', + 'override' => false, + ), + 'AddressControllerCore' => + array ( + 'path' => 'controllers/front/AddressController.php', + 'type' => 'class', + 'override' => false, + ), + 'AddressCore' => + array ( + 'path' => 'classes/Address.php', + 'type' => 'class', + 'override' => false, + ), + 'AddressFormat' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AddressFormatCore' => + array ( + 'path' => 'classes/AddressFormat.php', + 'type' => 'class', + 'override' => false, + ), + 'AddressesController' => + array ( + 'path' => 'override/controllers/front/AddressesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AddressesControllerCore' => + array ( + 'path' => 'controllers/front/AddressesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminAccessController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminAccessControllerCore' => + array ( + 'path' => 'controllers/admin/AdminAccessController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminAddonsCatalogController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminAddonsCatalogControllerCore' => + array ( + 'path' => 'controllers/admin/AdminAddonsCatalogController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminAddressesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminAddressesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminAddressesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminAdminPreferencesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminAdminPreferencesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminAdminPreferencesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminAttachmentsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminAttachmentsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminAttachmentsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminAttributeGeneratorController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminAttributeGeneratorControllerCore' => + array ( + 'path' => 'controllers/admin/AdminAttributeGeneratorController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminAttributesGroupsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminAttributesGroupsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminAttributesGroupsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminBackupController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminBackupControllerCore' => + array ( + 'path' => 'controllers/admin/AdminBackupController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCarrierWizardController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminCarrierWizardControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCarrierWizardController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCarriersController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminCarriersControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCarriersController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCartRulesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminCartRulesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCartRulesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCartsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminCartsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCartsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCategoriesController' => + array ( + 'path' => 'override/controllers/admin/AdminCategoriesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCategoriesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCategoriesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCmsCategoriesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminCmsCategoriesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCmsCategoriesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCmsContentController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminCmsContentControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCmsContentController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCmsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminCmsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCmsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminContactsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminContactsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminContactsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminController' => + array ( + 'path' => 'override/classes/controller/AdminController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminControllerCore' => + array ( + 'path' => 'classes/controller/AdminController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCountriesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminCountriesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCountriesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCurrenciesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminCurrenciesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCurrenciesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCustomerPreferencesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminCustomerPreferencesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCustomerPreferencesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCustomerThreadsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminCustomerThreadsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCustomerThreadsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminCustomersController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminCustomersControllerCore' => + array ( + 'path' => 'controllers/admin/AdminCustomersController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminDashboardController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminDashboardControllerCore' => + array ( + 'path' => 'controllers/admin/AdminDashboardController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminDeliverySlipController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminDeliverySlipControllerCore' => + array ( + 'path' => 'controllers/admin/AdminDeliverySlipController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminEmailsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminEmailsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminEmailsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminEmployeesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminEmployeesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminEmployeesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminFeaturesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminFeaturesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminFeaturesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminGendersController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminGendersControllerCore' => + array ( + 'path' => 'controllers/admin/AdminGendersController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminGeolocationController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminGeolocationControllerCore' => + array ( + 'path' => 'controllers/admin/AdminGeolocationController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminGroupsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminGroupsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminGroupsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminImagesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminImagesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminImagesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminImportController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminImportControllerCore' => + array ( + 'path' => 'controllers/admin/AdminImportController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminInformationController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminInformationControllerCore' => + array ( + 'path' => 'controllers/admin/AdminInformationController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminInvoicesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminInvoicesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminInvoicesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminLanguagesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminLanguagesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminLanguagesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminLocalizationController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminLocalizationControllerCore' => + array ( + 'path' => 'controllers/admin/AdminLocalizationController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminLoginController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminLoginControllerCore' => + array ( + 'path' => 'controllers/admin/AdminLoginController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminLogsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminLogsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminLogsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminMaintenanceController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminMaintenanceControllerCore' => + array ( + 'path' => 'controllers/admin/AdminMaintenanceController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminManufacturersController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminManufacturersControllerCore' => + array ( + 'path' => 'controllers/admin/AdminManufacturersController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminMarketingController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminMarketingControllerCore' => + array ( + 'path' => 'controllers/admin/AdminMarketingController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminMetaController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminMetaControllerCore' => + array ( + 'path' => 'controllers/admin/AdminMetaController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminModulesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminModulesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminModulesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminModulesPositionsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminModulesPositionsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminModulesPositionsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminNotFoundController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminNotFoundControllerCore' => + array ( + 'path' => 'controllers/admin/AdminNotFoundController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminOrderMessageController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminOrderMessageControllerCore' => + array ( + 'path' => 'controllers/admin/AdminOrderMessageController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminOrderPreferencesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminOrderPreferencesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminOrderPreferencesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminOrdersController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminOrdersControllerCore' => + array ( + 'path' => 'controllers/admin/AdminOrdersController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminOutstandingController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminOutstandingControllerCore' => + array ( + 'path' => 'controllers/admin/AdminOutstandingController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminPPreferencesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminPPreferencesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminPPreferencesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminPatternsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminPatternsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminPatternsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminPaymentController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminPaymentControllerCore' => + array ( + 'path' => 'controllers/admin/AdminPaymentController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminPdfController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminPdfControllerCore' => + array ( + 'path' => 'controllers/admin/AdminPdfController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminPerformanceController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminPerformanceControllerCore' => + array ( + 'path' => 'controllers/admin/AdminPerformanceController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminPreferencesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminPreferencesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminPreferencesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminProductsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminProductsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminProductsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminProfilesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminProfilesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminProfilesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminQuickAccessesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminQuickAccessesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminQuickAccessesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminRangePriceController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminRangePriceControllerCore' => + array ( + 'path' => 'controllers/admin/AdminRangePriceController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminRangeWeightController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminRangeWeightControllerCore' => + array ( + 'path' => 'controllers/admin/AdminRangeWeightController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminReferrersController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminReferrersControllerCore' => + array ( + 'path' => 'controllers/admin/AdminReferrersController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminRequestSqlController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminRequestSqlControllerCore' => + array ( + 'path' => 'controllers/admin/AdminRequestSqlController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminReturnController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminReturnControllerCore' => + array ( + 'path' => 'controllers/admin/AdminReturnController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminScenesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminScenesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminScenesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminSearchConfController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminSearchConfControllerCore' => + array ( + 'path' => 'controllers/admin/AdminSearchConfController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminSearchController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminSearchControllerCore' => + array ( + 'path' => 'controllers/admin/AdminSearchController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminSearchEnginesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminSearchEnginesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminSearchEnginesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminShippingController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminShippingControllerCore' => + array ( + 'path' => 'controllers/admin/AdminShippingController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminShopController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminShopControllerCore' => + array ( + 'path' => 'controllers/admin/AdminShopController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminShopGroupController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminShopGroupControllerCore' => + array ( + 'path' => 'controllers/admin/AdminShopGroupController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminShopUrlController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminShopUrlControllerCore' => + array ( + 'path' => 'controllers/admin/AdminShopUrlController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminSlipController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminSlipControllerCore' => + array ( + 'path' => 'controllers/admin/AdminSlipController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminSpecificPriceRuleController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminSpecificPriceRuleControllerCore' => + array ( + 'path' => 'controllers/admin/AdminSpecificPriceRuleController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminStatesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminStatesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminStatesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminStatsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminStatsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminStatsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminStatsTabController' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'AdminStatsTabControllerCore' => + array ( + 'path' => 'controllers/admin/AdminStatsTabController.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'AdminStatusesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminStatusesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminStatusesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminStockConfigurationController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminStockConfigurationControllerCore' => + array ( + 'path' => 'controllers/admin/AdminStockConfigurationController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminStockCoverController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminStockCoverControllerCore' => + array ( + 'path' => 'controllers/admin/AdminStockCoverController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminStockInstantStateController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminStockInstantStateControllerCore' => + array ( + 'path' => 'controllers/admin/AdminStockInstantStateController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminStockManagementController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminStockManagementControllerCore' => + array ( + 'path' => 'controllers/admin/AdminStockManagementController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminStockMvtController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminStockMvtControllerCore' => + array ( + 'path' => 'controllers/admin/AdminStockMvtController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminStoresController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminStoresControllerCore' => + array ( + 'path' => 'controllers/admin/AdminStoresController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminSuppliersController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminSuppliersControllerCore' => + array ( + 'path' => 'controllers/admin/AdminSuppliersController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminSupplyOrdersController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminSupplyOrdersControllerCore' => + array ( + 'path' => 'controllers/admin/AdminSupplyOrdersController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminTab' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'AdminTabCore' => + array ( + 'path' => 'classes/AdminTab.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'AdminTabsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminTabsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminTabsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminTagsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminTagsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminTagsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminTaxRulesGroupController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminTaxRulesGroupControllerCore' => + array ( + 'path' => 'controllers/admin/AdminTaxRulesGroupController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminTaxesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminTaxesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminTaxesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminThemesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminThemesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminThemesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminTrackingController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminTrackingControllerCore' => + array ( + 'path' => 'controllers/admin/AdminTrackingController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminTranslationsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminTranslationsControllerCore' => + array ( + 'path' => 'controllers/admin/AdminTranslationsController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminWarehousesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminWarehousesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminWarehousesController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminWebserviceController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminWebserviceControllerCore' => + array ( + 'path' => 'controllers/admin/AdminWebserviceController.php', + 'type' => 'class', + 'override' => false, + ), + 'AdminZonesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AdminZonesControllerCore' => + array ( + 'path' => 'controllers/admin/AdminZonesController.php', + 'type' => 'class', + 'override' => false, + ), + 'Alias' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AliasCore' => + array ( + 'path' => 'classes/Alias.php', + 'type' => 'class', + 'override' => false, + ), + 'Attachment' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AttachmentController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AttachmentControllerCore' => + array ( + 'path' => 'controllers/front/AttachmentController.php', + 'type' => 'class', + 'override' => false, + ), + 'AttachmentCore' => + array ( + 'path' => 'classes/Attachment.php', + 'type' => 'class', + 'override' => false, + ), + 'Attribute' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AttributeCore' => + array ( + 'path' => 'classes/Attribute.php', + 'type' => 'class', + 'override' => false, + ), + 'AttributeGroup' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AttributeGroupCore' => + array ( + 'path' => 'classes/AttributeGroup.php', + 'type' => 'class', + 'override' => false, + ), + 'AttributeMerge' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AttributeMergeCore' => + array ( + 'path' => 'override/classes/AttributeMerge.php', + 'type' => 'class', + 'override' => false, + ), + 'AttributeValueMerge' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'AttributeValueMergeCore' => + array ( + 'path' => 'override/classes/AttributeValueMerge.php', + 'type' => 'class', + 'override' => false, + ), + 'AuthController' => + array ( + 'path' => 'override/controllers/front/AuthController.php', + 'type' => 'class', + 'override' => false, + ), + 'AuthControllerCore' => + array ( + 'path' => 'controllers/front/AuthController.php', + 'type' => 'class', + 'override' => false, + ), + 'AverageTaxOfProductsTaxCalculator' => + array ( + 'path' => 'classes/tax/AverageTaxOfProductsTaxCalculator.php', + 'type' => 'class', + 'override' => false, + ), + 'BestSalesController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'BestSalesControllerCore' => + array ( + 'path' => 'controllers/front/BestSalesController.php', + 'type' => 'class', + 'override' => false, + ), + 'Blowfish' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'BlowfishCore' => + array ( + 'path' => 'classes/Blowfish.php', + 'type' => 'class', + 'override' => false, + ), + 'CMS' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CMSCategory' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CMSCategoryCore' => + array ( + 'path' => 'classes/CMSCategory.php', + 'type' => 'class', + 'override' => false, + ), + 'CMSCore' => + array ( + 'path' => 'classes/CMS.php', + 'type' => 'class', + 'override' => false, + ), + 'CMSRole' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CMSRoleCore' => + array ( + 'path' => 'classes/CMSRole.php', + 'type' => 'class', + 'override' => false, + ), + 'CSV' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CSVCore' => + array ( + 'path' => 'classes/CSV.php', + 'type' => 'class', + 'override' => false, + ), + 'Cache' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'CacheApc' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CacheApcCore' => + array ( + 'path' => 'classes/cache/CacheApc.php', + 'type' => 'class', + 'override' => false, + ), + 'CacheCore' => + array ( + 'path' => 'classes/cache/Cache.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'CacheFs' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CacheFsCore' => + array ( + 'path' => 'classes/cache/CacheFs.php', + 'type' => 'class', + 'override' => false, + ), + 'CacheMemcache' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CacheMemcacheCore' => + array ( + 'path' => 'classes/cache/CacheMemcache.php', + 'type' => 'class', + 'override' => false, + ), + 'CacheMemcached' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CacheMemcachedCore' => + array ( + 'path' => 'classes/cache/CacheMemcached.php', + 'type' => 'class', + 'override' => false, + ), + 'CacheXcache' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CacheXcacheCore' => + array ( + 'path' => 'classes/cache/CacheXcache.php', + 'type' => 'class', + 'override' => false, + ), + 'Carrier' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CarrierCore' => + array ( + 'path' => 'classes/Carrier.php', + 'type' => 'class', + 'override' => false, + ), + 'CarrierModule' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'CarrierModuleCore' => + array ( + 'path' => 'classes/module/CarrierModule.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'Cart' => + array ( + 'path' => 'override/classes/Cart.php', + 'type' => 'class', + 'override' => false, + ), + 'CartController' => + array ( + 'path' => 'override/controllers/front/CartController.php', + 'type' => 'class', + 'override' => false, + ), + 'CartControllerCore' => + array ( + 'path' => 'controllers/front/CartController.php', + 'type' => 'class', + 'override' => false, + ), + 'CartCore' => + array ( + 'path' => 'classes/Cart.php', + 'type' => 'class', + 'override' => false, + ), + 'CartRule' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CartRuleCore' => + array ( + 'path' => 'classes/CartRule.php', + 'type' => 'class', + 'override' => false, + ), + 'Category' => + array ( + 'path' => 'override/classes/Category.php', + 'type' => 'class', + 'override' => false, + ), + 'CategoryController' => + array ( + 'path' => 'override/controllers/front/CategoryController.php', + 'type' => 'class', + 'override' => false, + ), + 'CategoryControllerCore' => + array ( + 'path' => 'controllers/front/CategoryController.php', + 'type' => 'class', + 'override' => false, + ), + 'CategoryCore' => + array ( + 'path' => 'classes/Category.php', + 'type' => 'class', + 'override' => false, + ), + 'CategoryMerge' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CategoryMergeCore' => + array ( + 'path' => 'override/classes/CategoryMerge.php', + 'type' => 'class', + 'override' => false, + ), + 'ChangeCurrencyController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ChangeCurrencyControllerCore' => + array ( + 'path' => 'controllers/front/ChangeCurrencyController.php', + 'type' => 'class', + 'override' => false, + ), + 'Chart' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ChartCore' => + array ( + 'path' => 'classes/Chart.php', + 'type' => 'class', + 'override' => false, + ), + 'CmsController' => + array ( + 'path' => 'override/controllers/front/CmsController.php', + 'type' => 'class', + 'override' => false, + ), + 'CmsControllerCore' => + array ( + 'path' => 'controllers/front/CmsController.php', + 'type' => 'class', + 'override' => false, + ), + 'Combination' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CombinationCore' => + array ( + 'path' => 'classes/Combination.php', + 'type' => 'class', + 'override' => false, + ), + 'CompareController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CompareControllerCore' => + array ( + 'path' => 'controllers/front/CompareController.php', + 'type' => 'class', + 'override' => false, + ), + 'CompareProduct' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CompareProductCore' => + array ( + 'path' => 'classes/CompareProduct.php', + 'type' => 'class', + 'override' => false, + ), + 'Configuration' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ConfigurationCore' => + array ( + 'path' => 'classes/Configuration.php', + 'type' => 'class', + 'override' => false, + ), + 'ConfigurationKPI' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ConfigurationKPICore' => + array ( + 'path' => 'classes/ConfigurationKPI.php', + 'type' => 'class', + 'override' => false, + ), + 'ConfigurationTest' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ConfigurationTestCore' => + array ( + 'path' => 'classes/ConfigurationTest.php', + 'type' => 'class', + 'override' => false, + ), + 'Connection' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ConnectionCore' => + array ( + 'path' => 'classes/Connection.php', + 'type' => 'class', + 'override' => false, + ), + 'ConnectionsSource' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ConnectionsSourceCore' => + array ( + 'path' => 'classes/ConnectionsSource.php', + 'type' => 'class', + 'override' => false, + ), + 'Contact' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ContactController' => + array ( + 'path' => 'override/controllers/front/ContactController.php', + 'type' => 'class', + 'override' => false, + ), + 'ContactControllerCore' => + array ( + 'path' => 'controllers/front/ContactController.php', + 'type' => 'class', + 'override' => false, + ), + 'ContactCore' => + array ( + 'path' => 'classes/Contact.php', + 'type' => 'class', + 'override' => false, + ), + 'Context' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ContextCore' => + array ( + 'path' => 'classes/Context.php', + 'type' => 'class', + 'override' => false, + ), + 'Controller' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'ControllerCore' => + array ( + 'path' => 'classes/controller/Controller.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'ControllerFactory' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ControllerFactoryCore' => + array ( + 'path' => 'classes/ControllerFactory.php', + 'type' => 'class', + 'override' => false, + ), + 'Cookie' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CookieCore' => + array ( + 'path' => 'classes/Cookie.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Business_CMS_CMSRepository' => + array ( + 'path' => 'Core/Business/CMS/Core_Business_CMS_CMSRepository.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Business_CMS_CMSRoleRepository' => + array ( + 'path' => 'Core/Business/CMS/Core_Business_CMS_CMSRoleRepository.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Business_ConfigurationInterface' => + array ( + 'path' => 'Core/Business/Core_Business_ConfigurationInterface.php', + 'type' => 'interface', + 'override' => false, + ), + 'Core_Business_ContainerBuilder' => + array ( + 'path' => 'Core/Business/Core_Business_ContainerBuilder.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Business_Email_EmailLister' => + array ( + 'path' => 'Core/Business/Email/Core_Business_Email_EmailLister.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Business_Payment_PaymentOption' => + array ( + 'path' => 'Core/Business/Payment/Core_Business_Payment_PaymentOption.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Business_Stock_StockManager' => + array ( + 'path' => 'Core/Business/Stock/Core_Business_Stock_StockManager.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Foundation_Database_DatabaseInterface' => + array ( + 'path' => 'Core/Foundation/Database/Core_Foundation_Database_DatabaseInterface.php', + 'type' => 'interface', + 'override' => false, + ), + 'Core_Foundation_Database_EntityInterface' => + array ( + 'path' => 'Core/Foundation/Database/Core_Foundation_Database_EntityInterface.php', + 'type' => 'interface', + 'override' => false, + ), + 'Core_Foundation_Database_EntityManager' => + array ( + 'path' => 'Core/Foundation/Database/Core_Foundation_Database_EntityManager.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Foundation_Database_EntityManager_QueryBuilder' => + array ( + 'path' => 'Core/Foundation/Database/EntityManager/Core_Foundation_Database_EntityManager_QueryBuilder.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Foundation_Database_EntityMetaData' => + array ( + 'path' => 'Core/Foundation/Database/Core_Foundation_Database_EntityMetaData.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Foundation_Database_EntityRepository' => + array ( + 'path' => 'Core/Foundation/Database/Core_Foundation_Database_EntityRepository.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Foundation_Database_Exception' => + array ( + 'path' => 'Core/Foundation/Database/Core_Foundation_Database_Exception.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Foundation_Exception_Exception' => + array ( + 'path' => 'Core/Foundation/Exception/Core_Foundation_Exception_Exception.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Foundation_FileSystem_Exception' => + array ( + 'path' => 'Core/Foundation/Filesystem/Core_Foundation_FileSystem_Exception.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Foundation_FileSystem_FileSystem' => + array ( + 'path' => 'Core/Foundation/Filesystem/Core_Foundation_FileSystem_FileSystem.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Foundation_IoC_Container' => + array ( + 'path' => 'Core/Foundation/IoC/Core_Foundation_IoC_Container.php', + 'type' => 'class', + 'override' => false, + ), + 'Core_Foundation_IoC_Exception' => + array ( + 'path' => 'Core/Foundation/IoC/Core_Foundation_IoC_Exception.php', + 'type' => 'class', + 'override' => false, + ), + 'Country' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CountryCore' => + array ( + 'path' => 'classes/Country.php', + 'type' => 'class', + 'override' => false, + ), + 'County' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CountyCore' => + array ( + 'path' => 'classes/County.php', + 'type' => 'class', + 'override' => false, + ), + 'Currency' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CurrencyCore' => + array ( + 'path' => 'classes/Currency.php', + 'type' => 'class', + 'override' => false, + ), + 'Customer' => + array ( + 'path' => 'override/classes/Customer.php', + 'type' => 'class', + 'override' => false, + ), + 'CustomerCore' => + array ( + 'path' => 'classes/Customer.php', + 'type' => 'class', + 'override' => false, + ), + 'CustomerMessage' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CustomerMessageCore' => + array ( + 'path' => 'classes/CustomerMessage.php', + 'type' => 'class', + 'override' => false, + ), + 'CustomerThread' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CustomerThreadCore' => + array ( + 'path' => 'classes/CustomerThread.php', + 'type' => 'class', + 'override' => false, + ), + 'Customization' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CustomizationCore' => + array ( + 'path' => 'classes/Customization.php', + 'type' => 'class', + 'override' => false, + ), + 'CustomizationField' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'CustomizationFieldCore' => + array ( + 'path' => 'classes/CustomizationField.php', + 'type' => 'class', + 'override' => false, + ), + 'DateRange' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'DateRangeCore' => + array ( + 'path' => 'classes/DateRange.php', + 'type' => 'class', + 'override' => false, + ), + 'Db' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'DbCore' => + array ( + 'path' => 'classes/db/Db.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'DbMySQLi' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'DbMySQLiCore' => + array ( + 'path' => 'classes/db/DbMySQLi.php', + 'type' => 'class', + 'override' => false, + ), + 'DbPDO' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'DbPDOCore' => + array ( + 'path' => 'classes/db/DbPDO.php', + 'type' => 'class', + 'override' => false, + ), + 'DbQuery' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'DbQueryCore' => + array ( + 'path' => 'classes/db/DbQuery.php', + 'type' => 'class', + 'override' => false, + ), + 'Delivery' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'DeliveryCore' => + array ( + 'path' => 'classes/Delivery.php', + 'type' => 'class', + 'override' => false, + ), + 'Discount' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'DiscountController' => + array ( + 'path' => 'override/controllers/front/DiscountController.php', + 'type' => 'class', + 'override' => false, + ), + 'DiscountControllerCore' => + array ( + 'path' => 'controllers/front/DiscountController.php', + 'type' => 'class', + 'override' => false, + ), + 'DiscountCore' => + array ( + 'path' => 'classes/Discount.php', + 'type' => 'class', + 'override' => false, + ), + 'Dispatcher' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'DispatcherCore' => + array ( + 'path' => 'classes/Dispatcher.php', + 'type' => 'class', + 'override' => false, + ), + 'Employee' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'EmployeeCore' => + array ( + 'path' => 'classes/Employee.php', + 'type' => 'class', + 'override' => false, + ), + 'Feature' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'FeatureCore' => + array ( + 'path' => 'classes/Feature.php', + 'type' => 'class', + 'override' => false, + ), + 'FeatureValue' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'FeatureValueCore' => + array ( + 'path' => 'classes/FeatureValue.php', + 'type' => 'class', + 'override' => false, + ), + 'FileLogger' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'FileLoggerCore' => + array ( + 'path' => 'classes/log/FileLogger.php', + 'type' => 'class', + 'override' => false, + ), + 'FileUploader' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'FileUploaderCore' => + array ( + 'path' => 'classes/FileUploader.php', + 'type' => 'class', + 'override' => false, + ), + 'FrontController' => + array ( + 'path' => 'override/classes/controller/FrontController.php', + 'type' => 'class', + 'override' => false, + ), + 'FrontControllerCore' => + array ( + 'path' => 'classes/controller/FrontController.php', + 'type' => 'class', + 'override' => false, + ), + 'Gender' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'GenderCore' => + array ( + 'path' => 'classes/Gender.php', + 'type' => 'class', + 'override' => false, + ), + 'GetFileController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'GetFileControllerCore' => + array ( + 'path' => 'controllers/front/GetFileController.php', + 'type' => 'class', + 'override' => false, + ), + 'Group' => + array ( + 'path' => 'override/classes/Group.php', + 'type' => 'class', + 'override' => false, + ), + 'GroupCore' => + array ( + 'path' => 'classes/Group.php', + 'type' => 'class', + 'override' => false, + ), + 'GroupReduction' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'GroupReductionCore' => + array ( + 'path' => 'classes/GroupReduction.php', + 'type' => 'class', + 'override' => false, + ), + 'Guest' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'GuestCore' => + array ( + 'path' => 'classes/Guest.php', + 'type' => 'class', + 'override' => false, + ), + 'GuestTrackingController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'GuestTrackingControllerCore' => + array ( + 'path' => 'controllers/front/GuestTrackingController.php', + 'type' => 'class', + 'override' => false, + ), + 'HTMLTemplate' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'HTMLTemplateCore' => + array ( + 'path' => 'classes/pdf/HTMLTemplate.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'HTMLTemplateDeliverySlip' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HTMLTemplateDeliverySlipCore' => + array ( + 'path' => 'classes/pdf/HTMLTemplateDeliverySlip.php', + 'type' => 'class', + 'override' => false, + ), + 'HTMLTemplateInvoice' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HTMLTemplateInvoiceCore' => + array ( + 'path' => 'classes/pdf/HTMLTemplateInvoice.php', + 'type' => 'class', + 'override' => false, + ), + 'HTMLTemplateOrderReturn' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HTMLTemplateOrderReturnCore' => + array ( + 'path' => 'classes/pdf/HTMLTemplateOrderReturn.php', + 'type' => 'class', + 'override' => false, + ), + 'HTMLTemplateOrderSlip' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HTMLTemplateOrderSlipCore' => + array ( + 'path' => 'classes/pdf/HTMLTemplateOrderSlip.php', + 'type' => 'class', + 'override' => false, + ), + 'HTMLTemplateSupplyOrderForm' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HTMLTemplateSupplyOrderFormCore' => + array ( + 'path' => 'classes/pdf/HTMLTemplateSupplyOrderForm.php', + 'type' => 'class', + 'override' => false, + ), + 'Helper' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperCalendar' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperCalendarCore' => + array ( + 'path' => 'classes/helper/HelperCalendar.php', + 'type' => 'class', + 'override' => false, + ), + 'HelperCore' => + array ( + 'path' => 'classes/helper/Helper.php', + 'type' => 'class', + 'override' => false, + ), + 'HelperForm' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperFormCore' => + array ( + 'path' => 'classes/helper/HelperForm.php', + 'type' => 'class', + 'override' => false, + ), + 'HelperImageUploader' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperImageUploaderCore' => + array ( + 'path' => 'classes/helper/HelperImageUploader.php', + 'type' => 'class', + 'override' => false, + ), + 'HelperKpi' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperKpiCore' => + array ( + 'path' => 'classes/helper/HelperKpi.php', + 'type' => 'class', + 'override' => false, + ), + 'HelperKpiRow' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperKpiRowCore' => + array ( + 'path' => 'classes/helper/HelperKpiRow.php', + 'type' => 'class', + 'override' => false, + ), + 'HelperList' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperListCore' => + array ( + 'path' => 'classes/helper/HelperList.php', + 'type' => 'class', + 'override' => false, + ), + 'HelperOptions' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperOptionsCore' => + array ( + 'path' => 'classes/helper/HelperOptions.php', + 'type' => 'class', + 'override' => false, + ), + 'HelperShop' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperShopCore' => + array ( + 'path' => 'classes/helper/HelperShop.php', + 'type' => 'class', + 'override' => false, + ), + 'HelperTreeCategories' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperTreeCategoriesCore' => + array ( + 'path' => 'classes/helper/HelperTreeCategories.php', + 'type' => 'class', + 'override' => false, + ), + 'HelperTreeShops' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperTreeShopsCore' => + array ( + 'path' => 'classes/helper/HelperTreeShops.php', + 'type' => 'class', + 'override' => false, + ), + 'HelperUploader' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperUploaderCore' => + array ( + 'path' => 'classes/helper/HelperUploader.php', + 'type' => 'class', + 'override' => false, + ), + 'HelperView' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HelperViewCore' => + array ( + 'path' => 'classes/helper/HelperView.php', + 'type' => 'class', + 'override' => false, + ), + 'HistoryController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HistoryControllerCore' => + array ( + 'path' => 'controllers/front/HistoryController.php', + 'type' => 'class', + 'override' => false, + ), + 'Hook' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'HookCore' => + array ( + 'path' => 'classes/Hook.php', + 'type' => 'class', + 'override' => false, + ), + 'ITreeToolbar' => + array ( + 'path' => '', + 'type' => 'interface', + 'override' => false, + ), + 'ITreeToolbarButton' => + array ( + 'path' => '', + 'type' => 'interface', + 'override' => false, + ), + 'ITreeToolbarButtonCore' => + array ( + 'path' => 'classes/tree/ITreeToolbarButton.php', + 'type' => 'interface', + 'override' => false, + ), + 'ITreeToolbarCore' => + array ( + 'path' => 'classes/tree/ITreeToolbar.php', + 'type' => 'interface', + 'override' => false, + ), + 'IdentityController' => + array ( + 'path' => 'override/controllers/front/IdentityController.php', + 'type' => 'class', + 'override' => false, + ), + 'IdentityControllerCore' => + array ( + 'path' => 'controllers/front/IdentityController.php', + 'type' => 'class', + 'override' => false, + ), + 'Image' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ImageCore' => + array ( + 'path' => 'classes/Image.php', + 'type' => 'class', + 'override' => false, + ), + 'ImageManager' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ImageManagerCore' => + array ( + 'path' => 'classes/ImageManager.php', + 'type' => 'class', + 'override' => false, + ), + 'ImageType' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ImageTypeCore' => + array ( + 'path' => 'classes/ImageType.php', + 'type' => 'class', + 'override' => false, + ), + 'ImportModule' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'ImportModuleCore' => + array ( + 'path' => 'classes/module/ImportModule.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'IndexController' => + array ( + 'path' => 'override/controllers/front/IndexController.php', + 'type' => 'class', + 'override' => false, + ), + 'IndexControllerCore' => + array ( + 'path' => 'controllers/front/IndexController.php', + 'type' => 'class', + 'override' => false, + ), + 'Language' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'LanguageCore' => + array ( + 'path' => 'classes/Language.php', + 'type' => 'class', + 'override' => false, + ), + 'Link' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'LinkCore' => + array ( + 'path' => 'classes/Link.php', + 'type' => 'class', + 'override' => false, + ), + 'LocalizationPack' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'LocalizationPackCore' => + array ( + 'path' => 'classes/LocalizationPack.php', + 'type' => 'class', + 'override' => false, + ), + 'Mail' => + array ( + 'path' => 'override/classes/Mail.php', + 'type' => 'class', + 'override' => false, + ), + 'MailCore' => + array ( + 'path' => 'classes/Mail.php', + 'type' => 'class', + 'override' => false, + ), + 'Manufacturer' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ManufacturerController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ManufacturerControllerCore' => + array ( + 'path' => 'controllers/front/ManufacturerController.php', + 'type' => 'class', + 'override' => false, + ), + 'ManufacturerCore' => + array ( + 'path' => 'classes/Manufacturer.php', + 'type' => 'class', + 'override' => false, + ), + 'Media' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'MediaCore' => + array ( + 'path' => 'classes/Media.php', + 'type' => 'class', + 'override' => false, + ), + 'Message' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'MessageCore' => + array ( + 'path' => 'classes/Message.php', + 'type' => 'class', + 'override' => false, + ), + 'Meta' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'MetaCore' => + array ( + 'path' => 'classes/Meta.php', + 'type' => 'class', + 'override' => false, + ), + 'Module' => + array ( + 'path' => 'override/classes/module/Module.php', + 'type' => 'class', + 'override' => false, + ), + 'ModuleAdminController' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'ModuleAdminControllerCore' => + array ( + 'path' => 'classes/controller/ModuleAdminController.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'ModuleCore' => + array ( + 'path' => 'classes/module/Module.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'ModuleFrontController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ModuleFrontControllerCore' => + array ( + 'path' => 'classes/controller/ModuleFrontController.php', + 'type' => 'class', + 'override' => false, + ), + 'ModuleGraph' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'ModuleGraphCore' => + array ( + 'path' => 'classes/module/ModuleGraph.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'ModuleGraphEngine' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'ModuleGraphEngineCore' => + array ( + 'path' => 'classes/module/ModuleGraphEngine.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'ModuleGrid' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'ModuleGridCore' => + array ( + 'path' => 'classes/module/ModuleGrid.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'ModuleGridEngine' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'ModuleGridEngineCore' => + array ( + 'path' => 'classes/module/ModuleGridEngine.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'MyAccountController' => + array ( + 'path' => 'override/controllers/front/MyAccountController.php', + 'type' => 'class', + 'override' => false, + ), + 'MyAccountControllerCore' => + array ( + 'path' => 'controllers/front/MyAccountController.php', + 'type' => 'class', + 'override' => false, + ), + 'MySQL' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'MySQLCore' => + array ( + 'path' => 'classes/db/MySQL.php', + 'type' => 'class', + 'override' => false, + ), + 'NewProductsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'NewProductsControllerCore' => + array ( + 'path' => 'controllers/front/NewProductsController.php', + 'type' => 'class', + 'override' => false, + ), + 'Notification' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'NotificationCore' => + array ( + 'path' => 'classes/Notification.php', + 'type' => 'class', + 'override' => false, + ), + 'ObjectModel' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'ObjectModelCore' => + array ( + 'path' => 'classes/ObjectModel.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'Order' => + array ( + 'path' => 'override/classes/order/Order.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderCarrier' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderCarrierCore' => + array ( + 'path' => 'classes/order/OrderCarrier.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderCartRule' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderCartRuleCore' => + array ( + 'path' => 'classes/order/OrderCartRule.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderConfirmationController' => + array ( + 'path' => 'override/controllers/front/OrderConfirmationController.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderConfirmationControllerCore' => + array ( + 'path' => 'controllers/front/OrderConfirmationController.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderController' => + array ( + 'path' => 'override/controllers/front/OrderController.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderControllerCore' => + array ( + 'path' => 'controllers/front/OrderController.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderCore' => + array ( + 'path' => 'classes/order/Order.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderDetail' => + array ( + 'path' => 'override/classes/order/OrderDetail.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderDetailController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderDetailControllerCore' => + array ( + 'path' => 'controllers/front/OrderDetailController.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderDetailCore' => + array ( + 'path' => 'classes/order/OrderDetail.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderDiscount' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderDiscountCore' => + array ( + 'path' => 'classes/order/OrderDiscount.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderFollowController' => + array ( + 'path' => 'override/controllers/front/OrderFollowController.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderFollowControllerCore' => + array ( + 'path' => 'controllers/front/OrderFollowController.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderHistory' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderHistoryCore' => + array ( + 'path' => 'classes/order/OrderHistory.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderInvoice' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderInvoiceCore' => + array ( + 'path' => 'classes/order/OrderInvoice.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderMessage' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderMessageCore' => + array ( + 'path' => 'classes/order/OrderMessage.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderOpcController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderOpcControllerCore' => + array ( + 'path' => 'controllers/front/OrderOpcController.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderPayment' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderPaymentCore' => + array ( + 'path' => 'classes/order/OrderPayment.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderReturn' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderReturnController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderReturnControllerCore' => + array ( + 'path' => 'controllers/front/OrderReturnController.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderReturnCore' => + array ( + 'path' => 'classes/order/OrderReturn.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderReturnState' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderReturnStateCore' => + array ( + 'path' => 'classes/order/OrderReturnState.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderSlip' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderSlipController' => + array ( + 'path' => 'override/controllers/front/OrderSlipController.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderSlipControllerCore' => + array ( + 'path' => 'controllers/front/OrderSlipController.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderSlipCore' => + array ( + 'path' => 'classes/order/OrderSlip.php', + 'type' => 'class', + 'override' => false, + ), + 'OrderState' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'OrderStateCore' => + array ( + 'path' => 'classes/order/OrderState.php', + 'type' => 'class', + 'override' => false, + ), + 'PDF' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PDFCore' => + array ( + 'path' => 'classes/pdf/PDF.php', + 'type' => 'class', + 'override' => false, + ), + 'PDFGenerator' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PDFGeneratorCore' => + array ( + 'path' => 'classes/pdf/PDFGenerator.php', + 'type' => 'class', + 'override' => false, + ), + 'Pack' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PackCore' => + array ( + 'path' => 'classes/Pack.php', + 'type' => 'class', + 'override' => false, + ), + 'Page' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PageCore' => + array ( + 'path' => 'classes/Page.php', + 'type' => 'class', + 'override' => false, + ), + 'PageNotFoundController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PageNotFoundControllerCore' => + array ( + 'path' => 'controllers/front/PageNotFoundController.php', + 'type' => 'class', + 'override' => false, + ), + 'ParentOrderController' => + array ( + 'path' => 'override/controllers/front/ParentOrderController.php', + 'type' => 'class', + 'override' => false, + ), + 'ParentOrderControllerCore' => + array ( + 'path' => 'controllers/front/ParentOrderController.php', + 'type' => 'class', + 'override' => false, + ), + 'PasswordController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PasswordControllerCore' => + array ( + 'path' => 'controllers/front/PasswordController.php', + 'type' => 'class', + 'override' => false, + ), + 'PaymentCC' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PaymentCCCore' => + array ( + 'path' => 'classes/PaymentCC.php', + 'type' => 'class', + 'override' => false, + ), + 'PaymentModule' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'PaymentModuleCore' => + array ( + 'path' => 'classes/PaymentModule.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'PdfInvoiceController' => + array ( + 'path' => 'override/controllers/front/PdfInvoiceController.php', + 'type' => 'class', + 'override' => false, + ), + 'PdfInvoiceControllerCore' => + array ( + 'path' => 'controllers/front/PdfInvoiceController.php', + 'type' => 'class', + 'override' => false, + ), + 'PdfOrderReturnController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PdfOrderReturnControllerCore' => + array ( + 'path' => 'controllers/front/PdfOrderReturnController.php', + 'type' => 'class', + 'override' => false, + ), + 'PdfOrderSlipController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PdfOrderSlipControllerCore' => + array ( + 'path' => 'controllers/front/PdfOrderSlipController.php', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopAutoload' => + array ( + 'path' => 'classes/PrestaShopAutoload.php', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopBackup' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopBackupCore' => + array ( + 'path' => 'classes/PrestaShopBackup.php', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopCollection' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopCollectionCore' => + array ( + 'path' => 'classes/PrestaShopCollection.php', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopDatabaseException' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopDatabaseExceptionCore' => + array ( + 'path' => 'classes/exception/PrestaShopDatabaseException.php', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopException' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopExceptionCore' => + array ( + 'path' => 'classes/exception/PrestaShopException.php', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopLogger' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopLoggerCore' => + array ( + 'path' => 'classes/PrestaShopLogger.php', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopModuleException' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopModuleExceptionCore' => + array ( + 'path' => 'classes/exception/PrestaShopModuleException.php', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopPaymentException' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PrestaShopPaymentExceptionCore' => + array ( + 'path' => 'classes/exception/PrestaShopPaymentException.php', + 'type' => 'class', + 'override' => false, + ), + 'PricesDropController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'PricesDropControllerCore' => + array ( + 'path' => 'controllers/front/PricesDropController.php', + 'type' => 'class', + 'override' => false, + ), + 'Product' => + array ( + 'path' => 'override/classes/Product.php', + 'type' => 'class', + 'override' => false, + ), + 'ProductController' => + array ( + 'path' => 'override/controllers/front/ProductController.php', + 'type' => 'class', + 'override' => false, + ), + 'ProductControllerCore' => + array ( + 'path' => 'controllers/front/ProductController.php', + 'type' => 'class', + 'override' => false, + ), + 'ProductCore' => + array ( + 'path' => 'classes/Product.php', + 'type' => 'class', + 'override' => false, + ), + 'ProductDownload' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ProductDownloadCore' => + array ( + 'path' => 'classes/ProductDownload.php', + 'type' => 'class', + 'override' => false, + ), + 'ProductMerge' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ProductMergeCore' => + array ( + 'path' => 'override/classes/ProductMerge.php', + 'type' => 'class', + 'override' => false, + ), + 'ProductSale' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ProductSaleCore' => + array ( + 'path' => 'classes/ProductSale.php', + 'type' => 'class', + 'override' => false, + ), + 'ProductSupplier' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ProductSupplierCore' => + array ( + 'path' => 'classes/ProductSupplier.php', + 'type' => 'class', + 'override' => false, + ), + 'ProductTemplateMerge' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ProductTemplateMergeCore' => + array ( + 'path' => 'override/classes/ProductTemplateMerge.php', + 'type' => 'class', + 'override' => false, + ), + 'Profile' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ProfileCore' => + array ( + 'path' => 'classes/Profile.php', + 'type' => 'class', + 'override' => false, + ), + 'QuickAccess' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'QuickAccessCore' => + array ( + 'path' => 'classes/QuickAccess.php', + 'type' => 'class', + 'override' => false, + ), + 'RangePrice' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'RangePriceCore' => + array ( + 'path' => 'classes/range/RangePrice.php', + 'type' => 'class', + 'override' => false, + ), + 'RangeWeight' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'RangeWeightCore' => + array ( + 'path' => 'classes/range/RangeWeight.php', + 'type' => 'class', + 'override' => false, + ), + 'Referrer' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ReferrerCore' => + array ( + 'path' => 'classes/Referrer.php', + 'type' => 'class', + 'override' => false, + ), + 'RequestSql' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'RequestSqlCore' => + array ( + 'path' => 'classes/RequestSql.php', + 'type' => 'class', + 'override' => false, + ), + 'Rijndael' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'RijndaelCore' => + array ( + 'path' => 'classes/Rijndael.php', + 'type' => 'class', + 'override' => false, + ), + 'Risk' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'RiskCore' => + array ( + 'path' => 'classes/Risk.php', + 'type' => 'class', + 'override' => false, + ), + 'Scene' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SceneCore' => + array ( + 'path' => 'classes/Scene.php', + 'type' => 'class', + 'override' => false, + ), + 'Search' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SearchController' => + array ( + 'path' => 'override/controllers/front/SearchController.php', + 'type' => 'class', + 'override' => false, + ), + 'SearchControllerCore' => + array ( + 'path' => 'controllers/front/SearchController.php', + 'type' => 'class', + 'override' => false, + ), + 'SearchCore' => + array ( + 'path' => 'classes/Search.php', + 'type' => 'class', + 'override' => false, + ), + 'SearchEngine' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SearchEngineCore' => + array ( + 'path' => 'classes/SearchEngine.php', + 'type' => 'class', + 'override' => false, + ), + 'Shop' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ShopCore' => + array ( + 'path' => 'classes/shop/Shop.php', + 'type' => 'class', + 'override' => false, + ), + 'ShopGroup' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ShopGroupCore' => + array ( + 'path' => 'classes/shop/ShopGroup.php', + 'type' => 'class', + 'override' => false, + ), + 'ShopUrl' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ShopUrlCore' => + array ( + 'path' => 'classes/shop/ShopUrl.php', + 'type' => 'class', + 'override' => false, + ), + 'SitemapController' => + array ( + 'path' => 'override/controllers/front/SitemapController.php', + 'type' => 'class', + 'override' => false, + ), + 'SitemapControllerCore' => + array ( + 'path' => 'controllers/front/SitemapController.php', + 'type' => 'class', + 'override' => false, + ), + 'SmartyCustom' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SmartyCustomCore' => + array ( + 'path' => 'classes/SmartyCustom.php', + 'type' => 'class', + 'override' => false, + ), + 'SpecificPrice' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SpecificPriceCore' => + array ( + 'path' => 'classes/SpecificPrice.php', + 'type' => 'class', + 'override' => false, + ), + 'SpecificPriceRule' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SpecificPriceRuleCore' => + array ( + 'path' => 'classes/SpecificPriceRule.php', + 'type' => 'class', + 'override' => false, + ), + 'State' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'StateCore' => + array ( + 'path' => 'classes/State.php', + 'type' => 'class', + 'override' => false, + ), + 'StatisticsController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'StatisticsControllerCore' => + array ( + 'path' => 'controllers/front/StatisticsController.php', + 'type' => 'class', + 'override' => false, + ), + 'Stock' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'StockAvailable' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'StockAvailableCore' => + array ( + 'path' => 'classes/stock/StockAvailable.php', + 'type' => 'class', + 'override' => false, + ), + 'StockCore' => + array ( + 'path' => 'classes/stock/Stock.php', + 'type' => 'class', + 'override' => false, + ), + 'StockManager' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'StockManagerCore' => + array ( + 'path' => 'classes/stock/StockManager.php', + 'type' => 'class', + 'override' => false, + ), + 'StockManagerFactory' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'StockManagerFactoryCore' => + array ( + 'path' => 'classes/stock/StockManagerFactory.php', + 'type' => 'class', + 'override' => false, + ), + 'StockManagerInterface' => + array ( + 'path' => 'classes/stock/StockManagerInterface.php', + 'type' => 'interface', + 'override' => false, + ), + 'StockManagerModule' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'StockManagerModuleCore' => + array ( + 'path' => 'classes/stock/StockManagerModule.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'StockMvt' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'StockMvtCore' => + array ( + 'path' => 'classes/stock/StockMvt.php', + 'type' => 'class', + 'override' => false, + ), + 'StockMvtReason' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'StockMvtReasonCore' => + array ( + 'path' => 'classes/stock/StockMvtReason.php', + 'type' => 'class', + 'override' => false, + ), + 'StockMvtWS' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'StockMvtWSCore' => + array ( + 'path' => 'classes/stock/StockMvtWS.php', + 'type' => 'class', + 'override' => false, + ), + 'Store' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'StoreCore' => + array ( + 'path' => 'classes/Store.php', + 'type' => 'class', + 'override' => false, + ), + 'StoresController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'StoresControllerCore' => + array ( + 'path' => 'controllers/front/StoresController.php', + 'type' => 'class', + 'override' => false, + ), + 'Supplier' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SupplierController' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SupplierControllerCore' => + array ( + 'path' => 'controllers/front/SupplierController.php', + 'type' => 'class', + 'override' => false, + ), + 'SupplierCore' => + array ( + 'path' => 'classes/Supplier.php', + 'type' => 'class', + 'override' => false, + ), + 'SupplyOrder' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SupplyOrderCore' => + array ( + 'path' => 'classes/stock/SupplyOrder.php', + 'type' => 'class', + 'override' => false, + ), + 'SupplyOrderDetail' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SupplyOrderDetailCore' => + array ( + 'path' => 'classes/stock/SupplyOrderDetail.php', + 'type' => 'class', + 'override' => false, + ), + 'SupplyOrderHistory' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SupplyOrderHistoryCore' => + array ( + 'path' => 'classes/stock/SupplyOrderHistory.php', + 'type' => 'class', + 'override' => false, + ), + 'SupplyOrderReceiptHistory' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SupplyOrderReceiptHistoryCore' => + array ( + 'path' => 'classes/stock/SupplyOrderReceiptHistory.php', + 'type' => 'class', + 'override' => false, + ), + 'SupplyOrderState' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'SupplyOrderStateCore' => + array ( + 'path' => 'classes/stock/SupplyOrderState.php', + 'type' => 'class', + 'override' => false, + ), + 'Tab' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TabCore' => + array ( + 'path' => 'classes/Tab.php', + 'type' => 'class', + 'override' => false, + ), + 'Tag' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TagCore' => + array ( + 'path' => 'classes/Tag.php', + 'type' => 'class', + 'override' => false, + ), + 'Tax' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TaxCalculator' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TaxCalculatorCore' => + array ( + 'path' => 'classes/tax/TaxCalculator.php', + 'type' => 'class', + 'override' => false, + ), + 'TaxCore' => + array ( + 'path' => 'classes/tax/Tax.php', + 'type' => 'class', + 'override' => false, + ), + 'TaxManagerFactory' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TaxManagerFactoryCore' => + array ( + 'path' => 'classes/tax/TaxManagerFactory.php', + 'type' => 'class', + 'override' => false, + ), + 'TaxManagerInterface' => + array ( + 'path' => 'classes/tax/TaxManagerInterface.php', + 'type' => 'interface', + 'override' => false, + ), + 'TaxManagerModule' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'TaxManagerModuleCore' => + array ( + 'path' => 'classes/tax/TaxManagerModule.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'TaxRule' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TaxRuleCore' => + array ( + 'path' => 'classes/tax/TaxRule.php', + 'type' => 'class', + 'override' => false, + ), + 'TaxRulesGroup' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TaxRulesGroupCore' => + array ( + 'path' => 'classes/tax/TaxRulesGroup.php', + 'type' => 'class', + 'override' => false, + ), + 'TaxRulesTaxManager' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TaxRulesTaxManagerCore' => + array ( + 'path' => 'classes/tax/TaxRulesTaxManager.php', + 'type' => 'class', + 'override' => false, + ), + 'Theme' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ThemeCore' => + array ( + 'path' => 'classes/Theme.php', + 'type' => 'class', + 'override' => false, + ), + 'Tools' => + array ( + 'path' => 'override/classes/Tools.php', + 'type' => 'class', + 'override' => false, + ), + 'ToolsCore' => + array ( + 'path' => 'classes/Tools.php', + 'type' => 'class', + 'override' => false, + ), + 'Translate' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TranslateCore' => + array ( + 'path' => 'classes/Translate.php', + 'type' => 'class', + 'override' => false, + ), + 'TranslatedConfiguration' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TranslatedConfigurationCore' => + array ( + 'path' => 'classes/TranslatedConfiguration.php', + 'type' => 'class', + 'override' => false, + ), + 'Tree' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TreeCore' => + array ( + 'path' => 'classes/tree/Tree.php', + 'type' => 'class', + 'override' => false, + ), + 'TreeToolbar' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TreeToolbarButton' => + array ( + 'path' => '', + 'type' => 'abstract class', + 'override' => false, + ), + 'TreeToolbarButtonCore' => + array ( + 'path' => 'classes/tree/TreeToolbarButton.php', + 'type' => 'abstract class', + 'override' => false, + ), + 'TreeToolbarCore' => + array ( + 'path' => 'classes/tree/TreeToolbar.php', + 'type' => 'class', + 'override' => false, + ), + 'TreeToolbarLink' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TreeToolbarLinkCore' => + array ( + 'path' => 'classes/tree/TreeToolbarLink.php', + 'type' => 'class', + 'override' => false, + ), + 'TreeToolbarSearch' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TreeToolbarSearchCategories' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'TreeToolbarSearchCategoriesCore' => + array ( + 'path' => 'classes/tree/TreeToolbarSearchCategories.php', + 'type' => 'class', + 'override' => false, + ), + 'TreeToolbarSearchCore' => + array ( + 'path' => 'classes/tree/TreeToolbarSearch.php', + 'type' => 'class', + 'override' => false, + ), + 'Upgrader' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'UpgraderCore' => + array ( + 'path' => 'classes/Upgrader.php', + 'type' => 'class', + 'override' => false, + ), + 'Uploader' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'UploaderCore' => + array ( + 'path' => 'classes/Uploader.php', + 'type' => 'class', + 'override' => false, + ), + 'Validate' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'ValidateCore' => + array ( + 'path' => 'classes/Validate.php', + 'type' => 'class', + 'override' => false, + ), + 'Warehouse' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'WarehouseCore' => + array ( + 'path' => 'classes/stock/Warehouse.php', + 'type' => 'class', + 'override' => false, + ), + 'WarehouseProductLocation' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'WarehouseProductLocationCore' => + array ( + 'path' => 'classes/stock/WarehouseProductLocation.php', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceException' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceExceptionCore' => + array ( + 'path' => 'classes/webservice/WebserviceException.php', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceKey' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceKeyCore' => + array ( + 'path' => 'classes/webservice/WebserviceKey.php', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceOutputBuilder' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceOutputBuilderCore' => + array ( + 'path' => 'classes/webservice/WebserviceOutputBuilder.php', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceOutputInterface' => + array ( + 'path' => 'classes/webservice/WebserviceOutputInterface.php', + 'type' => 'interface', + 'override' => false, + ), + 'WebserviceOutputJSON' => + array ( + 'path' => 'classes/webservice/WebserviceOutputJSON.php', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceOutputXML' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceOutputXMLCore' => + array ( + 'path' => 'classes/webservice/WebserviceOutputXML.php', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceRequest' => + array ( + 'path' => 'override/classes/webservice/WebserviceRequest.php', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceRequestCore' => + array ( + 'path' => 'classes/webservice/WebserviceRequest.php', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceSpecificManagementImages' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceSpecificManagementImagesCore' => + array ( + 'path' => 'classes/webservice/WebserviceSpecificManagementImages.php', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceSpecificManagementInterface' => + array ( + 'path' => 'classes/webservice/WebserviceSpecificManagementInterface.php', + 'type' => 'interface', + 'override' => false, + ), + 'WebserviceSpecificManagementSearch' => + array ( + 'path' => '', + 'type' => 'class', + 'override' => false, + ), + 'WebserviceSpecificManagementSearchCore' => + array ( + 'path' => 'classes/webservice/WebserviceSpecificManagementSearch.php', + 'type' => 'class', + 'override' => false, + ), + 'Zone' => + array ( + 'path' => 'override/classes/Zone.php', + 'type' => 'class', + 'override' => false, + ), + 'ZoneCore' => + array ( + 'path' => 'classes/Zone.php', + 'type' => 'class', + 'override' => false, + ), +); ?> \ No newline at end of file diff --git a/classes/Cart.php b/classes/Cart.php index a7120a2..64e7707 100755 --- a/classes/Cart.php +++ b/classes/Cart.php @@ -1251,6 +1251,7 @@ class CartCore extends ObjectModel */ public function deleteProduct($id_product, $id_product_attribute = null, $id_customization = null, $id_address_delivery = 0) { + if (isset(self::$_nbProducts[$this->id])) { unset(self::$_nbProducts[$this->id]); } @@ -1262,18 +1263,18 @@ class CartCore extends ObjectModel if ((int)$id_customization) { $product_total_quantity = (int)Db::getInstance()->getValue( 'SELECT `quantity` - FROM `'._DB_PREFIX_.'cart_product` - WHERE `id_product` = '.(int)$id_product.' - AND `id_cart` = '.(int)$this->id.' - AND `id_product_attribute` = '.(int)$id_product_attribute); + FROM `'._DB_PREFIX_.'cart_product` + WHERE `id_product` = '.(int)$id_product.' + AND `id_cart` = '.(int)$this->id.' + AND `id_product_attribute` = '.(int)$id_product_attribute); $customization_quantity = (int)Db::getInstance()->getValue(' - SELECT `quantity` - FROM `'._DB_PREFIX_.'customization` - WHERE `id_cart` = '.(int)$this->id.' - AND `id_product` = '.(int)$id_product.' - AND `id_product_attribute` = '.(int)$id_product_attribute.' - '.((int)$id_address_delivery ? 'AND `id_address_delivery` = '.(int)$id_address_delivery : '')); + SELECT `quantity` + FROM `'._DB_PREFIX_.'customization` + WHERE `id_cart` = '.(int)$this->id.' + AND `id_product` = '.(int)$id_product.' + AND `id_product_attribute` = '.(int)$id_product_attribute.' + '.((int)$id_address_delivery ? 'AND `id_address_delivery` = '.(int)$id_address_delivery : '')); if (!$this->_deleteCustomization((int)$id_customization, (int)$id_product, (int)$id_product_attribute, (int)$id_address_delivery)) { return false; @@ -1286,11 +1287,11 @@ class CartCore extends ObjectModel /* Get customization quantity */ $result = Db::getInstance()->getRow(' - SELECT SUM(`quantity`) AS \'quantity\' - FROM `'._DB_PREFIX_.'customization` - WHERE `id_cart` = '.(int)$this->id.' - AND `id_product` = '.(int)$id_product.' - AND `id_product_attribute` = '.(int)$id_product_attribute); + SELECT SUM(`quantity`) AS \'quantity\' + FROM `'._DB_PREFIX_.'customization` + WHERE `id_cart` = '.(int)$this->id.' + AND `id_product` = '.(int)$id_product.' + AND `id_product_attribute` = '.(int)$id_product_attribute); if ($result === false) { return false; @@ -1299,21 +1300,21 @@ class CartCore extends ObjectModel /* If the product still possesses customization it does not have to be deleted */ if (Db::getInstance()->NumRows() && (int)$result['quantity']) { return Db::getInstance()->execute(' - UPDATE `'._DB_PREFIX_.'cart_product` - SET `quantity` = '.(int)$result['quantity'].' - WHERE `id_cart` = '.(int)$this->id.' - AND `id_product` = '.(int)$id_product. + UPDATE `'._DB_PREFIX_.'cart_product` + SET `quantity` = '.(int)$result['quantity'].' + WHERE `id_cart` = '.(int)$this->id.' + AND `id_product` = '.(int)$id_product. ($id_product_attribute != null ? ' AND `id_product_attribute` = '.(int)$id_product_attribute : '') ); } /* Product deletion */ $result = Db::getInstance()->execute(' - DELETE FROM `'._DB_PREFIX_.'cart_product` - WHERE `id_product` = '.(int)$id_product.' - '.(!is_null($id_product_attribute) ? ' AND `id_product_attribute` = '.(int)$id_product_attribute : '').' - AND `id_cart` = '.(int)$this->id.' - '.((int)$id_address_delivery ? 'AND `id_address_delivery` = '.(int)$id_address_delivery : '')); + DELETE FROM `'._DB_PREFIX_.'cart_product` + WHERE `id_product` = '.(int)$id_product.' + '.(!is_null($id_product_attribute) ? ' AND `id_product_attribute` = '.(int)$id_product_attribute : '').' + AND `id_cart` = '.(int)$this->id.' + '.((int)$id_address_delivery ? 'AND `id_address_delivery` = '.(int)$id_address_delivery : '')); if ($result) { $return = $this->update(); @@ -1339,8 +1340,8 @@ class CartCore extends ObjectModel { $result = true; $customization = Db::getInstance()->getRow('SELECT * - FROM `'._DB_PREFIX_.'customization` - WHERE `id_customization` = '.(int)$id_customization); + FROM `'._DB_PREFIX_.'customization` + WHERE `id_customization` = '.(int)$id_customization); if ($customization) { $cust_data = Db::getInstance()->getRow('SELECT * @@ -1359,7 +1360,7 @@ class CartCore extends ObjectModel if ($result) { $result &= Db::getInstance()->execute( - 'UPDATE `'._DB_PREFIX_.'cart_product` + '²TE `'._DB_PREFIX_.'cart_product` SET `quantity` = `quantity` - '.(int)$customization['quantity'].' WHERE `id_cart` = '.(int)$this->id.' AND `id_product` = '.(int)$id_product. diff --git a/classes/GroupReduction.php b/classes/GroupReduction.php index 9959364..277c849 100755 --- a/classes/GroupReduction.php +++ b/classes/GroupReduction.php @@ -148,6 +148,7 @@ class GroupReductionCore extends ObjectModel FROM `'._DB_PREFIX_.'product_group_reduction_cache` WHERE `id_product` = '.(int)$id_product.' AND `id_group` = '.(int)$id_group); } + // Should return string (decimal in database) and not a float return self::$reduction_cache[$id_product.'-'.$id_group]; } diff --git a/classes/SpecificPrice.php b/classes/SpecificPrice.php index 5a42454..bc298a4 100755 --- a/classes/SpecificPrice.php +++ b/classes/SpecificPrice.php @@ -337,12 +337,13 @@ class SpecificPriceCore extends ObjectModel if (!SpecificPrice::isFeatureActive()) { return array(); } - /* - ** The date is not taken into account for the cache, but this is for the better because it keeps the consistency for the whole script. - ** The price must not change between the top and the bottom of the page - */ + // + // The date is not taken into account for the cache, but this is for the better because it keeps the consistency for the whole script. + // The price must not change between the top and the bottom of the page + // $key = ((int)$id_product.'-'.(int)$id_shop.'-'.(int)$id_currency.'-'.(int)$id_country.'-'.(int)$id_group.'-'.(int)$quantity.'-'.(int)$id_product_attribute.'-'.(int)$id_cart.'-'.(int)$id_customer.'-'.(int)$real_quantity); + if (!array_key_exists($key, SpecificPrice::$_specificPriceCache)) { $query_extra = self::computeExtraConditions($id_product, $id_product_attribute, $id_customer, $id_cart); $query = ' @@ -360,6 +361,7 @@ class SpecificPriceCore extends ObjectModel SpecificPrice::$_specificPriceCache[$key] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($query); } + return SpecificPrice::$_specificPriceCache[$key]; } diff --git a/classes/db/Db.php b/classes/db/Db.php index 48e7066..06a3d25 100755 --- a/classes/db/Db.php +++ b/classes/db/Db.php @@ -418,6 +418,7 @@ abstract class DbCore if (!$this->result && $this->getNumberError() == 2006) { if ($this->connect()) { $this->result = $this->_query($sql); + } } diff --git a/config/config.inc.php b/config/config.inc.php index e71e3e4..36f62cc 100755 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -32,6 +32,11 @@ if (is_file($currentDir.'/defines_custom.inc.php')) { } require_once($currentDir.'/defines.inc.php'); +if (file_exists(_PS_TOOL_DIR_.'/antadis_tools/include.php')) { + require_once(_PS_TOOL_DIR_.'/antadis_tools/include.php'); +} + + $start_time = microtime(true); /* SSL configuration */ diff --git a/config/defines.inc.php b/config/defines.inc.php index 209a30f..83748c2 100755 --- a/config/defines.inc.php +++ b/config/defines.inc.php @@ -26,7 +26,12 @@ /* Debug only */ if (!defined('_PS_MODE_DEV_')) { -define('_PS_MODE_DEV_', true); + if (in_array($_SERVER['REMOTE_ADDR'], array('88.163.22.99'))) { + define('_PS_MODE_DEV_', false); + } + else { + define('_PS_MODE_DEV_', false); + } } /* Compatibility warning */ @@ -40,7 +45,14 @@ if (_PS_MODE_DEV_ === true) { define('_PS_DEBUG_SQL_', false); } -define('_PS_DEBUG_PROFILING_', false); + +if (in_array($_SERVER['REMOTE_ADDR'], array('88.163.22.99')) && isset($_GET['profiling'])) { + define('_PS_DEBUG_PROFILING_', true); +} +else { + define('_PS_DEBUG_PROFILING_', false); +} + define('_PS_MODE_DEMO_', false); $currentDir = dirname(__FILE__); diff --git a/controllers/admin/AdminOrdersController.php b/controllers/admin/AdminOrdersController.php index 93204c9..04d8dba 100755 --- a/controllers/admin/AdminOrdersController.php +++ b/controllers/admin/AdminOrdersController.php @@ -1521,6 +1521,7 @@ class AdminOrdersControllerCore extends AdminController $this->errors[] = Tools::displayError('You do not have permission to edit this.'); } } elseif (Tools::getValue('syncherp') == 1) { + $id_order = Tools::getValue('id_order', false); if ($id_order) { $order = new Order((int)$id_order); @@ -1546,6 +1547,12 @@ class AdminOrdersControllerCore extends AdminController if ($erporder) { return $erporder->hookActionOrderStatusPostUpdate($params); } + } else { + $sql = 'SELECT `name` FROM `'._DB_PREFIX_.'order_state_lang` WHERE `id_order_state` IN (1,2,10) AND id_lang = 1'; + $rows = Db::getInstance()->executeS($sql); + + $txt .= implode('", "', array_column($rows, 'name')); + $this->errors[] = Tools::displayError('Pas de synchro possible, la commande doit avoir eu l\'un des status suivants : "'.$txt.'"'); } } } diff --git a/erp/erp_add_product.php b/erp/erp_add_product.php index 7b40c69..7872c0b 100644 --- a/erp/erp_add_product.php +++ b/erp/erp_add_product.php @@ -173,17 +173,19 @@ foreach ($ids_product as $key => $id) { $sql = 'INSERT INTO '._DB_PREFIX_.'image_lang (id_image, id_lang, legend) VALUES('.(int)$img_id.', 1, "'.$record['name'].'")'; $d->execute($sql); - $tmp_path = _PS_TMP_IMG_DIR_.'odoo_tmp_image.jpg'; - $data = base64_decode($record['image']); - file_put_contents($tmp_path, $data); - $image = new Image($img_id); - $new_path = $image->getPathForCreation(); - ImageManager::resize($tmp_path, $image->getPathForCreation().'.'.$image->image_format); - $imagesTypes = ImageType::getImagesTypes('products'); - foreach ($imagesTypes as $imageType) { - ImageManager::resize($tmp_path, $new_path.'-'.stripslashes($imageType['name']).'.'.$image->image_format, $imageType['width'], $imageType['height'], $image->image_format); + if (!empty($record['image'])) { + $tmp_path = _PS_TMP_IMG_DIR_.'odoo_tmp_image.jpg'; + $data = base64_decode($record['image']); + file_put_contents($tmp_path, $data); + $image = new Image($img_id); + $new_path = $image->getPathForCreation(); + ImageManager::resize($tmp_path, $image->getPathForCreation().'.'.$image->image_format); + $imagesTypes = ImageType::getImagesTypes('products'); + foreach ($imagesTypes as $imageType) { + ImageManager::resize($tmp_path, $new_path.'-'.stripslashes($imageType['name']).'.'.$image->image_format, $imageType['width'], $imageType['height'], $image->image_format); + } + array_map('unlink', glob(_PS_TMP_IMG_DIR_.'*')); } - array_map('unlink', glob(_PS_TMP_IMG_DIR_.'*')); // set variant foreach ($variants as $key => $variant) { diff --git a/erp/erp_update_product.php b/erp/erp_update_product.php index ce5d40d..4688c27 100644 --- a/erp/erp_update_product.php +++ b/erp/erp_update_product.php @@ -95,9 +95,60 @@ foreach ($ids_product as $key => $id) { $d->execute($sql); + $sql = 'SELECT `id_product` FROM `'._DB_PREFIX_.'product` WHERE `id_erp` = '.pSQL($id); $product_id = $d->getRow($sql)['id_product']; + $sql = 'SELECT `id_image` FROM '._DB_PREFIX_.'image WHERE `id_product` = '.(int)$product_id; + $id_image = $d->getValue($sql); + + if ($id_image) { + $image = new Image($id_image); + $imagesTypes = ImageType::getImagesTypes('products'); + $existing_path = $image->getExistingImgPath(); + + $image_exists = true; + foreach ($imagesTypes as $imageType) { + $image_exists = file_exists($existing_path.'-'.stripslashes($imageType['name']).'.'.$image->image_format); + if (!$image_exists) { + break; + } + } + + if (!$image_exists) { + $sql = 'DELETE FROM '._DB_PREFIX_.'image WHERE id_image = '.(int)$id_image; + $d->execute($sql); + $sql = 'DELETE FROM '._DB_PREFIX_.'image_shop WHERE id_image = '.(int)$id_image; + $d->execute($sql); + $sql = 'DELETE FROM '._DB_PREFIX_.'image_lang WHERE id_image = '.(int)$id_image; + $d->execute($sql); + $id_image = null; + } + } + + if (!$id_image) { + // set image + $sql = 'INSERT INTO '._DB_PREFIX_.'image (id_product, position, cover) VALUES('.(int)$product_id.', 0, 1)'; + $d->execute($sql); + $img_id = $d->Insert_ID(); + $sql = 'INSERT INTO '._DB_PREFIX_.'image_shop (id_product, id_image, id_shop, cover) VALUES('.(int)$product_id.', '.$img_id.',1, 1)'; + $d->execute($sql); + $sql = 'INSERT INTO '._DB_PREFIX_.'image_lang (id_image, id_lang, legend) VALUES('.(int)$img_id.', 1, "'.$record['name'].'")'; + $d->execute($sql); + + $tmp_path = _PS_TMP_IMG_DIR_.'odoo_tmp_image_update.jpg'; + $data = base64_decode($record['image']); + file_put_contents($tmp_path, $data); + $image = new Image($img_id); + $new_path = $image->getPathForCreation(); + ImageManager::resize($tmp_path, $image->getPathForCreation().'.'.$image->image_format); + $imagesTypes = ImageType::getImagesTypes('products'); + foreach ($imagesTypes as $imageType) { + ImageManager::resize($tmp_path, $new_path.'-'.stripslashes($imageType['name']).'.'.$image->image_format, $imageType['width'], $imageType['height'], $image->image_format); + } + array_map('unlink', glob(_PS_TMP_IMG_DIR_.'*')); + } + foreach ($variants as $key => $variant) { $id_variant = $variant['id']; diff --git a/modules/customerautogroups/changelog.txt b/modules/customerautogroups/changelog.txt new file mode 100644 index 0000000..675deb6 --- /dev/null +++ b/modules/customerautogroups/changelog.txt @@ -0,0 +1,8 @@ +V 0.1.1 - 2015-11-13 : Compatiblité Prestashop 1.5 // Prestashop 1.5 compatibility +V 0.1.2 - 2015-11-14 : Correctif affichage conditions de type addresse déjà enregistrées // Display fix for existing rules with address condition +V 0.2.0 - 2015-12-07 : Ajout de la possibilité de definir le groupe par défaut, et de supprimer tous les autres groupes ( pour les règles stop processing) + New fonctionnalities allows you to define customer default group, and to delete others groups ( for stop processing rules ) +V 0.2.1 - 2015-12-18 : Correction dans l'application des règles + maj readme // Rules apply correction +V 0.3.0 - 2016-01-11 : Nouvelles conditions de filtres (Like) // New filters condition ( Like) +V 0.3.1 - 2016-06-17 : Autorisation de paramètres exclus // allow excluded parameters +V 0.3.2 - 2016-06-18 : Correction conditions < && <= \ No newline at end of file diff --git a/modules/customerautogroups/classes/AutoGroupRule.php b/modules/customerautogroups/classes/AutoGroupRule.php new file mode 100644 index 0000000..cb2c4f2 --- /dev/null +++ b/modules/customerautogroups/classes/AutoGroupRule.php @@ -0,0 +1,73 @@ + + * @copyright 2013-2015 Hennes Hervé + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * http://www.h-hennes.fr/blog/ + */ +class AutoGroupRule extends ObjectModel +{ + /** Différents types de règles */ + const RULE_TYPE_CUSTOMER = 1; + const RULE_TYPE_ADDRESS = 2; + + public $id; + public $name; + public $description; + public $condition_type; + public $condition_field; + public $condition_operator; + public $condition_value; + public $id_group; + public $active; + public $priority; + public $stop_processing; + public $default_group; + public $clean_groups; + public $date_add; + public $date_upd; + + public static $definition = array( + 'table' => 'autogroup_rule', + 'primary' => 'id_rule', + 'multilang' => true, + 'fields' => array( + 'condition_type' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), + 'condition_field' => array('type' => self::TYPE_STRING, 'validate' => 'isCleanHtml',), + 'condition_operator' => array('type' => self::TYPE_STRING, 'validate' => 'isCleanHtml',), + 'condition_value' => array('type' => self::TYPE_STRING, 'validate' => 'isCleanHtml', 'size' => 254), + 'id_group' => array('type' => self::TYPE_INT), + 'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), + 'priority' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), + 'stop_processing' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), + 'default_group' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), + 'clean_groups' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), + 'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'), + 'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'), + // Lang fields + 'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCleanHtml', 'required' => true, 'size' => 254), + 'description' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCleanHtml'), + ), + ); + +} +?> diff --git a/modules/customerautogroups/controllers/admin/rules.php b/modules/customerautogroups/controllers/admin/rules.php new file mode 100644 index 0000000..3f7554f --- /dev/null +++ b/modules/customerautogroups/controllers/admin/rules.php @@ -0,0 +1,365 @@ + + * @copyright 2013-2015 Hennes Hervé + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * http://www.h-hennes.fr/blog/ + */ +include_once dirname(__FILE__).'/../../classes/AutoGroupRule.php'; + +class RulesController extends ModuleAdminController +{ + //Champs clients exclus de la condition + protected $_customerExcludedFields = array('id', 'secure_key', 'ip_registration_newsletter', 'id_default_group', 'last_passwd_gen', 'last_passwd_gen', + 'passwd', 'definition'); + + //Champs clients + protected $customerFields; + + //Champs addresse exclus de la condition + protected $_addressExcludedFields = array('force_id', 'id_customer', 'id_manufacturer', 'id_warehouse', 'id_supplier', 'deleted', 'definition'); + + //Champs adresse + protected $addressFields = array(); + + //Données du champ condition_field + protected $_conditionFieldDatas; + + public function __construct() + { + $this->bootstrap = true; + $this->table = 'autogroup_rule'; + $this->identifier = 'id_rule'; + $this->className = 'AutoGroupRule'; + $this->lang = true; + $this->addRowAction('edit'); + $this->addRowAction('delete'); + $this->_orderWay = 'ASC'; + + $this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'icon' => 'icon-trash', 'confirm' => $this->l('Delete selected items?'))); + + $this->rules_types = array(1 => $this->l('Customer'), 2 => $this->l('Customer Address')); + + $this->fields_list = array( + 'id_rule' => array('title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs'), + 'name' => array('title' => $this->l('Name')), + 'condition_type' => array( + 'title' => $this->l('Condition Type'), + 'align' => 'center', + 'class' => 'fixed-width-xs', + 'type' => 'select', + 'list' => $this->rules_types, + 'filter_key' => 'condition_type', + 'filter_type' => 'int', + ), + 'id_group' => array('title' => $this->l('Id group'), 'class' => 'fixed-width-sm', 'align' => 'center',), + 'priority' => array('title' => $this->l('Priority'), 'align' => 'center', 'class' => 'fixed-width-sm'), + 'stop_processing' => array('title' => $this->l('Stop processing'), 'active' => 'stop_processing', 'type' => 'bool', 'align' => 'center'), + 'default_group' => array('title' => $this->l('Default customer Group'), 'active' => 'default_group', 'type' => 'bool', 'align' => 'center'), + 'clean_groups' => array('title' => $this->l('Delete all others groups'), 'active' => 'clean_groups', 'type' => 'bool', 'align' => 'center'), + 'active' => array('title' => $this->l('Status'), 'active' => 'status', 'type' => 'bool', 'align' => 'center'), + ); + + parent::__construct(); + } + + + /** + * Définition des médias du controller + */ + public function setMedia() + { + parent::setMedia(); + $this->addJS(_MODULE_DIR_.'customerautogroups/views/admin/js/customerautogroups.js'); + } + + + /** + * Affichage de la liste + */ + public function renderList() + { + $this->tpl_list_vars['condition_type'] = $this->rules_types; + return parent::renderList(); + } + + /** + * Initialisation des variables du formulaires + */ + protected function _initForm() + { + //Liste des cas de conditions + $this->conditionsType = array( + array('id' => AutoGroupRule::RULE_TYPE_CUSTOMER, 'value' => 'Customer'), + array('id' => AutoGroupRule::RULE_TYPE_ADDRESS, 'value' => 'Address'), + ); + + //Liste des champs disponibles pour la classe Customer + $fields = get_class_vars('Customer'); + $this->customerFields = array(); + foreach ($fields as $key => $value) { + if (!in_array($key, $this->_customerExcludedFields)) { + $this->customerFields[] = array('id' => $key, 'value' => $key); + } + } + + //Liste des champs disponibles pour la classe Customer + $afields = get_class_vars('Address'); + foreach ($afields as $key => $value) { + if (!in_array($key, $this->_addressExcludedFields)) { + $this->addressFields[] = array('id' => $key, 'value' => $key); + } + } + + //Gestion de l'affichage du champ "condition_field" pour les règles déjà existantes + if ( Tools::getValue('id_rule')) { + $rule = new AutoGroupRule(Tools::getValue('id_rule')); + if ( $rule->condition_type == AutoGroupRule::RULE_TYPE_CUSTOMER ) + $this->_conditionFieldDatas = $this->customerFields; + else + $this->_conditionFieldDatas = $this->addressFields; + } + else { + $this->_conditionFieldDatas = $this->customerFields; + } + } + + /** + * Affichage du formulaire d'édition + */ + public function renderForm() + { + $this->_initForm(); + + //Liste des priorités + $priorities = array(); + for ($i = 0; $i <= 10; $i++) + $priorities[] = array('id' => $i, 'value' => $i); + + //Liste des groupes clients + $customerGroups = Group::getGroups($this->context->language->id); + + //Liste des opérateurs + $operatorsList = array( + array('id' => 'eq', 'value' => '='), + array('id' => 'ne', 'value' => '!='), + array('id' => 'gt', 'value' => '>'), + array('id' => 'ge', 'value' => '>='), + array('id' => 'lt', 'value' => '<'), + array('id' => 'le', 'value' => '<='), + array('id' => 'LIKE %', 'value' => 'LIKE %'), + ); + + //Avec Prestashop < 1.6 le type switch n'existe pas il faut le remplacer par un radio + if ( _PS_VERSION_ < '1.6') { + $switch_type = 'radio'; + } + else { + $switch_type = 'switch'; + } + + + $this->fields_form = array( + 'legend' => array( + 'title' => $this->l('Edit Rule'), + 'icon' => 'icon-cog' + ), + 'input' => array( + array( + 'type' => 'text', + 'label' => $this->l('name'), + 'name' => 'name', + 'lang' => true, + 'required' => true + ), + array( + 'type' => 'textarea', + 'label' => $this->l('description'), + 'name' => 'description', + 'lang' => true, + 'required' => true + ), + array( + 'type' => 'select', + 'label' => $this->l('Condition type'), + 'name' => 'condition_type', + 'required' => true, + 'class' => 'condition_type', + 'options' => array( + 'query' => $this->conditionsType, + 'id' => 'id', + 'name' => 'value', + ), + 'hint' => $this->l('The condition fields depend from the type') + ), + //Le changement du select précédent entraine le changement de celui-ci + array( + 'type' => 'select', + 'label' => $this->l('Condition Field'), + 'name' => 'condition_field', + 'class' => 'condition_field', + 'required' => true, + 'options' => array( + 'query' => $this->_conditionFieldDatas, + 'id' => 'id', + 'name' => 'value', + ), + ), + array( + 'type' => 'select', + 'label' => $this->l('Condition Operator'), + 'name' => 'condition_operator', + 'required' => true, + 'options' => array( + 'query' => $operatorsList, + 'id' => 'id', + 'name' => 'value', + ) + ), + array( + 'type' => 'text', + 'label' => $this->l('Condition Value'), + 'name' => 'condition_value', + 'required' => true + ), + //Bug sur la récupération du groupe + array( + 'type' => 'select', + 'label' => $this->l('Customer Group'), + 'name' => 'id_group', + 'required' => true, + 'options' => array( + 'query' => $customerGroups, + 'id' => 'id_group', + 'name' => 'name', + ), + 'hint' => $this->l('Select the group in which the customer will be added') + ), + array( + 'type' => 'select', + 'label' => $this->l('Priority'), + 'name' => 'priority', + 'required' => true, + 'options' => array( + 'query' => $priorities, + 'id' => 'id', + 'name' => 'value', + ) + ), + array( + 'type' => $switch_type, + 'label' => $this->l('Active'), + 'name' => 'active', + 'class' => 't', + 'required' => true, + 'values' => array( + array('id' => 'on', 'value' => 1, 'label' => $this->l('Yes')), + array('id' => 'off', 'value' => 0, 'label' => $this->l('No')), + ) + ), + array( + 'type' => $switch_type, + 'label' => $this->l('Stop processing further rules'), + 'name' => 'stop_processing', + 'class' => 't', + 'required' => true, + 'values' => array( + array('id' => 'on', 'value' => 1, 'label' => $this->l('Yes')), + array('id' => 'off', 'value' => 0, 'label' => $this->l('No')), + ), + 'hint' => $this->l('If enable this rule will be the latest processed') + ), + array( + 'type' => $switch_type, + 'label' => $this->l('Default customer Group'), + 'name' => 'default_group', + 'class' => 't', + 'required' => true, + 'values' => array( + array('id' => 'on', 'value' => 1, 'label' => $this->l('Yes')), + array('id' => 'off', 'value' => 0, 'label' => $this->l('No')), + ), + 'hint' => $this->l('Only works for rule which stop processing') + ), + array( + 'type' => $switch_type, + 'label' => $this->l('Delete all others groups'), + 'name' => 'clean_groups', + 'class' => 't', + 'required' => true, + 'values' => array( + array('id' => 'on', 'value' => 1, 'label' => $this->l('Yes')), + array('id' => 'off', 'value' => 0, 'label' => $this->l('No')), + ), + 'hint' => $this->l('Only works for rule which stop processing') + ), + //Token pour action ajax + array( + 'type' => 'hidden', + 'label' => 'token', + 'name' => 'token', + 'value' => $this->token, + 'required'=> false, + ) + ), + 'submit' => array( + 'title' => $this->l('Save') + ) + ); + + return parent::renderForm(); + } + + /** + * Ajout du bouton d'ajout dans la toolbar + */ + public function initPageHeaderToolbar() + { + $this->page_header_toolbar_btn['new_rule'] = array( + 'href' => self::$currentIndex.'&addautogroup_rule&token='.$this->token, + 'desc' => $this->l('Add new rule', null, null, false), + 'icon' => 'process-icon-new' + ); + + + parent::initPageHeaderToolbar(); + } + + /** + * Mise à jour ajax des champs des règles en fonction du type + */ + public function displayAjaxUpdateConditionTypeSelect(){ + + $this->_initForm(); + + if ( Tools::getValue('condition_type') == AutoGroupRule::RULE_TYPE_CUSTOMER ) { + $fields = $this->customerFields; + } + else { + $fields = $this->addressFields; + } + + foreach ( $fields as $field ) { + echo ''; + } + } +} +?> diff --git a/modules/customerautogroups/customerautogroups.php b/modules/customerautogroups/customerautogroups.php new file mode 100644 index 0000000..133f4b4 --- /dev/null +++ b/modules/customerautogroups/customerautogroups.php @@ -0,0 +1,267 @@ + + * @copyright 2013-2015 Hennes Hervé + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * http://www.h-hennes.fr/blog/ + */ +class customerautogroups extends Module +{ + + public function __construct() + { + $this->author = 'hhennes'; + $this->name = 'customerautogroups'; + $this->tab = 'hhennes'; + $this->version = '0.3.2'; + $this->need_instance = 0; + + parent::__construct(); + + $this->displayName = $this->l('Customers Auto groups'); + $this->description = $this->l('Add automaticaly customers to groups depending from params after registration'); + } + + /** + * Installation du module + */ + public function install() + { + if (!parent::install() || !$this->registerHook('actionCustomerAccountAdd')) + { + return false; + } + + //Création d'une tab prestashop + $tab = new Tab(); + $tab->class_name = 'Rules'; + $tab->module = $this->name; + $tab->id_parent = Tab::getIdFromClassName('AdminParentCustomer'); + $languages = Language::getLanguages(); + foreach ($languages as $lang) { + $tab->name[$lang['id_lang']] = 'Customer Auto Groups'; + } + try { + $tab->save(); + } catch (Exception $e) { + echo $e->getMessage(); + return false; + } + + if ( !$this->_installSql()) + return false; + + return true; + } + + /** + * Installation des tables du module + * @return boolean + */ + protected function _installSql() + { + $sqlRule = "CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."autogroup_rule` ( + `id_rule` int(11) NOT NULL AUTO_INCREMENT, + `condition_type` tinyint(2) NOT NULL, + `condition_field` varchar(255) NOT NULL, + `condition_operator` varchar(10) NOT NULL, + `condition_value` varchar(255) NOT NULL, + `id_group` int(11) NOT NULL, + `active` tinyint(1) unsigned NOT NULL, + `priority` tinyint(2) unsigned NOT NULL, + `stop_processing` tinyint(1) unsigned NOT NULL, + `default_group` tinyint(1) unsigned NOT NULL, + `clean_groups` tinyint(1) unsigned NOT NULL, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_rule`) + ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;"; + + $sqlRuleLang = "CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."autogroup_rule_lang` ( + `id_rule` int(11) NOT NULL, + `id_lang` int(11) NOT NULL, + `name` varchar(255) DEFAULT NULL, + `description` text, + PRIMARY KEY (`id_rule`,`id_lang`) + ) ENGINE=InnoDB DEFAULT CHARSET=latin1;" ; + + if ( !Db::getInstance()->Execute($sqlRule) || !Db::getInstance()->Execute($sqlRuleLang)) + return false; + + return true; + } + + /** + * Désinstalation du module + */ + public function uninstall() + { + //Suppression de la tab admin + $id_tab = Tab::getIdFromClassName('rules'); + if ($id_tab) { + $tab = new Tab($id_tab); + $tab->delete(); + } + + Db::getInstance("DROP TABLE IF EXISTS `"._DB_PREFIX_."autogroup_rule`"); + Db::getInstance("DROP TABLE IF EXISTS `"._DB_PREFIX_."autogroup_rule_lang`"); + + return parent::uninstall(); + } + + /** + * Hook Exécuté après la création d'un compte client + * @param array $params : informations du compte client créé + */ + public function hookActionCustomerAccountAdd($params) + { + $this->_processGroupRules($params['newCustomer']); + } + + /** + * Traitement des règles + * @param Customer $customer + */ + protected function _processGroupRules(Customer $customer) + { + + //Inclusion de la classe des règles + include_once _PS_MODULE_DIR_.'/customerautogroups/classes/AutoGroupRule.php'; + + //Nombres d'adresses du client + $customer_addresses = Customer::getAddressesTotalById($customer->id); + + //Si le client n'a pas d'adresse on ne peut pas traiter les règles liées aux données d'adresses. + if (!$customer_addresses) { + $sqlCond = ' AND condition_type = 1 '; + } else { + $sqlCond = ''; + } + + //Récupération des règles applicables au client + $rules = Db::getInstance()->ExecuteS("SELECT * FROM "._DB_PREFIX_."autogroup_rule WHERE active=1 ".$sqlCond." ORDER BY priority"); + + $customerGroups = array(); + foreach ($rules as $rule) { + + //Traitement des règles de type "Client" + if ($rule['condition_type'] == AutoGroupRule::RULE_TYPE_CUSTOMER) { + $obj = $customer; + } + //Traitement des règles de type Adresse + else if ($rule['condition_type'] == AutoGroupRule::RULE_TYPE_ADDRESS ) { + //Normalement vu que le client vient d'être créé il ne peut avoir qu'une adresse + $id_address = Db::getInstance()->getValue("SELECT id_address FROM "._DB_PREFIX_."address WHERE id_customer=".$customer->id); + $obj = new Address($id_address); + } + //Type Inconnu : non traité + else { + //echo $this->l('Error : rule type unknow'); + continue; + } + + //Il faut que la propriété de l'objet existe + if (!property_exists($obj, $rule['condition_field'])) { + //echo sprintf($this->l('Error : Unknow proprerty %s for class %'), $rule['condition_field'], get_class($obj)); + continue; + } + + //On teste la conditon + $ruleApplied = false; + $defaultGroup = false; + $cleanGroups = false; + + switch ($rule['condition_operator']) { + + case 'eq': + if ($obj->{$rule['condition_field']} == $rule['condition_value']) $ruleApplied = true; + break; + + case 'ne': + if ($obj->{$rule['condition_field']} != $rule['condition_value']) $ruleApplied = true; + break; + + case 'gt': + if ($obj->{$rule['condition_field']} > $rule['condition_value']) $ruleApplied = true; + break; + + case 'ge': + if ($obj->{$rule['condition_field']} >= $rule['condition_value']) $ruleApplied = true; + break; + + case 'lt': + if ($obj->{$rule['condition_field']} < $rule['condition_value']) $ruleApplied = true; + break; + + case 'le': + if ($obj->{$rule['condition_field']} <= $rule['condition_value']) $ruleApplied = true; + break; + + case 'LIKE %': + if ( preg_match('#'.$rule['condition_value'].'#',$obj->{$rule['condition_field']}) ) + $ruleApplied = true; + break; + } + + if ($ruleApplied) { + //echo sprintf( $this->l('Rule %d applied for customer'),$rule['id_rule']).'
'; + $customerGroups[] = $rule['id_group']; + + //Si la règle doit être la dernière à être traitée, on sors de la boucle + if ($rule['stop_processing'] == 1) { + if ($rule['default_group'] == 1) { + $defaultGroup = $rule['id_group']; + } + if ($rule['clean_groups'] == 1) { + $cleanGroups = true; + } + break; + } + } + + } + //Ajout du client aux groupes nécessaires + if ( sizeof($customerGroups)) { + + //Si le flag de suppression des groupes + if ( $cleanGroups ) + $customer->cleanGroups(); + + //Application du groupe par défaut + if ( $defaultGroup ) { + $customer->id_default_group = $defaultGroup; + try { + $customer->save(); + } catch (PrestaShopException $e) { + echo $e->getMessage(); + } + } + + //Suppression des doublons + $customerGroups = array_unique($customerGroups); + + //Ajout du client aux groups nécessaires + $customer->addGroups($customerGroups); + } + + } +} diff --git a/modules/customerautogroups/views/admin/js/customerautogroups.js b/modules/customerautogroups/views/admin/js/customerautogroups.js new file mode 100644 index 0000000..6d10ac8 --- /dev/null +++ b/modules/customerautogroups/views/admin/js/customerautogroups.js @@ -0,0 +1,20 @@ +$(function(){ + + //Changement du type de condition dans le formulaire + $('#condition_type').change(function(){ + $.ajax({ + type: 'POST', + url : currentIndex, + data : { + 'ajax' : true, + 'action' : 'UpdateConditionTypeSelect', + 'token': $('#token').val(), + 'condition_type' : $(this).val() + }, + complete: function(msg){ + $('#condition_field').html('').html(msg.responseText); + } + }) + }); +}); + diff --git a/opcache.php b/opcache.php new file mode 100644 index 0000000..22b4b2f --- /dev/null +++ b/opcache.php @@ -0,0 +1,744 @@ +You do not have the Zend OPcache extension loaded, sample data is being shown instead.
'; + require 'data-sample.php'; +} + +class OpCacheDataModel +{ + private $_configuration; + private $_status; + private $_d3Scripts = array(); + + public function __construct() + { + $this->_configuration = opcache_get_configuration(); + $this->_status = opcache_get_status(); + } + + public function getPageTitle() + { + return 'PHP ' . phpversion() . " with OpCache {$this->_configuration['version']['version']}"; + } + + public function getStatusDataRows() + { + $rows = array(); + foreach ($this->_status as $key => $value) { + if ($key === 'scripts') { + continue; + } + + if (is_array($value)) { + foreach ($value as $k => $v) { + if ($v === false) { + $value = 'false'; + } + if ($v === true) { + $value = 'true'; + } + if ($k === 'used_memory' || $k === 'free_memory' || $k === 'wasted_memory') { + $v = $this->_size_for_humans( + $v + ); + } + if ($k === 'current_wasted_percentage' || $k === 'opcache_hit_rate') { + $v = number_format( + $v, + 2 + ) . '%'; + } + if ($k === 'blacklist_miss_ratio') { + $v = number_format($v, 2) . '%'; + } + if ($k === 'start_time' || $k === 'last_restart_time') { + $v = ($v ? date(DATE_RFC822, $v) : 'never'); + } + if (THOUSAND_SEPARATOR === true && is_int($v)) { + $v = number_format($v); + } + + $rows[] = "$k$v\n"; + } + continue; + } + if ($value === false) { + $value = 'false'; + } + if ($value === true) { + $value = 'true'; + } + $rows[] = "$key$value\n"; + } + + return implode("\n", $rows); + } + + public function getConfigDataRows() + { + $rows = array(); + foreach ($this->_configuration['directives'] as $key => $value) { + if ($value === false) { + $value = 'false'; + } + if ($value === true) { + $value = 'true'; + } + if ($key == 'opcache.memory_consumption') { + $value = $this->_size_for_humans($value); + } + $rows[] = "$key$value\n"; + } + + return implode("\n", $rows); + } + + public function getScriptStatusRows() + { + foreach ($this->_status['scripts'] as $key => $data) { + $dirs[dirname($key)][basename($key)] = $data; + $this->_arrayPset($this->_d3Scripts, $key, array( + 'name' => basename($key), + 'size' => $data['memory_consumption'], + )); + } + + asort($dirs); + + $basename = ''; + while (true) { + if (count($this->_d3Scripts) !=1) break; + $basename .= DIRECTORY_SEPARATOR . key($this->_d3Scripts); + $this->_d3Scripts = reset($this->_d3Scripts); + } + + $this->_d3Scripts = $this->_processPartition($this->_d3Scripts, $basename); + $id = 1; + + $rows = array(); + foreach ($dirs as $dir => $files) { + $count = count($files); + $file_plural = $count > 1 ? 's' : null; + $m = 0; + foreach ($files as $file => $data) { + $m += $data["memory_consumption"]; + } + $m = $this->_size_for_humans($m); + + if ($count > 1) { + $rows[] = ''; + $rows[] = "{$dir} ({$count} file{$file_plural}, {$m})"; + $rows[] = ''; + } + + foreach ($files as $file => $data) { + $rows[] = ""; + $rows[] = "" . $this->_format_value($data["hits"]) . ""; + $rows[] = "" . $this->_size_for_humans($data["memory_consumption"]) . ""; + $rows[] = $count > 1 ? "{$file}" : "{$dir}/{$file}"; + $rows[] = ''; + } + + ++$id; + } + + return implode("\n", $rows); + } + + public function getScriptStatusCount() + { + return count($this->_status["scripts"]); + } + + public function getGraphDataSetJson() + { + $dataset = array(); + $dataset['memory'] = array( + $this->_status['memory_usage']['used_memory'], + $this->_status['memory_usage']['free_memory'], + $this->_status['memory_usage']['wasted_memory'], + ); + + $dataset['keys'] = array( + $this->_status['opcache_statistics']['num_cached_keys'], + $this->_status['opcache_statistics']['max_cached_keys'] - $this->_status['opcache_statistics']['num_cached_keys'], + 0 + ); + + $dataset['hits'] = array( + $this->_status['opcache_statistics']['misses'], + $this->_status['opcache_statistics']['hits'], + 0, + ); + + $dataset['restarts'] = array( + $this->_status['opcache_statistics']['oom_restarts'], + $this->_status['opcache_statistics']['manual_restarts'], + $this->_status['opcache_statistics']['hash_restarts'], + ); + + if (THOUSAND_SEPARATOR === true) { + $dataset['TSEP'] = 1; + } else { + $dataset['TSEP'] = 0; + } + + return json_encode($dataset); + } + + public function getHumanUsedMemory() + { + return $this->_size_for_humans($this->getUsedMemory()); + } + + public function getHumanFreeMemory() + { + return $this->_size_for_humans($this->getFreeMemory()); + } + + public function getHumanWastedMemory() + { + return $this->_size_for_humans($this->getWastedMemory()); + } + + public function getUsedMemory() + { + return $this->_status['memory_usage']['used_memory']; + } + + public function getFreeMemory() + { + return $this->_status['memory_usage']['free_memory']; + } + + public function getWastedMemory() + { + return $this->_status['memory_usage']['wasted_memory']; + } + + public function getWastedMemoryPercentage() + { + return number_format($this->_status['memory_usage']['current_wasted_percentage'], 2); + } + + public function getD3Scripts() + { + return $this->_d3Scripts; + } + + private function _processPartition($value, $name = null) + { + if (array_key_exists('size', $value)) { + return $value; + } + + $array = array('name' => $name,'children' => array()); + + foreach ($value as $k => $v) { + $array['children'][] = $this->_processPartition($v, $k); + } + + return $array; + } + + private function _format_value($value) + { + if (THOUSAND_SEPARATOR === true) { + return number_format($value); + } else { + return $value; + } + } + + private function _size_for_humans($bytes) + { + if ($bytes > 1048576) { + return sprintf('%.2f MB', $bytes / 1048576); + } else { + if ($bytes > 1024) { + return sprintf('%.2f kB', $bytes / 1024); + } else { + return sprintf('%d bytes', $bytes); + } + } + } + + // Borrowed from Laravel + private function _arrayPset(&$array, $key, $value) + { + if (is_null($key)) return $array = $value; + $keys = explode(DIRECTORY_SEPARATOR, ltrim($key, DIRECTORY_SEPARATOR)); + while (count($keys) > 1) { + $key = array_shift($keys); + if ( ! isset($array[$key]) || ! is_array($array[$key])) { + $array[$key] = array(); + } + $array =& $array[$key]; + } + $array[array_shift($keys)] = $value; + return $array; + } + +} + +$dataModel = new OpCacheDataModel(); +?> + + + + + + + + + <?php echo $dataModel->getPageTitle(); ?> + + + +
+

getPageTitle(); ?>

+ +
+ +
+ + +
+ + getStatusDataRows(); ?> +
+
+
+ +
+ + +
+ + getConfigDataRows(); ?> +
+
+
+ +
+ + +
+ + + + + + + getScriptStatusRows(); ?> +
HitsMemoryPath
+
+
+ +
+ + +
+
+ +
+ +
+
+ + + + +
+ +
+
+
+ +
✖ Close Visualisation
+
+ + + + diff --git a/override/classes/Cart.php b/override/classes/Cart.php index a5ab589..1208dcd 100644 --- a/override/classes/Cart.php +++ b/override/classes/Cart.php @@ -26,13 +26,13 @@ class Cart extends CartCore // Build SELECT $sql->select('cp.`id_product_attribute`, cp.`id_product`, cp.`quantity` AS cart_quantity, cp.id_shop, pl.`name`, p.`is_virtual`, - pl.`description_short`, pl.`available_now`, pl.`available_later`, product_shop.`id_category_default`, p.`id_supplier`, - p.`id_manufacturer`, p.`nb_per_box`, p.`online_only`, product_shop.`on_sale`, product_shop.`ecotax`, product_shop.`additional_shipping_cost`, - product_shop.`available_for_order`, product_shop.`price`, product_shop.`active`, product_shop.`unity`, product_shop.`unit_price_ratio`, - stock.`quantity` AS quantity_available, p.`width`, p.`height`, p.`depth`, stock.`out_of_stock`, p.`weight`, - p.`date_add`, p.`date_upd`, IFNULL(stock.quantity, 0) as quantity, pl.`link_rewrite`, cl.`link_rewrite` AS category, - CONCAT(LPAD(cp.`id_product`, 10, 0), LPAD(IFNULL(cp.`id_product_attribute`, 0), 10, 0), IFNULL(cp.`id_address_delivery`, 0)) AS unique_id, cp.id_address_delivery, - product_shop.advanced_stock_management, ps.product_supplier_reference supplier_reference'); + pl.`description_short`, pl.`available_now`, pl.`available_later`, product_shop.`id_category_default`, p.`id_supplier`, + p.`id_manufacturer`, p.`nb_per_box`, p.`online_only`, product_shop.`on_sale`, product_shop.`ecotax`, product_shop.`additional_shipping_cost`, + product_shop.`available_for_order`, product_shop.`price`, product_shop.`active`, product_shop.`unity`, product_shop.`unit_price_ratio`, + stock.`quantity` AS quantity_available, p.`width`, p.`height`, p.`depth`, stock.`out_of_stock`, p.`weight`, + p.`date_add`, p.`date_upd`, IFNULL(stock.quantity, 0) as quantity, pl.`link_rewrite`, cl.`link_rewrite` AS category, + CONCAT(LPAD(cp.`id_product`, 10, 0), LPAD(IFNULL(cp.`id_product_attribute`, 0), 10, 0), IFNULL(cp.`id_address_delivery`, 0)) AS unique_id, cp.id_address_delivery, + product_shop.advanced_stock_management, ps.product_supplier_reference supplier_reference'); // Build FROM $sql->from('cart_product', 'cp'); @@ -41,13 +41,13 @@ class Cart extends CartCore $sql->leftJoin('product', 'p', 'p.`id_product` = cp.`id_product`'); $sql->innerJoin('product_shop', 'product_shop', '(product_shop.`id_shop` = cp.`id_shop` AND product_shop.`id_product` = p.`id_product`)'); $sql->leftJoin('product_lang', 'pl', ' - p.`id_product` = pl.`id_product` - AND pl.`id_lang` = '.(int)$this->id_lang.Shop::addSqlRestrictionOnLang('pl', 'cp.id_shop') + p.`id_product` = pl.`id_product` + AND pl.`id_lang` = '.(int)$this->id_lang.Shop::addSqlRestrictionOnLang('pl', 'cp.id_shop') ); $sql->leftJoin('category_lang', 'cl', ' - product_shop.`id_category_default` = cl.`id_category` - AND cl.`id_lang` = '.(int)$this->id_lang.Shop::addSqlRestrictionOnLang('cl', 'cp.id_shop') + product_shop.`id_category_default` = cl.`id_category` + AND cl.`id_lang` = '.(int)$this->id_lang.Shop::addSqlRestrictionOnLang('cl', 'cp.id_shop') ); $sql->leftJoin('product_supplier', 'ps', 'ps.`id_product` = cp.`id_product` AND ps.`id_product_attribute` = cp.`id_product_attribute` AND ps.`id_supplier` = p.`id_supplier`'); @@ -76,21 +76,21 @@ class Cart extends CartCore if (Combination::isFeatureActive()) { $sql->select(' - product_attribute_shop.`price` AS price_attribute, product_attribute_shop.`ecotax` AS ecotax_attr, - IF (IFNULL(pa.`reference`, \'\') = \'\', p.`reference`, pa.`reference`) AS reference, - (p.`weight`+ pa.`weight`) weight_attribute, - IF (IFNULL(pa.`ean13`, \'\') = \'\', p.`ean13`, pa.`ean13`) AS ean13, - IF (IFNULL(pa.`upc`, \'\') = \'\', p.`upc`, pa.`upc`) AS upc, - IFNULL(product_attribute_shop.`minimal_quantity`, product_shop.`minimal_quantity`) as minimal_quantity, - IF(product_attribute_shop.wholesale_price > 0, product_attribute_shop.wholesale_price, product_shop.`wholesale_price`) wholesale_price - '); + product_attribute_shop.`price` AS price_attribute, product_attribute_shop.`ecotax` AS ecotax_attr, + IF (IFNULL(pa.`reference`, \'\') = \'\', p.`reference`, pa.`reference`) AS reference, + (p.`weight`+ pa.`weight`) weight_attribute, + IF (IFNULL(pa.`ean13`, \'\') = \'\', p.`ean13`, pa.`ean13`) AS ean13, + IF (IFNULL(pa.`upc`, \'\') = \'\', p.`upc`, pa.`upc`) AS upc, + IFNULL(product_attribute_shop.`minimal_quantity`, product_shop.`minimal_quantity`) as minimal_quantity, + IF(product_attribute_shop.wholesale_price > 0, product_attribute_shop.wholesale_price, product_shop.`wholesale_price`) wholesale_price + '); $sql->leftJoin('product_attribute', 'pa', 'pa.`id_product_attribute` = cp.`id_product_attribute`'); $sql->leftJoin('product_attribute_shop', 'product_attribute_shop', '(product_attribute_shop.`id_shop` = cp.`id_shop` AND product_attribute_shop.`id_product_attribute` = pa.`id_product_attribute`)'); } else { $sql->select( 'p.`reference` AS reference, p.`ean13`, - p.`upc` AS upc, product_shop.`minimal_quantity` AS minimal_quantity, product_shop.`wholesale_price` wholesale_price' + p.`upc` AS upc, product_shop.`minimal_quantity` AS minimal_quantity, product_shop.`wholesale_price` wholesale_price' ); } @@ -100,6 +100,7 @@ class Cart extends CartCore $result = Db::getInstance()->executeS($sql); + // Reset the cache before the following return, or else an empty cart will add dozens of queries $products_ids = array(); $pa_ids = array(); diff --git a/override/classes/Category.php b/override/classes/Category.php index fd1132b..f94be03 100644 --- a/override/classes/Category.php +++ b/override/classes/Category.php @@ -56,5 +56,4 @@ class Category extends CategoryCore return $categories; } - } \ No newline at end of file diff --git a/override/controllers/admin/AdminCustomersController.php b/override/controllers/admin/AdminCustomersController.php new file mode 100644 index 0000000..911da76 --- /dev/null +++ b/override/controllers/admin/AdminCustomersController.php @@ -0,0 +1,173 @@ +loadObject())) { + return; + } + + $this->context->customer = $customer; + $gender = new Gender($customer->id_gender, $this->context->language->id); + $gender_image = $gender->getImage(); + + $customer_stats = $customer->getStats(); + $sql = 'SELECT SUM(total_paid_real) FROM '._DB_PREFIX_.'orders WHERE id_customer = %d AND valid = 1'; + if ($total_customer = Db::getInstance()->getValue(sprintf($sql, $customer->id))) { + $sql = 'SELECT SQL_CALC_FOUND_ROWS COUNT(*) FROM '._DB_PREFIX_.'orders WHERE valid = 1 AND id_customer != '.(int)$customer->id.' GROUP BY id_customer HAVING SUM(total_paid_real) > %d'; + Db::getInstance()->getValue(sprintf($sql, (int)$total_customer)); + $count_better_customers = (int)Db::getInstance()->getValue('SELECT FOUND_ROWS()') + 1; + } else { + $count_better_customers = '-'; + } + + $orders = Order::getCustomerOrders($customer->id, true); + $total_orders = count($orders); + for ($i = 0; $i < $total_orders; $i++) { + $orders[$i]['total_paid_real_not_formated'] = $orders[$i]['total_paid_real']; + $orders[$i]['total_paid_real'] = Tools::displayPrice($orders[$i]['total_paid_real'], new Currency((int)$orders[$i]['id_currency'])); + } + + $messages = CustomerThread::getCustomerMessages((int)$customer->id); + + $total_messages = count($messages); + for ($i = 0; $i < $total_messages; $i++) { + $messages[$i]['message'] = substr(strip_tags(html_entity_decode($messages[$i]['message'], ENT_NOQUOTES, 'UTF-8')), 0, 75); + $messages[$i]['date_add'] = Tools::displayDate($messages[$i]['date_add'], null, true); + if (isset(self::$meaning_status[$messages[$i]['status']])) { + $messages[$i]['status'] = self::$meaning_status[$messages[$i]['status']]; + } + } + + $groups = $customer->getGroups(); + $total_groups = count($groups); + for ($i = 0; $i < $total_groups; $i++) { + $group = new Group($groups[$i]); + $groups[$i] = array(); + $groups[$i]['id_group'] = $group->id; + $groups[$i]['name'] = $group->name[$this->default_form_language]; + } + + $total_ok = 0; + $orders_ok = array(); + $orders_ko = array(); + foreach ($orders as $order) { + if (!isset($order['order_state'])) { + $order['order_state'] = $this->l('There is no status defined for this order.'); + } + + if ($order['valid']) { + $orders_ok[] = $order; + $total_ok += $order['total_paid_real_not_formated']; + } else { + $orders_ko[] = $order; + } + } + + $products = $customer->getBoughtProducts(); + + $this->context->currency = Currency::getDefaultCurrency(); + + $sql = 'SELECT DISTINCT cp.id_product, c.id_cart, c.id_shop, cp.id_shop AS cp_id_shop + FROM '._DB_PREFIX_.'cart_product cp + JOIN '._DB_PREFIX_.'cart c ON (c.id_cart = cp.id_cart) + JOIN '._DB_PREFIX_.'product p ON (cp.id_product = p.id_product) + WHERE c.id_customer = '.(int)$customer->id.' + AND NOT EXISTS ( + SELECT 1 + FROM '._DB_PREFIX_.'orders o + JOIN '._DB_PREFIX_.'order_detail od ON (o.id_order = od.id_order) + WHERE product_id = cp.id_product AND o.valid = 1 AND o.id_customer = '.(int)$customer->id.' + )'; + $interested = Db::getInstance()->executeS($sql); + $total_interested = count($interested); + for ($i = 0; $i < $total_interested; $i++) { + $product = new Product($interested[$i]['id_product'], false, $this->default_form_language, $interested[$i]['id_shop']); + if (!Validate::isLoadedObject($product)) { + continue; + } + $interested[$i]['url'] = $this->context->link->getProductLink( + $product->id, + $product->link_rewrite, + Category::getLinkRewrite($product->id_category_default, $this->default_form_language), + null, + null, + $interested[$i]['cp_id_shop'] + ); + $interested[$i]['id'] = (int)$product->id; + $interested[$i]['name'] = Tools::htmlentitiesUTF8($product->name); + } + + $emails = $customer->getLastEmails(); + + $connections = $customer->getLastConnections(); + if (!is_array($connections)) { + $connections = array(); + } + $total_connections = count($connections); + for ($i = 0; $i < $total_connections; $i++) { + $connections[$i]['http_referer'] = $connections[$i]['http_referer'] ? preg_replace('/^www./', '', parse_url($connections[$i]['http_referer'], PHP_URL_HOST)) : $this->l('Direct link'); + } + + $referrers = Referrer::getReferrers($customer->id); + $total_referrers = count($referrers); + for ($i = 0; $i < $total_referrers; $i++) { + $referrers[$i]['date_add'] = Tools::displayDate($referrers[$i]['date_add'], null, true); + } + + $customerLanguage = new Language($customer->id_lang); + $shop = new Shop($customer->id_shop); + $this->tpl_view_vars = array( + 'customer' => $customer, + 'gender' => $gender, + 'gender_image' => $gender_image, + // General information of the customer + 'registration_date' => Tools::displayDate($customer->date_add, null, true), + 'customer_stats' => $customer_stats, + 'last_visit' => Tools::displayDate($customer_stats['last_visit'], null, true), + 'count_better_customers' => $count_better_customers, + 'shop_is_feature_active' => Shop::isFeatureActive(), + 'name_shop' => $shop->name, + 'customer_birthday' => Tools::displayDate($customer->birthday), + 'last_update' => Tools::displayDate($customer->date_upd, null, true), + 'customer_exists' => Customer::customerExists($customer->email), + 'id_lang' => $customer->id_lang, + 'customerLanguage' => $customerLanguage, + // Add a Private note + 'customer_note' => Tools::htmlentitiesUTF8($customer->note), + // Messages + 'messages' => $messages, + // Groups + 'groups' => $groups, + // Orders + 'orders' => $orders, + 'orders_ok' => $orders_ok, + 'orders_ko' => $orders_ko, + 'total_ok' => Tools::displayPrice($total_ok, $this->context->currency->id), + // Products + 'products' => $products, + // Addresses + 'addresses' => $customer->getAddresses($this->default_form_language), + // Discounts + 'discounts' => CartRule::getCustomerCartRules($this->default_form_language, $customer->id, false, false), + // Interested + 'interested' => $interested, + // Emails + 'emails' => $emails, + // Connections + 'connections' => $connections, + // Referrers + 'referrers' => $referrers, + 'show_toolbar' => true + ); + + return AdminController::renderView(); + } +} diff --git a/override/controllers/front/CartController.php b/override/controllers/front/CartController.php index e3b1ea9..0293dc2 100644 --- a/override/controllers/front/CartController.php +++ b/override/controllers/front/CartController.php @@ -4,6 +4,7 @@ class CartController extends CartControllerCore { protected function processChangeProductInCart() { + $mode = (Tools::getIsset('update') && $this->id_product) ? 'update' : 'add'; if ($this->qty == 0) { @@ -89,10 +90,11 @@ class CartController extends CartControllerCore if(!Tools::getIsset('summary')) { - $this->context->cart->deleteProduct($this->id_product, $this->id_product_attribute, $this->customization_id); + $this->context->cart->deleteProduct($this->id_product, $this->id_product_attribute, $this->customization_id); } $update_quantity = $this->context->cart->updateQty($this->qty, $this->id_product, $this->id_product_attribute, $this->customization_id, Tools::getValue('op', 'up'), $this->id_address_delivery); + if ($update_quantity < 0) { // If product has attribute, minimal quantity is set with minimal quantity of attribute $minimal_quantity = ($this->id_product_attribute) ? Attribute::getAttributeMinimalQty($this->id_product_attribute) : $product->minimal_quantity; diff --git a/themes/roykin/js/modules/blockcart/ajax-cart.js b/themes/roykin/js/modules/blockcart/ajax-cart.js index 57a6227..4109bd5 100644 --- a/themes/roykin/js/modules/blockcart/ajax-cart.js +++ b/themes/roykin/js/modules/blockcart/ajax-cart.js @@ -155,7 +155,7 @@ var ajaxCart = { // add a product in the cart via ajax add : function(idProduct, idCombination, addedFromListing, callerElement, quantity){ - + emptyCustomizations(); $(callerElement).prop('disabled', 'disabled'); diff --git a/tools/antadis_tools/debug/AntDebug.php b/tools/antadis_tools/debug/AntDebug.php new file mode 100644 index 0000000..68d232e --- /dev/null +++ b/tools/antadis_tools/debug/AntDebug.php @@ -0,0 +1,124 @@ + $row) { + if (!empty($class_name) && isset($row['class'])) { + $found = ($row['class'] == $class_name); + } + + if (!isset($row['function'])) { + $found = false; + } + elseif ((!empty($class_name) && $found) || empty($class_name)) { + $found = ($row['function'] == $function_name); + } + + if ($found) { + return true; + } + } + + return $found; + } + + static function trace($type_output = AntDebug::HTML, $show_args = false) + { + static $nb_times = 0; + + $newline = PHP_EOL; + if ($type_output == self::HTML) { + $newline = '
'; + } + elseif ($type_output == self::JSON) { + $newline = ''; + } + + if ($show_args) { + $trace_result = debug_backtrace(); + } + else { + $trace_result = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); + } + + $results = array(); + foreach ($trace_result as $index => $row) { + if ((isset($row['class']) && $row['class'] != __CLASS__) || ($row['function'] != __FUNCTION__)) { + + $res = ''; + + if (isset($row['class'])) { + $res .= $row['class'].'::'; + } + + $file = $row['file']; + if (isset($_SERVER['CONTEXT_DOCUMENT_ROOT'])) { + $file = str_replace($_SERVER['CONTEXT_DOCUMENT_ROOT'], '', $file); + } + $res = $res.$row['function'].'() --- ['.$file.':'.$row['line'].']'; + + if ($show_args && isset($row['args'])) { + $res .= ' with args : '; + if ($type_output == self::HTML) { + $res .= "
";
+                    }
+                    $res .= print_r($row['args'], true);
+                    if ($type_output == self::HTML) {
+                       $res .= "
"; + } + } + $results[] = $res; + } + } + + if (count($results)>0) { + krsort($results, SORT_NUMERIC); + + $output = array(); + if ($type_output == self::HTML) { + $output[] = "
"; + } + + $level = 0; + foreach ($results as $trace) { + $padding = str_pad('', $level*3, '-', STR_PAD_LEFT); + + if ($level > 0) { + $padding = $padding.' '; + } + + $output[] = "#".$level." ".$padding.$trace.$newline; + $level++; + } + $nb_times++; + $output[] = "Nb times : ".$nb_times; + $output[] = $newline.$newline; + + if ($type_output == self::HTML) { + $output[] = "
"; + } + + if ($type_output == self::JSON) { + echo json_encode($output); + } + else { + foreach($output as $line) { + echo $line; + } + } + } + + } +} diff --git a/tools/antadis_tools/debug/AntDebugger.php b/tools/antadis_tools/debug/AntDebugger.php new file mode 100644 index 0000000..d231273 --- /dev/null +++ b/tools/antadis_tools/debug/AntDebugger.php @@ -0,0 +1,80 @@ +'; + } + + if ($show_args) { + $result = debug_backtrace(); + } + else { + $result = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); + } + + $results = array(); + foreach ($result as $index => $rows) { + if ((isset($rows['class']) && $rows['class'] != 'AntDebugger') || $rows['function'] != 'backtrace') { + + $res = ''; + + if (isset($rows['class'])) { + $res .= $rows['class'].'::'; + } + + $file = $rows['file']; + if (isset($_SERVER['CONTEXT_DOCUMENT_ROOT'])) { + $file = str_replace($_SERVER['CONTEXT_DOCUMENT_ROOT'], '', $file); + } + $res = $res.$rows['function'].'() --- ['.$file.':'.$rows['line'].']'; + + if ($show_args && isset($rows['args'])) { + $res .= ' with args : '; + if ($output_html) { + $res .= "
";
+                        }
+                        $res .= print_r($rows['args'], true);
+                        if ($output_html) {
+                           $res .= "
"; + } + } + + $results[] = $res; + } + } + + krsort($results, SORT_NUMERIC); + + if ($output_html) { + echo "
"; + } + + $level = 0; + foreach ($results as $trace) { + $padding = str_pad('', $level*3, '-', STR_PAD_LEFT); + + if ($level > 0) { + $padding = $padding.' '; + } + + echo "#".$level." ".$padding.$trace.$newline; + $level++; + } + $nb_times++; + echo "Nb times : ".$nb_times; + echo $newline; + echo $newline; + + if ($output_html) { + echo "
"; + } + } + } +} \ No newline at end of file diff --git a/tools/antadis_tools/debug/index.php b/tools/antadis_tools/debug/index.php new file mode 100644 index 0000000..2d4b752 --- /dev/null +++ b/tools/antadis_tools/debug/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2015 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/tools/antadis_tools/debug/tests/test_debug.php b/tools/antadis_tools/debug/tests/test_debug.php new file mode 100644 index 0000000..b267df1 --- /dev/null +++ b/tools/antadis_tools/debug/tests/test_debug.php @@ -0,0 +1,91 @@ +save_deux(); + } + + protected function save_deux() + { + $obj = new cart_object(); + $obj->update(); + } +} + +class payment_object extends order_object +{ + protected function save_deux() + { + if (AntDebug::calledBy('order_object', 'save')) { + AntDebug::trace(AntDebug::TXT); + } + $obj = new cart_object(); + $obj->update(); + } +} + +//test_all(); + +order_update(); +payment_update(); + +$obj = new order_object(); +$obj->save(); + +$obj = new payment_object(); +$obj->save(); diff --git a/tools/antadis_tools/include.php b/tools/antadis_tools/include.php new file mode 100644 index 0000000..41a6759 --- /dev/null +++ b/tools/antadis_tools/include.php @@ -0,0 +1,3 @@ + +* @copyright 2007-2015 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/tools/profiling/Tools.php b/tools/profiling/Tools.php index e2d6db4..cb58aac 100755 --- a/tools/profiling/Tools.php +++ b/tools/profiling/Tools.php @@ -113,4 +113,77 @@ class Tools extends ToolsCore Context::getContext()->controller->setRedirectAfter($url); } } + + public static function displayPriceWithTaxTag($price) + { + return self::displayPriceWithTaxTagSmarty(array('price' => $price)); + } + + public static function displayPriceWithTaxTagSmarty($params) + { + $price = $params['price']; + $ttc = isset($params['ttc']) && $params['ttc'] == true; + $context = Context::getContext(); + $currency = $context->currency; + + $taxeTag = $ttc ? ' TTC' : ' HT'; + + if (!is_numeric($price)) { + return $price; + } + + if (is_array($currency)) { + $c_char = $currency['sign']; + $c_format = $currency['format']; + $c_decimals = (int)$currency['decimals'] * _PS_PRICE_DISPLAY_PRECISION_; + $c_blank = $currency['blank']; + } elseif (is_object($currency)) { + $c_char = $currency->sign; + $c_format = $currency->format; + $c_decimals = (int)$currency->decimals * _PS_PRICE_DISPLAY_PRECISION_; + $c_blank = $currency->blank; + } else { + return false; + } + + $blank = ($c_blank ? ' ' : ''); + $ret = 0; + if (($is_negative = ($price < 0))) { + $price *= -1; + } + $price = Tools::ps_round($price, $c_decimals); + + if (($c_format == 2) && ($context->language->is_rtl == 1)) { + $c_format = 4; + } + + switch ($c_format) { + /* X 0,000.00 */ + case 1: + $ret = $c_char.$blank.number_format($price, $c_decimals, '.', ','); + break; + /* 0 000,00 X*/ + case 2: + $ret = number_format($price, $c_decimals, ',', ' ').$blank.$c_char.'' . $taxeTag . ''; + break; + /* X 0.000,00 */ + case 3: + $ret = $c_char.$blank.number_format($price, $c_decimals, ',', '.'); + break; + /* 0,000.00 X */ + case 4: + $ret = number_format($price, $c_decimals, '.', ',').$blank.$c_char; + break; + /* X 0'000.00 Added for the switzerland currency */ + case 5: + $ret = number_format($price, $c_decimals, '.', "'").$blank.$c_char; + break; + } + if ($is_negative) { + $ret = '-'.$ret; + } + + return $ret; + } + }