From 64b83ee40e58d2a559209d059e4c87fe36c8753b Mon Sep 17 00:00:00 2001 From: rMalie Date: Wed, 25 Apr 2012 09:04:38 +0000 Subject: [PATCH] // Add hooks for shop duplication, fix homeslider duplication #PSTEST-1173 git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@14864 b9a71923-0436-4b27-9f14-aed3839534dd --- classes/shop/Shop.php | 14 ++++++++++---- controllers/admin/AdminShopController.php | 6 ++++++ install-dev/data/theme.sql | 2 +- modules/homeslider/homeslider.php | 14 ++++++++++++-- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/classes/shop/Shop.php b/classes/shop/Shop.php index 8940b382f..a35a74e4b 100644 --- a/classes/shop/Shop.php +++ b/classes/shop/Shop.php @@ -796,11 +796,17 @@ class ShopCore extends ObjectModel Db::getInstance()->execute($sql); } } - /*else - { - Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.$table_name.'` SET WHERE `'.$id.'`='.(int)$old_id); - }*/ } + + // Hook for duplication of shop data + $modules_list = Hook::getHookModuleExecList('actionShopDataDuplication'); + if (is_array($modules_list) && count($modules_list) > 0) + foreach ($modules_list as $m) + if (!$tables_import || isset($tables_import['Module'.ucfirst($m['module'])])) + Hook::exec('actionShopDataDuplication', array( + 'old_id_shop' => (int)$old_id, + 'new_id_shop' => (int)$this->id, + ), $m['id_module']); } public function checkIfShopExist($id) diff --git a/controllers/admin/AdminShopController.php b/controllers/admin/AdminShopController.php index 319bd63df..8281f2f2d 100755 --- a/controllers/admin/AdminShopController.php +++ b/controllers/admin/AdminShopController.php @@ -405,6 +405,12 @@ class AdminShopControllerCore extends AdminController 'warehouse' => $this->l('Warehouse'), ); + // Hook for duplication of shop data + $modules_list = Hook::getHookModuleExecList('actionShopDataDuplication'); + if (is_array($modules_list) && count($modules_list) > 0) + foreach ($modules_list as $m) + $import_data['Module'.ucfirst($m['module'])] = Module::getModuleName($m['module']); + if (!$this->object->id) $this->fields_import_form = array( 'radio' => array( diff --git a/install-dev/data/theme.sql b/install-dev/data/theme.sql index 990d93ae4..c6c952707 100644 --- a/install-dev/data/theme.sql +++ b/install-dev/data/theme.sql @@ -98,7 +98,6 @@ INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VAL INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayHeader'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'blockcart'), 5); INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayHeader'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'blocksocial'), 5); INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayHeader'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'blockmyaccount'), 6); -INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayHeader'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'homeslider'), 7); INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayHeader'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'blockcategories'), 9); INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayHeader'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'blockspecials'), 10); INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayHeader'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'blockcurrencies'), 11); @@ -120,6 +119,7 @@ INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VAL INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayHeader'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'blocksupplier'), 25); INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayHeader'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'feeder'), 26); INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'actionAuthentication'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'statsdata'), 1); +INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'actionShopDataDuplication'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'homeslider'), 1); INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayTop'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'blocklanguages'), 1); INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayTop'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'blockcurrencies'), 2); INSERT IGNORE INTO `PREFIX_hook_module` (`id_hook`, `id_module`, `position`) VALUES ((SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayTop'), (SELECT id_module FROM `PREFIX_module` WHERE name = 'blockpermanentlinks'), 3); diff --git a/modules/homeslider/homeslider.php b/modules/homeslider/homeslider.php index c058f2034..5a17658d4 100644 --- a/modules/homeslider/homeslider.php +++ b/modules/homeslider/homeslider.php @@ -60,7 +60,7 @@ class HomeSlider extends Module public function install() { /* Adds Module */ - if (parent::install() && $this->registerHook('displayHome')) + if (parent::install() && $this->registerHook('displayHome') && $this->registerHook('actionShopDataDuplication')) { /* Sets up configuration */ $res = Configuration::updateValue('HOMESLIDER_WIDTH', '535'); @@ -109,7 +109,7 @@ class HomeSlider extends Module public function uninstall() { /* Deletes Module */ - if (parent::uninstall() && $this->unregisterHook('displayHome')) + if (parent::uninstall() && $this->unregisterHook('displayHome') && $this->unregisterHook('actionShopDataDuplication')) { /* Deletes tables */ $res = $this->deleteTables(); @@ -661,6 +661,16 @@ class HomeSlider extends Module return $this->display(__FILE__, 'homemobileslider.tpl'); } + public function hookActionShopDataDuplication($params) + { + Db::getInstance()->execute(' + INSERT INTO '._DB_PREFIX_.'homeslider (id_homeslider_slides, id_shop) + SELECT id_homeslider_slides, '.(int)$params['new_id_shop'].' + FROM '._DB_PREFIX_.'homeslider + WHERE id_shop = '.(int)$params['old_id_shop'].' + '); + } + public function headerHTML() { if (Tools::getValue('controller') != 'AdminModules' && Tools::getValue('configure') != $this->name)