public function testRecacheFallbacksWithHooks() { global $wgHooks; // Use hook to provide updates for messages. This is what the // LocalisationUpdate extension does. See bug 68781. $wgHooks['LocalisationCacheRecacheFallback'][] = function (LocalisationCache $lc, $code, array &$cache) { if ($code === 'ru') { $cache['messages']['present-uk'] = 'ru-override'; $cache['messages']['present-ru'] = 'ru-override'; $cache['messages']['present-en'] = 'ru-override'; } }; $lc = new LocalisationCache(array('store' => 'detect')); $lc->recache('uk'); $this->assertEquals(array('present-uk' => 'uk', 'present-ru' => 'ru-override', 'present-en' => 'ru-override'), $lc->getItem('uk', 'messages'), 'Updates provided by hooks follow the normal fallback order.'); }
/** * @param $code */ public function recache($code) { parent::recache($code); unset($this->mruLangs[$code]); $this->mruLangs[$code] = true; $this->trimCache(); }
/** * Helper function to rebuild list of languages codes. Prints the code * for each language which is rebuilt. * @param array $codes List of language codes to rebuild. * @param LocalisationCache $lc Instance of LocalisationCacheBulkLoad (?) * @param bool $force Rebuild up-to-date languages * @return int Number of rebuilt languages */ private function doRebuild($codes, $lc, $force) { $numRebuilt = 0; foreach ($codes as $code) { if ($force || $lc->isExpired($code)) { $this->output("Rebuilding {$code}...\n"); $lc->recache($code); $numRebuilt++; } } return $numRebuilt; }