Make SVG language selector "use default lang" actually work
authorBrian Wolff <bawolff+wn@gmail.com>
Sat, 14 Dec 2013 18:48:46 +0000 (11:48 -0700)
committerBrian Wolff <bawolff+wn@gmail.com>
Tue, 17 Dec 2013 23:57:26 +0000 (23:57 +0000)
Also have ImagePage check that the given language is actually
valid, before trying to transform with that language.

Change-Id: I62b8035b70f5cb3388f4c2a844f3bc1c7c92d01e

includes/ImagePage.php
includes/media/SVG.php

index c73d72c..997a948 100644 (file)
@@ -316,7 +316,12 @@ class ImagePage extends Article {
 
                        $renderLang = $request->getVal( 'lang' );
                        if ( !is_null( $renderLang ) ) {
-                               $params['lang'] = $renderLang;
+                               $handler = $this->displayImg->getHandler();
+                               if ( $handler && $handler->validateParam( 'lang', $renderLang ) ) {
+                                       $params['lang'] = $renderLang;
+                               } else {
+                                       $renderLang = null;
+                               }
                        }
 
                        $width_orig = $this->displayImg->getWidth( $page );
@@ -1002,7 +1007,7 @@ EOT
                if ( !$haveDefaultLang ) {
                        // Its hard to know if the content is really in the default language, or
                        // if its just unmarked content that could be in any language.
-                       $opts = Xml::option( wfMessage( 'img-lang-default' )->text(), '', $defaultLang === $curLang ) . $opts;
+                       $opts = Xml::option( wfMessage( 'img-lang-default' )->text(), $defaultLang, $defaultLang === $curLang ) . $opts;
                }
                if ( !$haveCurrentLang && $defaultLang !== $curLang ) {
                        $name = Language::fetchLanguageName( $curLang, $this->getContext()->getLanguage()->getCode() );
index ecc4ef8..ce7fcbb 100644 (file)
@@ -432,7 +432,7 @@ class SvgHandler extends ImageHandler {
                        return ( $value > 0 );
                } elseif ( $name == 'lang' ) {
                        // Validate $code
-                       if ( !Language::isValidBuiltinCode( $value ) ) {
+                       if ( $value === '' || !Language::isValidBuiltinCode( $value ) ) {
                                wfDebug( "Invalid user language code\n" );
 
                                return false;