MediaWiki
REL1_20
|
00001 <?php 00028 class ResourceLoaderLanguageDataModule extends ResourceLoaderModule { 00029 00030 protected $language; 00036 protected function getSiteLangGrammarForms() { 00037 return $this->language->getGrammarForms(); 00038 } 00039 00045 protected function getPluralRules() { 00046 return $this->language->getPluralRules(); 00047 } 00048 00056 protected function getDigitTransformTable() { 00057 $digitTransformTable = $this->language->digitTransformTable(); 00058 $separatorTransformTable = $this->language->separatorTransformTable(); 00059 if ( $digitTransformTable ) { 00060 array_merge( $digitTransformTable, (array)$separatorTransformTable ); 00061 } else { 00062 return $separatorTransformTable; 00063 } 00064 return $digitTransformTable; 00065 } 00066 00072 protected function getData() { 00073 return array( 00074 'digitTransformTable' => $this->getDigitTransformTable(), 00075 'grammarForms' => $this->getSiteLangGrammarForms(), 00076 'pluralRules' => $this->getPluralRules(), 00077 ); 00078 } 00079 00084 public function getScript( ResourceLoaderContext $context ) { 00085 $this->language = Language::factory( $context->getLanguage() ); 00086 return Xml::encodeJsCall( 'mw.language.setData', array( 00087 $this->language->getCode(), 00088 $this->getData() 00089 ) ); 00090 } 00091 00096 public function getModifiedTime( ResourceLoaderContext $context ) { 00097 $this->language = Language::factory( $context ->getLanguage() ); 00098 $cache = wfGetCache( CACHE_ANYTHING ); 00099 $key = wfMemcKey( 'resourceloader', 'langdatamodule', 'changeinfo' ); 00100 00101 $data = $this->getData(); 00102 $hash = md5( serialize( $data ) ); 00103 00104 $result = $cache->get( $key ); 00105 if ( is_array( $result ) && $result['hash'] === $hash ) { 00106 return $result['timestamp']; 00107 } 00108 $timestamp = wfTimestamp(); 00109 $cache->set( $key, array( 00110 'hash' => $hash, 00111 'timestamp' => $timestamp, 00112 ) ); 00113 return $timestamp; 00114 } 00115 00119 public function getDependencies() { 00120 return array( 'mediawiki.language.init' ); 00121 } 00122 }