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->doQuery(); $this->getOutput()->addHTML( Html::openElement( 'div', [ 'class' => 'mw-spcontent' ] ) . $this->msg( 'categoriespagetext', $cap->getNumRows() )->parseAsBlock() . $cap->getStartForm( $from ) . $cap->getNavigationBar() . '' . $cap->getNavigationBar() . Html::closeElement( 'div' ) ); } protected function getGroupName() { return 'pages'; } }