diff --git a/classes/Hook.php b/classes/Hook.php index 1ad1b4ca3..b3fa852c2 100644 --- a/classes/Hook.php +++ b/classes/Hook.php @@ -286,6 +286,7 @@ class HookCore extends ObjectModel { $sql->leftJoin('module_group', 'mg', 'mg.`id_module` = m.`id_module`'); $sql->where('mg.`id_group` IN ('.implode(', ', $groups).')'); + $sql->where(Module::getPaypalIgnore()); $sql->groupBy('hm.id_hook, hm.id_module'); } @@ -298,16 +299,9 @@ class HookCore extends ObjectModel // Get all available payment module $payment_modules = array(); - if (isset($context->shop->id)) - foreach (Module::getPaymentModules() as $module) - $payment_modules[] = $module['name']; - if ($results) foreach ($results as $row) { - if ($row['hook'] == 'displayPayment' && !in_array($row['module'], $payment_modules)) - continue; - $row['hook'] = strtolower($row['hook']); if (!isset($list[$row['hook']])) $list[$row['hook']] = array(); diff --git a/classes/module/Module.php b/classes/module/Module.php index b8d93cd7b..990438b41 100644 --- a/classes/module/Module.php +++ b/classes/module/Module.php @@ -1307,6 +1307,14 @@ abstract class ModuleCore { return true; } + + public static function getPaypalIgnore() + { + $iso_code = Country::getIsoById((int)Configuration::get('PS_COUNTRY_DEFAULT')); + $paypal_countries = array('ES', 'FR', 'PL', 'IT'); + if (Context::getContext()->getMobileDevice() && Context::getContext()->shop->getTheme() == 'default' && in_array($iso_code, $paypal_countries)) + return 'm.`name` = \'paypal\''; + } /** * Returns the list of the payment module associated to the current customer @@ -1335,14 +1343,10 @@ abstract class ModuleCore if (Db::getInstance()->getValue('SELECT `id_hook` FROM `'._DB_PREFIX_.'hook` WHERE `name` = \'displayPayment\'')) $hookPayment = 'displayPayment'; - $paypal_condition = ''; - $iso_code = Country::getIsoById((int)Configuration::get('PS_COUNTRY_DEFAULT')); - $paypal_countries = array('ES', 'FR', 'PL', 'IT'); - if (Context::getContext()->getMobileDevice() && Context::getContext()->shop->getTheme() == 'default' && in_array($iso_code, $paypal_countries)) - $paypal_condition = ' AND m.`name` = \'paypal\''; - $list = Shop::getContextListShopID(); - + if ($paypal_condition = Module::getPaypalIgnore()) + $paypal_condition = ' AND '.$paypal_condition; + return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT DISTINCT m.`id_module`, h.`id_hook`, m.`name`, hm.`position` FROM `'._DB_PREFIX_.'module` m '.($frontend ? 'LEFT JOIN `'._DB_PREFIX_.'module_country` mc ON (m.`id_module` = mc.`id_module` AND mc.id_shop = '.(int)$context->shop->id.')' : '').'