MediaWiki REL1_31
SpecialBrokenRedirects.php
Go to the documentation of this file.
1<?php
26
34 function __construct( $name = 'BrokenRedirects' ) {
35 parent::__construct( $name );
36 }
37
38 public function isExpensive() {
39 return true;
40 }
41
42 function isSyndicated() {
43 return false;
44 }
45
46 function sortDescending() {
47 return false;
48 }
49
50 function getPageHeader() {
51 return $this->msg( 'brokenredirectstext' )->parseAsBlock();
52 }
53
54 public function getQueryInfo() {
56
57 return [
58 'tables' => [
59 'redirect',
60 'p1' => 'page',
61 'p2' => 'page',
62 ],
63 'fields' => [
64 'namespace' => 'p1.page_namespace',
65 'title' => 'p1.page_title',
66 'rd_namespace',
67 'rd_title',
68 'rd_fragment',
69 ],
70 'conds' => [
71 // Exclude pages that don't exist locally as wiki pages,
72 // but aren't "broken" either.
73 // Special pages and interwiki links
74 'rd_namespace >= 0',
75 'rd_interwiki IS NULL OR rd_interwiki = ' . $dbr->addQuotes( '' ),
76 'p2.page_namespace IS NULL',
77 ],
78 'join_conds' => [
79 'p1' => [ 'JOIN', [
80 'rd_from=p1.page_id',
81 ] ],
82 'p2' => [ 'LEFT JOIN', [
83 'rd_namespace=p2.page_namespace',
84 'rd_title=p2.page_title'
85 ] ],
86 ],
87 ];
88 }
89
93 function getOrderFields() {
94 return [ 'rd_namespace', 'rd_title', 'rd_from' ];
95 }
96
102 function formatResult( $skin, $result ) {
103 $fromObj = Title::makeTitle( $result->namespace, $result->title );
104 if ( isset( $result->rd_title ) ) {
105 $toObj = Title::makeTitle( $result->rd_namespace, $result->rd_title, $result->rd_fragment );
106 } else {
107 $blinks = $fromObj->getBrokenLinksFrom(); # TODO: check for redirect, not for links
108 if ( $blinks ) {
109 $toObj = $blinks[0];
110 } else {
111 $toObj = false;
112 }
113 }
114
116 // $toObj may very easily be false if the $result list is cached
117 if ( !is_object( $toObj ) ) {
118 return '<del>' . $linkRenderer->makeLink( $fromObj ) . '</del>';
119 }
120
121 $from = $linkRenderer->makeKnownLink(
122 $fromObj,
123 null,
124 [],
125 [ 'redirect' => 'no' ]
126 );
127 $links = [];
128 // if the page is editable, add an edit link
129 if (
130 // check user permissions
131 $this->getUser()->isAllowed( 'edit' ) &&
132 // check, if the content model is editable through action=edit
133 ContentHandler::getForTitle( $fromObj )->supportsDirectEditing()
134 ) {
135 $links[] = $linkRenderer->makeKnownLink(
136 $fromObj,
137 $this->msg( 'brokenredirects-edit' )->text(),
138 [],
139 [ 'action' => 'edit' ]
140 );
141 }
142 $to = $linkRenderer->makeBrokenLink( $toObj, $toObj->getFullText() );
143 $arr = $this->getLanguage()->getArrow();
144
145 $out = $from . $this->msg( 'word-separator' )->escaped();
146
147 if ( $this->getUser()->isAllowed( 'delete' ) ) {
148 $links[] = $linkRenderer->makeKnownLink(
149 $fromObj,
150 $this->msg( 'brokenredirects-delete' )->text(),
151 [],
152 [ 'action' => 'delete' ]
153 );
154 }
155
156 if ( $links ) {
157 $out .= $this->msg( 'parentheses' )->rawParams( $this->getLanguage()
158 ->pipeList( $links ) )->escaped();
159 }
160 $out .= " {$arr} {$to}";
161
162 return $out;
163 }
164
171 function preprocessResults( $db, $res ) {
173 }
174
175 protected function getGroupName() {
176 return 'maintenance';
177 }
178}
This list may contain false positives That usually means there is additional text with links below the first Each row contains links to the first and second redirect
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
A special page listing redirects to non existent page.
getQueryInfo()
Subclasses return an SQL query here, formatted as an array with the following keys: tables => Table(s...
isSyndicated()
Sometime we don't want to build rss / atom feeds.
__construct( $name='BrokenRedirects')
getPageHeader()
The content returned by this function will be output before any result.
preprocessResults( $db, $res)
Cache page content model for performance.
getGroupName()
Under which header this special page is listed in Special:SpecialPages See messages 'specialpages-gro...
sortDescending()
Override to sort by increasing values.
isExpensive()
Is this query expensive (for some definition of expensive)? Then we don't let it run in miser mode.
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:34
executeLBFromResultWrapper(IResultWrapper $res, $ns=null)
Creates a new LinkBatch object, adds all pages from the passed ResultWrapper (MUST include title and ...
getUser()
Shortcut to get the User executing this instance.
msg( $key)
Wrapper around wfMessage that sets the current context.
getLanguage()
Shortcut to get user's language.
MediaWiki Linker LinkRenderer null $linkRenderer
$res
Definition database.txt:21
design txt This is a brief overview of the new design More thorough and up to date information is available on the documentation wiki at etc Handles the details of getting and saving to the user table of the and dealing with sessions and cookies OutputPage Encapsulates the entire HTML page that will be sent in response to any server request It is used by calling its functions to add text
Definition design.txt:18
this hook is for auditing only or null if authentication failed before getting that far or null if we can t even determine that probably a stub it is not rendered in wiki pages or galleries in category pages allow injecting custom HTML after the section Any uses of the hook need to handle escaping see BaseTemplate::getToolbox and BaseTemplate::makeListItem for details on the format of individual items inside of this array or by returning and letting standard HTTP rendering take place modifiable or by returning false and taking over the output $out
Definition hooks.txt:864
in this case you re responsible for computing and outputting the entire conflict i the difference between revisions and your text headers and sections and Diff or overridable Default is either copyrightwarning or copyrightwarning2 overridable Default is editpage tos summary such as anonymity and the real check
Definition hooks.txt:1481
Basic database interface for live and lazy-loaded relation database handles.
Definition IDatabase.php:38
Result wrapper for grabbing data queried from an IDatabase object.
const DB_REPLICA
Definition defines.php:25
This document describes the XML format used to represent information about external sites known to a MediaWiki installation This information about external sites is used to allow inter wiki links
in the order they appear.
Definition sitelist.txt:3