From a1ce0fda134a85c258b227419d6508cabbecb410 Mon Sep 17 00:00:00 2001 From: gRoussac Date: Thu, 2 May 2013 15:41:21 +0200 Subject: [PATCH] [-] INSTALLER : Fix bug #PSCFV-8750 do not activate disabled module during upgrade --- .../upgrade/php/deactivate_custom_modules.php | 19 +++++++++++-------- install-dev/upgrade/sql/1.5.0.0.sql | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/install-dev/upgrade/php/deactivate_custom_modules.php b/install-dev/upgrade/php/deactivate_custom_modules.php index 7e9893f51..81467c137 100644 --- a/install-dev/upgrade/php/deactivate_custom_modules.php +++ b/install-dev/upgrade/php/deactivate_custom_modules.php @@ -66,18 +66,21 @@ function deactivate_custom_modules() $uninstallMe = array("undefined-modules"); if (is_array($arrNonNative)) - foreach($arrNonNative as $aModule) - $uninstallMe[] = $aModule['name']; + foreach($arrNonNative as $k => $aModule) + $uninstallMe[(int)$aModule['id_module']] = $aModule['name']; if (!is_array($uninstallMe)) $uninstallMe = array($uninstallMe); - foreach ($uninstallMe as $k=>$v) + foreach ($uninstallMe as $k => $v) $uninstallMe[$k] = '"'.pSQL($v).'"'; - return Db::getInstance()->execute(' - UPDATE `'._DB_PREFIX_.'module` - SET `active`= 0 - WHERE `name` IN ('.implode(',',$uninstallMe).')'); -} + $return = Db::getInstance()->execute(' + UPDATE `'._DB_PREFIX_.'module` SET `active` = 0 WHERE `name` IN ('.implode(',', $uninstallMe).')'); + if (count(Db::getInstance()->executeS('SHOW TABLES LIKE \''._DB_PREFIX_.'module_shop\''))> 0) + foreach($uninstallMe as $k => $uninstall) + $return &= Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'module_shop` WHERE `id_module` = '.(int)$k); + + return $return; +} \ No newline at end of file diff --git a/install-dev/upgrade/sql/1.5.0.0.sql b/install-dev/upgrade/sql/1.5.0.0.sql index 779207d8e..ee3f806ad 100755 --- a/install-dev/upgrade/sql/1.5.0.0.sql +++ b/install-dev/upgrade/sql/1.5.0.0.sql @@ -264,7 +264,7 @@ CREATE TABLE `PREFIX_module_shop` ( PRIMARY KEY (`id_module` , `id_shop`), KEY `id_shop` (`id_shop`) ) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; -INSERT INTO `PREFIX_module_shop` (`id_module`, `id_shop`) (SELECT `id_module`, 1 FROM `PREFIX_module`); +INSERT INTO `PREFIX_module_shop` (`id_module`, `id_shop`) (SELECT `id_module`, 1 FROM `PREFIX_module` WHERE active = 1); ALTER TABLE `PREFIX_module_currency` ADD `id_shop` INT(11) UNSIGNED NOT NULL DEFAULT '1' AFTER `id_module`; ALTER TABLE `PREFIX_module_currency` DROP PRIMARY KEY;