Get('expression_cache_enabled')) { return null; } // read current cache @include_once (static::GetCacheFileName()); $oExpr = null; $sKey = static::GetKey($sClass, $sAttCode); $sCacheClass = self::GetCacheClassName(); if (class_exists($sCacheClass)) { /** @noinspection PhpUndefinedFieldInspection The property is dynamically generated */ if (array_key_exists($sKey, $sCacheClass::$aCache)) { $sVal = $sCacheClass::$aCache[$sKey]; $oExpr = unserialize($sVal); } } return $oExpr; } /** * @throws \CoreException * @throws \DictExceptionUnknownLanguage */ public static function Warmup() { if (!utils::GetConfig()->Get('expression_cache_enabled')) { return; } // Store current language $sUserLang = Dict::GetUserLanguage(); $aLanguages = Dict::GetLanguages(); foreach($aLanguages as $sLang => $aLang) { Dict::SetUserLanguage($sLang); $sFilePath = static::GetCacheFileName(); $sCacheClass = self::GetCacheClassName(); if (!is_file($sFilePath)) { $content = << ".var_export(serialize($oExpr), true).",\n"; // Beware, string values can contain quotes, backslashes, etc! } /** * @param string $sClass * @param string $sAttCode * * @return string */ private static function GetKey($sClass, $sAttCode) { return $sClass.'::'.$sAttCode; } /** * @return string */ public static function GetCacheFileName() { $sLangName = self::GetLangName(); return utils::GetCachePath().'expressioncache/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(); $sLangName = str_replace(" ", "", $sLang); return $sLangName; } }