diff options
author | Umherirrender <umherirrender_de.wp@web.de> | 2020-10-27 21:29:28 +0100 |
---|---|---|
committer | Umherirrender <umherirrender_de.wp@web.de> | 2020-11-02 14:51:56 +0100 |
commit | 4829c65848396165a62c10b7100a70c30152c09e (patch) | |
tree | 3c02962f594fe3b6550f8284b32d782ee7447b5b | |
parent | ba15eff1f6c4dead23acd7e238a619c155381b04 (diff) | |
download | mediawikicore-4829c65848396165a62c10b7100a70c30152c09e.tar.gz mediawikicore-4829c65848396165a62c10b7100a70c30152c09e.zip |
Inject LinkBatchFactory into QueryPage and use it
The LinkBatchFactory service is only used in one method call in the
QueryPage class, so make it optional and provide it
when needed with a setter
Bug: T259960
Change-Id: Iee446b1defc9a4f116dc264b012ab972f89d95fc
31 files changed, 266 insertions, 35 deletions
diff --git a/includes/specialpage/QueryPage.php b/includes/specialpage/QueryPage.php index 0b15f36fd679..61d894b7acc7 100644 --- a/includes/specialpage/QueryPage.php +++ b/includes/specialpage/QueryPage.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use MediaWiki\Linker\LinkTarget; use MediaWiki\MediaWikiServices; use Wikimedia\Rdbms\DBError; @@ -69,6 +70,9 @@ abstract class QueryPage extends SpecialPage { /** @var ILoadBalancer|null */ private $loadBalancer = null; + /** @var LinkBatchFactory|null */ + private $linkBatchFactory = null; + /** * Get a list of query page classes and their associated special pages, * for periodic updates. @@ -126,6 +130,27 @@ abstract class QueryPage extends SpecialPage { } /** + * @since 1.36 + * @param LinkBatchFactory $linkBatchFactory + */ + final protected function setLinkBatchFactory( LinkBatchFactory $linkBatchFactory ) { + $this->linkBatchFactory = $linkBatchFactory; + } + + /** + * @since 1.36 + * @return LinkBatchFactory + */ + final protected function getLinkBatchFactory(): LinkBatchFactory { + if ( $this->linkBatchFactory === null ) { + // Fallback if not provided + // TODO Change to wfWarn in a future release + $this->linkBatchFactory = MediaWikiServices::getInstance()->getLinkBatchFactory(); + } + return $this->linkBatchFactory; + } + + /** * Get a list of query pages disabled and with it's run mode * @param Config $config * @return string[] @@ -820,6 +845,8 @@ abstract class QueryPage extends SpecialPage { * title and optional the namespace field) and executes the batch. This operation will pre-cache * LinkCache information like page existence and information for stub color and redirect hints. * + * @note Call self::setLinkBatchFactory from special page constructor when use + * * @param IResultWrapper $res The result wrapper to process. Needs to include the title * field and namespace field, if the $ns parameter isn't set. * @param null $ns Use this namespace for the given titles in the result wrapper, @@ -830,8 +857,7 @@ abstract class QueryPage extends SpecialPage { return; } - $linkBatchFactory = MediaWikiServices::getInstance()->getLinkBatchFactory(); - $batch = $linkBatchFactory->newLinkBatch(); + $batch = $this->getLinkBatchFactory()->newLinkBatch(); foreach ( $res as $row ) { $batch->add( $ns ?? $row->namespace, $row->title ); } diff --git a/includes/specialpage/SpecialPageFactory.php b/includes/specialpage/SpecialPageFactory.php index 8d270e0754bd..33f68d61aaa9 100644 --- a/includes/specialpage/SpecialPageFactory.php +++ b/includes/specialpage/SpecialPageFactory.php @@ -70,6 +70,7 @@ class SpecialPageFactory { 'PermissionManager', 'ContentHandlerFactory', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Deadendpages' => [ @@ -77,6 +78,7 @@ class SpecialPageFactory { 'services' => [ 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'DoubleRedirects' => [ @@ -94,6 +96,7 @@ class SpecialPageFactory { // Same as for Shortpages 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Ancientpages' => [ @@ -101,6 +104,7 @@ class SpecialPageFactory { 'services' => [ 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Lonelypages' => [ @@ -108,6 +112,7 @@ class SpecialPageFactory { 'services' => [ 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Fewestrevisions' => [ @@ -116,6 +121,7 @@ class SpecialPageFactory { // Same as for Mostrevisions 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Withoutinterwiki' => [ @@ -123,6 +129,7 @@ class SpecialPageFactory { 'services' => [ 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Protectedpages' => [ @@ -149,6 +156,7 @@ class SpecialPageFactory { // Same as for Longpages 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Uncategorizedcategories' => [ @@ -157,6 +165,7 @@ class SpecialPageFactory { // Same as for SpecialUncategorizedPages and SpecialUncategorizedTemplates 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Uncategorizedimages' => [ @@ -171,6 +180,7 @@ class SpecialPageFactory { // Same as for SpecialUncategorizedCategories and SpecialUncategorizedTemplates 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Uncategorizedtemplates' => [ @@ -179,12 +189,14 @@ class SpecialPageFactory { // Same as for SpecialUncategorizedCategories and SpecialUncategorizedPages 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Unusedcategories' => [ 'class' => \SpecialUnusedCategories::class, 'services' => [ 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Unusedimages' => [ @@ -210,6 +222,7 @@ class SpecialPageFactory { 'class' => \SpecialWantedCategories::class, 'services' => [ 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Wantedfiles' => [ @@ -217,18 +230,21 @@ class SpecialPageFactory { 'services' => [ 'RepoGroup', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Wantedpages' => [ 'class' => \WantedPagesPage::class, 'services' => [ 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Wantedtemplates' => [ 'class' => \SpecialWantedTemplates::class, 'services' => [ 'DBLoadBalancer', + 'LinkBatchFactory', ] ], @@ -449,12 +465,14 @@ class SpecialPageFactory { 'services' => [ 'MimeAnalyzer', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'MIMEsearch' => [ 'class' => \SpecialMIMESearch::class, 'services' => [ 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'FileDuplicateSearch' => [ @@ -483,6 +501,7 @@ class SpecialPageFactory { 'class' => \SpecialListDuplicatedFiles::class, 'services' => [ 'DBLoadBalancer', + 'LinkBatchFactory', ] ], @@ -518,6 +537,7 @@ class SpecialPageFactory { 'class' => \SpecialLinkSearch::class, 'services' => [ 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Randompage' => \RandomPage::class, @@ -531,6 +551,7 @@ class SpecialPageFactory { 'class' => \SpecialMostLinkedCategories::class, 'services' => [ 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Mostimages' => [ @@ -544,18 +565,21 @@ class SpecialPageFactory { 'services' => [ 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Mostlinked' => [ 'class' => \SpecialMostLinked::class, 'services' => [ 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Mostlinkedtemplates' => [ 'class' => \SpecialMostLinkedTemplates::class, 'services' => [ 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Mostcategories' => [ @@ -563,6 +587,7 @@ class SpecialPageFactory { 'services' => [ 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], 'Mostrevisions' => [ @@ -571,6 +596,7 @@ class SpecialPageFactory { // Same as for Fewestrevisions 'NamespaceInfo', 'DBLoadBalancer', + 'LinkBatchFactory', ] ], diff --git a/includes/specials/SpecialAncientPages.php b/includes/specials/SpecialAncientPages.php index 92117da5f777..8326933d834e 100644 --- a/includes/specials/SpecialAncientPages.php +++ b/includes/specials/SpecialAncientPages.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -36,11 +37,17 @@ class SpecialAncientPages extends QueryPage { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer ) { + public function __construct( + NamespaceInfo $namespaceInfo, + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Ancientpages' ); $this->namespaceInfo = $namespaceInfo; $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isExpensive() { diff --git a/includes/specials/SpecialBrokenRedirects.php b/includes/specials/SpecialBrokenRedirects.php index 58dfc3b16699..485304255dec 100644 --- a/includes/specials/SpecialBrokenRedirects.php +++ b/includes/specials/SpecialBrokenRedirects.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use MediaWiki\Content\IContentHandlerFactory; use MediaWiki\Permissions\PermissionManager; use Wikimedia\Rdbms\IDatabase; @@ -45,16 +46,19 @@ class SpecialBrokenRedirects extends QueryPage { * @param PermissionManager $permissionManager * @param IContentHandlerFactory $contentHandlerFactory * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ public function __construct( PermissionManager $permissionManager, IContentHandlerFactory $contentHandlerFactory, - ILoadBalancer $loadBalancer + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory ) { parent::__construct( 'BrokenRedirects' ); $this->permissionManager = $permissionManager; $this->contentHandlerFactory = $contentHandlerFactory; $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isExpensive() { diff --git a/includes/specials/SpecialDeadendPages.php b/includes/specials/SpecialDeadendPages.php index 0fd416249a11..cbdf4b2b6e05 100644 --- a/includes/specials/SpecialDeadendPages.php +++ b/includes/specials/SpecialDeadendPages.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -36,11 +37,17 @@ class SpecialDeadendPages extends PageQueryPage { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer ) { + public function __construct( + NamespaceInfo $namespaceInfo, + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Deadendpages' ); $this->namespaceInfo = $namespaceInfo; $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } protected function getPageHeader() { diff --git a/includes/specials/SpecialFewestRevisions.php b/includes/specials/SpecialFewestRevisions.php index 9f815b8e559e..4c0b97db3f21 100644 --- a/includes/specials/SpecialFewestRevisions.php +++ b/includes/specials/SpecialFewestRevisions.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\ILoadBalancer; use Wikimedia\Rdbms\IResultWrapper; @@ -39,11 +40,17 @@ class SpecialFewestRevisions extends QueryPage { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer ) { + public function __construct( + NamespaceInfo $namespaceInfo, + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Fewestrevisions' ); $this->namespaceInfo = $namespaceInfo; $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isExpensive() { diff --git a/includes/specials/SpecialLinkSearch.php b/includes/specials/SpecialLinkSearch.php index 03219407d1de..4d453f774ece 100644 --- a/includes/specials/SpecialLinkSearch.php +++ b/includes/specials/SpecialLinkSearch.php @@ -22,6 +22,7 @@ * @author Brion Vibber */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\ILoadBalancer; use Wikimedia\Rdbms\IResultWrapper; @@ -48,10 +49,15 @@ class SpecialLinkSearch extends QueryPage { /** * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( ILoadBalancer $loadBalancer ) { + public function __construct( + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'LinkSearch' ); $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isCacheable() { diff --git a/includes/specials/SpecialListDuplicatedFiles.php b/includes/specials/SpecialListDuplicatedFiles.php index b298eeb7b736..0a5f901f95a0 100644 --- a/includes/specials/SpecialListDuplicatedFiles.php +++ b/includes/specials/SpecialListDuplicatedFiles.php @@ -24,6 +24,7 @@ * @author Brian Wolff */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\ILoadBalancer; use Wikimedia\Rdbms\IResultWrapper; @@ -37,10 +38,15 @@ class SpecialListDuplicatedFiles extends QueryPage { /** * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( ILoadBalancer $loadBalancer ) { + public function __construct( + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'ListDuplicatedFiles' ); $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isExpensive() { diff --git a/includes/specials/SpecialLonelyPages.php b/includes/specials/SpecialLonelyPages.php index 7b32252d308e..1f3815b6fb35 100644 --- a/includes/specials/SpecialLonelyPages.php +++ b/includes/specials/SpecialLonelyPages.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -37,11 +38,17 @@ class SpecialLonelyPages extends PageQueryPage { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer ) { + public function __construct( + NamespaceInfo $namespaceInfo, + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Lonelypages' ); $this->namespaceInfo = $namespaceInfo; $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } protected function getPageHeader() { diff --git a/includes/specials/SpecialLongPages.php b/includes/specials/SpecialLongPages.php index b6a233437fae..22751cdca5d5 100644 --- a/includes/specials/SpecialLongPages.php +++ b/includes/specials/SpecialLongPages.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -31,9 +32,18 @@ class SpecialLongPages extends SpecialShortPages { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer ) { - parent::__construct( $namespaceInfo, $loadBalancer ); + public function __construct( + NamespaceInfo $namespaceInfo, + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { + parent::__construct( + $namespaceInfo, + $loadBalancer, + $linkBatchFactory + ); $this->mName = 'Longpages'; } diff --git a/includes/specials/SpecialMIMESearch.php b/includes/specials/SpecialMIMESearch.php index d5b156baec1e..f4b74a37c7d8 100644 --- a/includes/specials/SpecialMIMESearch.php +++ b/includes/specials/SpecialMIMESearch.php @@ -22,6 +22,7 @@ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com> */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -34,10 +35,15 @@ class SpecialMIMESearch extends QueryPage { /** * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( ILoadBalancer $loadBalancer ) { + public function __construct( + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'MIMEsearch' ); $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isExpensive() { diff --git a/includes/specials/SpecialMediaStatistics.php b/includes/specials/SpecialMediaStatistics.php index 502e346a5667..476fbb8e8519 100644 --- a/includes/specials/SpecialMediaStatistics.php +++ b/includes/specials/SpecialMediaStatistics.php @@ -22,6 +22,7 @@ * @author Brian Wolff */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\ILoadBalancer; use Wikimedia\Rdbms\IResultWrapper; @@ -48,10 +49,12 @@ class SpecialMediaStatistics extends QueryPage { /** * @param MimeAnalyzer $mimeAnalyzer * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ public function __construct( MimeAnalyzer $mimeAnalyzer, - ILoadBalancer $loadBalancer + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory ) { parent::__construct( 'MediaStatistics' ); // Generally speaking there is only a small number of file types, @@ -60,6 +63,7 @@ class SpecialMediaStatistics extends QueryPage { $this->shownavigation = false; $this->mimeAnalyzer = $mimeAnalyzer; $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isExpensive() { diff --git a/includes/specials/SpecialMostCategories.php b/includes/specials/SpecialMostCategories.php index 582fde22a516..f78d65395122 100644 --- a/includes/specials/SpecialMostCategories.php +++ b/includes/specials/SpecialMostCategories.php @@ -24,6 +24,7 @@ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com> */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\ILoadBalancer; use Wikimedia\Rdbms\IResultWrapper; @@ -41,11 +42,17 @@ class SpecialMostCategories extends QueryPage { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer ) { + public function __construct( + NamespaceInfo $namespaceInfo, + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Mostcategories' ); $this->namespaceInfo = $namespaceInfo; $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isExpensive() { diff --git a/includes/specials/SpecialMostInterwikis.php b/includes/specials/SpecialMostInterwikis.php index f03157bd365c..cdd116240930 100644 --- a/includes/specials/SpecialMostInterwikis.php +++ b/includes/specials/SpecialMostInterwikis.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\ILoadBalancer; use Wikimedia\Rdbms\IResultWrapper; @@ -38,11 +39,17 @@ class SpecialMostInterwikis extends QueryPage { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer ) { + public function __construct( + NamespaceInfo $namespaceInfo, + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Mostinterwikis' ); $this->namespaceInfo = $namespaceInfo; $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isExpensive() { diff --git a/includes/specials/SpecialMostLinked.php b/includes/specials/SpecialMostLinked.php index 10477d7ad9c4..b5e1644f8b44 100644 --- a/includes/specials/SpecialMostLinked.php +++ b/includes/specials/SpecialMostLinked.php @@ -25,6 +25,7 @@ * @author Rob Church <robchur@gmail.com> */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\ILoadBalancer; use Wikimedia\Rdbms\IResultWrapper; @@ -38,10 +39,15 @@ class SpecialMostLinked extends QueryPage { /** * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( ILoadBalancer $loadBalancer ) { + public function __construct( + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Mostlinked' ); $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isExpensive() { diff --git a/includes/specials/SpecialMostLinkedCategories.php b/includes/specials/SpecialMostLinkedCategories.php index 1e29fd738350..a1accb110085 100644 --- a/includes/specials/SpecialMostLinkedCategories.php +++ b/includes/specials/SpecialMostLinkedCategories.php @@ -24,6 +24,7 @@ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com> */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\ILoadBalancer; use Wikimedia\Rdbms\IResultWrapper; @@ -37,10 +38,15 @@ class SpecialMostLinkedCategories extends QueryPage { /** * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( ILoadBalancer $loadBalancer ) { + public function __construct( + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Mostlinkedcategories' ); $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isSyndicated() { diff --git a/includes/specials/SpecialMostLinkedTemplates.php b/includes/specials/SpecialMostLinkedTemplates.php index ef1b7fc1d623..f134d4b44456 100644 --- a/includes/specials/SpecialMostLinkedTemplates.php +++ b/includes/specials/SpecialMostLinkedTemplates.php @@ -22,6 +22,7 @@ * @author Rob Church <robchur@gmail.com> */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\ILoadBalancer; use Wikimedia\Rdbms\IResultWrapper; @@ -36,10 +37,15 @@ class SpecialMostLinkedTemplates extends QueryPage { /** * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( ILoadBalancer $loadBalancer ) { + public function __construct( + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Mostlinkedtemplates' ); $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } /** diff --git a/includes/specials/SpecialMostRevisions.php b/includes/specials/SpecialMostRevisions.php index 4e9a50fd7761..776246fdc426 100644 --- a/includes/specials/SpecialMostRevisions.php +++ b/includes/specials/SpecialMostRevisions.php @@ -24,6 +24,7 @@ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com> */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; class SpecialMostRevisions extends SpecialFewestRevisions { @@ -31,9 +32,18 @@ class SpecialMostRevisions extends SpecialFewestRevisions { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer ) { - parent::__construct( $namespaceInfo, $loadBalancer ); + public function __construct( + NamespaceInfo $namespaceInfo, + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { + parent::__construct( + $namespaceInfo, + $loadBalancer, + $linkBatchFactory + ); $this->mName = 'Mostrevisions'; } diff --git a/includes/specials/SpecialShortPages.php b/includes/specials/SpecialShortPages.php index 7e0fa9ea1200..d817831ce723 100644 --- a/includes/specials/SpecialShortPages.php +++ b/includes/specials/SpecialShortPages.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\ILoadBalancer; use Wikimedia\Rdbms\IResultWrapper; @@ -39,11 +40,17 @@ class SpecialShortPages extends QueryPage { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer ) { + public function __construct( + NamespaceInfo $namespaceInfo, + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Shortpages' ); $this->namespaceInfo = $namespaceInfo; $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isSyndicated() { diff --git a/includes/specials/SpecialUncategorizedCategories.php b/includes/specials/SpecialUncategorizedCategories.php index 54d899cee3c2..230e8404c796 100644 --- a/includes/specials/SpecialUncategorizedCategories.php +++ b/includes/specials/SpecialUncategorizedCategories.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -39,9 +40,18 @@ class SpecialUncategorizedCategories extends SpecialUncategorizedPages { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer ) { - parent::__construct( $namespaceInfo, $loadBalancer ); + public function __construct( + NamespaceInfo $namespaceInfo, + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { + parent::__construct( + $namespaceInfo, + $loadBalancer, + $linkBatchFactory + ); $this->mName = 'Uncategorizedcategories'; $this->requestedNamespace = NS_CATEGORY; } diff --git a/includes/specials/SpecialUncategorizedPages.php b/includes/specials/SpecialUncategorizedPages.php index a3715bd53648..74add0bd35d4 100644 --- a/includes/specials/SpecialUncategorizedPages.php +++ b/includes/specials/SpecialUncategorizedPages.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -39,12 +40,18 @@ class SpecialUncategorizedPages extends PageQueryPage { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer ) { + public function __construct( + NamespaceInfo $namespaceInfo, + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Uncategorizedpages' ); $this->addHelpLink( 'Help:Categories' ); $this->namespaceInfo = $namespaceInfo; $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } protected function sortDescending() { diff --git a/includes/specials/SpecialUncategorizedTemplates.php b/includes/specials/SpecialUncategorizedTemplates.php index fc3c971a5712..7be1d07bd498 100644 --- a/includes/specials/SpecialUncategorizedTemplates.php +++ b/includes/specials/SpecialUncategorizedTemplates.php @@ -22,6 +22,7 @@ * @author Rob Church <robchur@gmail.com> */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -35,9 +36,18 @@ class SpecialUncategorizedTemplates extends SpecialUncategorizedPages { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer ) { - parent::__construct( $namespaceInfo, $loadBalancer ); + public function __construct( + NamespaceInfo $namespaceInfo, + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { + parent::__construct( + $namespaceInfo, + $loadBalancer, + $linkBatchFactory + ); $this->mName = 'Uncategorizedtemplates'; $this->requestedNamespace = NS_TEMPLATE; } diff --git a/includes/specials/SpecialUnusedCategories.php b/includes/specials/SpecialUnusedCategories.php index d4fb671bf765..f9ab1d49f4a9 100644 --- a/includes/specials/SpecialUnusedCategories.php +++ b/includes/specials/SpecialUnusedCategories.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -30,10 +31,15 @@ class SpecialUnusedCategories extends QueryPage { /** * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( ILoadBalancer $loadBalancer ) { + public function __construct( + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Unusedcategories' ); $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isExpensive() { diff --git a/includes/specials/SpecialWantedCategories.php b/includes/specials/SpecialWantedCategories.php index 93fe9850c7d6..a8b08b018b79 100644 --- a/includes/specials/SpecialWantedCategories.php +++ b/includes/specials/SpecialWantedCategories.php @@ -23,6 +23,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -35,10 +36,15 @@ class SpecialWantedCategories extends WantedQueryPage { /** * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( ILoadBalancer $loadBalancer ) { + public function __construct( + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Wantedcategories' ); $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function getQueryInfo() { diff --git a/includes/specials/SpecialWantedTemplates.php b/includes/specials/SpecialWantedTemplates.php index e95ecbd8c5e6..058cb7beee3d 100644 --- a/includes/specials/SpecialWantedTemplates.php +++ b/includes/specials/SpecialWantedTemplates.php @@ -26,6 +26,7 @@ * @author Danny B. */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -37,10 +38,15 @@ class SpecialWantedTemplates extends WantedQueryPage { /** * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( ILoadBalancer $loadBalancer ) { + public function __construct( + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Wantedtemplates' ); $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function getQueryInfo() { diff --git a/includes/specials/SpecialWantedfiles.php b/includes/specials/SpecialWantedfiles.php index 037222250605..12d97401cb88 100644 --- a/includes/specials/SpecialWantedfiles.php +++ b/includes/specials/SpecialWantedfiles.php @@ -24,6 +24,7 @@ * @author Soxred93 <soxred93@gmail.com> */ +use MediaWiki\Cache\LinkBatchFactory; use MediaWiki\MediaWikiServices; use Wikimedia\Rdbms\ILoadBalancer; @@ -40,8 +41,13 @@ class WantedFilesPage extends WantedQueryPage { /** * @param RepoGroup|string $repoGroup * @param ILoadBalancer|null $loadBalancer + * @param LinkBatchFactory|null $linkBatchFactory */ - public function __construct( $repoGroup, ILoadBalancer $loadBalancer = null ) { + public function __construct( + $repoGroup, + ILoadBalancer $loadBalancer = null, + LinkBatchFactory $linkBatchFactory = null + ) { parent::__construct( is_string( $repoGroup ) ? $repoGroup : 'Wantedfiles' ); // This class is extended and therefor fallback to global state - T265301 $services = MediaWikiServices::getInstance(); @@ -49,6 +55,7 @@ class WantedFilesPage extends WantedQueryPage { ? $repoGroup : $services->getRepoGroup(); $this->setDBLoadBalancer( $loadBalancer ?? $services->getDBLoadBalancer() ); + $this->setLinkBatchFactory( $linkBatchFactory ?? $services->getLinkBatchFactory() ); } protected function getPageHeader() { diff --git a/includes/specials/SpecialWantedpages.php b/includes/specials/SpecialWantedpages.php index de44eb170188..609dd6298b06 100644 --- a/includes/specials/SpecialWantedpages.php +++ b/includes/specials/SpecialWantedpages.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -32,10 +33,15 @@ class WantedPagesPage extends WantedQueryPage { /** * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ - public function __construct( ILoadBalancer $loadBalancer ) { + public function __construct( + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory + ) { parent::__construct( 'Wantedpages' ); $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function isIncludable() { diff --git a/includes/specials/SpecialWithoutInterwiki.php b/includes/specials/SpecialWithoutInterwiki.php index f7e6420f3198..1c32e0ab50e6 100644 --- a/includes/specials/SpecialWithoutInterwiki.php +++ b/includes/specials/SpecialWithoutInterwiki.php @@ -22,6 +22,7 @@ * @author Rob Church <robchur@gmail.com> */ +use MediaWiki\Cache\LinkBatchFactory; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -38,14 +39,17 @@ class SpecialWithoutInterwiki extends PageQueryPage { /** * @param NamespaceInfo $namespaceInfo * @param ILoadBalancer $loadBalancer + * @param LinkBatchFactory $linkBatchFactory */ public function __construct( NamespaceInfo $namespaceInfo, - ILoadBalancer $loadBalancer + ILoadBalancer $loadBalancer, + LinkBatchFactory $linkBatchFactory ) { parent::__construct( 'Withoutinterwiki' ); $this->namespaceInfo = $namespaceInfo; $this->setDBLoadBalancer( $loadBalancer ); + $this->setLinkBatchFactory( $linkBatchFactory ); } public function execute( $par ) { diff --git a/tests/phpunit/includes/specials/SpecialMIMESearchTest.php b/tests/phpunit/includes/specials/SpecialMIMESearchTest.php index c253f2b3aacd..e92586dadc6a 100644 --- a/tests/phpunit/includes/specials/SpecialMIMESearchTest.php +++ b/tests/phpunit/includes/specials/SpecialMIMESearchTest.php @@ -12,8 +12,10 @@ class SpecialMIMESearchTest extends MediaWikiIntegrationTestCase { private $page; protected function setUp() : void { + $services = MediaWikiServices::getInstance(); $this->page = new SpecialMIMESearch( - MediaWikiServices::getInstance()->getDBLoadBalancer() + $services->getDBLoadBalancer(), + $services->getLinkBatchFactory() ); $context = new RequestContext(); $context->setTitle( Title::makeTitle( NS_SPECIAL, 'MIMESearch' ) ); diff --git a/tests/phpunit/includes/specials/SpecialShortPagesTest.php b/tests/phpunit/includes/specials/SpecialShortPagesTest.php index a746d268d019..4392e5ebdbcf 100644 --- a/tests/phpunit/includes/specials/SpecialShortPagesTest.php +++ b/tests/phpunit/includes/specials/SpecialShortPagesTest.php @@ -27,7 +27,8 @@ class SpecialShortPagesTest extends MediaWikiIntegrationTestCase { $services = MediaWikiServices::getInstance(); $page = new SpecialShortPages( $services->getNamespaceInfo(), - $services->getDBLoadBalancer() + $services->getDBLoadBalancer(), + $services->getLinkBatchFactory() ); $queryInfo = $page->getQueryInfo(); diff --git a/tests/phpunit/includes/specials/SpecialUncategorizedCategoriesTest.php b/tests/phpunit/includes/specials/SpecialUncategorizedCategoriesTest.php index 5e37ee8dedef..ced385a37680 100644 --- a/tests/phpunit/includes/specials/SpecialUncategorizedCategoriesTest.php +++ b/tests/phpunit/includes/specials/SpecialUncategorizedCategoriesTest.php @@ -17,7 +17,8 @@ class SpecialUncategorizedCategoriesTest extends MediaWikiIntegrationTestCase { $services = MediaWikiServices::getInstance(); $special = new SpecialUncategorizedCategories( $services->getNamespaceInfo(), - $services->getDBLoadBalancer() + $services->getDBLoadBalancer(), + $services->getLinkBatchFactory() ); $special->setContext( $mockContext ); $this->assertEquals( [ |