39 private $contentHandlerFactory;
42 private $linkBatchFactory;
57 parent::__construct(
'DoubleRedirects' );
58 $this->contentHandlerFactory = $contentHandlerFactory;
59 $this->linkBatchFactory = $linkBatchFactory;
77 return $this->
msg(
'doubleredirectstext' )->parseAsBlock();
80 private function reallyGetQueryInfo( $namespace =
null,
$title =
null ) {
81 $limitToTitle = !( $namespace ===
null &&
$title === null );
90 'namespace' =>
'pa.page_namespace',
91 'title' =>
'pa.page_title',
93 'b_namespace' =>
'pb.page_namespace',
94 'b_title' =>
'pb.page_title',
95 'b_fragment' =>
'ra.rd_fragment',
99 'c_namespace' =>
'rb.rd_namespace',
100 'c_title' =>
'rb.rd_title',
101 'c_fragment' =>
'rb.rd_fragment',
102 'c_interwiki' =>
'rb.rd_interwiki',
105 'ra.rd_from = pa.page_id',
114 'ra.rd_interwiki IS NULL OR ra.rd_interwiki = ' . $this->dbr->addQuotes(
'' ),
116 'pb.page_namespace = ra.rd_namespace',
117 'pb.page_title = ra.rd_title',
119 'rb.rd_from = pb.page_id',
123 if ( $limitToTitle ) {
124 $retval[
'conds'][
'pa.page_namespace'] = $namespace;
125 $retval[
'conds'][
'pa.page_title'] =
$title;
132 return $this->reallyGetQueryInfo();
136 return [
'ra.rd_namespace',
'ra.rd_title' ];
152 if ( isset( $result->b_namespace ) ) {
155 $qi = $this->reallyGetQueryInfo(
159 $deep = $this->dbr->selectRow(
168 $titleA = Title::makeTitle( $result->namespace, $result->title );
172 return '<del>' . $linkRenderer->makeLink( $titleA,
null, [], [
'redirect' =>
'no' ] ) .
'</del>';
180 $this->contentHandlerFactory->getContentHandler( $titleA->getContentModel() )
181 ->supportsDirectEditing()
183 $edit = $linkRenderer->makeKnownLink(
185 $this->
msg(
'parentheses', $this->
msg(
'editlink' )->text() )->text(),
187 [
'action' =>
'edit' ]
193 $linkA = $linkRenderer->makeKnownLink(
197 [
'redirect' =>
'no' ]
200 $titleB = Title::makeTitle( $deep->b_namespace, $deep->b_title );
202 $titleBFrag = Title::makeTitle( $deep->b_namespace, $deep->b_title, $deep->b_fragment );
203 $linkB = $linkRenderer->makeKnownLink(
205 $titleBFrag->getFullText(),
207 [
'redirect' =>
'no' ]
210 $titleC = Title::makeTitle(
216 $linkC = $linkRenderer->makeKnownLink( $titleC, $titleC->getFullText() );
219 $arr =
$lang->getArrow() .
$lang->getDirMark();
221 return (
"{$linkA} {$edit} {$arr} {$linkB} {$arr} {$linkC}" );
226 parent::execute( $par );
236 if ( !
$res->numRows() ) {
240 $batch = $this->linkBatchFactory->newLinkBatch();
241 foreach (
$res as $row ) {
242 $batch->add( $row->namespace, $row->title );
243 if ( isset( $row->b_namespace ) ) {
245 $batch->add( $row->b_namespace, $row->b_title );
247 if ( isset( $row->c_interwiki ) && !$row->c_interwiki ) {
249 $batch->add( $row->c_namespace, $row->c_title );
259 return 'maintenance';
This is a class for doing query pages; since they're almost all the same, we factor out some of the f...
setDBLoadBalancer(ILoadBalancer $loadBalancer)
A special page listing redirects to redirecting page.
getQueryInfo()
Subclasses return an SQL query here, formatted as an array with the following keys: tables => Table(s...
preprocessResults( $db, $res)
Cache page content model and gender distinction for performance.
execute( $par)
This is the actual workhorse.
sortDescending()
Override to sort by increasing values.
isExpensive()
Should this query page only be updated offline on large wikis?
getGroupName()
Under which header this special page is listed in Special:SpecialPages See messages 'specialpages-gro...
__construct(IContentHandlerFactory $contentHandlerFactory, LinkBatchFactory $linkBatchFactory, ILoadBalancer $loadBalancer)
getPageHeader()
The content returned by this function will be output before any result.
formatResult( $skin, $result)
getOrderFields()
Subclasses return an array of fields to order by here.
isSyndicated()
Sometimes we don't want to build rss / atom feeds.
msg( $key,... $params)
Wrapper around wfMessage that sets the current context.
getAuthority()
Shortcut to get the Authority executing this instance.
getLanguage()
Shortcut to get user's language.
addHelpLink( $to, $overrideBaseUrl=false)
Adds help link with an icon via page indicators.
if(!isset( $args[0])) $lang