From: Aaron Schulz Date: Tue, 29 Apr 2014 21:39:05 +0000 (-0700) Subject: Tweaked wfThumbIsStandard() to recognize handler-specific default parameters X-Git-Tag: 1.31.0-rc.0~15956^2 X-Git-Url: http://git.cyclocoop.org/%24action?a=commitdiff_plain;h=b0de7c7c60eb2f8464d6b6eb653331bdf80e34b0;p=lhc%2Fweb%2Fwiklou.git Tweaked wfThumbIsStandard() to recognize handler-specific default parameters * Now thumbnails with default lossy/lossless values will still count as "standard", for example. This makes use of the file media handler. Change-Id: Ia69301dfbf85bb26a17f8eee0939d690021343ec --- diff --git a/thumb.php b/thumb.php index a5bdc5bb25..c5da918e08 100644 --- a/thumb.php +++ b/thumb.php @@ -429,16 +429,13 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName ) { * of possible files with standard parameters is far less than that of all * possible combinations; rate-limiting for them can thus be more generious. * - * @param File $img + * @param File $file * @param array $params * @return bool */ -function wfThumbIsStandard( File $img, array $params ) { +function wfThumbIsStandard( File $file, array $params ) { global $wgThumbLimits, $wgImageLimits; - // @TODO: use polymorphism with media handler here - if ( array_diff( array_keys( $params ), array( 'width', 'page' ) ) ) { - return false; // extra parameters present - } + if ( isset( $params['width'] ) ) { $widths = $wgThumbLimits; foreach ( $wgImageLimits as $pair ) { @@ -448,6 +445,24 @@ function wfThumbIsStandard( File $img, array $params ) { return false; } } + + $handler = $file->getHandler(); + if ( $handler ) { + // Standard thumbnails use a standard width and any page number + $normalParams = array( 'width' => $params['width'] ); + if ( isset( $params['page'] ) ) { + $normalParams['page'] = $params['page']; + } + // Append any default values to the map (e.g. "lossy", "lossless", "seek"...) + $handler->normaliseParams( $file, $normalParams ); + // 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; }