*/
class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
- protected $language;
protected $targets = array( 'desktop', 'mobile' );
- /**
- * Get the grammar forms for the site content language.
- *
- * @return array
- */
- protected function getSiteLangGrammarForms() {
- return $this->language->getGrammarForms();
- }
-
- /**
- * Get the plural forms for the site content language.
- *
- * @return array
- */
- protected function getPluralRules() {
- return $this->language->getPluralRules();
- }
/**
- * Get the digit groupin Pattern for the site content language.
+ * Get all the dynamic data for the content language to an array.
*
+ * @param ResourceLoaderContext $context
* @return array
*/
- protected function getDigitGroupingPattern() {
- return $this->language->digitGroupingPattern();
- }
-
- /**
- * Get the digit transform table for the content language
- *
- * @return array
- */
- protected function getDigitTransformTable() {
- return $this->language->digitTransformTable();
- }
-
- /**
- * Get seperator transform table required for converting
- * the . and , sign to appropriate forms in site content language.
- *
- * @return array
- */
- protected function getSeparatorTransformTable() {
- return $this->language->separatorTransformTable();
- }
-
-
- /**
- * Get all the dynamic data for the content language to an array
- *
- * @return array
- */
- protected function getData() {
+ protected function getData( ResourceLoaderContext $context ) {
+ $language = Language::factory( $context->getLanguage() );
return array(
- 'digitTransformTable' => $this->getDigitTransformTable(),
- 'separatorTransformTable' => $this->getSeparatorTransformTable(),
- 'grammarForms' => $this->getSiteLangGrammarForms(),
- 'pluralRules' => $this->getPluralRules(),
- 'digitGroupingPattern' => $this->getDigitGroupingPattern(),
+ 'digitTransformTable' => $language->digitTransformTable(),
+ 'separatorTransformTable' => $language->separatorTransformTable(),
+ 'grammarForms' => $language->getGrammarForms(),
+ 'pluralRules' => $language->getPluralRules(),
+ 'digitGroupingPattern' => $language->digitGroupingPattern(),
);
}
/**
- * @param $context ResourceLoaderContext
- * @return string: JavaScript code
+ * @param ResourceLoaderContext $context
+ * @return string JavaScript code
*/
public function getScript( ResourceLoaderContext $context ) {
- $this->language = Language::factory( $context->getLanguage() );
return Xml::encodeJsCall( 'mw.language.setData', array(
- $this->language->getCode(),
- $this->getData()
+ $context->getLanguage(),
+ $this->getData( $context )
) );
}
/**
- * @param $context ResourceLoaderContext
- * @return array|int|Mixed
+ * @param ResourceLoaderContext $context
+ * @return int UNIX timestamp
*/
public function getModifiedTime( ResourceLoaderContext $context ) {
- $this->language = Language::factory( $context ->getLanguage() );
- $cache = wfGetCache( CACHE_ANYTHING );
- $key = wfMemcKey( 'resourceloader', 'langdatamodule', 'changeinfo' );
-
- $data = $this->getData();
- $hash = md5( serialize( $data ) );
+ return max( 1, $this->getHashMtime( $context ) );
+ }
- $result = $cache->get( $key );
- if ( is_array( $result ) && $result['hash'] === $hash ) {
- return $result['timestamp'];
- }
- $timestamp = wfTimestamp();
- $cache->set( $key, array(
- 'hash' => $hash,
- 'timestamp' => $timestamp,
- ) );
- return $timestamp;
+ /**
+ * @param ResourceLoaderContext $context
+ * @return string Hash
+ */
+ public function getModifiedHash( ResourceLoaderContext $context ) {
+ return md5( serialize( $this->getData( $context ) ) );
}
/**