X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=blobdiff_plain;f=thumb.php;h=51f7ec60d6e5b102e5821a71bc83b14a4f04c633;hb=631847513cb6b370bdf3ecca42f271a8ac9ec5db;hp=e16d95b4ceebd176d0ecf1aa488e614ec6fd5f52;hpb=dcbe8e7dd3c4d54391d30add214e3c31ce381e34;p=lhc%2Fweb%2Fwiklou.git diff --git a/thumb.php b/thumb.php index e16d95b4ce..51f7ec60d6 100644 --- a/thumb.php +++ b/thumb.php @@ -8,9 +8,9 @@ */ define( 'MW_NO_OUTPUT_COMPRESSION', 1 ); if ( isset( $_SERVER['MW_COMPILED'] ) ) { - require ( 'phase3/includes/WebStart.php' ); + require( 'phase3/includes/WebStart.php' ); } else { - require ( dirname( __FILE__ ) . '/includes/WebStart.php' ); + require( dirname( __FILE__ ) . '/includes/WebStart.php' ); } // Don't use fancy mime detection, just check the file extension for jpg/gif/png @@ -118,7 +118,7 @@ function wfStreamThumb( array $params ) { // Check permissions if there are read restrictions if ( !in_array( 'read', User::getGroupPermissions( array( '*' ) ), true ) ) { - if ( !$img->getTitle()->userCanRead() ) { + if ( !$img->getTitle()->userCan( 'read' ) ) { wfThumbError( 403, 'Access denied. You do not have permission to access ' . 'the source file.' ); wfProfileOut( __METHOD__ ); @@ -128,6 +128,7 @@ function wfStreamThumb( array $params ) { $headers[] = 'Vary: Cookie'; } + // Check the source file storage path if ( !$img ) { wfThumbError( 404, wfMsg( 'badtitletext' ) ); wfProfileOut( __METHOD__ ); @@ -153,9 +154,9 @@ function wfStreamThumb( array $params ) { // Calculate time wfSuppressWarnings(); $imsUnix = strtotime( $imsString ); - $stat = stat( $sourcePath ); wfRestoreWarnings(); - if ( $stat['mtime'] <= $imsUnix ) { + $sourceTsUnix = wfTimestamp( TS_UNIX, $img->getTimestamp() ); + if ( $sourceTsUnix <= $imsUnix ) { header( 'HTTP/1.1 304 Not Modified' ); wfProfileOut( __METHOD__ ); return; @@ -165,10 +166,10 @@ function wfStreamThumb( array $params ) { // Stream the file if it exists already... try { $thumbName = $img->thumbName( $params ); - if ( $thumbName !== false ) { // valid params? + if ( strlen( $thumbName ) ) { // valid params? $thumbPath = $img->getThumbPath( $thumbName ); - if ( is_file( $thumbPath ) ) { - StreamFile::stream( $thumbPath, $headers ); + if ( $img->getRepo()->fileExists( $thumbPath ) ) { + $img->getRepo()->streamFile( $thumbPath, $headers ); wfProfileOut( __METHOD__ ); return; } @@ -182,7 +183,7 @@ function wfStreamThumb( array $params ) { // Thumbnail isn't already there, so create the new thumbnail... try { $thumb = $img->transform( $params, File::RENDER_NOW ); - } catch( Exception $ex ) { + } catch ( Exception $ex ) { // Tried to select a page on a non-paged file? $thumb = false; } @@ -193,18 +194,18 @@ function wfStreamThumb( array $params ) { $errorMsg = wfMsgHtml( 'thumbnail_error', 'File::transform() returned false' ); } elseif ( $thumb->isError() ) { $errorMsg = $thumb->getHtmlMsg(); - } elseif ( !$thumb->getPath() ) { + } elseif ( !$thumb->hasFile() ) { $errorMsg = wfMsgHtml( 'thumbnail_error', 'No path supplied in thumbnail object' ); - } elseif ( $thumb->getPath() == $img->getPath() ) { - $errorMsg = wfMsgHtml( 'thumbnail_error', 'Image was not scaled, ' . - 'is the requested width bigger than the source?' ); + } elseif ( $thumb->fileIsSource() ) { + $errorMsg = wfMsgHtml( 'thumbnail_error', + 'Image was not scaled, is the requested width bigger than the source?' ); } if ( $errorMsg !== false ) { wfThumbError( 500, $errorMsg ); } else { // Stream the file if there were no errors - StreamFile::stream( $thumb->getPath(), $headers ); + $thumb->streamFile( $headers ); } wfProfileOut( __METHOD__ ); @@ -232,6 +233,8 @@ function wfExtractThumbParams( $uri ) { // Check if this is a valid looking thumbnail request... if ( preg_match( $thumbUrlRegex, $uri, $matches ) ) { list( /* all */, $archOrTemp, $filename, $thumbname ) = $matches; + $filename = urldecode( $filename ); + $thumbname = urldecode( $thumbname ); $params = array( 'f' => $filename ); if ( $archOrTemp == '/archive' ) { @@ -298,4 +301,3 @@ $debug EOT; } -