MediaWiki  master
SpecialUnwatchedPages.php
Go to the documentation of this file.
1 <?php
30 
37 
38  function __construct( $name = 'Unwatchedpages' ) {
39  parent::__construct( $name, 'unwatchedpages' );
40  }
41 
42  public function isExpensive() {
43  return true;
44  }
45 
46  function isSyndicated() {
47  return false;
48  }
49 
56  public function preprocessResults( $db, $res ) {
57  if ( !$res->numRows() ) {
58  return;
59  }
60 
61  $batch = new LinkBatch();
62  foreach ( $res as $row ) {
63  $batch->add( $row->namespace, $row->title );
64  }
65  $batch->execute();
66 
67  $res->seek( 0 );
68  }
69 
70  public function getQueryInfo() {
71  $dbr = wfGetDB( DB_REPLICA );
72  return [
73  'tables' => [ 'page', 'watchlist' ],
74  'fields' => [
75  'namespace' => 'page_namespace',
76  'title' => 'page_title',
77  'value' => 'page_namespace'
78  ],
79  'conds' => [
80  'wl_title IS NULL',
81  'page_is_redirect' => 0,
82  'page_namespace != ' . $dbr->addQuotes( NS_MEDIAWIKI ),
83  ],
84  'join_conds' => [ 'watchlist' => [
85  'LEFT JOIN', [ 'wl_title = page_title',
86  'wl_namespace = page_namespace' ] ] ]
87  ];
88  }
89 
90  function sortDescending() {
91  return false;
92  }
93 
94  function getOrderFields() {
95  return [ 'page_namespace', 'page_title' ];
96  }
97 
102  public function execute( $par ) {
103  parent::execute( $par );
104  $this->getOutput()->addModules( 'mediawiki.special.unwatchedPages' );
105  $this->addHelpLink( 'Help:Watchlist' );
106  }
107 
113  function formatResult( $skin, $result ) {
114  $nt = Title::makeTitleSafe( $result->namespace, $result->title );
115  if ( !$nt ) {
116  return Html::element( 'span', [ 'class' => 'mw-invalidtitle' ],
117  Linker::getInvalidTitleDescription( $this->getContext(), $result->namespace, $result->title ) );
118  }
119 
120  $text = MediaWikiServices::getInstance()->getContentLanguage()->
121  convert( htmlspecialchars( $nt->getPrefixedText() ) );
122 
123  $linkRenderer = $this->getLinkRenderer();
124 
125  $plink = $linkRenderer->makeKnownLink( $nt, new HtmlArmor( $text ) );
126  $wlink = $linkRenderer->makeKnownLink(
127  $nt,
128  $this->msg( 'watch' )->text(),
129  [ 'class' => 'mw-watch-link' ],
130  [ 'action' => 'watch' ]
131  );
132 
133  return $this->getLanguage()->specialList( $plink, $wlink );
134  }
135 
136  protected function getGroupName() {
137  return 'maintenance';
138  }
139 }
static element( $element, $attribs=[], $contents='')
Identical to rawElement(), but HTML-escapes $contents (like Xml::element()).
Definition: Html.php:231
getContext()
Gets the context this SpecialPage is executed in.
A special page that displays a list of pages that are not on anyones watchlist.
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
preprocessResults( $db, $res)
Pre-cache page existence to speed up link generation.
addHelpLink( $to, $overrideBaseUrl=false)
Adds help link with an icon via page indicators.
getOutput()
Get the OutputPage being used for this instance.
This is a class for doing query pages; since they&#39;re almost all the same, we factor out some of the f...
Definition: QueryPage.php:36
Class representing a list of titles The execute() method checks them all for existence and adds them ...
Definition: LinkBatch.php:34
msg( $key,... $params)
Wrapper around wfMessage that sets the current context.
const NS_MEDIAWIKI
Definition: Defines.php:68
static makeTitleSafe( $ns, $title, $fragment='', $interwiki='')
Create a new Title from a namespace index and a DB key.
Definition: Title.php:612
getLanguage()
Shortcut to get user&#39;s language.
static getInvalidTitleDescription(IContextSource $context, $namespace, $title)
Get a message saying that an invalid title was encountered.
Definition: Linker.php:187
const DB_REPLICA
Definition: defines.php:25
__construct( $name='Unwatchedpages')
MediaWiki Linker LinkRenderer null $linkRenderer
Definition: SpecialPage.php:67