Merge "Convert Special:DeletedContributions to use OOUI."
[lhc/web/wiklou.git] / includes / specials / SpecialCategories.php
index 5314f63..84d1f7c 100644 (file)
  */
 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(
@@ -92,109 +63,3 @@ class SpecialCategories extends SpecialPage {
                return 'pages';
        }
 }
-
-/**
- * TODO: Allow sorting by count.  We need to have a unique index to do this
- * properly.
- *
- * @ingroup SpecialPage Pager
- */
-class CategoryPager extends AlphabeticPager {
-
-       /**
-        * @var PageLinkRenderer
-        */
-       protected $linkRenderer;
-
-       /**
-        * @param IContextSource $context
-        * @param string $from
-        * @param PageLinkRenderer $linkRenderer
-        */
-       public function __construct( IContextSource $context, $from, PageLinkRenderer $linkRenderer
-       ) {
-               parent::__construct( $context );
-               $from = str_replace( ' ', '_', $from );
-               if ( $from !== '' ) {
-                       $from = Title::capitalize( $from, NS_CATEGORY );
-                       $this->setOffset( $from );
-                       $this->setIncludeOffset( true );
-               }
-
-               $this->linkRenderer = $linkRenderer;
-       }
-
-       function getQueryInfo() {
-               return [
-                       'tables' => [ 'category' ],
-                       'fields' => [ 'cat_title', 'cat_pages' ],
-                       'conds' => [ 'cat_pages > 0' ],
-                       'options' => [ 'USE INDEX' => 'cat_title' ],
-               ];
-       }
-
-       function getIndexField() {
-#              return array( 'abc' => 'cat_title', 'count' => 'cat_pages' );
-               return 'cat_title';
-       }
-
-       function getDefaultQuery() {
-               parent::getDefaultQuery();
-               unset( $this->mDefaultQuery['from'] );
-
-               return $this->mDefaultQuery;
-       }
-
-#      protected function getOrderTypeMessages() {
-#              return array( 'abc' => 'special-categories-sort-abc',
-#                      'count' => 'special-categories-sort-count' );
-#      }
-
-       protected function getDefaultDirections() {
-#              return array( 'abc' => false, 'count' => true );
-               return false;
-       }
-
-       /* Override getBody to apply LinksBatch on resultset before actually outputting anything. */
-       public function getBody() {
-               $batch = new LinkBatch;
-
-               $this->mResult->rewind();
-
-               foreach ( $this->mResult as $row ) {
-                       $batch->addObj( Title::makeTitleSafe( NS_CATEGORY, $row->cat_title ) );
-               }
-               $batch->execute();
-               $this->mResult->rewind();
-
-               return parent::getBody();
-       }
-
-       function formatRow( $result ) {
-               $title = new TitleValue( NS_CATEGORY, $result->cat_title );
-               $text = $title->getText();
-               $link = $this->linkRenderer->renderHtmlLink( $title, $text );
-
-               $count = $this->msg( 'nmembers' )->numParams( $result->cat_pages )->escaped();
-               return Html::rawElement( 'li', null, $this->getLanguage()->specialList( $link, $count ) ) . "\n";
-       }
-
-       public function getStartForm( $from ) {
-               return Xml::tags(
-                       'form',
-                       [ 'method' => 'get', 'action' => wfScript() ],
-                       Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
-                               Xml::fieldset(
-                                       $this->msg( 'categories' )->text(),
-                                       Xml::inputLabel(
-                                               $this->msg( 'categoriesfrom' )->text(),
-                                               'from', 'from', 20, $from, [ 'class' => 'mw-ui-input-inline' ] ) .
-                                               ' ' .
-                                               Html::submitButton(
-                                                       $this->msg( 'categories-submit' )->text(),
-                                                       [], [ 'mw-ui-progressive' ]
-                                               )
-                               )
-               );
-       }
-}