MediaWiki  master
CategoryPager.php
Go to the documentation of this file.
1 <?php
22 
27 
34  ) {
35  parent::__construct( $context, $linkRenderer );
36  $from = str_replace( ' ', '_', $from );
37  if ( $from !== '' ) {
38  $from = Title::capitalize( $from, NS_CATEGORY );
39  $this->setOffset( $from );
40  $this->setIncludeOffset( true );
41  }
42  }
43 
44  function getQueryInfo() {
45  return [
46  'tables' => [ 'category' ],
47  'fields' => [ 'cat_title', 'cat_pages' ],
48  'options' => [ 'USE INDEX' => 'cat_title' ],
49  ];
50  }
51 
52  function getIndexField() {
53  return 'cat_title';
54  }
55 
56  function getDefaultQuery() {
57  parent::getDefaultQuery();
58  unset( $this->mDefaultQuery['from'] );
59 
60  return $this->mDefaultQuery;
61  }
62 
63  /* Override getBody to apply LinksBatch on resultset before actually outputting anything. */
64  public function getBody() {
65  $batch = new LinkBatch;
66 
67  $this->mResult->rewind();
68 
69  foreach ( $this->mResult as $row ) {
70  $batch->addObj( new TitleValue( NS_CATEGORY, $row->cat_title ) );
71  }
72  $batch->execute();
73  $this->mResult->rewind();
74 
75  return parent::getBody();
76  }
77 
78  function formatRow( $result ) {
79  $title = new TitleValue( NS_CATEGORY, $result->cat_title );
80  $text = $title->getText();
81  $link = $this->getLinkRenderer()->makeLink( $title, $text );
82 
83  $count = $this->msg( 'nmembers' )->numParams( $result->cat_pages )->escaped();
84  return Html::rawElement( 'li', null, $this->getLanguage()->specialList( $link, $count ) ) . "\n";
85  }
86 
87  public function getStartForm( $from ) {
88  $formDescriptor = [
89  'from' => [
90  'type' => 'title',
91  'namespace' => NS_CATEGORY,
92  'relative' => true,
93  'label-message' => 'categoriesfrom',
94  'name' => 'from',
95  'id' => 'from',
96  'size' => 20,
97  'default' => $from,
98  ],
99  ];
100 
101  $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() )
102  ->setSubmitTextMsg( 'categories-submit' )
103  ->setWrapperLegendMsg( 'categories' )
104  ->setMethod( 'get' );
105  return $htmlForm->prepareForm()->getHTML( false );
106  }
107 
108 }
setOffset( $offset)
Set the offset from an other source than the request.
Definition: IndexPager.php:302
getStartForm( $from)
static rawElement( $element, $attribs=[], $contents='')
Returns an HTML element in a string.
Definition: Html.php:209
IndexPager with an alphabetic list and a formatted navigation bar.
Represents a page (or page fragment) title within MediaWiki.
Definition: TitleValue.php:37
LinkRenderer $linkRenderer
Definition: IndexPager.php:162
IContextSource $context
__construct(IContextSource $context, $from, LinkRenderer $linkRenderer)
addObj( $linkTarget)
Definition: LinkBatch.php:71
Class representing a list of titles The execute() method checks them all for existence and adds them ...
Definition: LinkBatch.php:34
static factory( $displayFormat,... $arguments)
Construct a HTMLForm object for given display type.
Definition: HTMLForm.php:307
Class that generates HTML links for pages.
getContext()
Get the base IContextSource object.
const NS_CATEGORY
Definition: Defines.php:74
msg( $key,... $params)
Get a Message object with context set Parameters are the same as wfMessage()
static capitalize( $text, $ns=NS_MAIN)
Capitalize a text string for a title if it belongs to a namespace that capitalizes.
Definition: Title.php:3311
setIncludeOffset( $include)
Set whether a row matching exactly the offset should be also included in the result or not...
Definition: IndexPager.php:340
formatRow( $result)
array $mDefaultQuery
Definition: IndexPager.php:144