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 }
SpecialPage\msg
msg( $key,... $params)
Wrapper around wfMessage that sets the current context.
Definition: SpecialPage.php:792
SpecialUnwatchedPages
A special page that displays a list of pages that are not on anyones watchlist.
Definition: SpecialUnwatchedPages.php:36
HtmlArmor
Marks HTML that shouldn't be escaped.
Definition: HtmlArmor.php:28
LinkBatch
Class representing a list of titles The execute() method checks them all for existence and adds them ...
Definition: LinkBatch.php:35
SpecialPage\getOutput
getOutput()
Get the OutputPage being used for this instance.
Definition: SpecialPage.php:719
MediaWiki\MediaWikiServices
MediaWikiServices is the service locator for the application scope of MediaWiki.
Definition: MediaWikiServices.php:130
SpecialPage\getLanguage
getLanguage()
Shortcut to get user's language.
Definition: SpecialPage.php:749
Linker\getInvalidTitleDescription
static getInvalidTitleDescription(IContextSource $context, $namespace, $title)
Get a message saying that an invalid title was encountered.
Definition: Linker.php:188
$res
$res
Definition: testCompression.php:54
QueryPage
This is a class for doing query pages; since they're almost all the same, we factor out some of the f...
Definition: QueryPage.php:36
SpecialUnwatchedPages\preprocessResults
preprocessResults( $db, $res)
Pre-cache page existence to speed up link generation.
Definition: SpecialUnwatchedPages.php:56
Wikimedia\Rdbms\IDatabase
Basic database interface for live and lazy-loaded relation database handles.
Definition: IDatabase.php:38
$dbr
$dbr
Definition: testCompression.php:52
SpecialPage\addHelpLink
addHelpLink( $to, $overrideBaseUrl=false)
Adds help link with an icon via page indicators.
Definition: SpecialPage.php:828
Wikimedia\Rdbms\IResultWrapper
Result wrapper for grabbing data queried from an IDatabase object.
Definition: IResultWrapper.php:24
wfGetDB
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
Definition: GlobalFunctions.php:2562
DB_REPLICA
const DB_REPLICA
Definition: defines.php:25
SpecialUnwatchedPages\execute
execute( $par)
Add the JS.
Definition: SpecialUnwatchedPages.php:102
SpecialUnwatchedPages\getGroupName
getGroupName()
Under which header this special page is listed in Special:SpecialPages See messages 'specialpages-gro...
Definition: SpecialUnwatchedPages.php:136
SpecialPage\getContext
getContext()
Gets the context this SpecialPage is executed in.
Definition: SpecialPage.php:692
Title\makeTitleSafe
static makeTitleSafe( $ns, $title, $fragment='', $interwiki='')
Create a new Title from a namespace index and a DB key.
Definition: Title.php:610
SpecialUnwatchedPages\__construct
__construct( $name='Unwatchedpages')
Definition: SpecialUnwatchedPages.php:38
SpecialPage\getLinkRenderer
getLinkRenderer()
Definition: SpecialPage.php:904
SpecialUnwatchedPages\isSyndicated
isSyndicated()
Sometime we don't want to build rss / atom feeds.
Definition: SpecialUnwatchedPages.php:46
SpecialUnwatchedPages\isExpensive
isExpensive()
Is this query expensive (for some definition of expensive)? Then we don't let it run in miser mode.
Definition: SpecialUnwatchedPages.php:42
SpecialUnwatchedPages\sortDescending
sortDescending()
Override to sort by increasing values.
Definition: SpecialUnwatchedPages.php:90
SpecialUnwatchedPages\getOrderFields
getOrderFields()
Subclasses return an array of fields to order by here.
Definition: SpecialUnwatchedPages.php:94
SpecialUnwatchedPages\formatResult
formatResult( $skin, $result)
Definition: SpecialUnwatchedPages.php:113
NS_MEDIAWIKI
const NS_MEDIAWIKI
Definition: Defines.php:68
SpecialPage\$linkRenderer
MediaWiki Linker LinkRenderer null $linkRenderer
Definition: SpecialPage.php:67
SpecialUnwatchedPages\getQueryInfo
getQueryInfo()
Subclasses return an SQL query here, formatted as an array with the following keys: tables => Table(s...
Definition: SpecialUnwatchedPages.php:70