aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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( [