diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2009-02-22 13:37:51 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2009-02-22 13:37:51 +0100 |
commit | b9b85843572bf283f48285001e276ba7e61b63f6 (patch) | |
tree | 4c6f4571552ada9ccfb4030481dcf77308f8b254 /includes/Exception.php | |
parent | d9a20acc4e789cca747ad360d87ee3f3e7aa58c1 (diff) |
updated to MediaWiki 1.14.0
Diffstat (limited to 'includes/Exception.php')
-rw-r--r-- | includes/Exception.php | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/includes/Exception.php b/includes/Exception.php index ab25f0b8..eb715986 100644 --- a/includes/Exception.php +++ b/includes/Exception.php @@ -83,7 +83,7 @@ class MWException extends Exception { function getHTML() { global $wgShowExceptionDetails; if( $wgShowExceptionDetails ) { - return '<p>' . htmlspecialchars( $this->getMessage() ) . + return '<p>' . nl2br( htmlspecialchars( $this->getMessage() ) ) . '</p><p>Backtrace:</p><p>' . nl2br( htmlspecialchars( $this->getTraceAsString() ) ) . "</p>\n"; } else { @@ -129,7 +129,16 @@ class MWException extends Exception { $file = $this->getFile(); $line = $this->getLine(); $message = $this->getMessage(); - return $wgRequest->getRequestURL() . " Exception from line $line of $file: $message"; + if ( isset( $wgRequest ) ) { + $url = $wgRequest->getRequestURL(); + if ( !$url ) { + $url = '[no URL]'; + } + } else { + $url = '[no req]'; + } + + return "$url Exception from line $line of $file: $message"; } /** Output the exception report using HTML */ @@ -137,7 +146,7 @@ class MWException extends Exception { global $wgOut; if ( $this->useOutputPage() ) { $wgOut->setPageTitle( $this->getPageTitle() ); - $wgOut->setRobotpolicy( "noindex,nofollow" ); + $wgOut->setRobotPolicy( "noindex,nofollow" ); $wgOut->setArticleRelated( false ); $wgOut->enableClientCache( false ); $wgOut->redirect( '' ); @@ -169,7 +178,7 @@ class MWException extends Exception { wfDebugLog( 'exception', $log ); } if ( $wgCommandLineMode ) { - fwrite( STDERR, $this->getText() ); + wfPrintError( $this->getText() ); } else { $this->reportHTML(); } @@ -268,7 +277,7 @@ function wfReportException( Exception $e ) { $e2->__toString() . "\n"; if ( !empty( $GLOBALS['wgCommandLineMode'] ) ) { - fwrite( STDERR, $message ); + wfPrintError( $message ); } else { echo nl2br( htmlspecialchars( $message ) ). "\n"; } @@ -288,6 +297,21 @@ function wfReportException( Exception $e ) { } /** + * Print a message, if possible to STDERR. + * Use this in command line mode only (see wgCommandLineMode) + */ +function wfPrintError( $message ) { + #NOTE: STDERR may not be available, especially if php-cgi is used from the command line (bug #15602). + # Try to produce meaningful output anyway. Using echo may corrupt output to STDOUT though. + if ( defined( 'STDERR' ) ) { + fwrite( STDERR, $message ); + } + else { + echo( $message ); + } +} + +/** * Exception handler which simulates the appropriate catch() handling: * * try { |