Update MagicWord to use ContentLanguage

Bug: T200246
Change-Id: I9f17142d25bc851c973bebe27e6cbc5be8b70729
This commit is contained in:
Aryeh Gregor 2018-07-26 15:21:31 +03:00 committed by Legoktm
parent 6d36883ed8
commit 6142859029
3 changed files with 29 additions and 10 deletions

View file

@ -90,6 +90,9 @@ class MagicWord {
/** @var bool */
private $mFound = false;
/** @var Language */
private $contLang;
/**#@-*/
/**
@ -100,11 +103,17 @@ class MagicWord {
* @param string|null $id The internal name of the magic word
* @param string[]|string $syn synonyms for the magic word
* @param bool $cs If magic word is case sensitive
* @param Language|null $contLang Content language
*/
public function __construct( $id = null, $syn = [], $cs = false ) {
public function __construct( $id = null, $syn = [], $cs = false, Language $contLang = null ) {
$this->mId = $id;
$this->mSynonyms = (array)$syn;
$this->mCaseSensitive = $cs;
$this->contLang = $contLang;
if ( !$contLang ) {
$this->contLang = MediaWikiServices::getInstance()->getContentLanguage();
}
}
/**
@ -166,9 +175,8 @@ class MagicWord {
* @throws MWException
*/
public function load( $id ) {
global $wgContLang;
$this->mId = $id;
$wgContLang->getMagic( $this );
$this->contLang->getMagic( $this );
if ( !$this->mSynonyms ) {
$this->mSynonyms = [ 'brionmademeputthishere' ];
throw new MWException( "Error: invalid magic word '$id'" );
@ -486,9 +494,8 @@ class MagicWord {
* @param string $value
*/
public function addToArray( &$array, $value ) {
global $wgContLang;
foreach ( $this->mSynonyms as $syn ) {
$array[$wgContLang->lc( $syn )] = $value;
$array[$this->contLang->lc( $syn )] = $value;
}
}

View file

@ -81,14 +81,13 @@ class MagicWordArray {
*/
public function getHash() {
if ( is_null( $this->hash ) ) {
global $wgContLang;
$this->hash = [ 0 => [], 1 => [] ];
foreach ( $this->names as $name ) {
$magic = $this->factory->get( $name );
$case = intval( $magic->isCaseSensitive() );
foreach ( $magic->getSynonyms() as $syn ) {
if ( !$case ) {
$syn = $wgContLang->lc( $syn );
$syn = $this->factory->getContentLanguage()->lc( $syn );
}
$this->hash[$case][$syn] = $name;
}
@ -268,8 +267,7 @@ class MagicWordArray {
if ( isset( $hash[1][$text] ) ) {
return $hash[1][$text];
}
global $wgContLang;
$lc = $wgContLang->lc( $text );
$lc = $this->factory->getContentLanguage()->lc( $text );
if ( isset( $hash[0][$lc] ) ) {
return $hash[0][$lc];
}

View file

@ -192,8 +192,22 @@ class MagicWordFactory {
/** @var MagicWordArray */
private $mDoubleUnderscoreArray = null;
/** @var Language */
private $contLang;
/**#@-*/
/**
* @param Language $contLang Content language
*/
public function __construct( Language $contLang ) {
$this->contLang = $contLang;
}
public function getContentLanguage() {
return $this->contLang;
}
/**
* Factory: creates an object representing an ID
*
@ -203,7 +217,7 @@ class MagicWordFactory {
*/
public function get( $id ) {
if ( !isset( $this->mObjects[$id] ) ) {
$mw = new MagicWord();
$mw = new MagicWord( null, [], false, $this->contLang );
$mw->load( $id );
$this->mObjects[$id] = $mw;
}