* better sample, but also takes longer to adapt changes. The counts
* are aggregrated per day, regardless of the value of this variable.
*/
- protected static $mAdaptiveDataAge = 604800;
+ protected static $mAdaptiveDataAge = 604800; // Is 7*24*3600
/**
* Filter the tail of less used messages that are requested more seldom
*/
function loadFromDB( $code ) {
wfProfileIn( __METHOD__ );
- global $wgMaxMsgCacheEntrySize, $wgContLanguageCode, $wgAdaptiveMessageCache;
+ global $wgMaxMsgCacheEntrySize, $wgLanguageCode, $wgAdaptiveMessageCache;
$dbr = wfGetDB( DB_SLAVE );
$cache = array();
$mostused = array();
if ( $wgAdaptiveMessageCache ) {
$mostused = $this->getMostUsedMessages();
- if ( $code !== $wgContLanguageCode ) {
+ if ( $code !== $wgLanguageCode ) {
foreach ( $mostused as $key => $value ) $mostused[$key] = "$value/$code";
}
}
if ( count( $mostused ) ) {
$conds['page_title'] = $mostused;
- } elseif ( $code !== $wgContLanguageCode ) {
+ } elseif ( $code !== $wgLanguageCode ) {
$conds[] = 'page_title' . $dbr->buildLike( $dbr->anyString(), "/$code" );
} else {
# Effectively disallows use of '/' character in NS_MEDIAWIKI for uses
return;
}
- list( , $code ) = $this->figureMessage( $title );
+ list( $msg, $code ) = $this->figureMessage( $title );
$cacheKey = wfMemcKey( 'messages', $code );
$this->load( $code );
$sidebarKey = wfMemcKey( 'sidebar', $code );
$parserMemc->delete( $sidebarKey );
}
+
+ // Update the message in the message blob store
+ global $wgContLang;
+ MessageBlobStore::updateMessage( $wgContLang->lcfirst( $msg ) );
wfRunHooks( "MessageCacheReplace", array( $title, $text ) );
* "msg/lang".
*/
function get( $key, $useDB = true, $langcode = true, $isFullKey = false ) {
- global $wgContLanguageCode, $wgContLang;
+ global $wgLanguageCode, $wgContLang;
if ( !is_string( $key ) ) {
throw new MWException( "Non-string key given" );
}
$lang = wfGetLangObj( $langcode );
+ if ( !$lang ) {
+ throw new MWException( "Bad lang code $langcode given" );
+ }
+
$langcode = $lang->getCode();
$message = false;
# Try the MediaWiki namespace
if( !$this->mDisable && $useDB ) {
$title = $uckey;
- if(!$isFullKey && ( $langcode != $wgContLanguageCode ) ) {
+ if(!$isFullKey && ( $langcode != $wgLanguageCode ) ) {
$title .= '/' . $langcode;
}
$message = $this->getMsgFromNamespace( $title, $langcode );
# Is this a custom message? Try the default language in the db...
if( ($message === false || $message === '-' ) &&
!$this->mDisable && $useDB &&
- !$isFullKey && ($langcode != $wgContLanguageCode) ) {
- $message = $this->getMsgFromNamespace( $uckey, $wgContLanguageCode );
+ !$isFullKey && ($langcode != $wgLanguageCode) ) {
+ $message = $this->getMsgFromNamespace( $uckey, $wgLanguageCode );
}
# Final fallback
*/
function getMsgFromNamespace( $title, $code ) {
global $wgAdaptiveMessageCache;
- $big = false;
$this->load( $code );
if ( isset( $this->mCache[$code][$title] ) ) {
$popts = $this->getParserOptions();
$popts->setInterfaceMessage( $interface );
$popts->setTargetLanguage( $language );
+ $popts->setUserLang( $language );
$message = $this->mParser->transformMsg( $message, $popts );
}
return $message;
# Invalidate all local caches
$this->mMemc->delete( wfMemcKey( 'messages', $code, 'hash' ) );
}
+ $this->mLoadedLanguages = array();
}
/**
}
public function figureMessage( $key ) {
- global $wgContLanguageCode;
+ global $wgLanguageCode;
$pieces = explode( '/', $key );
if( count( $pieces ) < 2 )
- return array( $key, $wgContLanguageCode );
+ return array( $key, $wgLanguageCode );
$lang = array_pop( $pieces );
$validCodes = Language::getLanguageNames();
if( !array_key_exists( $lang, $validCodes ) )
- return array( $key, $wgContLanguageCode );
+ return array( $key, $wgLanguageCode );
$message = implode( '/', $pieces );
return array( $message, $lang );
}
public function getMostUsedMessages() {
- global $wgContLang;
$cachekey = wfMemckey( 'message-profiling' );
$cache = wfGetCache( CACHE_DB );
$data = $cache->get( $cachekey );
$list = array();
- foreach( $data as $date => $messages ) {
+ foreach( $data as $messages ) {
foreach( $messages as $message => $count ) {
$key = $message;
if ( !isset( $list[$key] ) ) $list[$key] = 0;