Use "break" instead of "continue"
[lhc/web/wiklou.git] / languages / LanguageConverter.php
index 494280c..cb0f66f 100644 (file)
@@ -85,7 +85,7 @@ class LanguageConverter {
         * @param array $flags Defining the custom strings that maps to the flags
         * @param array $manualLevel Limit for supported variants
         */
-       public function __construct( $langobj, $maincode, $variants = [],
+       public function __construct( Language $langobj, $maincode, $variants = [],
                                                                $variantfallbacks = [], $flags = [],
                                                                $manualLevel = [] ) {
                global $wgDisabledVariants;
@@ -175,13 +175,11 @@ class LanguageConverter {
                        $req = $this->validateVariant( $wgDefaultLanguageVariant );
                }
 
-               $req = $this->validateVariant( $req );
-
                // This function, unlike the other get*Variant functions, is
                // not memoized (i.e. there return value is not cached) since
                // new information might appear during processing after this
                // is first called.
-               if ( $req ) {
+               if ( $this->validateVariant( $req ) ) {
                        return $req;
                }
                return $this->mMainLanguageCode;
@@ -217,25 +215,9 @@ class LanguageConverter {
         * @return mixed Returns the variant if it is valid, null otherwise
         */
        public function validateVariant( $variant = null ) {
-               if ( $variant === null ) {
-                       return null;
-               }
-               // Our internal variants are always lower-case; the variant we
-               // are validating may have mixed case.
-               $variant = LanguageCode::replaceDeprecatedCodes( strtolower( $variant ) );
-               if ( in_array( $variant, $this->mVariants ) ) {
+               if ( $variant !== null && in_array( $variant, $this->mVariants ) ) {
                        return $variant;
                }
-               // Browsers are supposed to use BCP 47 standard in the
-               // Accept-Language header, but not all of our internal
-               // mediawiki variant codes are BCP 47.  Map BCP 47 code
-               // to our internal code.
-               foreach ( $this->mVariants as $v ) {
-                       // Case-insensitive match (BCP 47 is mixed case)
-                       if ( strtolower( LanguageCode::bcp47( $v ) ) === $variant ) {
-                               return $v;
-                       }
-               }
                return null;
        }
 
@@ -268,7 +250,7 @@ class LanguageConverter {
         * @return mixed Variant if one found, null otherwise
         */
        protected function getUserVariant() {
-               global $wgUser, $wgContLang;
+               global $wgUser;
 
                // memoizing this function wreaks havoc on parserTest.php
                /*
@@ -284,7 +266,10 @@ class LanguageConverter {
                        return false;
                }
                if ( $wgUser->isLoggedIn() ) {
-                       if ( $this->mMainLanguageCode == $wgContLang->getCode() ) {
+                       if (
+                               $this->mMainLanguageCode ==
+                               MediaWikiServices::getInstance()->getContentLanguage()->getCode()
+                       ) {
                                $ret = $wgUser->getOption( 'variant' );
                        } else {
                                $ret = $wgUser->getOption( 'variant-' . $this->mMainLanguageCode );
@@ -311,7 +296,7 @@ class LanguageConverter {
                        return $this->mHeaderVariant;
                }
 
-               // See if some supported language variant is set in the
+               // see if some supported language variant is set in the
                // HTTP header.
                $languages = array_keys( $wgRequest->getAcceptLang() );
                if ( empty( $languages ) ) {
@@ -563,18 +548,17 @@ class LanguageConverter {
                $convTable = $convRule->getConvTable();
                $action = $convRule->getRulesAction();
                foreach ( $convTable as $variant => $pair ) {
-                       $v = $this->validateVariant( $variant );
-                       if ( !$v ) {
+                       if ( !$this->validateVariant( $variant ) ) {
                                continue;
                        }
 
                        if ( $action == 'add' ) {
                                // More efficient than array_merge(), about 2.5 times.
                                foreach ( $pair as $from => $to ) {
-                                       $this->mTables[$v]->setPair( $from, $to );
+                                       $this->mTables[$variant]->setPair( $from, $to );
                                }
                        } elseif ( $action == 'remove' ) {
-                               $this->mTables[$v]->removeArray( $pair );
+                               $this->mTables[$variant]->removeArray( $pair );
                        }
                }
        }
@@ -789,7 +773,7 @@ class LanguageConverter {
                                                        $warningDone = true;
                                                }
                                                $startPos += 2;
-                                               continue;
+                                               break;
                                        }
                                        // Recursively parse another rule
                                        $inner .= $this->recursiveConvertRule( $text, $variant, $startPos, $depth + 1 );