follow-up r59522 and r59541. To make the condition when we'll use Accept-Language...
authorPhilip Tzou <philip@users.mediawiki.org>
Fri, 4 Dec 2009 15:47:25 +0000 (15:47 +0000)
committerPhilip Tzou <philip@users.mediawiki.org>
Fri, 4 Dec 2009 15:47:25 +0000 (15:47 +0000)
includes/Wiki.php
languages/Language.php
languages/LanguageConverter.php

index ffa9dd4..efb5cc1 100644 (file)
@@ -209,11 +209,11 @@ class MediaWiki {
                        ( ( !isset($this->GET['title']) || $title->getPrefixedDBKey() != $this->GET['title'] ) ||
                          // No valid variant in URL (if the main-language has multi-variants), to ensure
                          // the Accept-Language would only be added to XVO when a 301 redirection happened
-                         ( !isset($this->GET['variant']) && $perferred != $wgContLang->getCode() &&
-                           $wgContLang->hasVariants() && !$wgUser->isLoggedIn() ) ) &&
+                         ( !isset($this->GET['variant']) && $wgContLang->hasVariants() && !$wgUser->isLoggedIn() ) ) &&
                        !count( array_diff( array_keys( $this->GET ), array( 'action', 'title' ) ) ) )
                {
-                       $targetUrl = $title->getFullURL();
+                       $pref = $wgContLang->getPreferredVariant( $fromUser = false, $fromHeader = true );
+                       $targetUrl = $title->getFullURL( $variant = $pref );
                        // Redirect to canonical url, make it a 301 to allow caching
                        if( $targetUrl == $request->getFullRequestURL() ) {
                                $message = "Redirect loop detected!\n\n" .
index 32f9e8a..0478246 100644 (file)
@@ -2369,8 +2369,8 @@ class Language {
        }
 
 
-       function getPreferredVariant( $fromUser = true ) {
-               return $this->mConverter->getPreferredVariant( $fromUser );
+       function getPreferredVariant( $fromUser = true, $fromHeader = false ) {
+               return $this->mConverter->getPreferredVariant( $fromUser, $fromHeader );
        }
 
        /**
index 59b96bd..3f23f3b 100644 (file)
@@ -126,10 +126,11 @@ class LanguageConverter {
        /**
         * get preferred language variants.
         * @param boolean $fromUser Get it from $wgUser's preferences
+        * @param boolean $fromHeader Get it from Accept-Language
         * @return string the preferred language code
         * @public
         */
-       function getPreferredVariant( $fromUser = true ) {
+       function getPreferredVariant( $fromUser = true, $fromHeader = false ) {
                global $wgUser, $wgRequest, $wgVariantArticlePath, $wgDefaultLanguageVariant, $wgOut;
 
                if($this->mPreferredVariant)
@@ -184,7 +185,7 @@ class LanguageConverter {
                        // http header, but we don't set the mPreferredVariant
                        // variable in case this is called before the user's
                        // preference is loaded
-                       if( array_key_exists( 'HTTP_ACCEPT_LANGUAGE', $_SERVER ) ) {
+                       if( $fromHeader && array_key_exists( 'HTTP_ACCEPT_LANGUAGE', $_SERVER ) ) {
 
                                // bug 21672: Add Accept-Language to Vary and XVO headers
                                // to help Squid to determine user's perferred local language