return $wgLang instanceof Language;
}
- /**
- * Run hook to allow extensions to modify the text of the exception
- *
- * @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 function runHooks( $name, $args = [] ) {
- global $wgExceptionHooks;
-
- if ( !isset( $wgExceptionHooks ) || !is_array( $wgExceptionHooks ) ) {
- return null; // Just silently ignore
- }
-
- if ( !array_key_exists( $name, $wgExceptionHooks ) ||
- !is_array( $wgExceptionHooks[$name] )
- ) {
- return null;
- }
-
- $hooks = $wgExceptionHooks[$name];
- $callargs = array_merge( [ $this ], $args );
-
- foreach ( $hooks as $hook ) {
- if (
- is_string( $hook ) ||
- ( is_array( $hook ) && count( $hook ) >= 2 && is_string( $hook[0] ) )
- ) {
- // 'function' or [ 'class', 'hook' ]
- $result = call_user_func_array( $hook, $callargs );
- } else {
- $result = null;
- }
-
- if ( is_string( $result ) ) {
- return $result;
- }
- }
- return null;
- }
-
/**
* Get a message from i18n
*
"</p>\n";
} else {
$logId = WebRequest::getRequestId();
- $type = get_class( $this );
+ $type = static::class;
return "<div class=\"errorbox\">" .
'[' . $logId . '] ' .
gmdate( 'Y-m-d H:i:s' ) . ": " .
if ( $this->useOutputPage() ) {
$wgOut->prepareErrorPage( $this->getPageTitle() );
- $hookResult = $this->runHooks( get_class( $this ) );
- if ( $hookResult ) {
- $wgOut->addHTML( $hookResult );
- } else {
- $wgOut->addHTML( $this->getHTML() );
- }
+ $wgOut->addHTML( $this->getHTML() );
$wgOut->output();
} else {
'<style>body { font-family: sans-serif; margin: 0; padding: 0.5em 2em; }</style>' .
"</head><body>\n";
- $hookResult = $this->runHooks( get_class( $this ) . 'Raw' );
- if ( $hookResult ) {
- echo $hookResult;
- } else {
- echo $this->getHTML();
- }
+ echo $this->getHTML();
echo "</body></html>\n";
}
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( $this ) );
+ self::header( 'MediaWiki-API-Error: internal_api_error_' . static::class );
wfHttpError( 500, 'Internal Server Error', $this->getText() );
} elseif ( self::isCommandLine() ) {
- MWExceptionHandler::printError( $this->getText() );
+ $message = $this->getText();
+ // T17602: STDERR may not be available
+ if ( defined( 'STDERR' ) ) {
+ fwrite( STDERR, $message );
+ } else {
+ echo $message;
+ }
} else {
self::statusHeader( 500 );
self::header( "Content-Type: $wgMimeType; charset=utf-8" );