diff --git a/classes/Address.php b/classes/Address.php index 395c407ee..487c83c1b 100644 --- a/classes/Address.php +++ b/classes/Address.php @@ -134,13 +134,7 @@ class AddressCore extends ObjectModel /* Get and cache address country name */ if ($this->id) - { - $result = Db::getInstance()->getRow(' - SELECT `name` FROM `'._DB_PREFIX_.'country_lang` - WHERE `id_country` = '.(int)$this->id_country.' - AND `id_lang` = '.($id_lang ? (int)$id_lang : Configuration::get('PS_LANG_DEFAULT'))); - $this->country = $result['name']; - } + $this->country = Country::getNameById($id_lang ? $id_lang : Configuration::get('PS_LANG_DEFAULT'), $this->id_country); } public function add($autodate = true, $null_values = false) diff --git a/classes/Country.php b/classes/Country.php index e01be0a7b..f24e35f92 100644 --- a/classes/Country.php +++ b/classes/Country.php @@ -214,14 +214,16 @@ class CountryCore extends ObjectModel */ public static function getNameById($id_lang, $id_country) { - $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' - SELECT `name` - FROM `'._DB_PREFIX_.'country_lang` - WHERE `id_lang` = '.(int)$id_lang.' - AND `id_country` = '.(int)$id_country - ); + $key = $id_country.'_'.$id_lang; + if (!Cache::isStored($key)) + Cache::store($key, Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `name` + FROM `'._DB_PREFIX_.'country_lang` + WHERE `id_lang` = '.(int)$id_lang.' + AND `id_country` = '.(int)$id_country + )); - return $result['name']; + return Cache::retrieve($key); } /** diff --git a/classes/cache/Cache.php b/classes/cache/Cache.php index f10064eb2..9451f055b 100755 --- a/classes/cache/Cache.php +++ b/classes/cache/Cache.php @@ -70,6 +70,11 @@ abstract class CacheCore 'page_viewed', ); + /** + * @var array Store local cache + */ + protected static $local = array(); + /** * Cache a data * @@ -291,4 +296,24 @@ abstract class CacheCore return true; return false; } + + public static function store($key, $value) + { + Cache::$local[$key] = $value; + } + + public static function retrieve($key) + { + return isset(Cache::$local[$key]) ? Cache::$local[$key] : null; + } + + public static function isStored($key) + { + return isset(Cache::$local[$key]); + } + + public static function clean($key) + { + unset(Cache::$local[$key]); + } }