From 5198749245befd81b72b34ea6cbd5dd8fee48d65 Mon Sep 17 00:00:00 2001 From: matthieu-rolland Date: Wed, 5 Oct 2022 13:46:00 +0200 Subject: [PATCH 1/2] add dedicated fetch method --- classes/module/Module.php | 12 ++++++++++++ controllers/admin/AdminGroupsController.php | 2 +- src/Adapter/Module/Module.php | 10 ++++++++++ .../Admin/Improve/Design/PositionsController.php | 2 +- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/classes/module/Module.php b/classes/module/Module.php index 14b2fdb821cf7..1ce868589bdbd 100755 --- a/classes/module/Module.php +++ b/classes/module/Module.php @@ -1691,6 +1691,18 @@ public static function getModulesInstalled($position = 0) return Db::getInstance()->executeS($sql); } + /** + * Return modules that are installed AND enabled + * + * @return array Modules + */ + public static function getModulesInstalledAndEnabled() + { + $sql = 'SELECT m.* FROM `' . _DB_PREFIX_ . 'module` m WHERE `active` = 1'; + + return Db::getInstance()->executeS($sql); + } + /** * Returns the list of the payment module associated to the current customer. * diff --git a/controllers/admin/AdminGroupsController.php b/controllers/admin/AdminGroupsController.php index a6b50b838d863..c3ce76145cdb1 100644 --- a/controllers/admin/AdminGroupsController.php +++ b/controllers/admin/AdminGroupsController.php @@ -471,7 +471,7 @@ protected function formatCategoryDiscountList($id_group) public function formatModuleListAuth($id_group) { - $modules = Module::getModulesInstalled(); + $modules = Module::getModulesInstalledAndEnabled(); $authorized_modules = ''; $auth_modules = []; diff --git a/src/Adapter/Module/Module.php b/src/Adapter/Module/Module.php index e77b1a86d338f..f942129708d8e 100644 --- a/src/Adapter/Module/Module.php +++ b/src/Adapter/Module/Module.php @@ -512,6 +512,16 @@ public function getModulesInstalled($position = 0) return LegacyModule::getModulesInstalled((int) $position); } + /** + * Return modules that are installed AND enabled + * + * @return array Modules + */ + public function getModulesInstalledAndEnabled() + { + return LegacyModule::getModulesInstalledAndEnabled(); + } + /** * Return an instance of the specified module. * diff --git a/src/PrestaShopBundle/Controller/Admin/Improve/Design/PositionsController.php b/src/PrestaShopBundle/Controller/Admin/Improve/Design/PositionsController.php index 5c8de787eacf8..3a83969f5ca8b 100644 --- a/src/PrestaShopBundle/Controller/Admin/Improve/Design/PositionsController.php +++ b/src/PrestaShopBundle/Controller/Admin/Improve/Design/PositionsController.php @@ -72,7 +72,7 @@ public function indexAction(Request $request) $moduleAdapter = $this->get('prestashop.adapter.legacy.module'); $hookProvider = $this->get('prestashop.adapter.legacy.hook'); - $installedModules = $moduleAdapter->getModulesInstalled(); + $installedModules = $moduleAdapter->getModulesInstalledAndEnabled(); $selectedModule = $request->get('show_modules'); if ($selectedModule && (string) $selectedModule != 'all') { From f483ed1488031861fb912c3c64672e54ce4557ec Mon Sep 17 00:00:00 2001 From: matthieu-rolland Date: Wed, 5 Oct 2022 17:47:03 +0200 Subject: [PATCH 2/2] make query multistore compatible --- classes/module/Module.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/classes/module/Module.php b/classes/module/Module.php index 1ce868589bdbd..be3c949a981f2 100755 --- a/classes/module/Module.php +++ b/classes/module/Module.php @@ -1698,9 +1698,14 @@ public static function getModulesInstalled($position = 0) */ public static function getModulesInstalledAndEnabled() { - $sql = 'SELECT m.* FROM `' . _DB_PREFIX_ . 'module` m WHERE `active` = 1'; + $id_shops = Shop::getContextListShopID(); - return Db::getInstance()->executeS($sql); + $select = 'SELECT m.`id_module`, m.`name`, m.`version`'; + $from = ' FROM `' . _DB_PREFIX_ . 'module` m'; + $from .= ' INNER JOIN `' . _DB_PREFIX_ . 'module_shop` ms ON ms.`id_module` = m.`id_module`'; + $from .= ' AND ms.`id_shop` IN (' . (implode(',', array_map('intval', $id_shops))) . ')'; + + return Db::getInstance()->executeS($select . $from); } /**