Do not accept invalid codes for setlang
Related to bug 37459, but this is not about uselang. Change-Id: Icfa371d25697ee01c6bc262de968cfd2a1543154
This commit is contained in:
@@ -53,7 +53,7 @@ class UniversalLanguageSelectorHooks {
|
|||||||
*/
|
*/
|
||||||
static function addTrigger( array &$personal_urls, &$title ) {
|
static function addTrigger( array &$personal_urls, &$title ) {
|
||||||
global $wgLang;
|
global $wgLang;
|
||||||
$personal_urls = array( 'uls'=> array(
|
$personal_urls = array( 'uls' => array(
|
||||||
'text' => $wgLang->getLanguageName( $wgLang->getCode() ),
|
'text' => $wgLang->getLanguageName( $wgLang->getCode() ),
|
||||||
'href' => '#',
|
'href' => '#',
|
||||||
'class' => 'uls-trigger',
|
'class' => 'uls-trigger',
|
||||||
@@ -69,12 +69,18 @@ class UniversalLanguageSelectorHooks {
|
|||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public static function getLanguage( $user, &$code ) {
|
public static function getLanguage( $user, &$code ) {
|
||||||
global $wgRequest;
|
global $wgRequest, $wgLanguageCode;
|
||||||
if ( $wgRequest->getVal( 'uselang' ) ) {
|
if ( $wgRequest->getVal( 'uselang' ) ) {
|
||||||
// uselang can be used for temporary override of language preference
|
// uselang can be used for temporary override of language preference
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
$setlang = $wgRequest->getVal( 'setlang' );
|
$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 ( $setlang ) {
|
||||||
if ( $user->isAnon() ) {
|
if ( $user->isAnon() ) {
|
||||||
$wgRequest->response()->setcookie( 'language', $setlang );
|
$wgRequest->response()->setcookie( 'language', $setlang );
|
||||||
@@ -90,7 +96,6 @@ class UniversalLanguageSelectorHooks {
|
|||||||
$code = $user->getOption( 'language' );
|
$code = $user->getOption( 'language' );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$code = RequestContext::sanitizeLangCode( $code );
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +106,7 @@ class UniversalLanguageSelectorHooks {
|
|||||||
*/
|
*/
|
||||||
public static function addConfig( &$vars ) {
|
public static function addConfig( &$vars ) {
|
||||||
global $wgContLang;
|
global $wgContLang;
|
||||||
$vars['wgULSLanguages'] = Language::fetchLanguageNames( $wgContLang->getCode() );
|
$vars['wgULSLanguages'] = Language::fetchLanguageNames( $wgContLang->getCode(), null, 'mwfile' );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user