diff -r 5a6b6e770365 -r 68c69c656a2c web/lib/Zend/Locale/Data.php --- a/web/lib/Zend/Locale/Data.php Thu May 07 15:10:09 2015 +0200 +++ b/web/lib/Zend/Locale/Data.php Thu May 07 15:16:02 2015 +0200 @@ -15,9 +15,9 @@ * @category Zend * @package Zend_Locale * @subpackage Data - * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: Data.php 24766 2012-05-06 02:51:42Z adamlundrigan $ + * @version $Id$ */ /** @@ -25,13 +25,16 @@ */ require_once 'Zend/Locale.php'; +/** @see Zend_Xml_Security */ +require_once 'Zend/Xml/Security.php'; + /** * Locale data reader, handles the CLDR * * @category Zend * @package Zend_Locale * @subpackage Data - * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Locale_Data @@ -39,8 +42,7 @@ /** * Locale files * - * @var ressource - * @access private + * @var array */ private static $_ldml = array(); @@ -48,7 +50,6 @@ * List of values which are collected * * @var array - * @access private */ private static $_list = array(); @@ -56,7 +57,6 @@ * Internal cache for ldml values * * @var Zend_Cache_Core - * @access private */ private static $_cache = null; @@ -70,8 +70,7 @@ /** * Internal option, cache disabled * - * @var boolean - * @access private + * @var boolean */ private static $_cacheDisabled = false; @@ -144,8 +143,8 @@ * @param string $attribute * @param string $value * @param array $temp + * @return bool * @throws Zend_Locale_Exception - * @access private */ private static function _findRoute($locale, $path, $attribute, $value, &$temp) { @@ -158,7 +157,7 @@ throw new Zend_Locale_Exception("Missing locale file '$filename' for '$locale' locale."); } - self::$_ldml[(string) $locale] = simplexml_load_file($filename); + self::$_ldml[(string) $locale] = Zend_Xml_Security::scanFile($filename); } // search for 'alias' tag in the search path for redirection @@ -220,11 +219,13 @@ /** * Read the right LDML file * - * @param string $locale - * @param string $path - * @param string $attribute - * @param string $value - * @access private + * @param string $locale + * @param string $path + * @param string|bool $attribute + * @param string|bool $value + * @param array $temp + * @return array + * @throws Zend_Locale_Exception */ private static function _getFile($locale, $path, $attribute = false, $value = false, $temp = array()) { @@ -275,8 +276,9 @@ /** * Internal function for checking the locale * - * @param string|Zend_Locale $locale Locale to check + * @param string|Zend_Locale $locale Locale to check * @return string + * @throws Zend_Locale_Exception */ private static function _checkLocale($locale) { @@ -289,17 +291,21 @@ throw new Zend_Locale_Exception("Locale (" . (string) $locale . ") is a unknown locale"); } + if (Zend_Locale::isAlias($locale)) { + // Return a valid CLDR locale so that the XML file can be loaded. + return Zend_Locale::getAlias($locale); + } return (string) $locale; } /** * Read the LDML file, get a array of multipath defined value * - * @param string $locale - * @param string $path - * @param string $value + * @param string $locale + * @param string $path + * @param bool|string $value * @return array - * @access public + * @throws Zend_Locale_Exception */ public static function getList($locale, $path, $value = false) { @@ -320,7 +326,7 @@ } $val = urlencode($val); - $id = strtr('Zend_LocaleL_' . $locale . '_' . $path . '_' . $val, array('-' => '_', '%' => '_', '+' => '_')); + $id = self::_filterCacheId('Zend_LocaleL_' . $locale . '_' . $path . '_' . $val); if (!self::$_cacheDisabled && ($result = self::$_cache->load($id))) { return unserialize($result); } @@ -339,13 +345,13 @@ $temp = self::_getFile($locale, '/ldml/localeDisplayNames/territories/territory', 'type'); if ($value === 1) { foreach($temp as $key => $value) { - if ((is_numeric($key) === false) and ($key != 'QO') and ($key != 'QU')) { + if ((is_numeric($key) === false) and ($key != 'QO') and ($key != 'EU')) { unset($temp[$key]); } } } else if ($value === 2) { foreach($temp as $key => $value) { - if (is_numeric($key) or ($key == 'QO') or ($key == 'QU')) { + if (is_numeric($key) or ($key == 'QO') or ($key == 'EU')) { unset($temp[$key]); } } @@ -375,28 +381,50 @@ break; case 'layout': - $temp = self::_getFile($locale, '/ldml/layout/orientation', 'lines', 'lines'); - $temp += self::_getFile($locale, '/ldml/layout/orientation', 'characters', 'characters'); - $temp += self::_getFile($locale, '/ldml/layout/inList', '', 'inList'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'currency\']', '', 'currency'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'dayWidth\']', '', 'dayWidth'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'fields\']', '', 'fields'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'keys\']', '', 'keys'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'languages\']', '', 'languages'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'long\']', '', 'long'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'measurementSystemNames\']', '', 'measurementSystemNames'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'monthWidth\']', '', 'monthWidth'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'quarterWidth\']', '', 'quarterWidth'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'scripts\']', '', 'scripts'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'territories\']', '', 'territories'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'types\']', '', 'types'); - $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'variants\']', '', 'variants'); + $temp = self::_getFile($locale, '/ldml/layout/orientation/characterOrder', '', 'characterOrder'); + $temp += self::_getFile($locale, '/ldml/layout/orientation/lineOrder', '', 'lineOrder'); + break; + + case 'contexttransform': + if (empty($value)) { + $value = 'uiListOrMenu'; + } + $temp = self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'languages\']/contextTransform[@type=\''.$value.'\']', '', 'languages'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'day-format-except-narrow\']/contextTransform[@type=\''.$value.'\']', '', 'day-format-except-narrow'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'day-standalone-except-narrow\']/contextTransform[@type=\''.$value.'\']', '', 'day-standalone-except-narrow'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'day-narrow\']/contextTransform[@type=\''.$value.'\']', '', 'day-narrow'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'month-format-except-narrow\']/contextTransform[@type=\''.$value.'\']', '', 'month-format-except-narrow'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'month-standalone-except-narrow\']/contextTransform[@type=\''.$value.'\']', '', 'month-standalone-except-narrow'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'month-narrow\']/contextTransform[@type=\''.$value.'\']', '', 'month-narrow'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'script\']/contextTransform[@type=\''.$value.'\']', '', 'script'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'territory\']/contextTransform[@type=\''.$value.'\']', '', 'territory'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'variant\']/contextTransform[@type=\''.$value.'\']', '', 'variant'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'key\']/contextTransform[@type=\''.$value.'\']', '', 'key'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'type\']/contextTransform[@type=\''.$value.'\']', '', 'type'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'era-name\']/contextTransform[@type=\''.$value.'\']', '', 'era-name'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'era-abbr\']/contextTransform[@type=\''.$value.'\']', '', 'era-abbr'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'era-narrow\']/contextTransform[@type=\''.$value.'\']', '', 'era-narrow'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'quater-format-wide\']/contextTransform[@type=\''.$value.'\']', '', 'quater-format-wide'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'quater-standalone-wide\']/contextTransform[@type=\''.$value.'\']', '', 'quater-standalone-wide'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'quater-abbreviated\']/contextTransform[@type=\''.$value.'\']', '', 'quater-abbreviated'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'quater-narrow\']/contextTransform[@type=\''.$value.'\']', '', 'quater-narrow'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'calendar-field\']/contextTransform[@type=\''.$value.'\']', '', 'calendar-field'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'symbol\']/contextTransform[@type=\''.$value.'\']', '', 'symbol'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'tense\']/contextTransform[@type=\''.$value.'\']', '', 'tense'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'zone-exemplarCity\']/contextTransform[@type=\''.$value.'\']', '', 'zone-exemplarCity'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'zone-long\']/contextTransform[@type=\''.$value.'\']', '', 'zone-long'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'zone-short\']/contextTransform[@type=\''.$value.'\']', '', 'zone-short'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'metazone-long\']/contextTransform[@type=\''.$value.'\']', '', 'metazone-long'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'metazone-short\']/contextTransform[@type=\''.$value.'\']', '', 'metazone-short'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'displayName-count\']/contextTransform[@type=\''.$value.'\']', '', 'displayName-count'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'displayName\']/contextTransform[@type=\''.$value.'\']', '', 'displayName'); + $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\'unit-pattern\']/contextTransform[@type=\''.$value.'\']', '', 'unit-pattern'); break; case 'characters': $temp = self::_getFile($locale, '/ldml/characters/exemplarCharacters', '', 'characters'); $temp += self::_getFile($locale, '/ldml/characters/exemplarCharacters[@type=\'auxiliary\']', '', 'auxiliary'); - $temp += self::_getFile($locale, '/ldml/characters/exemplarCharacters[@type=\'currencySymbol\']', '', 'currencySymbol'); + // $temp += self::_getFile($locale, '/ldml/characters/exemplarCharacters[@type=\'currencySymbol\']', '', 'currencySymbol'); break; case 'delimiters': @@ -417,8 +445,8 @@ if (empty($value)) { $value = "gregorian"; } - $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/default', 'choice', 'context'); - $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'format\']/default', 'choice', 'default'); + $temp['context'] = "format"; + $temp['default'] = "wide"; $temp['format']['abbreviated'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'format\']/monthWidth[@type=\'abbreviated\']/month', 'type'); $temp['format']['narrow'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'format\']/monthWidth[@type=\'narrow\']/month', 'type'); $temp['format']['wide'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'format\']/monthWidth[@type=\'wide\']/month', 'type'); @@ -438,8 +466,8 @@ if (empty($value)) { $value = "gregorian"; } - $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/default', 'choice', 'context'); - $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'format\']/default', 'choice', 'default'); + $temp['context'] = "format"; + $temp['default'] = "wide"; $temp['format']['abbreviated'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'format\']/dayWidth[@type=\'abbreviated\']/day', 'type'); $temp['format']['narrow'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'format\']/dayWidth[@type=\'narrow\']/day', 'type'); $temp['format']['wide'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'format\']/dayWidth[@type=\'wide\']/day', 'type'); @@ -572,17 +600,19 @@ if (empty($value)) { $value = "gregorian"; } - $temp2 = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/fields/field', 'type'); + $temp2 = self::_getFile($locale, '/ldml/dates/fields/field', 'type'); + // $temp2 = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/fields/field', 'type'); foreach ($temp2 as $key => $keyvalue) { - $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/fields/field[@type=\'' . $key . '\']/displayName', '', $key); + $temp += self::_getFile($locale, '/ldml/dates/fields/field[@type=\'' . $key . '\']/displayName', '', $key); + // $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/fields/field[@type=\'' . $key . '\']/displayName', '', $key); } break; case 'relative': if (empty($value)) { - $value = "gregorian"; + $value = "day"; } - $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/fields/field/relative', 'type'); + $temp = self::_getFile($locale, '/ldml/dates/fields/field[@type=\'' . $value . '\']/relative', 'type'); break; case 'symbols': @@ -758,30 +788,30 @@ break; case 'timezonetowindows': - $_temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/mapTimezones[@type=\'windows\']/mapZone', 'other'); + $_temp = self::_getFile('windowsZones', '/supplementalData/windowsZones/mapTimezones/mapZone', 'other'); foreach ($_temp as $key => $found) { - $temp += self::_getFile('supplementalData', '/supplementalData/timezoneData/mapTimezones[@type=\'windows\']/mapZone[@other=\'' . $key . '\']', 'type', $key); + $temp += self::_getFile('windowsZones', '/supplementalData/windowsZones/mapTimezones/mapZone[@other=\'' . $key . '\']', 'type', $key); } break; case 'windowstotimezone': - $_temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/mapTimezones[@type=\'windows\']/mapZone', 'type'); + $_temp = self::_getFile('windowsZones', '/supplementalData/windowsZones/mapTimezones/mapZone', 'type'); foreach ($_temp as $key => $found) { - $temp += self::_getFile('supplementalData', '/supplementalData/timezoneData/mapTimezones[@type=\'windows\']/mapZone[@type=\'' .$key . '\']', 'other', $key); + $temp += self::_getFile('windowsZones', '/supplementalData/windowsZones/mapTimezones/mapZone[@type=\'' .$key . '\']', 'other', $key); } break; case 'territorytotimezone': - $_temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/zoneFormatting/zoneItem', 'type'); + $_temp = self::_getFile('metaZones', '/supplementalData/metaZones/mapTimezones/mapZone', 'type'); foreach ($_temp as $key => $found) { - $temp += self::_getFile('supplementalData', '/supplementalData/timezoneData/zoneFormatting/zoneItem[@type=\'' . $key . '\']', 'territory', $key); + $temp += self::_getFile('metaZones', '/supplementalData/metaZones/mapTimezones/mapZone[@type=\'' . $key . '\']', 'territory', $key); } break; case 'timezonetoterritory': - $_temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/zoneFormatting/zoneItem', 'territory'); + $_temp = self::_getFile('metaZones', '/supplementalData/metaZones/mapTimezones/mapZone', 'territory'); foreach ($_temp as $key => $found) { - $temp += self::_getFile('supplementalData', '/supplementalData/timezoneData/zoneFormatting/zoneItem[@territory=\'' . $key . '\']', 'type', $key); + $temp += self::_getFile('metaZones', '/supplementalData/metaZones/mapTimezones/mapZone[@territory=\'' . $key . '\']', 'type', $key); } break; @@ -894,9 +924,9 @@ break; case 'unit': - $_temp = self::_getFile($locale, '/ldml/units/unit', 'type'); + $_temp = self::_getFile($locale, '/ldml/units/unitLength/unit', 'type'); foreach($_temp as $key => $keyvalue) { - $_temp2 = self::_getFile($locale, '/ldml/units/unit[@type=\'' . $key . '\']/unitPattern', 'count'); + $_temp2 = self::_getFile($locale, '/ldml/units/unitLength/unit[@type=\'' . $key . '\']/unitPattern', 'count'); $temp[$key] = $_temp2; } break; @@ -921,11 +951,11 @@ /** * Read the LDML file, get a single path defined value * - * @param string $locale - * @param string $path - * @param string $value + * @param string $locale + * @param string $path + * @param bool|string $value * @return string - * @access public + * @throws Zend_Locale_Exception */ public static function getContent($locale, $path, $value = false) { @@ -945,7 +975,7 @@ $val = implode('_' , $value); } $val = urlencode($val); - $id = strtr('Zend_LocaleC_' . $locale . '_' . $path . '_' . $val, array('-' => '_', '%' => '_', '+' => '_')); + $id = self::_filterCacheId('Zend_LocaleC_' . $locale . '_' . $path . '_' . $val); if (!self::$_cacheDisabled && ($result = self::$_cache->load($id))) { return unserialize($result); } @@ -973,21 +1003,35 @@ break; case 'defaultcalendar': - $temp = self::_getFile($locale, '/ldml/dates/calendars/default', 'choice', 'default'); + $givenLocale = new Zend_Locale($locale); + $territory = $givenLocale->getRegion(); + unset($givenLocale); + $temp = self::_getFile('supplementalData', '/supplementalData/calendarPreferenceData/calendarPreference[contains(@territories,\'' . $territory . '\')]', 'ordering', 'ordering'); + if (isset($temp['ordering'])) { + list($temp) = explode(' ', $temp['ordering']); + } else { + $temp = 'gregorian'; + } break; case 'monthcontext': + /* default context is always 'format' if (empty ($value)) { $value = "gregorian"; } $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/default', 'choice', 'context'); + */ + $temp = 'format'; break; case 'defaultmonth': + /* default width is always 'wide' if (empty ($value)) { $value = "gregorian"; } $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'format\']/default', 'choice', 'default'); + */ + $temp = 'wide'; break; case 'month': @@ -999,17 +1043,23 @@ break; case 'daycontext': + /* default context is always 'format' if (empty($value)) { $value = "gregorian"; } $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/default', 'choice', 'context'); + */ + $temp = 'format'; break; case 'defaultday': + /* default width is always 'wide' if (empty($value)) { $value = "gregorian"; } $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'format\']/default', 'choice', 'default'); + */ + $temp = 'wide'; break; case 'day': @@ -1030,16 +1080,24 @@ case 'am': if (empty($value)) { - $value = "gregorian"; + $value = array("gregorian", "format", "wide"); } - $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/am', '', 'am'); + if (!is_array($value)) { + $temp = $value; + $value = array($temp, "format", "wide"); + } + $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/dayPeriods/dayPeriodContext[@type=\'' . $value[1] . '\']/dayPeriodWidth[@type=\'' . $value[2] . '\']/dayPeriod[@type=\'am\']', '', 'dayPeriod'); break; case 'pm': if (empty($value)) { - $value = "gregorian"; + $value = array("gregorian", "format", "wide"); } - $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/pm', '', 'pm'); + if (!is_array($value)) { + $temp = $value; + $value = array($temp, "format", "wide"); + } + $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/dayPeriods/dayPeriodContext[@type=\'' . $value[1] . '\']/dayPeriodWidth[@type=\'' . $value[2] . '\']/dayPeriod[@type=\'pm\']', '', 'dayPeriod'); break; case 'era': @@ -1051,10 +1109,13 @@ break; case 'defaultdate': + /* default choice is deprecated in CDLR - should be always medium here if (empty($value)) { $value = "gregorian"; } $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/dateFormats/default', 'choice', 'default'); + */ + $temp = 'medium'; break; case 'date': @@ -1069,10 +1130,13 @@ break; case 'defaulttime': + /* default choice is deprecated in CDLR - should be always medium here if (empty($value)) { $value = "gregorian"; } $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/timeFormats/default', 'choice', 'default'); + */ + $temp = 'medium'; break; case 'time': @@ -1128,7 +1192,7 @@ $temp = $value; $value = array("gregorian", $temp); } - $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/fields/field[@type=\'' . $value[1] . '\']/displayName', '', $value[1]); + $temp = self::_getFile($locale, '/ldml/dates/fields/field[@type=\'' . $value[1] . '\']/displayName', '', $value[1]); break; case 'relative': @@ -1136,7 +1200,8 @@ $temp = $value; $value = array("gregorian", $temp); } - $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/fields/field/relative[@type=\'' . $value[1] . '\']', '', $value[1]); + $temp = self::_getFile($locale, '/ldml/dates/fields/field[@type=\'day\']/relative[@type=\'' . $value[1] . '\']', '', $value[1]); + // $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/fields/field/relative[@type=\'' . $value[1] . '\']', '', $value[1]); break; case 'defaultnumberingsystem': @@ -1301,19 +1366,19 @@ break; case 'timezonetowindows': - $temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/mapTimezones[@type=\'windows\']/mapZone[@other=\''.$value.'\']', 'type', $value); + $temp = self::_getFile('windowsZones', '/supplementalData/windowsZones/mapTimezones/mapZone[@other=\''.$value.'\']', 'type', $value); break; case 'windowstotimezone': - $temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/mapTimezones[@type=\'windows\']/mapZone[@type=\''.$value.'\']', 'other', $value); + $temp = self::_getFile('windowsZones', '/supplementalData/windowsZones/mapTimezones/mapZone[@type=\''.$value.'\']', 'other', $value); break; case 'territorytotimezone': - $temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/zoneFormatting/zoneItem[@type=\'' . $value . '\']', 'territory', $value); + $temp = self::_getFile('metaZones', '/supplementalData/metaZones/mapTimezones/mapZone[@type=\'' . $value . '\']', 'territory', $value); break; case 'timezonetoterritory': - $temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/zoneFormatting/zoneItem[@territory=\'' . $value . '\']', 'type', $value); + $temp = self::_getFile('metaZones', '/supplementalData/metaZones/mapTimezones/mapZone[@territory=\'' . $value . '\']', 'type', $value); break; case 'citytotimezone': @@ -1406,7 +1471,7 @@ break; case 'unit': - $temp = self::_getFile($locale, '/ldml/units/unit[@type=\'' . $value[0] . '\']/unitPattern[@count=\'' . $value[1] . '\']', ''); + $temp = self::_getFile($locale, '/ldml/units/unitLength/unit[@type=\'' . $value[0] . '\']/unitPattern[@count=\'' . $value[1] . '\']', ''); break; default : @@ -1491,7 +1556,7 @@ /** * Disables the cache * - * @param unknown_type $flag + * @param bool $flag */ public static function disableCache($flag) { @@ -1501,7 +1566,7 @@ /** * Internal method to check if the given cache supports tags * - * @param Zend_Cache $cache + * @return bool */ private static function _getTagSupportForCache() { @@ -1515,4 +1580,23 @@ return self::$_cacheTags; } + + /** + * Filter an ID to only allow valid variable characters + * + * @param string $value + * @return string + */ + protected static function _filterCacheId($value) + { + return strtr( + $value, + array( + '-' => '_', + '%' => '_', + '+' => '_', + '.' => '_', + ) + ); + } }