X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fexception%2FMWExceptionRenderer.php;h=8fdc417c1ef3724b59ab28493af7bfa029669748;hb=154b4383fe33aef9171dafa4350684cca36439a8;hp=58b4ac705d6b962f30d2f070bcef32931d5982d7;hpb=efe855145dfe509aa6c62f4bcee6fbf320fda957;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/exception/MWExceptionRenderer.php b/includes/exception/MWExceptionRenderer.php index 58b4ac705d..8fdc417c1e 100644 --- a/includes/exception/MWExceptionRenderer.php +++ b/includes/exception/MWExceptionRenderer.php @@ -28,18 +28,13 @@ class MWExceptionRenderer { const AS_PRETTY = 2; // show as HTML /** - * @param Exception $e Original exception + * @param Exception|Throwable $e Original exception * @param integer $mode MWExceptionExposer::AS_* constant - * @param Exception|null $eNew New exception from attempting to show the first + * @param Exception|Throwable|null $eNew New exception from attempting to show the first */ - public static function output( Exception $e, $mode, Exception $eNew = null ) { + public static function output( $e, $mode, $eNew = null ) { global $wgMimeType; - if ( $e instanceof DBConnectionError ) { - self::reportOutageHTML( $e ); - return; - } - if ( defined( 'MW_API' ) ) { // Unhandled API exception, we can't be sure that format printer is alive self::header( 'MediaWiki-API-Error: internal_api_error_' . get_class( $e ) ); @@ -47,9 +42,13 @@ class MWExceptionRenderer { } elseif ( self::isCommandLine() ) { self::printError( self::getText( $e ) ); } elseif ( $mode === self::AS_PRETTY ) { - self::statusHeader( 500 ); - self::header( "Content-Type: $wgMimeType; charset=utf-8" ); - self::reportHTML( $e ); + if ( $e instanceof DBConnectionError ) { + self::reportOutageHTML( $e ); + } else { + self::statusHeader( 500 ); + self::header( "Content-Type: $wgMimeType; charset=utf-8" ); + self::reportHTML( $e ); + } } else { if ( $eNew ) { $message = "MediaWiki internal error.\n\n"; @@ -88,12 +87,12 @@ class MWExceptionRenderer { * * Called by MWException for b/c * - * @param Exception $e + * @param Exception|Throwable $e * @param string $name Class name of the exception * @param array $args Arguments to pass to the callback functions * @return string|null String to output or null if any hook has been called */ - public static function runHooks( Exception $e, $name, $args = [] ) { + public static function runHooks( $e, $name, $args = [] ) { global $wgExceptionHooks; if ( !isset( $wgExceptionHooks ) || !is_array( $wgExceptionHooks ) ) { @@ -129,10 +128,10 @@ class MWExceptionRenderer { } /** - * @param Exception $e + * @param Exception|Throwable $e * @return bool Should the exception use $wgOut to output the error? */ - private static function useOutputPage( Exception $e ) { + private static function useOutputPage( $e ) { // Can the extension use the Message class/wfMessage to get i18n-ed messages? foreach ( $e->getTrace() as $frame ) { if ( isset( $frame['class'] ) && $frame['class'] === 'LocalisationCache' ) { @@ -150,9 +149,9 @@ class MWExceptionRenderer { /** * Output the exception report using HTML * - * @param Exception $e + * @param Exception|Throwable $e */ - private static function reportHTML( Exception $e ) { + private static function reportHTML( $e ) { global $wgOut, $wgSitename; if ( self::useOutputPage( $e ) ) { @@ -172,7 +171,7 @@ class MWExceptionRenderer { } else { // Show any custom GUI message before the details if ( $e instanceof MessageSpecifier ) { - $wgOut->addHtml( Message::newFromSpecifier( $e )->escaped() ); + $wgOut->addHTML( Message::newFromSpecifier( $e )->escaped() ); } $wgOut->addHTML( self::getHTML( $e ) ); } @@ -206,10 +205,10 @@ class MWExceptionRenderer { * backtrace to the error, otherwise show a message to ask to set it to true * to show that information. * - * @param Exception $e + * @param Exception|Throwable $e * @return string Html to output */ - private static function getHTML( Exception $e ) { + public static function getHTML( $e ) { if ( self::showBackTrace( $e ) ) { $html = "

" . nl2br( htmlspecialchars( MWExceptionHandler::getLogMessage( $e ) ) ) . @@ -254,10 +253,10 @@ class MWExceptionRenderer { } /** - * @param Exception $e + * @param Exception|Throwable $e * @return string */ - private function getText( Exception $e ) { + private static function getText( $e ) { if ( self::showBackTrace( $e ) ) { return MWExceptionHandler::getLogMessage( $e ) . "\nBacktrace:\n" . @@ -269,10 +268,10 @@ class MWExceptionRenderer { } /** - * @param Exception $e + * @param Exception|Throwable $e * @return bool */ - private static function showBackTrace( Exception $e ) { + private static function showBackTrace( $e ) { global $wgShowExceptionDetails, $wgShowDBErrorBacktrace; return ( @@ -324,9 +323,9 @@ class MWExceptionRenderer { } /** - * @param Exception $e + * @param Exception|Throwable $e */ - private static function reportOutageHTML( Exception $e ) { + private static function reportOutageHTML( $e ) { global $wgShowDBErrorBacktrace, $wgShowHostnames, $wgShowSQLErrors; $sorry = htmlspecialchars( self::msg(