Merge "Improve docs for Title::getInternalURL/getCanonicalURL"
[lhc/web/wiklou.git] / includes / page / ImagePage.php
index ae32f84..6c1ac39 100644 (file)
@@ -20,6 +20,7 @@
  * @file
  */
 
+use MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\ResultWrapper;
 
 /**
@@ -287,20 +288,27 @@ class ImagePage extends Article {
                return parent::getEmptyPageParserOutput( $options );
        }
 
+       /**
+        * Returns language code to be used for dispaying the image, based on request context and
+        * languages available in the file.
+        *
+        * @param WebRequest $request
+        * @param File $file
+        * @return string|null
+        */
        private function getLanguageForRendering( WebRequest $request, File $file ) {
-               $handler = $this->displayImg->getHandler();
+               $handler = $file->getHandler();
                if ( !$handler ) {
                        return null;
                }
 
-               $requestLanguage = $request->getVal( 'lang' );
-               if ( !is_null( $requestLanguage ) ) {
-                       if ( $handler->validateParam( 'lang', $requestLanguage ) ) {
-                               return $requestLanguage;
-                       }
+               $config = MediaWikiServices::getInstance()->getMainConfig();
+               $requestLanguage = $request->getVal( 'lang', $config->get( 'LanguageCode' ) );
+               if ( $handler->validateParam( 'lang', $requestLanguage ) ) {
+                       return $file->getMatchedLanguage( $requestLanguage );
                }
 
-               return $handler->getDefaultRenderLanguage( $this->displayImg );
+               return $handler->getDefaultRenderLanguage( $file );
        }
 
        protected function openShowImage() {
@@ -313,9 +321,7 @@ class ImagePage extends Article {
                $dirmark = $lang->getDirMarkEntity();
                $request = $this->getContext()->getRequest();
 
-               $max = $this->getImageLimitsFromOption( $user, 'imagesize' );
-               $maxWidth = $max[0];
-               $maxHeight = $max[1];
+               list( $maxWidth, $maxHeight ) = $this->getImageLimitsFromOption( $user, 'imagesize' );
 
                if ( $this->displayImg->exists() ) {
                        # image
@@ -349,7 +355,7 @@ class ImagePage extends Article {
                                # image
                                # "Download high res version" link below the image
                                # $msgsize = $this->getContext()->msg( 'file-info-size', $width_orig, $height_orig,
-                               #   Linker::formatSize( $this->displayImg->getSize() ), $mime )->escaped();
+                               #   Language::formatSize( $this->displayImg->getSize() ), $mime )->escaped();
                                # We'll show a thumbnail of this image
                                if ( $width > $maxWidth || $height > $maxHeight || $this->displayImg->isVectorized() ) {
                                        list( $width, $height ) = $this->getDisplayWidthHeight(
@@ -1021,7 +1027,7 @@ EOT
         *
         * @param User $user
         * @param string $optionName Name of a option to check, typically imagesize or thumbsize
-        * @return array
+        * @return int[]
         * @since 1.21
         */
        public function getImageLimitsFromOption( $user, $optionName ) {
@@ -1216,7 +1222,7 @@ EOT
         * @return TitleArray|Title[]
         */
        public function getForeignCategories() {
-               $this->mPage->getForeignCategories();
+               return $this->mPage->getForeignCategories();
        }
 
 }