aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUmherirrender <umherirrender_de.wp@web.de>2020-10-27 21:29:28 +0100
committerUmherirrender <umherirrender_de.wp@web.de>2020-11-02 14:51:56 +0100
commit4829c65848396165a62c10b7100a70c30152c09e (patch)
tree3c02962f594fe3b6550f8284b32d782ee7447b5b
parentba15eff1f6c4dead23acd7e238a619c155381b04 (diff)
downloadmediawikicore-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
-rw-r--r--includes/specialpage/QueryPage.php30
-rw-r--r--includes/specialpage/SpecialPageFactory.php26
-rw-r--r--includes/specials/SpecialAncientPages.php9
-rw-r--r--includes/specials/SpecialBrokenRedirects.php6
-rw-r--r--includes/specials/SpecialDeadendPages.php9
-rw-r--r--includes/specials/SpecialFewestRevisions.php9
-rw-r--r--includes/specials/SpecialLinkSearch.php8
-rw-r--r--includes/specials/SpecialListDuplicatedFiles.php8
-rw-r--r--includes/specials/SpecialLonelyPages.php9
-rw-r--r--includes/specials/SpecialLongPages.php14
-rw-r--r--includes/specials/SpecialMIMESearch.php8
-rw-r--r--includes/specials/SpecialMediaStatistics.php6
-rw-r--r--includes/specials/SpecialMostCategories.php9
-rw-r--r--includes/specials/SpecialMostInterwikis.php9
-rw-r--r--includes/specials/SpecialMostLinked.php8
-rw-r--r--includes/specials/SpecialMostLinkedCategories.php8
-rw-r--r--includes/specials/SpecialMostLinkedTemplates.php8
-rw-r--r--includes/specials/SpecialMostRevisions.php14
-rw-r--r--includes/specials/SpecialShortPages.php9
-rw-r--r--includes/specials/SpecialUncategorizedCategories.php14
-rw-r--r--includes/specials/SpecialUncategorizedPages.php9
-rw-r--r--includes/specials/SpecialUncategorizedTemplates.php14
-rw-r--r--includes/specials/SpecialUnusedCategories.php8
-rw-r--r--includes/specials/SpecialWantedCategories.php8
-rw-r--r--includes/specials/SpecialWantedTemplates.php8
-rw-r--r--includes/specials/SpecialWantedfiles.php9
-rw-r--r--includes/specials/SpecialWantedpages.php8
-rw-r--r--includes/specials/SpecialWithoutInterwiki.php6
-rw-r--r--tests/phpunit/includes/specials/SpecialMIMESearchTest.php4
-rw-r--r--tests/phpunit/includes/specials/SpecialShortPagesTest.php3
-rw-r--r--tests/phpunit/includes/specials/SpecialUncategorizedCategoriesTest.php3
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( [