Allow CACHE_NONE as a fallback for ObjectCache::newAccelerator
[lhc/web/wiklou.git] / thumb.php
index 89cc834..7352dc4 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -24,7 +24,7 @@
 define( 'MW_NO_OUTPUT_COMPRESSION', 1 );
 require __DIR__ . '/includes/WebStart.php';
 
-// Don't use fancy mime detection, just check the file extension for jpg/gif/png
+// Don't use fancy MIME detection, just check the file extension for jpg/gif/png
 $wgTrivialMimeDetection = true;
 
 if ( defined( 'THUMB_HANDLER' ) ) {
@@ -32,7 +32,7 @@ if ( defined( 'THUMB_HANDLER' ) ) {
        wfThumbHandle404();
 } else {
        // Called directly, use $_GET params
-       wfThumbHandleRequest();
+       wfStreamThumb( $_GET );
 }
 
 wfLogProfilingData();
@@ -43,19 +43,6 @@ $factory->shutdown();
 
 //--------------------------------------------------------------------------
 
-/**
- * Handle a thumbnail request via query parameters
- *
- * @return void
- */
-function wfThumbHandleRequest() {
-       $params = get_magic_quotes_gpc()
-               ? array_map( 'stripslashes', $_GET )
-               : $_GET;
-
-       wfStreamThumb( $params ); // stream the thumbnail
-}
-
 /**
  * Handle a thumbnail request via thumbnail file URL
  *
@@ -105,7 +92,6 @@ function wfThumbHandle404() {
 function wfStreamThumb( array $params ) {
        global $wgVaryOnXFP;
 
-       $section = new ProfileSection( __METHOD__ );
 
        $headers = array(); // HTTP headers to send
 
@@ -148,12 +134,12 @@ function wfStreamThumb( array $params ) {
                // Format is <timestamp>!<name>
                $bits = explode( '!', $fileName, 2 );
                if ( count( $bits ) != 2 ) {
-                       wfThumbError( 404, wfMessage( 'badtitletext' )->text() );
+                       wfThumbError( 404, wfMessage( 'badtitletext' )->parse() );
                        return;
                }
                $title = Title::makeTitleSafe( NS_FILE, $bits[1] );
                if ( !$title ) {
-                       wfThumbError( 404, wfMessage( 'badtitletext' )->text() );
+                       wfThumbError( 404, wfMessage( 'badtitletext' )->parse() );
                        return;
                }
                $img = RepoGroup::singleton()->getLocalRepo()->newFromArchiveName( $title, $fileName );
@@ -163,7 +149,7 @@ function wfStreamThumb( array $params ) {
 
        // Check the source file title
        if ( !$img ) {
-               wfThumbError( 404, wfMessage( 'badtitletext' )->text() );
+               wfThumbError( 404, wfMessage( 'badtitletext' )->parse() );
                return;
        }
 
@@ -275,7 +261,7 @@ function wfStreamThumb( array $params ) {
                return;
        }
 
-       // For 404 handled thumbnails, we only use the the base name of the URI
+       // For 404 handled thumbnails, we only use the base name of the URI
        // for the thumb params and the parent directory for the source file name.
        // Check that the zone relative path matches up so squid caches won't pick
        // up thumbs that would not be purged on source file deletion (bug 34231).
@@ -323,10 +309,10 @@ function wfStreamThumb( array $params ) {
 
        $user = RequestContext::getMain()->getUser();
        if ( !wfThumbIsStandard( $img, $params ) && $user->pingLimiter( 'renderfile-nonstandard' ) ) {
-               wfThumbError( 500, wfMessage( 'actionthrottledtext' ) );
+               wfThumbError( 500, wfMessage( 'actionthrottledtext' )->parse() );
                return;
        } elseif ( $user->pingLimiter( 'renderfile' ) ) {
-               wfThumbError( 500, wfMessage( 'actionthrottledtext' ) );
+               wfThumbError( 500, wfMessage( 'actionthrottledtext' )->parse() );
                return;
        }
 
@@ -376,7 +362,7 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath
 
        $done = false;
        // Record failures on PHP fatals in addition to caching exceptions
-       register_shutdown_function( function() use ( &$done, $key ) {
+       register_shutdown_function( function () use ( &$done, $key ) {
                if ( !$done ) { // transform() gave a fatal
                        global $wgMemc;
                        // Randomize TTL to reduce stampedes
@@ -388,7 +374,8 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath
        $errorHtml = false;
 
        // guard thumbnail rendering with PoolCounter to avoid stampedes
-       // expensive files use a separate PoolCounter config so it is possible to set up a global limit on them
+       // expensive files use a separate PoolCounter config so it is possible
+       // to set up a global limit on them
        if ( $file->isExpensiveToThumbnail() ) {
                $poolCounterType = 'FileRenderExpensive';
        } else {
@@ -399,17 +386,17 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath
        try {
                $work = new PoolCounterWorkViaCallback( $poolCounterType, sha1( $file->getName() ),
                        array(
-                               'doWork' => function() use ( $file, $params ) {
+                               'doWork' => function () use ( $file, $params ) {
                                        return $file->transform( $params, File::RENDER_NOW );
                                },
-                               'getCachedWork' => function() use ( $file, $params, $thumbPath ) {
+                               'getCachedWork' => function () use ( $file, $params, $thumbPath ) {
                                        // If the worker that finished made this thumbnail then use it.
                                        // Otherwise, it probably made a different thumbnail for this file.
                                        return $file->getRepo()->fileExists( $thumbPath )
                                                ? $file->transform( $params, File::RENDER_NOW )
                                                : false; // retry once more in exclusive mode
                                },
-                               'fallback' => function() {
+                               'fallback' => function () {
                                        return wfMessage( 'generic-pool-error' )->parse();
                                },
                                'error' => function ( $status ) {
@@ -520,7 +507,8 @@ function wfExtractThumbRequestInfo( $thumbRel ) {
        $repo = RepoGroup::singleton()->getLocalRepo();
 
        $hashDirReg = $subdirReg = '';
-       for ( $i = 0; $i < $repo->getHashLevels(); $i++ ) {
+       $hashLevels = $repo->getHashLevels();
+       for ( $i = 0; $i < $hashLevels; $i++ ) {
                $subdirReg .= '[0-9a-f]';
                $hashDirReg .= "$subdirReg/";
        }
@@ -551,7 +539,7 @@ function wfExtractThumbRequestInfo( $thumbRel ) {
  * file handler.
  *
  * @param File $file File object for file in question
- * @param array $param Array of parameters so far
+ * @param array $params Array of parameters so far
  * @return array Parameters array with more parameters
  */
 function wfExtractThumbParams( $file, $params ) {
@@ -571,7 +559,7 @@ function wfExtractThumbParams( $file, $params ) {
                return $params; // valid thumbnail URL (via extension or config)
        }
 
-       // FIXME: Files in the temp zone don't set a mime type, which means
+       // FIXME: Files in the temp zone don't set a MIME type, which means
        // they don't have a handler. Which means we can't parse the param
        // string. However, not a big issue as what good is a param string
        // if you have no handler to make use of the param string and
@@ -609,7 +597,7 @@ function wfExtractThumbParams( $file, $params ) {
  * Output a thumbnail generation error message
  *
  * @param int $status
- * @param string $msg
+ * @param string $msg HTML
  * @return void
  */
 function wfThumbError( $status, $msg ) {