From: Brad Jorsch Date: Tue, 12 Mar 2013 14:58:40 +0000 (-0400) Subject: (bug 45937) API: Check amlang in meta=allmessages X-Git-Tag: 1.31.0-rc.0~20360^2 X-Git-Url: http://git.cyclocoop.org/%22.%24match%5B1%5D.%22?a=commitdiff_plain;h=3c9ff7ae89d813bde5521cbf5b4a2a2bc043ee67;p=lhc%2Fweb%2Fwiklou.git (bug 45937) API: Check amlang in meta=allmessages 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 --- diff --git a/RELEASE-NOTES-1.21 b/RELEASE-NOTES-1.21 index 883fb8ba58..76811ce369 100644 --- a/RELEASE-NOTES-1.21 +++ b/RELEASE-NOTES-1.21 @@ -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. diff --git a/includes/api/ApiQueryAllMessages.php b/includes/api/ApiQueryAllMessages.php index 0555a393c2..c9811b0d93 100644 --- a/includes/api/ApiQueryAllMessages.php +++ b/includes/api/ApiQueryAllMessages.php @@ -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(