MediaWiki REL1_37
|
Cache of messages that are defined by MediaWiki namespace pages or by hooks. More...
Public Member Functions | |
__construct (WANObjectCache $wanCache, BagOStuff $clusterCache, BagOStuff $serverCache, Language $contLang, ILanguageConverter $contLangConverter, LoggerInterface $logger, array $options, LanguageFactory $langFactory, LocalisationCache $localisationCache, LanguageNameUtils $languageNameUtils, LanguageFallback $languageFallback, HookContainer $hookContainer) | |
clear () | |
Clear all stored messages in global and local cache. | |
disable () | |
enable () | |
figureMessage ( $key) | |
get ( $key, $useDB=true, $langcode=true) | |
Get a message from either the content language or the user language. | |
getAllMessageKeys ( $code) | |
Get all message keys stored in the message cache for a given language. | |
getCheckKey ( $code) | |
getMsgFromNamespace ( $title, $code) | |
Get a message from the MediaWiki namespace, with caching. | |
getParser () | |
isDisabled () | |
Whether DB/cache usage is disabled for determining messages. | |
parse ( $text, PageReference $page=null, $linestart=true, $interface=false, $language=null) | |
refreshAndReplaceInternal ( $code, array $replacements) | |
replace ( $title, $text) | |
Updates cache as necessary when message page is changed. | |
setLogger (LoggerInterface $logger) | |
transform ( $message, $interface=false, $language=null, PageReference $page=null) | |
updateMessageOverride (LinkTarget $linkTarget, Content $content=null) | |
Purge message caches when a MediaWiki: page is created, updated, or deleted. | |
Static Public Member Functions | |
static | normalizeKey ( $key) |
Normalize message key input. | |
static | singleton () |
Get the singleton instance of this class. | |
Protected Member Functions | |
getLocalCache ( $code) | |
Try to load the cache from APC. | |
getMessageFromFallbackChain ( $lang, $lckey, $useDB) | |
Given a language, try and fetch messages from that language. | |
getReentrantScopedLock ( $key, $timeout=self::WAIT_SEC) | |
getValidationHash ( $code) | |
Get the md5 used to validate the local APC cache. | |
isCacheExpired ( $cache) | |
Is the given cache array expired due to time passing or a version change? | |
load ( $code, $mode=null) | |
Loads messages from caches or from database in this order: (1) local message cache (if $wgUseLocalMessageCache is enabled) (2) memcached (3) from the database. | |
loadFromDB ( $code, $mode=null) | |
Loads cacheable messages from the database. | |
loadFromDBWithLock ( $code, array &$where, $mode=null) | |
saveToCaches (array $cache, $dest, $code=false) | |
Shortcut to update caches. | |
saveToLocalCache ( $code, $cache) | |
Save the cache to APC. | |
setValidationHash ( $code, array $cache) | |
Set the md5 used to validate the local disk cache. | |
Protected Attributes | |
MapCacheLRU | $cache |
Process cache of loaded messages that are defined in MediaWiki namespace. | |
bool[] | $cacheVolatile = [] |
Map of (language code => boolean) | |
BagOStuff | $clusterCache |
Language | $contLang |
string | $contLangCode |
ILanguageConverter | $contLangConverter |
LanguageFactory | $langFactory |
LanguageFallback | $languageFallback |
LanguageNameUtils | $languageNameUtils |
LocalisationCache | $localisationCache |
bool | $mDisable |
Should mean that database cannot be used, but check. | |
bool | $mInParser = false |
Parser | $mParser |
ParserOptions | $mParserOptions |
Message cache has its own parser which it uses to transform messages. | |
BagOStuff | $srvCache |
WANObjectCache | $wanCache |
Private Member Functions | |
bigMessageCacheKey ( $hash, $title) | |
getMessageForLang ( $lang, $lckey, $useDB, &$alreadyTried) | |
Given a language, try and fetch messages from that language and its fallbacks. | |
getMessagePageName ( $langcode, $uckey) | |
Get the message page name for a given language. | |
getMessageTextFromContent (Content $content=null) | |
getParserOptions () | |
ParserOptions is lazy initialised. | |
isLanguageLoaded ( $lang) | |
Whether the language was loaded and its data is still in the process cache. | |
isMainCacheable ( $name, $code=null) | |
Can the given DB key be added to the main cache blob? To reduce the impact of abuse of the MediaWiki namespace by {{int:}} and CentralNotice, this is only true if the page overrides a predefined message. | |
loadCachedMessagePageEntry ( $dbKey, $code, $hash) | |
Private Attributes | |
HookRunner | $hookRunner |
LoggerInterface | $logger |
array | $systemMessageNames |
Map of (lowercase message key => unused) for all software defined messages. | |
const | FOR_UPDATE = 1 |
const | LOCK_TTL = 30 |
How long memcached locks last. | |
const | WAIT_SEC = 15 |
How long to wait for memcached locks. | |
Cache of messages that are defined by MediaWiki namespace pages or by hooks.
Performs various MediaWiki namespace-related functions
Definition at line 52 of file MessageCache.php.
MessageCache::__construct | ( | WANObjectCache | $wanCache, |
BagOStuff | $clusterCache, | ||
BagOStuff | $serverCache, | ||
Language | $contLang, | ||
ILanguageConverter | $contLangConverter, | ||
LoggerInterface | $logger, | ||
array | $options, | ||
LanguageFactory | $langFactory, | ||
LocalisationCache | $localisationCache, | ||
LanguageNameUtils | $languageNameUtils, | ||
LanguageFallback | $languageFallback, | ||
HookContainer | $hookContainer | ||
) |
WANObjectCache | $wanCache | |
BagOStuff | $clusterCache | |
BagOStuff | $serverCache | |
Language | $contLang | Content language of site |
ILanguageConverter | $contLangConverter | Content language converter for site |
LoggerInterface | $logger | |
array | $options |
|
LanguageFactory | $langFactory | |
LocalisationCache | $localisationCache | |
LanguageNameUtils | $languageNameUtils | |
LanguageFallback | $languageFallback | |
HookContainer | $hookContainer |
Definition at line 178 of file MessageCache.php.
References Language\getCode(), and true.
|
private |
string | $hash | Hash for this version of the entire key/value overrides map |
string | $title | Message cache key with initial uppercase letter |
Definition at line 1476 of file MessageCache.php.
References $title.
Referenced by loadCachedMessagePageEntry(), and refreshAndReplaceInternal().
MessageCache::clear | ( | ) |
Clear all stored messages in global and local cache.
Mainly used after a mass rebuild
Definition at line 1361 of file MessageCache.php.
References getCheckKey().
MessageCache::disable | ( | ) |
Definition at line 1332 of file MessageCache.php.
MessageCache::enable | ( | ) |
Definition at line 1336 of file MessageCache.php.
MessageCache::figureMessage | ( | $key | ) |
string | $key |
Definition at line 1373 of file MessageCache.php.
References $lang.
Referenced by replace().
Get a message from either the content language or the user language.
First, assemble a list of languages to attempt getting the message from. This chain begins with the requested language and its fallbacks and then continues with the content language and its fallbacks. For each language in the chain, the following process will occur (in this order):
This process provides a number of guarantees. When changing this code, make sure all of these guarantees are preserved.
string | $key | The message key |
bool | $useDB | If true, look for the message in the DB, false to use only the compiled l10n cache. |
bool | string | Language | $langcode | Code of the language to get the message for.
|
MWException | When given an invalid key |
Definition at line 935 of file MessageCache.php.
References getMessageFromFallbackChain(), and wfGetLangObj().
MessageCache::getAllMessageKeys | ( | $code | ) |
Get all message keys stored in the message cache for a given language.
If $code is the content language code, this will return all message keys for which MediaWiki:msgkey exists. If $code is another language code, this will ONLY return message keys for which MediaWiki:msgkey/$code exists.
string | $code | Language code |
Definition at line 1397 of file MessageCache.php.
MessageCache::getCheckKey | ( | $code | ) |
string | $code | Language code |
Definition at line 1439 of file MessageCache.php.
Referenced by clear(), and refreshAndReplaceInternal().
|
protected |
Try to load the cache from APC.
string | $code | Optional language code, see documentation of load(). |
Definition at line 247 of file MessageCache.php.
Referenced by load().
|
private |
Given a language, try and fetch messages from that language and its fallbacks.
Language | StubObject | $lang | Preferred language |
string | $lckey | Lowercase key for the message (as for localisation cache) |
bool | $useDB | Whether to include messages from the wiki database |
bool[] | &$alreadyTried | Contains true for each language that has been tried already |
Definition at line 1034 of file MessageCache.php.
References $lang, getMessagePageName(), and getMsgFromNamespace().
Referenced by getMessageFromFallbackChain().
|
protected |
Given a language, try and fetch messages from that language.
Will also consider fallbacks of that language, the site language, and fallbacks for the site language.
Language | StubObject | $lang | Preferred language |
string | $lckey | Lowercase key for the message (as for localisation cache) |
bool | $useDB | Whether to include messages from the wiki database |
Definition at line 1010 of file MessageCache.php.
References $lang, and getMessageForLang().
Referenced by get().
|
private |
Get the message page name for a given language.
string | $langcode | |
string | $uckey | Uppercase key for the message |
Definition at line 1090 of file MessageCache.php.
Referenced by getMessageForLang().
|
private |
Definition at line 1447 of file MessageCache.php.
References $content.
Referenced by loadCachedMessagePageEntry(), loadFromDB(), refreshAndReplaceInternal(), and updateMessageOverride().
MessageCache::getMsgFromNamespace | ( | $title, | |
$code | |||
) |
Get a message from the MediaWiki namespace, with caching.
The key must first be converted to two-part lang/msg form if necessary.
Unlike self::get(), this function doesn't resolve fallback chains, and some callers require this behavior. LanguageConverter::parseCachedTable() and self::get() are some examples in core.
string | $title | Message cache key with initial uppercase letter |
string | $code | Code denoting the language to try |
Definition at line 1111 of file MessageCache.php.
References $title, isMainCacheable(), load(), and loadCachedMessagePageEntry().
Referenced by getMessageForLang().
MessageCache::getParser | ( | ) |
Definition at line 1271 of file MessageCache.php.
Referenced by parse(), and transform().
|
private |
ParserOptions is lazy initialised.
Definition at line 219 of file MessageCache.php.
Referenced by parse(), and transform().
|
protected |
string | $key | A language message cache key that stores blobs |
int | $timeout | Wait timeout in seconds |
Definition at line 898 of file MessageCache.php.
Referenced by load(), loadFromDBWithLock(), and refreshAndReplaceInternal().
|
protected |
Get the md5 used to validate the local APC cache.
string | $code |
Definition at line 844 of file MessageCache.php.
Referenced by load().
|
protected |
Is the given cache array expired due to time passing or a version change?
array | $cache |
Definition at line 801 of file MessageCache.php.
References $cache, MSG_CACHE_VERSION, and wfTimestampNow().
Referenced by load().
MessageCache::isDisabled | ( | ) |
Whether DB/cache usage is disabled for determining messages.
If so, this typically indicates either:
Definition at line 1352 of file MessageCache.php.
|
private |
Whether the language was loaded and its data is still in the process cache.
string | $lang |
Definition at line 629 of file MessageCache.php.
References $lang.
Referenced by load().
|
private |
Can the given DB key be added to the main cache blob? To reduce the impact of abuse of the MediaWiki namespace by {{int:}} and CentralNotice, this is only true if the page overrides a predefined message.
string | $name | Message name (possibly with /code suffix) |
string | null | $code | The language code. If this is null, message presence will be bulk loaded for the content language. Otherwise, presence will be detected by loading the specified message. |
Definition at line 650 of file MessageCache.php.
Referenced by getMsgFromNamespace(), and loadFromDB().
|
protected |
Loads messages from caches or from database in this order: (1) local message cache (if $wgUseLocalMessageCache is enabled) (2) memcached (3) from the database.
When successfully loading from (2) or (3), all higher level caches are updated for the newest version.
Nothing is loaded if member variable mDisable is true, either manually set by calling code or if message loading fails (is this possible?).
Returns true if cache is already populated or it was successfully populated, or false if populating empty cache fails. Also returns true if MessageCache is disabled.
string | $code | Language to which load messages |
int | null | $mode | Use MessageCache::FOR_UPDATE to skip process cache [optional] |
InvalidArgumentException |
Definition at line 285 of file MessageCache.php.
References $cache, $success, getLocalCache(), getReentrantScopedLock(), getValidationHash(), isCacheExpired(), isLanguageLoaded(), loadFromDBWithLock(), and saveToCaches().
Referenced by getAllMessageKeys(), getMsgFromNamespace(), loadFromDB(), and refreshAndReplaceInternal().
|
private |
string | $dbKey | |
string | $code | |
string | $hash |
Definition at line 1185 of file MessageCache.php.
References $content, $title, bigMessageCacheKey(), DB_REPLICA, getMessageTextFromContent(), NS_MEDIAWIKI, and wfGetDB().
Referenced by getMsgFromNamespace().
|
protected |
Loads cacheable messages from the database.
Messages bigger than $wgMaxMsgCacheEntrySize are assigned a special value, and are loaded on-demand from the database later.
string | $code | Language code |
int | null | $mode | Use MessageCache::FOR_UPDATE to skip process cache |
Definition at line 490 of file MessageCache.php.
References $cache, $content, $dbr, $res, $revQuery, $wgAdaptiveMessageCache, $wgMaxMsgCacheEntrySize, DB_PRIMARY, DB_REPLICA, getMessageTextFromContent(), isMainCacheable(), load(), MSG_CACHE_VERSION, NS_MEDIAWIKI, serialize(), wfGetDB(), and wfTimestamp().
Referenced by loadFromDBWithLock(), and refreshAndReplaceInternal().
|
protected |
string | $code | |
string[] | &$where | List of debug comments |
int | null | $mode | Use MessageCache::FOR_UPDATE to use DB_PRIMARY |
Definition at line 428 of file MessageCache.php.
References $cache, getReentrantScopedLock(), loadFromDB(), and saveToCaches().
Referenced by load().
|
static |
Normalize message key input.
string | $key | Input message key to be normalized |
Definition at line 150 of file MessageCache.php.
MessageCache::parse | ( | $text, | |
PageReference | $page = null , |
||
$linestart = true , |
|||
$interface = false , |
|||
$language = null |
|||
) |
string | $text | |
PageReference | null | $page | |
bool | $linestart | Whether or not this is at the start of a line |
bool | $interface | Whether this is an interface message |
Language | string | null | $language | Language code |
Definition at line 1289 of file MessageCache.php.
References $res, $wgTitle, getParser(), getParserOptions(), and NS_SPECIAL.
MessageCache::refreshAndReplaceInternal | ( | $code, | |
array | $replacements | ||
) |
string | $code | |
array[] | $replacements | List of (title, message key) pairs |
MWException |
Definition at line 712 of file MessageCache.php.
References $cache, $title, $wgMaxMsgCacheEntrySize, bigMessageCacheKey(), getCheckKey(), getMessageTextFromContent(), getReentrantScopedLock(), load(), loadFromDB(), NS_MEDIAWIKI, saveToCaches(), and serialize().
MessageCache::replace | ( | $title, | |
$text | |||
) |
Updates cache as necessary when message page is changed.
string | $title | Message cache key with initial uppercase letter |
string | false | $text | New contents of the page (false if deleted) |
Definition at line 680 of file MessageCache.php.
References $title, and figureMessage().
Referenced by updateMessageOverride().
|
protected |
Shortcut to update caches.
array | $cache | Cached messages with a version. |
string | $dest | Either "local-only" to save to local caches only or "all" to save to all caches. |
string | false | $code | Language code (default: false) |
Definition at line 824 of file MessageCache.php.
References $cache, $success, saveToLocalCache(), and setValidationHash().
Referenced by load(), loadFromDBWithLock(), and refreshAndReplaceInternal().
|
protected |
Save the cache to APC.
string | $code | |
array | $cache | The cache array |
Definition at line 259 of file MessageCache.php.
References $cache.
Referenced by saveToCaches().
MessageCache::setLogger | ( | LoggerInterface | $logger | ) |
Definition at line 210 of file MessageCache.php.
|
protected |
Set the md5 used to validate the local disk cache.
If $cache has a 'LATEST' UNIX timestamp key, then the hash will not be treated as "volatile" by getValidationHash() for the next few seconds. This is triggered when $cache is generated using FOR_UPDATE mode.
string | $code | |
array | $cache | Cached messages with a version |
Definition at line 882 of file MessageCache.php.
References $cache.
Referenced by saveToCaches().
|
static |
Get the singleton instance of this class.
Definition at line 139 of file MessageCache.php.
References wfDeprecated().
MessageCache::transform | ( | $message, | |
$interface = false , |
|||
$language = null , |
|||
PageReference | $page = null |
||
) |
string | $message | |
bool | $interface | |
Language | null | $language | |
PageReference | null | $page |
Definition at line 1242 of file MessageCache.php.
References getParser(), and getParserOptions().
Referenced by EmailNotification\composeCommonMailtext().
MessageCache::updateMessageOverride | ( | LinkTarget | $linkTarget, |
Content | $content = null |
||
) |
Purge message caches when a MediaWiki: page is created, updated, or deleted.
LinkTarget | $linkTarget | Message page title |
Content | null | $content | New content for edit/create, null on deletion |
Definition at line 1422 of file MessageCache.php.
References $content, MediaWiki\Linker\LinkTarget\getDBkey(), getMessageTextFromContent(), and replace().
|
protected |
Process cache of loaded messages that are defined in MediaWiki namespace.
Map of (language code => key => " <MESSAGE>" or "!TOO BIG" or "!ERROR")
Definition at line 74 of file MessageCache.php.
|
protected |
Map of (language code => boolean)
Definition at line 86 of file MessageCache.php.
|
protected |
Definition at line 110 of file MessageCache.php.
|
protected |
Definition at line 114 of file MessageCache.php.
|
protected |
Definition at line 116 of file MessageCache.php.
|
protected |
Definition at line 118 of file MessageCache.php.
|
private |
Definition at line 128 of file MessageCache.php.
|
protected |
Definition at line 120 of file MessageCache.php.
|
protected |
Definition at line 126 of file MessageCache.php.
|
protected |
Definition at line 124 of file MessageCache.php.
|
protected |
Definition at line 122 of file MessageCache.php.
|
private |
Definition at line 67 of file MessageCache.php.
|
protected |
Should mean that database cannot be used, but check.
Definition at line 92 of file MessageCache.php.
|
protected |
Definition at line 105 of file MessageCache.php.
|
protected |
Definition at line 100 of file MessageCache.php.
|
protected |
Message cache has its own parser which it uses to transform messages.
Definition at line 98 of file MessageCache.php.
|
protected |
Definition at line 112 of file MessageCache.php.
|
private |
Map of (lowercase message key => unused) for all software defined messages.
Definition at line 81 of file MessageCache.php.
|
protected |
Definition at line 108 of file MessageCache.php.
|
private |
Definition at line 53 of file MessageCache.php.
|
private |
How long memcached locks last.
Definition at line 58 of file MessageCache.php.
|
private |
How long to wait for memcached locks.
Definition at line 56 of file MessageCache.php.