X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fexception%2FMWExceptionRenderer.php;h=c0f1e84404b1b362e8e966bf1bfa24cb4a6de897;hp=e242da348b7e1149c00b80dd2b70e6abc411f8bb;hb=5433c9357df94b11d79fd1c2f0cf9261dbb84e2a;hpb=eb53a231a7ec3b5c8f42c056ba041b23ae181b1d diff --git a/includes/exception/MWExceptionRenderer.php b/includes/exception/MWExceptionRenderer.php index e242da348b..c0f1e84404 100644 --- a/includes/exception/MWExceptionRenderer.php +++ b/includes/exception/MWExceptionRenderer.php @@ -35,11 +35,6 @@ class MWExceptionRenderer { 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"; @@ -62,8 +61,7 @@ class MWExceptionRenderer { "\nBacktrace:\n" . MWExceptionHandler::getRedactedTraceAsString( $eNew ); } else { $message .= "Exception caught inside exception handler.\n\n" . - "Set \$wgShowExceptionDetails = true; at the bottom of LocalSettings.php " . - "to show detailed debugging information."; + self::getShowBacktraceError( $e ); } $message .= "\n"; } else { @@ -75,11 +73,7 @@ class MWExceptionRenderer { $message = MWExceptionHandler::getPublicLogMessage( $e ); } } - if ( self::isCommandLine() ) { - self::printError( $message ); - } else { - echo nl2br( htmlspecialchars( $message ) ) . "\n"; - } + echo nl2br( htmlspecialchars( $message ) ) . "\n"; } } @@ -172,7 +166,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 ) ); } @@ -227,9 +221,7 @@ class MWExceptionRenderer { $logId, MWExceptionHandler::getURL() ) . "\n" . - ""; + ""; } return $html; @@ -263,8 +255,7 @@ class MWExceptionRenderer { "\nBacktrace:\n" . MWExceptionHandler::getRedactedTraceAsString( $e ) . "\n"; } else { - return "Set \$wgShowExceptionDetails = true; " . - "in LocalSettings.php to show detailed debugging information.\n"; + return self::getShowBacktraceError( $e ); } } @@ -281,6 +272,23 @@ class MWExceptionRenderer { ); } + /** + * @param Exception|Throwable $e + * @return string + */ + private static function getShowBacktraceError( $e ) { + global $wgShowExceptionDetails, $wgShowDBErrorBacktrace; + $vars = []; + if ( !$wgShowExceptionDetails ) { + $vars[] = '$wgShowExceptionDetails = true;'; + } + if ( $e instanceof DBError && !$wgShowDBErrorBacktrace ) { + $vars[] = '$wgShowDBErrorBacktrace = true;'; + } + $vars = implode( ' and ', $vars ); + return "Set $vars at the bottom of LocalSettings.php to show detailed debugging information"; + } + /** * @return bool */