Make LBFactorySingle external LB methods throw exceptions
[lhc/web/wiklou.git] / languages / LanguageConverter.php
index 81e78b5..5a9f652 100644 (file)
@@ -18,6 +18,7 @@
  * @file
  * @ingroup Language
  */
+use MediaWiki\MediaWikiServices;
 
 /**
  * Base class for language conversion.
@@ -47,7 +48,9 @@ class LanguageConverter {
        ];
 
        public $mMainLanguageCode;
-       public $mVariants, $mVariantFallbacks, $mVariantNames;
+       public $mVariants;
+       public $mVariantFallbacks;
+       public $mVariantNames;
        public $mTablesLoaded = false;
        public $mTables;
        // 'bidirectional' 'unidirectional' 'disable' for each variant
@@ -160,7 +163,7 @@ class LanguageConverter {
 
                $req = $this->getURLVariant();
 
-               if ( $wgUser->isLoggedIn() && !$req ) {
+               if ( $wgUser->isSafeToLoad() && $wgUser->isLoggedIn() && !$req ) {
                        $req = $this->getUserVariant();
                } elseif ( !$req ) {
                        $req = $this->getHeaderVariant();
@@ -257,6 +260,9 @@ class LanguageConverter {
                // Get language variant preference from logged in users
                // Don't call this on stub objects because that causes infinite
                // recursion during initialisation
+               if ( !$wgUser->isSafeToLoad() ) {
+                       return false;
+               }
                if ( $wgUser->isLoggedIn() ) {
                        if ( $this->mMainLanguageCode == $wgContLang->getCode() ) {
                                $ret = $wgUser->getOption( 'variant' );
@@ -547,8 +553,8 @@ class LanguageConverter {
                        $variant = $this->getPreferredVariant();
                }
 
-               $cache = ObjectCache::newAccelerator( CACHE_NONE );
-               $key = wfMemcKey( 'languageconverter', 'namespace-text', $index, $variant );
+               $cache = MediaWikiServices::getInstance()->getLocalServerObjectCache();
+               $key = $cache->makeKey( 'languageconverter', 'namespace-text', $index, $variant );
                $nsVariantText = $cache->get( $key );
                if ( $nsVariantText !== false ) {
                        return $nsVariantText;
@@ -1083,11 +1089,11 @@ class LanguageConverter {
                        //  -{zh-hans:<span style="font-size:120%;">xxx</span>;zh-hant:\
                        //      <span style="font-size:120%;">yyy</span>;}-
                        // we should split it as:
-                       //  array(
+                       //  [
                        //        [0] => 'zh-hans:<span style="font-size:120%;">xxx</span>'
                        //        [1] => 'zh-hant:<span style="font-size:120%;">yyy</span>'
                        //        [2] => ''
-                       //       )
+                       //  ]
                        $pat = '/;\s*(?=';
                        foreach ( $this->mVariants as $variant ) {
                                // zh-hans:xxx;zh-hant:yyy