wiki.techinc.nl/includes/exception/BadTitleError.php
Brad Jorsch 132f1b1ea8 MalformedTitleException should call parent::__construct
There's no reason for $ex->getMessage() to return nothing. Do like
ErrorPageError does and get the default English message for the parent.

Also move the appending of $titleText to $errorMessageParameters into
MalformedTitleException itself and document it, so every catcher of the
exception doesn't need to know about this, and fix the check so it
doesn't screw up for title "0".

Change-Id: I43d988602b847b67a3cf0aa84e271a0b5bd9adae
2015-05-06 16:11:51 -04:00

61 lines
2 KiB
PHP

<?php
/**
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
/**
* Show an error page on a badtitle.
* Similar to ErrorPage, but emit a 400 HTTP error code to let mobile
* browser it is not really a valid content.
*
* @since 1.19
* @ingroup Exception
*/
class BadTitleError extends ErrorPageError {
/**
* @param string|Message|MalformedTitleException $msg A message key (default: 'badtitletext'), or
* a MalformedTitleException to figure out things from
* @param array $params Parameter to wfMessage()
*/
public function __construct( $msg = 'badtitletext', $params = array() ) {
if ( $msg instanceof MalformedTitleException ) {
$errorMessage = $msg->getErrorMessage();
if ( !$errorMessage ) {
parent::__construct( 'badtitle', 'badtitletext', array() );
} else {
$errorMessageParams = $msg->getErrorMessageParameters();
parent::__construct( 'badtitle', $errorMessage, $errorMessageParams );
}
} else {
parent::__construct( 'badtitle', $msg, $params );
}
}
/**
* Just like ErrorPageError::report() but additionally set
* a 400 HTTP status code (bug 33646).
*/
public function report() {
global $wgOut;
// bug 33646: a badtitle error page need to return an error code
// to let mobile browser now that it is not a normal page.
$wgOut->setStatusCode( 400 );
parent::report();
}
}