From: Brad Jorsch Date: Tue, 1 Nov 2016 19:08:38 +0000 (-0400) Subject: Fix MediaTransformError message handling X-Git-Tag: 1.31.0-rc.0~4723^2 X-Git-Url: http://git.cyclocoop.org/%24dirpuce/%27%241/%27%40script%40/Fool?a=commitdiff_plain;h=645266fe3e1befe84b800b4f78a3b208fa8943d4;p=lhc%2Fweb%2Fwiklou.git Fix MediaTransformError message handling Give access to the raw Message instead of only to the HTML or text in the RequestContext language. Pass Message objects instead of strings from calling ->text() as the parameters of Messages so if the outer Message's language is changed things get parsed sensibly. Change-Id: Ibd6c1217b6fed839c888b66e02900f8e21ed3e6b --- diff --git a/includes/filerepo/file/File.php b/includes/filerepo/file/File.php index c1d5573b68..9188cd9140 100644 --- a/includes/filerepo/file/File.php +++ b/includes/filerepo/file/File.php @@ -1018,7 +1018,7 @@ abstract class File implements IDBAccessObject { return $handler->getTransform( $this, $thumbPath, $thumbUrl, $params ); } else { return new MediaTransformError( 'thumbnail_error', - $params['width'], 0, wfMessage( 'thumbnail-dest-create' )->text() ); + $params['width'], 0, wfMessage( 'thumbnail-dest-create' ) ); } } diff --git a/includes/media/Bitmap.php b/includes/media/Bitmap.php index c86eabdec0..ac0564d2e8 100644 --- a/includes/media/Bitmap.php +++ b/includes/media/Bitmap.php @@ -541,7 +541,7 @@ class BitmapHandler extends TransformationalImageHandler { * @param array $params Rotate parameters. * 'rotation' clockwise rotation in degrees, allowed are multiples of 90 * @since 1.21 - * @return bool + * @return bool|MediaTransformError */ public function rotate( $file, $params ) { global $wgImageMagickConvertCommand; diff --git a/includes/media/DjVu.php b/includes/media/DjVu.php index 18f75ece66..a852215ca8 100644 --- a/includes/media/DjVu.php +++ b/includes/media/DjVu.php @@ -170,7 +170,7 @@ class DjVuHandler extends ImageHandler { 'thumbnail_error', $width, $height, - wfMessage( 'thumbnail_dest_directory' )->text() + wfMessage( 'thumbnail_dest_directory' ) ); } @@ -197,7 +197,7 @@ class DjVuHandler extends ImageHandler { return new MediaTransformError( 'thumbnail_error', $params['width'], $params['height'], - wfMessage( 'filemissing' )->text() + wfMessage( 'filemissing' ) ); } diff --git a/includes/media/Jpeg.php b/includes/media/Jpeg.php index b8b6f6c987..6c857a8565 100644 --- a/includes/media/Jpeg.php +++ b/includes/media/Jpeg.php @@ -130,7 +130,7 @@ class JpegHandler extends ExifBitmapHandler { * @param array $params Rotate parameters. * 'rotation' clockwise rotation in degrees, allowed are multiples of 90 * @since 1.21 - * @return bool + * @return bool|MediaTransformError */ public function rotate( $file, $params ) { global $wgJpegTran; diff --git a/includes/media/MediaTransformOutput.php b/includes/media/MediaTransformOutput.php index 46b96745fa..5366c4fa44 100644 --- a/includes/media/MediaTransformOutput.php +++ b/includes/media/MediaTransformOutput.php @@ -439,19 +439,12 @@ class ThumbnailImage extends MediaTransformOutput { * @ingroup Media */ class MediaTransformError extends MediaTransformOutput { - /** @var string HTML formatted version of the error */ - private $htmlMsg; - - /** @var string Plain text formatted version of the error */ - private $textMsg; + /** @var Message */ + private $msg; function __construct( $msg, $width, $height /*, ... */ ) { $args = array_slice( func_get_args(), 3 ); - $htmlArgs = array_map( 'htmlspecialchars', $args ); - $htmlArgs = array_map( 'nl2br', $htmlArgs ); - - $this->htmlMsg = wfMessage( $msg )->rawParams( $htmlArgs )->escaped(); - $this->textMsg = wfMessage( $msg )->rawParams( $htmlArgs )->text(); + $this->msg = wfMessage( $msg )->params( $args ); $this->width = intval( $width ); $this->height = intval( $height ); $this->url = false; @@ -461,16 +454,20 @@ class MediaTransformError extends MediaTransformOutput { function toHtml( $options = [] ) { return "
width}px; height: {$this->height}px; display:inline-block;\">" . - $this->htmlMsg . + $this->getHtmlMsg() . "
"; } function toText() { - return $this->textMsg; + return $this->msg->text(); } function getHtmlMsg() { - return $this->htmlMsg; + return $this->msg->escaped(); + } + + function getMsg() { + return $this->msg; } function isError() { @@ -492,7 +489,8 @@ class TransformParameterError extends MediaTransformError { parent::__construct( 'thumbnail_error', max( isset( $params['width'] ) ? $params['width'] : 0, 120 ), max( isset( $params['height'] ) ? $params['height'] : 0, 120 ), - wfMessage( 'thumbnail_invalid_params' )->text() ); + wfMessage( 'thumbnail_invalid_params' ) + ); } function getHttpStatusCode() { @@ -509,15 +507,15 @@ class TransformParameterError extends MediaTransformError { class TransformTooBigImageAreaError extends MediaTransformError { function __construct( $params, $maxImageArea ) { $msg = wfMessage( 'thumbnail_toobigimagearea' ); + $msg->rawParams( + $msg->getLanguage()->formatComputingNumbers( $maxImageArea, 1000, "size-$1pixel" ) + ); parent::__construct( 'thumbnail_error', max( isset( $params['width'] ) ? $params['width'] : 0, 120 ), max( isset( $params['height'] ) ? $params['height'] : 0, 120 ), - $msg->rawParams( - $msg->getLanguage()->formatComputingNumbers( - $maxImageArea, 1000, "size-$1pixel" ) - )->text() - ); + $msg + ); } function getHttpStatusCode() { diff --git a/includes/media/SVG.php b/includes/media/SVG.php index f3b33ace35..0cea6d899f 100644 --- a/includes/media/SVG.php +++ b/includes/media/SVG.php @@ -178,14 +178,14 @@ class SvgHandler extends ImageHandler { $metadata = $this->unpackMetadata( $image->getMetadata() ); if ( isset( $metadata['error'] ) ) { // sanity check - $err = wfMessage( 'svg-long-error', $metadata['error']['message'] )->text(); + $err = wfMessage( 'svg-long-error', $metadata['error']['message'] ); return new MediaTransformError( 'thumbnail_error', $clientWidth, $clientHeight, $err ); } if ( !wfMkdirParents( dirname( $dstPath ), null, __METHOD__ ) ) { return new MediaTransformError( 'thumbnail_error', $clientWidth, $clientHeight, - wfMessage( 'thumbnail_dest_directory' )->text() ); + wfMessage( 'thumbnail_dest_directory' ) ); } $srcPath = $image->getLocalRefPath(); @@ -196,7 +196,7 @@ class SvgHandler extends ImageHandler { return new MediaTransformError( 'thumbnail_error', $params['width'], $params['height'], - wfMessage( 'filemissing' )->text() + wfMessage( 'filemissing' ) ); } @@ -219,7 +219,7 @@ class SvgHandler extends ImageHandler { wfHostname(), $lnPath, $srcPath ) ); return new MediaTransformError( 'thumbnail_error', $params['width'], $params['height'], - wfMessage( 'thumbnail-temp-create' )->text() + wfMessage( 'thumbnail-temp-create' ) ); } diff --git a/includes/media/TransformationalImageHandler.php b/includes/media/TransformationalImageHandler.php index e33c27e99d..60aec45729 100644 --- a/includes/media/TransformationalImageHandler.php +++ b/includes/media/TransformationalImageHandler.php @@ -217,7 +217,7 @@ abstract class TransformationalImageHandler extends ImageHandler { return new MediaTransformError( 'thumbnail_error', $scalerParams['clientWidth'], $scalerParams['clientHeight'], - wfMessage( 'filemissing' )->text() + wfMessage( 'filemissing' ) ); } @@ -267,7 +267,7 @@ abstract class TransformationalImageHandler extends ImageHandler { # Thumbnail was zero-byte and had to be removed return new MediaTransformError( 'thumbnail_error', $scalerParams['clientWidth'], $scalerParams['clientHeight'], - wfMessage( 'unknown-error' )->text() + wfMessage( 'unknown-error' ) ); } elseif ( $mto ) { return $mto; @@ -565,7 +565,7 @@ abstract class TransformationalImageHandler extends ImageHandler { * @param array $params Rotate parameters. * 'rotation' clockwise rotation in degrees, allowed are multiples of 90 * @since 1.24 Is non-static. From 1.21 it was static - * @return bool + * @return bool|MediaTransformError */ public function rotate( $file, $params ) { return new MediaTransformError( 'thumbnail_error', 0, 0,