From 7a5f3dd91df633d3fa0ee50af8c5bf262f541249 Mon Sep 17 00:00:00 2001 From: Santhosh Thottingal Date: Mon, 27 Aug 2012 10:59:36 +0530 Subject: [PATCH] Do not accept invalid codes for setlang Related to bug 37459, but this is not about uselang. Change-Id: Icfa371d25697ee01c6bc262de968cfd2a1543154 --- UniversalLanguageSelector.hooks.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/UniversalLanguageSelector.hooks.php b/UniversalLanguageSelector.hooks.php index 5a139bd5..5bf866b4 100644 --- a/UniversalLanguageSelector.hooks.php +++ b/UniversalLanguageSelector.hooks.php @@ -53,7 +53,7 @@ class UniversalLanguageSelectorHooks { */ static function addTrigger( array &$personal_urls, &$title ) { global $wgLang; - $personal_urls = array( 'uls'=> array( + $personal_urls = array( 'uls' => array( 'text' => $wgLang->getLanguageName( $wgLang->getCode() ), 'href' => '#', 'class' => 'uls-trigger', @@ -69,12 +69,18 @@ class UniversalLanguageSelectorHooks { * @return bool */ public static function getLanguage( $user, &$code ) { - global $wgRequest; + global $wgRequest, $wgLanguageCode; if ( $wgRequest->getVal( 'uselang' ) ) { // uselang can be used for temporary override of language preference return true; } $setlang = $wgRequest->getVal( 'setlang' ); + $setlang = RequestContext::sanitizeLangCode( $setlang ); + $validMWLanguages = Language::fetchLanguageNames( $wgLanguageCode, null, 'mwfile' ); + if ( !array_key_exists( $setlang, $validLanguages ) ) { + wfDebug( "Invalid user language code\n" ); + return true; + } if ( $setlang ) { if ( $user->isAnon() ) { $wgRequest->response()->setcookie( 'language', $setlang ); @@ -90,7 +96,6 @@ class UniversalLanguageSelectorHooks { $code = $user->getOption( 'language' ); } } - $code = RequestContext::sanitizeLangCode( $code ); return true; } @@ -101,7 +106,7 @@ class UniversalLanguageSelectorHooks { */ public static function addConfig( &$vars ) { global $wgContLang; - $vars['wgULSLanguages'] = Language::fetchLanguageNames( $wgContLang->getCode() ); + $vars['wgULSLanguages'] = Language::fetchLanguageNames( $wgContLang->getCode(), null, 'mwfile' ); return true; } }