From b8b468195cbf568d41baec8246530e69607ac140 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 15 Jan 2019 11:24:48 +0100 Subject: [PATCH] PR#39 Fix support of expressions (friendlyname) in different languages context (use class name by language for the expression caches) --- core/expressioncache.class.inc.php | 33 ++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/core/expressioncache.class.inc.php b/core/expressioncache.class.inc.php index 411a87411..7d4161a13 100644 --- a/core/expressioncache.class.inc.php +++ b/core/expressioncache.class.inc.php @@ -27,11 +27,12 @@ class ExpressionCache $oExpr = null; $sKey = static::GetKey($sClass, $sAttCode); - if (class_exists('ExpressionCacheData')) + $sCacheClass = self::GetCacheClassName(); + if (class_exists($sCacheClass)) { - if (array_key_exists($sKey, ExpressionCacheData::$aCache)) + if (array_key_exists($sKey, $sCacheClass::$aCache)) { - $sVal = ExpressionCacheData::$aCache[$sKey]; + $sVal = $sCacheClass::$aCache[$sKey]; $oExpr = unserialize($sVal); } } @@ -48,6 +49,7 @@ class ExpressionCache { Dict::SetUserLanguage($sLang); $sFilePath = static::GetCacheFileName(); + $sCacheClass = self::GetCacheClassName(); if (!is_file($sFilePath)) { @@ -56,7 +58,7 @@ class ExpressionCache // Copyright (c) 2010-2019 Combodo SARL // Generated Expression Cache file for $sLang -class ExpressionCacheData +class $sCacheClass { static \$aCache = array( EOF; @@ -100,10 +102,29 @@ EOF; } public static function GetCacheFileName() + { + $sLangName = self::GetLangName(); + return utils::GetCachePath().'expressioncache-' . $sLangName . '.php'; + } + + /** + * @return string + */ + private static function GetCacheClassName() + { + $sLangName = self::GetLangName(); + $sCacheClass = "ExpressionCacheData$sLangName"; + return $sCacheClass; + } + + /** + * @return mixed + */ + private static function GetLangName() { $sLang = Dict::GetUserLanguage(); - $sLang = str_replace(" ", "", $sLang); - return utils::GetCachePath().'expressioncache-' . $sLang . '.php'; + $sLangName = str_replace(" ", "", $sLang); + return $sLangName; } }