Legoktm has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/306632

Change subject: [WIP] Introduce FileLinkRenderer
......................................................................

[WIP] Introduce FileLinkRenderer

Continuing with the Linker rewrite, next is to clean up the code that
makes links to files. This commit mainly bootstraps the new class, and
contains direct ports of functions with minor changes to function calls
and signatures.

The test coverage for this code is mostly in parser tests at this point.

Change-Id: I4499e5439dacb7d5e885b7c6d98edb06d980b4ee
---
M autoload.php
M includes/Linker.php
M includes/MediaWikiServices.php
M includes/ServiceWiring.php
M tests/phpunit/includes/MediaWikiServicesTest.php
5 files changed, 26 insertions(+), 33 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/32/306632/1

diff --git a/autoload.php b/autoload.php
index 39102fd..744520f 100644
--- a/autoload.php
+++ b/autoload.php
@@ -843,6 +843,7 @@
        'MediaWiki\\Interwiki\\InterwikiLookup' => __DIR__ . 
'/includes/interwiki/InterwikiLookup.php',
        'MediaWiki\\Languages\\Data\\Names' => __DIR__ . 
'/languages/data/Names.php',
        'MediaWiki\\Languages\\Data\\ZhConversion' => __DIR__ . 
'/languages/data/ZhConversion.php',
+       'MediaWiki\\Linker\\FileLinkRenderer' => __DIR__ . 
'/includes/linker/FileLinkRenderer.php',
        'MediaWiki\\Linker\\LinkRenderer' => __DIR__ . 
'/includes/linker/LinkRenderer.php',
        'MediaWiki\\Linker\\LinkRendererFactory' => __DIR__ . 
'/includes/linker/LinkRendererFactory.php',
        'MediaWiki\\Linker\\LinkTarget' => __DIR__ . 
'/includes/linker/LinkTarget.php',
diff --git a/includes/Linker.php b/includes/Linker.php
index 94e6bd8..018a95c 100644
--- a/includes/Linker.php
+++ b/includes/Linker.php
@@ -790,49 +790,21 @@
                        return "<!-- ERROR -->" . htmlspecialchars( $label );
                }
 
-               global $wgEnableUploads, $wgUploadMissingFileUrl, 
$wgUploadNavigationUrl;
-               if ( $label == '' ) {
-                       $label = $title->getPrefixedText();
-               }
-               $encLabel = htmlspecialchars( $label );
-               $currentExists = $time ? ( wfFindFile( $title ) != false ) : 
false;
-
-               if ( ( $wgUploadMissingFileUrl || $wgUploadNavigationUrl || 
$wgEnableUploads )
-                       && !$currentExists
-               ) {
-                       $redir = 
RepoGroup::singleton()->getLocalRepo()->checkRedirect( $title );
-
-                       if ( $redir ) {
-                               // We already know it's a redirect, so mark it
-                               // accordingly
-                               return self::link(
-                                       $title,
-                                       $encLabel,
-                                       [ 'class' => 'mw-redirect' ],
-                                       wfCgiToArray( $query ),
-                                       [ 'known', 'noclasses' ]
-                               );
-                       }
-
-                       $href = self::getUploadUrl( $title, $query );
-
-                       return '<a href="' . htmlspecialchars( $href ) . '" 
class="new" title="' .
-                               htmlspecialchars( $title->getPrefixedText(), 
ENT_QUOTES ) . '">' .
-                               $encLabel . '</a>';
-               }
-
-               return self::link( $title, $encLabel, [], wfCgiToArray( $query 
), [ 'known', 'noclasses' ] );
+               return 
MediaWikiServices::getInstance()->getFileLinkRenderer()->makeBrokenFileLink(
+                       $title, $label, strlen( $query ) ? wfCgiToArray( $query 
) : [], $time
+               );
        }
 
        /**
         * Get the URL to upload a certain file
         *
         * @since 1.16.3
+        * @private Only public for use in FileLinkRenderer
         * @param Title $destFile Title object of the file to upload
         * @param string $query Urlencoded query string to prepend
         * @return string Urlencoded URL
         */
-       protected static function getUploadUrl( $destFile, $query = '' ) {
+       public static function getUploadUrl( $destFile, $query = '' ) {
                global $wgUploadMissingFileUrl, $wgUploadNavigationUrl;
                $q = 'wpDestFile=' . $destFile->getPartialURL();
                if ( $query != '' ) {
diff --git a/includes/MediaWikiServices.php b/includes/MediaWikiServices.php
index 49891df..23eab8a 100644
--- a/includes/MediaWikiServices.php
+++ b/includes/MediaWikiServices.php
@@ -12,6 +12,7 @@
 use Liuggio\StatsdClient\Factory\StatsdDataFactory;
 use LoadBalancer;
 use MediaHandlerFactory;
+use MediaWiki\Linker\FileLinkRenderer;
 use MediaWiki\Linker\LinkRenderer;
 use MediaWiki\Linker\LinkRendererFactory;
 use MediaWiki\Services\SalvageableService;
@@ -558,6 +559,14 @@
 
        /**
         * @since 1.28
+        * @return FileLinkRenderer
+        */
+       public function getFileLinkRenderer() {
+               return $this->getService( 'FileLinkRenderer' );
+       }
+
+       /**
+        * @since 1.28
         * @return TitleFormatter
         */
        public function getTitleFormatter() {
diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php
index 33569e6..8d9d7aa 100644
--- a/includes/ServiceWiring.php
+++ b/includes/ServiceWiring.php
@@ -38,6 +38,8 @@
  */
 
 use MediaWiki\Interwiki\ClassicInterwikiLookup;
+use MediaWiki\Linker\FileLinkRenderer;
+use MediaWiki\Linker\LinkRenderer;
 use MediaWiki\Linker\LinkRendererFactory;
 use MediaWiki\MediaWikiServices;
 
@@ -187,6 +189,13 @@
                }
        },
 
+       'FileLinkRenderer' => function( MediaWikiServices $services ) {
+               return new FileLinkRenderer(
+                       $services->getLinkRenderer(),
+                       $services->getTitleFormatter()
+               );
+       },
+
        'GenderCache' => function( MediaWikiServices $services ) {
                return new GenderCache();
        },
diff --git a/tests/phpunit/includes/MediaWikiServicesTest.php 
b/tests/phpunit/includes/MediaWikiServicesTest.php
index 8c2b143..9c8e892 100644
--- a/tests/phpunit/includes/MediaWikiServicesTest.php
+++ b/tests/phpunit/includes/MediaWikiServicesTest.php
@@ -1,6 +1,7 @@
 <?php
 use Liuggio\StatsdClient\Factory\StatsdDataFactory;
 use MediaWiki\Interwiki\InterwikiLookup;
+use MediaWiki\Linker\FileLinkRenderer;
 use MediaWiki\Linker\LinkRenderer;
 use MediaWiki\Linker\LinkRendererFactory;
 use MediaWiki\MediaWikiServices;
@@ -320,6 +321,7 @@
                        'GenderCache' => [ 'GenderCache', GenderCache::class ],
                        'LinkCache' => [ 'LinkCache', LinkCache::class ],
                        'LinkRenderer' => [ 'LinkRenderer', LinkRenderer::class 
],
+                       'FileLinkRenderer' => [ 'FileLinkRenderer'. 
FileLinkRenderer::class ],
                        'LinkRendererFactory' => [ 'LinkRendererFactory', 
LinkRendererFactory::class ],
                        '_MediaWikiTitleCodec' => [ '_MediaWikiTitleCodec', 
MediaWikiTitleCodec::class ],
                        'TitleFormatter' => [ 'TitleFormatter', 
TitleFormatter::class ],

-- 
To view, visit https://gerrit.wikimedia.org/r/306632
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4499e5439dacb7d5e885b7c6d98edb06d980b4ee
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Legoktm <legoktm.wikipe...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to