From e3c9107089c261d538d2fe161e2ec2446379c6f6 Mon Sep 17 00:00:00 2001 From: Umherirrender Date: Mon, 19 Aug 2019 23:41:04 +0200 Subject: [PATCH] Use the existing link renderer in the special page pagers Use SpecialPage::getLinkRenderer and pass it to the pagers Since I082152b64141f1a9a4085bba23fe81a99ec8d886 it is a property in the IndexPager and can be used by getLinkRenderer Change-Id: I2be8a8b9f2b0b8c04fe9e18aa1959987fc125f50 --- includes/specials/SpecialAllMessages.php | 2 +- includes/specials/SpecialContributions.php | 2 +- .../specials/SpecialDeletedContributions.php | 3 ++- includes/specials/SpecialListFiles.php | 3 ++- includes/specials/SpecialNewimages.php | 2 +- .../specials/pagers/AllMessagesTablePager.php | 8 +++++-- includes/specials/pagers/ContribsPager.php | 7 +++++-- .../specials/pagers/DeletedContribsPager.php | 7 +++++-- includes/specials/pagers/ImageListPager.php | 5 +++-- includes/specials/pagers/NewFilesPager.php | 8 +++++-- .../includes/specials/ContribsPagerTest.php | 11 +++++++--- .../includes/specials/ImageListPagerTest.php | 6 +++++- .../specials/pagers/BlockListPagerTest.php | 21 ++++++++++++++----- 13 files changed, 61 insertions(+), 24 deletions(-) diff --git a/includes/specials/SpecialAllMessages.php b/includes/specials/SpecialAllMessages.php index f6b8b90522..4c9c428af6 100644 --- a/includes/specials/SpecialAllMessages.php +++ b/includes/specials/SpecialAllMessages.php @@ -64,7 +64,7 @@ class SpecialAllMessages extends SpecialPage { $opts->fetchValuesFromRequest( $this->getRequest() ); $opts->validateIntBounds( 'limit', 0, 5000 ); - $pager = new AllMessagesTablePager( $this->getContext(), $opts ); + $pager = new AllMessagesTablePager( $this->getContext(), $opts, $this->getLinkRenderer() ); $formDescriptor = [ 'prefix' => [ diff --git a/includes/specials/SpecialContributions.php b/includes/specials/SpecialContributions.php index 1753831a6c..4599b22e4a 100644 --- a/includes/specials/SpecialContributions.php +++ b/includes/specials/SpecialContributions.php @@ -213,7 +213,7 @@ class SpecialContributions extends IncludableSpecialPage { 'hideMinor' => $this->opts['hideMinor'], 'nsInvert' => $this->opts['nsInvert'], 'associated' => $this->opts['associated'], - ] ); + ], $this->getLinkRenderer() ); if ( IP::isValidRange( $target ) && !$pager->isQueryableRange( $target ) ) { // Valid range, but outside CIDR limit. diff --git a/includes/specials/SpecialDeletedContributions.php b/includes/specials/SpecialDeletedContributions.php index 902bfd7853..e9bf6a2372 100644 --- a/includes/specials/SpecialDeletedContributions.php +++ b/includes/specials/SpecialDeletedContributions.php @@ -93,7 +93,8 @@ class DeletedContributionsPage extends SpecialPage { $this->getForm(); - $pager = new DeletedContribsPager( $this->getContext(), $target, $opts->getValue( 'namespace' ) ); + $pager = new DeletedContribsPager( $this->getContext(), $target, $opts->getValue( 'namespace' ), + $this->getLinkRenderer() ); if ( !$pager->getNumRows() ) { $out->addWikiMsg( 'nocontribs' ); diff --git a/includes/specials/SpecialListFiles.php b/includes/specials/SpecialListFiles.php index 94f4753f9a..02a468b098 100644 --- a/includes/specials/SpecialListFiles.php +++ b/includes/specials/SpecialListFiles.php @@ -46,7 +46,8 @@ class SpecialListFiles extends IncludableSpecialPage { $userName, $search, $this->including(), - $showAll + $showAll, + $this->getLinkRenderer() ); $out = $this->getOutput(); diff --git a/includes/specials/SpecialNewimages.php b/includes/specials/SpecialNewimages.php index ecbbfd5fc9..29e7789e06 100644 --- a/includes/specials/SpecialNewimages.php +++ b/includes/specials/SpecialNewimages.php @@ -102,7 +102,7 @@ class SpecialNewFiles extends IncludableSpecialPage { $this->buildForm( $context ); } - $pager = new NewFilesPager( $context, $opts ); + $pager = new NewFilesPager( $context, $opts, $this->getLinkRenderer() ); $out->addHTML( $pager->getBody() ); if ( !$this->including() ) { diff --git a/includes/specials/pagers/AllMessagesTablePager.php b/includes/specials/pagers/AllMessagesTablePager.php index bd27919819..c804b091a3 100644 --- a/includes/specials/pagers/AllMessagesTablePager.php +++ b/includes/specials/pagers/AllMessagesTablePager.php @@ -20,6 +20,7 @@ */ use MediaWiki\MediaWikiServices; +use MediaWiki\Linker\LinkRenderer; use Wikimedia\Rdbms\FakeResultWrapper; /** @@ -58,9 +59,12 @@ class AllMessagesTablePager extends TablePager { /** * @param IContextSource|null $context * @param FormOptions $opts + * @param LinkRenderer $linkRenderer */ - public function __construct( IContextSource $context = null, FormOptions $opts ) { - parent::__construct( $context ); + public function __construct( IContextSource $context = null, FormOptions $opts, + LinkRenderer $linkRenderer + ) { + parent::__construct( $context, $linkRenderer ); $this->mIndexField = 'am_title'; // FIXME: Why does this need to be set to DIR_DESCENDING to produce ascending ordering? diff --git a/includes/specials/pagers/ContribsPager.php b/includes/specials/pagers/ContribsPager.php index 152f56b5dc..d76dfb8825 100644 --- a/includes/specials/pagers/ContribsPager.php +++ b/includes/specials/pagers/ContribsPager.php @@ -24,6 +24,7 @@ * @ingroup Pager */ use MediaWiki\MediaWikiServices; +use MediaWiki\Linker\LinkRenderer; use MediaWiki\Storage\RevisionRecord; use Wikimedia\Rdbms\IResultWrapper; use Wikimedia\Rdbms\FakeResultWrapper; @@ -97,7 +98,9 @@ class ContribsPager extends RangeChronologicalPager { */ private $templateParser; - public function __construct( IContextSource $context, array $options ) { + public function __construct( IContextSource $context, array $options, + LinkRenderer $linkRenderer = null + ) { // Set ->target before calling parent::__construct() so // parent can call $this->getIndexField() and get the right result. Set // the rest too just to keep things simple. @@ -112,7 +115,7 @@ class ContribsPager extends RangeChronologicalPager { $this->newOnly = !empty( $options['newOnly'] ); $this->hideMinor = !empty( $options['hideMinor'] ); - parent::__construct( $context ); + parent::__construct( $context, $linkRenderer ); $msgs = [ 'diff', diff --git a/includes/specials/pagers/DeletedContribsPager.php b/includes/specials/pagers/DeletedContribsPager.php index 7dbfae80d9..cd6294d67f 100644 --- a/includes/specials/pagers/DeletedContribsPager.php +++ b/includes/specials/pagers/DeletedContribsPager.php @@ -22,6 +22,7 @@ /** * @ingroup Pager */ +use MediaWiki\Linker\LinkRenderer; use MediaWiki\MediaWikiServices; use MediaWiki\Storage\RevisionRecord; use Wikimedia\Rdbms\IDatabase; @@ -60,8 +61,10 @@ class DeletedContribsPager extends IndexPager { */ protected $mNavigationBar; - public function __construct( IContextSource $context, $target, $namespace = false ) { - parent::__construct( $context ); + public function __construct( IContextSource $context, $target, $namespace = false, + LinkRenderer $linkRenderer + ) { + parent::__construct( $context, $linkRenderer ); $msgs = [ 'deletionlog', 'undeleteviewlink', 'diff' ]; foreach ( $msgs as $msg ) { $this->messages[$msg] = $this->msg( $msg )->text(); diff --git a/includes/specials/pagers/ImageListPager.php b/includes/specials/pagers/ImageListPager.php index 81b7808829..5de3ecb555 100644 --- a/includes/specials/pagers/ImageListPager.php +++ b/includes/specials/pagers/ImageListPager.php @@ -22,6 +22,7 @@ /** * @ingroup Pager */ +use MediaWiki\Linker\LinkRenderer; use MediaWiki\MediaWikiServices; use Wikimedia\Rdbms\IResultWrapper; use Wikimedia\Rdbms\FakeResultWrapper; @@ -51,7 +52,7 @@ class ImageListPager extends TablePager { protected $mTableName = 'image'; public function __construct( IContextSource $context, $userName = null, $search = '', - $including = false, $showAll = false + $including = false, $showAll = false, LinkRenderer $linkRenderer ) { $this->setContext( $context ); @@ -96,7 +97,7 @@ class ImageListPager extends TablePager { $this->mDefaultDirection = IndexPager::DIR_DESCENDING; } - parent::__construct(); + parent::__construct( $context, $linkRenderer ); } /** diff --git a/includes/specials/pagers/NewFilesPager.php b/includes/specials/pagers/NewFilesPager.php index 2cb2b4aaad..f1b0b9ad32 100644 --- a/includes/specials/pagers/NewFilesPager.php +++ b/includes/specials/pagers/NewFilesPager.php @@ -22,6 +22,7 @@ /** * @ingroup Pager */ +use MediaWiki\Linker\LinkRenderer; use MediaWiki\MediaWikiServices; class NewFilesPager extends RangeChronologicalPager { @@ -39,9 +40,12 @@ class NewFilesPager extends RangeChronologicalPager { /** * @param IContextSource $context * @param FormOptions $opts + * @param LinkRenderer $linkRenderer */ - public function __construct( IContextSource $context, FormOptions $opts ) { - parent::__construct( $context ); + public function __construct( IContextSource $context, FormOptions $opts, + LinkRenderer $linkRenderer + ) { + parent::__construct( $context, $linkRenderer ); $this->opts = $opts; $this->setLimit( $opts->getValue( 'limit' ) ); diff --git a/tests/phpunit/includes/specials/ContribsPagerTest.php b/tests/phpunit/includes/specials/ContribsPagerTest.php index e881611dbb..338a86ed58 100644 --- a/tests/phpunit/includes/specials/ContribsPagerTest.php +++ b/tests/phpunit/includes/specials/ContribsPagerTest.php @@ -1,5 +1,6 @@ linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); $context = new RequestContext(); $this->pager = new ContribsPager( $context, [ 'start' => '2017-01-01', 'end' => '2017-02-02', - ] ); + ], $this->linkRenderer ); parent::setUp(); } @@ -127,7 +132,7 @@ class ContribsPagerTest extends MediaWikiTestCase { $pager = new ContribsPager( new RequestContext(), [ 'start' => '', 'end' => '', - ] ); + ], $this->linkRenderer ); /** @var ContribsPager $pager */ $pager = TestingAccessWrapper::newFromObject( $pager ); @@ -150,7 +155,7 @@ class ContribsPagerTest extends MediaWikiTestCase { 'target' => '116.17.184.5/32', 'start' => '', 'end' => '', - ] ); + ], $this->linkRenderer ); /** @var ContribsPager $pager */ $pager = TestingAccessWrapper::newFromObject( $pager ); diff --git a/tests/phpunit/includes/specials/ImageListPagerTest.php b/tests/phpunit/includes/specials/ImageListPagerTest.php index 10c6d04c9e..2f7b40d0a1 100644 --- a/tests/phpunit/includes/specials/ImageListPagerTest.php +++ b/tests/phpunit/includes/specials/ImageListPagerTest.php @@ -1,4 +1,7 @@ getLinkRenderer() ); $page->formatValue( 'invalid_field', 'invalid_value' ); } } diff --git a/tests/phpunit/includes/specials/pagers/BlockListPagerTest.php b/tests/phpunit/includes/specials/pagers/BlockListPagerTest.php index 37c29abbc7..a0291509cb 100644 --- a/tests/phpunit/includes/specials/pagers/BlockListPagerTest.php +++ b/tests/phpunit/includes/specials/pagers/BlockListPagerTest.php @@ -12,6 +12,17 @@ use Wikimedia\TestingAccessWrapper; */ class BlockListPagerTest extends MediaWikiTestCase { + /** + * @var LinkRenderer + */ + private $linkRenderer; + + protected function setUp() { + parent::setUp(); + + $this->linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + } + /** * @covers ::formatValue * @dataProvider formatValueEmptyProvider @@ -30,7 +41,7 @@ class BlockListPagerTest extends MediaWikiTestCase { $expected = $expected ?? MWTimestamp::getInstance()->format( 'H:i, j F Y' ); $row = $row ?: new stdClass; - $pager = new BlockListPager( new SpecialPage(), [] ); + $pager = new BlockListPager( new SpecialPage(), [], $this->linkRenderer ); $wrappedPager = TestingAccessWrapper::newFromObject( $pager ); $wrappedPager->mCurrentRow = $row; @@ -118,7 +129,7 @@ class BlockListPagerTest extends MediaWikiTestCase { 'wgScript' => '/w/index.php', ] ); - $pager = new BlockListPager( new SpecialPage(), [] ); + $pager = new BlockListPager( new SpecialPage(), [], $this->linkRenderer ); $row = (object)[ 'ipb_id' => 0, @@ -198,7 +209,7 @@ class BlockListPagerTest extends MediaWikiTestCase { 'ipb_sitewide' => 1, 'ipb_timestamp' => $this->db->timestamp( wfTimestamp( TS_MW ) ), ]; - $pager = new BlockListPager( new SpecialPage(), [] ); + $pager = new BlockListPager( new SpecialPage(), [], $this->linkRenderer ); $pager->preprocessResults( [ $row ] ); foreach ( $links as $link ) { @@ -211,7 +222,7 @@ class BlockListPagerTest extends MediaWikiTestCase { 'by_user_name' => 'Admin', 'ipb_sitewide' => 1, ]; - $pager = new BlockListPager( new SpecialPage(), [] ); + $pager = new BlockListPager( new SpecialPage(), [], $this->linkRenderer ); $pager->preprocessResults( [ $row ] ); $this->assertObjectNotHasAttribute( 'ipb_restrictions', $row ); @@ -237,7 +248,7 @@ class BlockListPagerTest extends MediaWikiTestCase { $result = $this->db->select( 'ipblocks', [ '*' ], [ 'ipb_id' => $block->getId() ] ); - $pager = new BlockListPager( new SpecialPage(), [] ); + $pager = new BlockListPager( new SpecialPage(), [], $this->linkRenderer ); $pager->preprocessResults( $result ); $wrappedPager = TestingAccessWrapper::newFromObject( $pager ); -- 2.20.1