Removed deprecated RefreshLinksJob2 class
[lhc/web/wiklou.git] / includes / GlobalFunctions.php
index f516759..5232413 100644 (file)
@@ -1078,7 +1078,7 @@ function wfDebug( $text, $dest = 'all', array $context = array() ) {
                $context['prefix'] = $wgDebugLogPrefix;
        }
 
-       $logger = MWLogger::getInstance( 'wfDebug' );
+       $logger = MWLoggerFactory::getInstance( 'wfDebug' );
        $logger->debug( $text, $context );
 }
 
@@ -1182,7 +1182,7 @@ function wfDebugLog(
                MWDebug::debugMsg( "[{$logGroup}] {$text}\n" );
        }
 
-       $logger = MWLogger::getInstance( $logGroup );
+       $logger = MWLoggerFactory::getInstance( $logGroup );
        $context['private'] = ( $dest === 'private' );
        $logger->info( $text, $context );
 }
@@ -1196,7 +1196,7 @@ function wfDebugLog(
  * @param array $context Additional logging context data
  */
 function wfLogDBError( $text, array $context = array() ) {
-       $logger = MWLogger::getInstance( 'wfLogDBError' );
+       $logger = MWLoggerFactory::getInstance( 'wfLogDBError' );
        $logger->error( trim( $text ), $context );
 }
 
@@ -1259,7 +1259,7 @@ function wfLogWarning( $msg, $callerOffset = 1, $level = E_USER_WARNING ) {
  */
 function wfErrorLog( $text, $file, array $context = array() ) {
        wfDeprecated( __METHOD__, '1.25' );
-       $logger = MWLogger::getInstance( 'wfErrorLog' );
+       $logger = MWLoggerFactory::getInstance( 'wfErrorLog' );
        $context['destination'] = $file;
        $logger->info( trim( $text ), $context );
 }
@@ -1328,13 +1328,13 @@ function wfLogProfilingData() {
        // any knowledge about an URL and throw an exception instead.
        try {
                $ctx['url'] = urldecode( $wgRequest->getRequestURL() );
-       } catch ( MWException $ignored ) {
+       } catch ( Exception $ignored ) {
                // no-op
        }
 
        $ctx['output'] = $profiler->getOutput();
 
-       $log = MWLogger::getInstance( 'profileoutput' );
+       $log = MWLoggerFactory::getInstance( 'profileoutput' );
        $log->info( "Elapsed: {elapsed}; URL: <{url}>\n{output}", $ctx );
 }
 
@@ -2147,10 +2147,12 @@ function wfVarDump( $var ) {
  */
 function wfHttpError( $code, $label, $desc ) {
        global $wgOut;
-       $wgOut->disable();
        header( "HTTP/1.0 $code $label" );
        header( "Status: $code $label" );
-       $wgOut->sendCacheControl();
+       if ( $wgOut ) {
+               $wgOut->disable();
+               $wgOut->sendCacheControl();
+       }
 
        header( 'Content-type: text/html; charset=utf-8' );
        print "<!doctype html>" .
@@ -4024,7 +4026,7 @@ function wfGetLangConverterCacheStorage() {
  * @param string|null $deprecatedVersion Optionally mark hook as deprecated with version number
  *
  * @return bool True if no handler aborted the hook
- * @deprecated 1.25
+ * @deprecated 1.25 - use Hooks::run
  */
 function wfRunHooks( $event, array $args = array(), $deprecatedVersion = null ) {
        return Hooks::run( $event, $args, $deprecatedVersion );
@@ -4196,3 +4198,91 @@ function wfIsConfiguredProxy( $ip ) {
        wfDeprecated( __METHOD__, '1.24' );
        return IP::isConfiguredProxy( $ip );
 }
+
+/**
+ * Returns true if these thumbnail parameters match one that MediaWiki
+ * requests from file description pages and/or parser output.
+ *
+ * $params is considered non-standard if they involve a non-standard
+ * width or any non-default parameters aside from width and page number.
+ * The number of possible files with standard parameters is far less than
+ * that of all combinations; rate-limiting for them can thus be more generious.
+ *
+ * @param File $file
+ * @param array $params
+ * @return bool
+ * @since 1.24 Moved from thumb.php to GlobalFunctions in 1.25
+ */
+function wfThumbIsStandard( File $file, array $params ) {
+       global $wgThumbLimits, $wgImageLimits, $wgResponsiveImages;
+
+       $multipliers = array( 1 );
+       if ( $wgResponsiveImages ) {
+               // These available sizes are hardcoded currently elsewhere in MediaWiki.
+               // @see Linker::processResponsiveImages
+               $multipliers[] = 1.5;
+               $multipliers[] = 2;
+       }
+
+       $handler = $file->getHandler();
+       if ( !$handler || !isset( $params['width'] ) ) {
+               return false;
+       }
+
+       $basicParams = array();
+       if ( isset( $params['page'] ) ) {
+               $basicParams['page'] = $params['page'];
+       }
+
+       $thumbLimits = array();
+       $imageLimits = array();
+       // Expand limits to account for multipliers
+       foreach ( $multipliers as $multiplier ) {
+               $thumbLimits = array_merge( $thumbLimits, array_map(
+                       function ( $width ) use ( $multiplier ) {
+                               return round( $width * $multiplier );
+                       }, $wgThumbLimits )
+               );
+               $imageLimits = array_merge( $imageLimits, array_map(
+                       function ( $pair ) use ( $multiplier ) {
+                               return array(
+                                       round( $pair[0] * $multiplier ),
+                                       round( $pair[1] * $multiplier ),
+                               );
+                       }, $wgImageLimits )
+               );
+       }
+
+       // Check if the width matches one of $wgThumbLimits
+       if ( in_array( $params['width'], $thumbLimits ) ) {
+               $normalParams = $basicParams + array( 'width' => $params['width'] );
+               // Append any default values to the map (e.g. "lossy", "lossless", ...)
+               $handler->normaliseParams( $file, $normalParams );
+       } else {
+               // If not, then check if the width matchs one of $wgImageLimits
+               $match = false;
+               foreach ( $imageLimits as $pair ) {
+                       $normalParams = $basicParams + array( 'width' => $pair[0], 'height' => $pair[1] );
+                       // Decide whether the thumbnail should be scaled on width or height.
+                       // Also append any default values to the map (e.g. "lossy", "lossless", ...)
+                       $handler->normaliseParams( $file, $normalParams );
+                       // Check if this standard thumbnail size maps to the given width
+                       if ( $normalParams['width'] == $params['width'] ) {
+                               $match = true;
+                               break;
+                       }
+               }
+               if ( !$match ) {
+                       return false; // not standard for description pages
+               }
+       }
+
+       // Check that the given values for non-page, non-width, params are just defaults
+       foreach ( $params as $key => $value ) {
+               if ( !isset( $normalParams[$key] ) || $normalParams[$key] != $value ) {
+                       return false;
+               }
+       }
+
+       return true;
+}