From 3c9ff7ae89d813bde5521cbf5b4a2a2bc043ee67 Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Tue, 12 Mar 2013 10:58:40 -0400 Subject: [PATCH] (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 --- RELEASE-NOTES-1.21 | 2 ++ includes/api/ApiQueryAllMessages.php | 8 ++++++++ 2 files changed, 10 insertions(+) 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( -- 2.20.1