* @param string $key Message name
* @param string $fallback Default message if the message cache can't be
* called by the exception
- * The function also has other parameters that are arguments for the message
+ * @param mixed ...$params To pass to wfMessage()
* @return string Message with arguments replaced
*/
- public function msg( $key, $fallback /*[, params...] */ ) {
+ public function msg( $key, $fallback, ...$params ) {
global $wgSitename;
- $args = array_slice( func_get_args(), 2 );
// FIXME: Keep logic in sync with MWExceptionRenderer::msg.
$res = false;
if ( $this->useMessageCache() ) {
try {
- $res = wfMessage( $key, $args )->text();
+ $res = wfMessage( $key, $params )->text();
} catch ( Exception $e ) {
}
}
if ( $res === false ) {
- $res = wfMsgReplaceArgs( $fallback, $args );
+ $res = wfMsgReplaceArgs( $fallback, $params );
// If an exception happens inside message rendering,
// {{SITENAME}} sometimes won't be replaced.
$res = strtr( $res, [
wfHttpError( 500, 'Internal Server Error', $this->getText() );
} elseif ( self::isCommandLine() ) {
$message = $this->getText();
- // T17602: STDERR may not be available
- if ( !defined( 'MW_PHPUNIT_TEST' ) && defined( 'STDERR' ) ) {
- fwrite( STDERR, $message );
- } else {
- echo $message;
- }
+ $this->writeToCommandLine( $message );
} else {
self::statusHeader( 500 );
self::header( "Content-Type: $wgMimeType; charset=utf-8" );
}
}
+ /**
+ * Write a message to stderr falling back to stdout if stderr unavailable
+ *
+ * @param string $message
+ * @suppress SecurityCheck-XSS
+ */
+ private function writeToCommandLine( $message ) {
+ // T17602: STDERR may not be available
+ if ( !defined( 'MW_PHPUNIT_TEST' ) && defined( 'STDERR' ) ) {
+ fwrite( STDERR, $message );
+ } else {
+ echo $message;
+ }
+ }
+
/**
* Check whether we are in command line mode or not to report the exception
* in the correct format.