diff --git a/classes/module/Module.php b/classes/module/Module.php index 14b2fdb821cf7..be3c949a981f2 100755 --- a/classes/module/Module.php +++ b/classes/module/Module.php @@ -1691,6 +1691,23 @@ 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() + { + $id_shops = Shop::getContextListShopID(); + + $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); + } + /** * 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') {