// Better cache depth management for smarty

This commit is contained in:
Damien Metzger
2013-09-20 10:26:43 +02:00
parent eb6600e840
commit f8ca06d927
3 changed files with 33 additions and 11 deletions

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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);