MediaWiki  REL1_20
ResourceLoaderLanguageDataModule.php
Go to the documentation of this file.
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 }