From 320ffd39cfc2677934ba66096f8730a6a04c4ff1 Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Mon, 23 May 2016 19:16:27 -0700 Subject: [PATCH] SpecialCategories: Use LinkRenderer instead of MediaWikiPageLinkRenderer And use TitleValue in one place that we can. While it is technically not equivalent since Title::makeTitleSafe() can return null, since it is coming directly out of the database, it should be safe to not require validation. Change-Id: I97bc0fd8e86f212414487ec88fbb2d7600bdacb6 --- includes/specials/SpecialCategories.php | 39 +++------------------- includes/specials/pagers/CategoryPager.php | 11 +++--- 2 files changed, 11 insertions(+), 39 deletions(-) diff --git a/includes/specials/SpecialCategories.php b/includes/specials/SpecialCategories.php index d7d338ccf9..84d1f7c7fd 100644 --- a/includes/specials/SpecialCategories.php +++ b/includes/specials/SpecialCategories.php @@ -26,11 +26,6 @@ */ class SpecialCategories extends SpecialPage { - /** - * @var PageLinkRenderer - */ - protected $linkRenderer = null; - public function __construct() { parent::__construct( 'Categories' ); @@ -39,42 +34,18 @@ class SpecialCategories extends SpecialPage { // using the initServices() method. } - /** - * Initialize or override the PageLinkRenderer SpecialCategories collaborates with. - * Useful mainly for testing. - * - * @todo the pager should also be injected, and de-coupled from the rendering logic. - * - * @param PageLinkRenderer $linkRenderer - */ - public function setPageLinkRenderer( - PageLinkRenderer $linkRenderer - ) { - $this->linkRenderer = $linkRenderer; - } - - /** - * Initialize any services we'll need (unless it has already been provided via a setter). - * This allows for dependency injection even though we don't control object creation. - */ - private function initServices() { - if ( !$this->linkRenderer ) { - $lang = $this->getContext()->getLanguage(); - $titleFormatter = new MediaWikiTitleCodec( $lang, GenderCache::singleton() ); - $this->linkRenderer = new MediaWikiPageLinkRenderer( $titleFormatter ); - } - } - public function execute( $par ) { - $this->initServices(); - $this->setHeaders(); $this->outputHeader(); $this->getOutput()->allowClickjacking(); $from = $this->getRequest()->getText( 'from', $par ); - $cap = new CategoryPager( $this->getContext(), $from, $this->linkRenderer ); + $cap = new CategoryPager( + $this->getContext(), + $from, + $this->getLinkRenderer() + ); $cap->doQuery(); $this->getOutput()->addHTML( diff --git a/includes/specials/pagers/CategoryPager.php b/includes/specials/pagers/CategoryPager.php index cba4952b6f..b78fed89d5 100644 --- a/includes/specials/pagers/CategoryPager.php +++ b/includes/specials/pagers/CategoryPager.php @@ -18,6 +18,7 @@ * @file * @ingroup Pager */ +use MediaWiki\Linker\LinkRenderer; /** * @ingroup Pager @@ -25,16 +26,16 @@ class CategoryPager extends AlphabeticPager { /** - * @var PageLinkRenderer + * @var LinkRenderer */ protected $linkRenderer; /** * @param IContextSource $context * @param string $from - * @param PageLinkRenderer $linkRenderer + * @param LinkRenderer $linkRenderer */ - public function __construct( IContextSource $context, $from, PageLinkRenderer $linkRenderer + public function __construct( IContextSource $context, $from, LinkRenderer $linkRenderer ) { parent::__construct( $context ); $from = str_replace( ' ', '_', $from ); @@ -74,7 +75,7 @@ class CategoryPager extends AlphabeticPager { $this->mResult->rewind(); foreach ( $this->mResult as $row ) { - $batch->addObj( Title::makeTitleSafe( NS_CATEGORY, $row->cat_title ) ); + $batch->addObj( new TitleValue( NS_CATEGORY, $row->cat_title ) ); } $batch->execute(); $this->mResult->rewind(); @@ -85,7 +86,7 @@ class CategoryPager extends AlphabeticPager { function formatRow( $result ) { $title = new TitleValue( NS_CATEGORY, $result->cat_title ); $text = $title->getText(); - $link = $this->linkRenderer->renderHtmlLink( $title, $text ); + $link = $this->linkRenderer->makeLink( $title, $text ); $count = $this->msg( 'nmembers' )->numParams( $result->cat_pages )->escaped(); return Html::rawElement( 'li', null, $this->getLanguage()->specialList( $link, $count ) ) . "\n"; -- 2.20.1