本文整理汇总了PHP中Tinebase_Config::isReady方法的典型用法代码示例。如果您正苦于以下问题:PHP Tinebase_Config::isReady方法的具体用法?PHP Tinebase_Config::isReady怎么用?PHP Tinebase_Config::isReady使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tinebase_Config
的用法示例。
在下文中一共展示了Tinebase_Config::isReady方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getAvailableTranslations
/**
* returns list of all available translations
*
* NOTE available are those, having a Tinebase translation
*
* @return array list of all available translation
*
* @todo add test
*/
public static function getAvailableTranslations($appName = 'Tinebase')
{
$availableTranslations = array();
// look for po files in Tinebase
$officialTranslationsDir = dirname(__FILE__) . "/../{$appName}/translations";
foreach (scandir($officialTranslationsDir) as $poFile) {
list($localestring, $suffix) = explode('.', $poFile);
if ($suffix == 'po') {
$availableTranslations[$localestring] = array('path' => "{$officialTranslationsDir}/{$poFile}");
}
}
// lookup/merge custom translations
if (Tinebase_Config::isReady() === TRUE) {
$logger = Tinebase_Core::getLogger();
$customTranslationsDir = Tinebase_Config::getInstance()->translations;
if ($customTranslationsDir) {
foreach ((array) @scandir($customTranslationsDir) as $dir) {
$poFile = "{$customTranslationsDir}/{$dir}/{$appName}/translations/{$dir}.po";
if (is_readable($poFile)) {
$availableTranslations[$dir] = array('path' => $poFile);
}
}
}
} else {
$logger = null;
}
$filesToWatch = array();
// compute information
foreach ($availableTranslations as $localestring => $info) {
if (!Zend_Locale::isLocale($localestring, TRUE, FALSE)) {
if ($logger) {
$logger->WARN(__METHOD__ . '::' . __LINE__ . " {$localestring} is not supported, removing translation form list");
}
unset($availableTranslations[$localestring]);
continue;
}
$filesToWatch[] = $info['path'];
}
if (Tinebase_Config::isReady()) {
$cache = new Zend_Cache_Frontend_File(array('master_files' => $filesToWatch));
$cache->setBackend(Tinebase_Core::get(Tinebase_Core::CACHE)->getBackend());
} else {
$cache = null;
}
if ($cache) {
$cacheId = Tinebase_Helper::convertCacheId(__FUNCTION__ . $appName . sha1(serialize($filesToWatch)));
$cache = new Zend_Cache_Frontend_File(array('master_files' => $filesToWatch));
$cache->setBackend(Tinebase_Core::get(Tinebase_Core::CACHE)->getBackend());
if ($cachedTranslations = $cache->load($cacheId)) {
$cachedTranslations = unserialize($cachedTranslations);
if ($cachedTranslations !== null) {
return $cachedTranslations;
}
}
}
// compute information
foreach ($availableTranslations as $localestring => $info) {
// fetch header grep for X-Poedit-Language, X-Poedit-Country
$fh = fopen($info['path'], 'r');
$header = fread($fh, 1024);
fclose($fh);
preg_match('/X-Tine20-Language: (.+)(?:\\\\n?)(?:"?)/', $header, $language);
preg_match('/X-Tine20-Country: (.+)(?:\\\\n?)(?:"?)/', $header, $region);
$locale = new Zend_Locale($localestring);
$availableTranslations[$localestring]['locale'] = $localestring;
$availableTranslations[$localestring]['language'] = isset($language[1]) ? $language[1] : Zend_Locale::getTranslation($locale->getLanguage(), 'language', $locale);
$availableTranslations[$localestring]['region'] = isset($region[1]) ? $region[1] : Zend_Locale::getTranslation($locale->getRegion(), 'country', $locale);
}
ksort($availableTranslations);
if ($cache) {
$cache->save(serialize($availableTranslations), $cacheId, array(), 86400);
}
return $availableTranslations;
}