try {
$thumbName = $img->thumbName( $params );
if ( !strlen( $thumbName ) ) { // invalid params?
- wfThumbError( 400, 'The specified thumbnail parameters are not valid.' );
- return;
+ throw new MediaTransformInvalidParametersException( 'Empty return from File::thumbName' );
}
$thumbName2 = $img->thumbName( $params, File::THUMB_FULL_NAME ); // b/c; "long" style
+ } catch ( MediaTransformInvalidParametersException $e ) {
+ wfThumbError( 400, 'The specified thumbnail parameters are not valid: ' . $e->getMessage() );
+ return;
} catch ( MWException $e ) {
wfThumbError( 500, $e->getHTML() );
return;
// Stream the file if it exists already...
$thumbPath = $img->getThumbPath( $thumbName );
if ( $img->getRepo()->fileExists( $thumbPath ) ) {
- $img->getRepo()->streamFile( $thumbPath, $headers );
+ $success = $img->getRepo()->streamFile( $thumbPath, $headers );
+ if ( !$success ) {
+ wfThumbError( 500, 'Could not stream the file' );
+ }
return;
}
// Actually generate a new thumbnail
list( $thumb, $errorMsg ) = wfGenerateThumbnail( $img, $params, $thumbName, $thumbPath );
+ /** @var MediaTransformOutput|bool $thumb */
// Check for thumbnail generation errors...
$msg = wfMessage( 'thumbnail_error' );
+ $errorCode = 500;
if ( !$thumb ) {
$errorMsg = $errorMsg ?: $msg->rawParams( 'File::transform() returned false' )->escaped();
} elseif ( $thumb->isError() ) {
} elseif ( $thumb->fileIsSource() ) {
$errorMsg = $msg->
rawParams( 'Image was not scaled, is the requested width bigger than the source?' )->escaped();
+ $errorCode = 400;
}
if ( $errorMsg !== false ) {
- wfThumbError( 500, $errorMsg );
+ wfThumbError( $errorCode, $errorMsg );
} else {
// Stream the file if there were no errors
- $thumb->streamFile( $headers );
+ $success = $thumb->streamFile( $headers );
+ if ( !$success ) {
+ wfThumbError( 500, 'Could not stream the file' );
+ }
}
}
header( 'Cache-Control: no-cache' );
header( 'Content-Type: text/html; charset=utf-8' );
- if ( $status == 404 ) {
+ if ( $status == 400 ) {
+ header( 'HTTP/1.1 400 Bad request' );
+ } elseif ( $status == 404 ) {
header( 'HTTP/1.1 404 Not found' );
} elseif ( $status == 403 ) {
header( 'HTTP/1.1 403 Forbidden' );