diff --git a/classes/Currency.php b/classes/Currency.php index 6740dd955..bf9cca614 100644 --- a/classes/Currency.php +++ b/classes/Currency.php @@ -81,6 +81,7 @@ class CurrencyCore extends ObjectModel /** @var array Currency cache */ static protected $currencies = array(); + protected static $countActiveCurrencies = array(); protected $webserviceParameters = array( 'objectsNodeName' => 'currencies', @@ -414,5 +415,23 @@ class CurrencyCore extends ObjectModel self::$currencies[(int)($id)] = new Currency($id); return self::$currencies[(int)($id)]; } -} + + public static function countActiveCurrencies($id_shop = null) + { + if ($id_shop === null) + $id_shop = (int)Context::getContext()->shop->id; + if (!isset(self::$countActiveCurrencies[$id_shop])) + self::$countActiveCurrencies[$id_shop] = Db::getInstance()->getValue(' + SELECT COUNT(DISTINCT c.id_currency) FROM `'._DB_PREFIX_.'currency` c + LEFT JOIN '._DB_PREFIX_.'currency_shop cs ON (cs.id_currency = c.id_currency AND cs.id_shop = '.(int)$id_shop.') + WHERE c.`active` = 1 + '); + return self::$countActiveCurrencies[$id_shop]; + } + + public static function isMultiCurrencyActivated($id_shop = null) + { + return (Currency::countActiveCurrencies($id_shop) > 1); + } +} \ No newline at end of file diff --git a/classes/module/Module.php b/classes/module/Module.php index 79ec715c1..4e86ca7ba 100644 --- a/classes/module/Module.php +++ b/classes/module/Module.php @@ -1630,15 +1630,18 @@ abstract class ModuleCore protected function getCacheId($name = null) { - $cache_array = array( - $name !== null ? $name : $this->name, - (int)Tools::usingSecureMode(), - (int)$this->context->shop->id, - (int)Group::getCurrent()->id, - (int)$this->context->language->id, - (int)$this->context->currency->id, - (int)$this->context->country->id - ); + $cache_array = array(); + $cache_array[] = $name !== null ? $name : $this->name; + if (Configuration::get('PS_SSL_ENABLED')) + $cache_array[] = (int)Tools::usingSecureMode(); + if (Shop::isFeatureActive()) + $cache_array[] = (int)$this->context->shop->id; + $cache_array[] = (int)Group::getCurrent()->id; + if (Language::isMultiLanguageActivated()) + $cache_array[] = (int)$this->context->language->id; + if (Currency::isMultiCurrencyActivated()) + $cache_array[] = (int)$this->context->currency->id; + $cache_array[] = (int)$this->context->country->id; return implode('|', $cache_array); } diff --git a/modules/blockcurrencies/blockcurrencies.php b/modules/blockcurrencies/blockcurrencies.php index 2841b1dd5..34eda8b86 100644 --- a/modules/blockcurrencies/blockcurrencies.php +++ b/modules/blockcurrencies/blockcurrencies.php @@ -53,7 +53,7 @@ class BlockCurrencies extends Module if (Configuration::get('PS_CATALOG_MODE')) return false; - if (!count(Currency::getCurrencies())) + if (!Currency::isMultiCurrencyActivated()) return false; $this->smarty->assign('blockcurrencies_sign', $this->context->currency->sign);