X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=thumb.php;h=2079a64766973fc13f1c9a47afaf2c96c3fc6cfe;hb=7845227f8f9155a73a66e037b1b9843c59a28f93;hp=88314bcd32262636a866c4b1099956573a8a4ba7;hpb=c05061a5440eaf1ff6ede7f3025d73f3aeae62ad;p=lhc%2Fweb%2Fwiklou.git diff --git a/thumb.php b/thumb.php index 88314bcd32..2079a64766 100644 --- a/thumb.php +++ b/thumb.php @@ -252,10 +252,12 @@ function wfStreamThumb( array $params ) { 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; @@ -303,7 +305,10 @@ function wfStreamThumb( array $params ) { // 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; } @@ -318,9 +323,11 @@ function wfStreamThumb( array $params ) { // 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() ) { @@ -330,13 +337,17 @@ function wfStreamThumb( array $params ) { } 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' ); + } } } @@ -491,7 +502,7 @@ function wfExtractThumbParams( $file, $params ) { unset( $params['thumbName'] ); // Do the hook first for older extensions that rely on it. - if ( !wfRunHooks( 'ExtractThumbParameters', array( $thumbname, &$params ) ) ) { + if ( !Hooks::run( 'ExtractThumbParameters', array( $thumbname, &$params ) ) ) { // Check hooks if parameters can be extracted // Hooks return false if they manage to *resolve* the parameters // This hook should be considered deprecated @@ -545,7 +556,9 @@ function wfThumbError( $status, $msg ) { 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' );