continue; } $fp = fopen($path, 'r'); preg_match('#^//(\\d+)#', fgets($fp), $v); if ($v[1] < $version['build']) { CAppUI::stepAjax("Locales-javascript-cache-ko", UI_MSG_WARNING, $localeName); fclose($fp); continue; } if (null == SHM::get("locales-{$localeName}-" . CAppUI::LOCALES_PREFIX)) { CAppUI::stepAjax("Locales-shm-none", UI_MSG_OK, $localeName); continue; } // Load overwritten locales if the table exists $overwrite = new CTranslationOverwrite(); if ($overwrite->isInstalled()) { $locales = $overwrite->transformLocales($locales); } $cached_locales = CAppUI::flattenCachedLocales($localeName); if ($cached_locales != $locales) { CAppUI::stepAjax("Locales-shm-ko", UI_MSG_WARNING, $localeName); continue; } CAppUI::stepAjax("Locales-shm-ok", UI_MSG_OK, $localeName); } // Not used yet (because of PHP 5.1) //if (null == SHM::get("modules")) { // CAppUI::stepAjax("Modules-shm-none", UI_MSG_OK); //} ////////// Configuration model $cache_status = CConfiguration::getModelCacheStatus();
/** * Load locales from cache or build the cache * * @return void */ public static function loadLocales() { $lang = CAppUI::pref("LOCALE", "fr"); self::$lang = $lang; $shared_name = "locales-{$lang}"; $locales_prefixes = SHM::get("{$shared_name}-" . self::LOCALES_PREFIX); // Load from shared memory if possible if ($locales_prefixes) { return; } $mutex = new CMbFileMutex("locales-build"); $mutex->acquire(5); $locales_prefixes = SHM::get("{$shared_name}-" . self::LOCALES_PREFIX); // Load from shared memory if possible if ($locales_prefixes) { $mutex->release(); return; } $locales = array(); foreach (self::getLocaleFilesPaths($lang) as $_path) { include_once $_path; } $locales = CMbString::filterEmpty($locales); foreach ($locales as &$_locale) { $_locale = CMbString::unslash($_locale); } unset($_locale); // Load overwritten locales if the table exists $overwrite = new CTranslationOverwrite(); if ($overwrite->isInstalled()) { $locales = $overwrite->transformLocales($locales, $lang); } // Prefix = everything before "." and "-" $by_prefix = array(); $hashes = array(); foreach ($locales as $_key => $_value) { /** @var string $_prefix */ /** @var string $_rest */ /** @var string $_prefix_raw */ list($_prefix, $_rest, $_prefix_raw) = self::splitLocale($_key); if (!isset($by_prefix[$_prefix])) { $hashes[$_prefix] = $_prefix_raw; $by_prefix[$_prefix] = array(); } $by_prefix[$_prefix][$_rest] = $_value; } foreach ($by_prefix as $_prefix => $_locales) { self::$locales[$_prefix] = $_locales; self::$locales_loaded[$_prefix] = true; SHM::put("{$shared_name}-{$_prefix}", $_locales); } SHM::put("{$shared_name}-" . self::LOCALES_PREFIX, $hashes); $mutex->release(); }