From: Philip Tzou Date: Fri, 4 Dec 2009 15:47:25 +0000 (+0000) Subject: follow-up r59522 and r59541. To make the condition when we'll use Accept-Language... X-Git-Tag: 1.31.0-rc.0~38627 X-Git-Url: http://git.cyclocoop.org/%40spipnet%40?a=commitdiff_plain;h=3a3ce3fd7f46698d3af3fc12cf739b6d6df16d75;p=lhc%2Fweb%2Fwiklou.git follow-up r59522 and r59541. To make the condition when we'll use Accept-Language in Vary and XVO more clear. --- diff --git a/includes/Wiki.php b/includes/Wiki.php index ffa9dd44cd..efb5cc1db0 100644 --- a/includes/Wiki.php +++ b/includes/Wiki.php @@ -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" . diff --git a/languages/Language.php b/languages/Language.php index 32f9e8a2a8..0478246d23 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -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 ); } /** diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php index 59b96bd6ec..3f23f3b51f 100644 --- a/languages/LanguageConverter.php +++ b/languages/LanguageConverter.php @@ -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