Do not suggest alternate svg sizes bigger than $wgMaxSVGSize on img pg
authorBrian Wolff <bawolff+wn@gmail.com>
Sun, 19 Jul 2015 11:26:58 +0000 (05:26 -0600)
committerBrian Wolff <bawolff+wn@gmail.com>
Sun, 19 Jul 2015 21:38:57 +0000 (15:38 -0600)
Suggesting a size bigger than the max svg size, will simply result
in a smaller rendering than the user has been lead to believe they
would recieve.

Additionally fix wrong argument order to $this->getThumbSizes
which was causing the nominal size for an SVG to not be suggested
as an alternate size on the image page.

See some of the comments T106263 (However, that bug is not about
this issue).

Change-Id: Ia63ddd6e89725f8e7979687310c3b6819da0cbbc

includes/page/ImagePage.php

index 7ea4ed7..4ec377a 100644 (file)
@@ -296,7 +296,7 @@ class ImagePage extends Article {
        }
 
        protected function openShowImage() {
-               global $wgEnableUploads, $wgSend404Code;
+               global $wgEnableUploads, $wgSend404Code, $wgSVGMaxSize;
 
                $this->loadFile();
                $out = $this->getContext()->getOutput();
@@ -351,7 +351,7 @@ class ImagePage extends Article {
                                        );
                                        $linktext = $this->getContext()->msg( 'show-big-image' )->escaped();
 
-                                       $thumbSizes = $this->getThumbSizes( $width, $height, $width_orig, $height_orig );
+                                       $thumbSizes = $this->getThumbSizes( $width_orig, $height_orig );
                                        # Generate thumbnails or thumbnail links as needed...
                                        $otherSizes = array();
                                        foreach ( $thumbSizes as $size ) {
@@ -361,10 +361,12 @@ class ImagePage extends Article {
                                                // the current thumbnail's size ($width/$height)
                                                // since that is added to the message separately, so
                                                // it can be denoted as the current size being shown.
-                                               // Vectorized images are "infinitely" big, so all thumb
-                                               // sizes are shown.
+                                               // Vectorized images are limited by $wgSVGMaxSize big,
+                                               // so all thumbs less than or equal that are shown.
                                                if ( ( ( $size[0] <= $width_orig && $size[1] <= $height_orig )
-                                                               || $this->displayImg->isVectorized() )
+                                                               || ( $this->displayImg->isVectorized()
+                                                                       && max( $size[0], $size[1] ) <= $wgSVGMaxSize )
+                                                       )
                                                        && $size[0] != $width && $size[1] != $height
                                                ) {
                                                        $sizeLink = $this->makeSizeLink( $params, $size[0], $size[1] );