From 3a3ce3fd7f46698d3af3fc12cf739b6d6df16d75 Mon Sep 17 00:00:00 2001 From: Philip Tzou Date: Fri, 4 Dec 2009 15:47:25 +0000 Subject: [PATCH] follow-up r59522 and r59541. To make the condition when we'll use Accept-Language in Vary and XVO more clear. --- includes/Wiki.php | 6 +++--- languages/Language.php | 4 ++-- languages/LanguageConverter.php | 5 +++-- 3 files changed, 8 insertions(+), 7 deletions(-) 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 -- 2.20.1