(bug 45937) API: Check amlang in meta=allmessages
authorBrad Jorsch <bjorsch@wikimedia.org>
Tue, 12 Mar 2013 14:58:40 +0000 (10:58 -0400)
committerBrad Jorsch <bjorsch@wikimedia.org>
Wed, 13 Mar 2013 13:44:22 +0000 (09:44 -0400)
Language::factory() throws an exception if given a syntactically invalid
code. Check the code beforehand to generate a proper error message.

Bug: 45937
Change-Id: I521e6f7ffc44becb302fde33c1df3879baa4045a

RELEASE-NOTES-1.21
includes/api/ApiQueryAllMessages.php

index 883fb8b..76811ce 100644 (file)
@@ -259,6 +259,8 @@ production.
 * (bug 33304) list=allpages will no longer return duplicate entries when
   querying protection.
 * (bug 33304) list=allpages will now find really old indefinite protections.
+* (bug 45937) meta=allmessages will report a syntactically invalid lang as a
+  proper error instead of as an uncaught exception.
 
 === API internal changes in 1.21 ===
 * For debugging only, a new global $wgDebugAPI removes many API restrictions when true.
index 0555a39..c9811b0 100644 (file)
@@ -40,6 +40,8 @@ class ApiQueryAllMessages extends ApiQueryBase {
 
                if ( is_null( $params['lang'] ) ) {
                        $langObj = $this->getLanguage();
+               } elseif ( !Language::isValidCode( $params['lang'] ) ) {
+                       $this->dieUsage( 'Invalid language code for parameter lang', 'invalidlang' );
                } else {
                        $langObj = Language::factory( $params['lang'] );
                }
@@ -255,6 +257,12 @@ class ApiQueryAllMessages extends ApiQueryBase {
                );
        }
 
+       public function getPossibleErrors() {
+               return array_merge( parent::getPossibleErrors(), array(
+                       array( 'code' => 'invalidlang', 'info' => 'Invalid language code for parameter lang' ),
+               ) );
+       }
+
        public function getResultProperties() {
                return array(
                        '' => array(