Go to the documentation of this file.
64 # Need to use the master to get the redirect table updated in the same transaction
67 [
'redirect',
'page' ],
68 [
'page_namespace',
'page_title' ],
74 if ( !
$res->numRows() ) {
78 foreach (
$res as $row ) {
84 $jobs[] =
new self(
$title, [
87 # Avoid excessive memory usage
88 if ( count( $jobs ) > 10000 ) {
100 if ( !$this->redirTitle ) {
108 wfDebug( __METHOD__ .
": target redirect already deleted, ignoring\n" );
112 $content = $targetRev->getContent();
114 if ( !$currentDest || !$currentDest->equals( $this->redirTitle ) ) {
115 wfDebug( __METHOD__ .
": Redirect has changed since the job was queued\n" );
121 $mw = MediaWikiServices::getInstance()->getMagicWordFactory()->get(
'staticredirect' );
122 if (
$content->matchMagicWord( $mw ) ) {
123 wfDebug( __METHOD__ .
": skipping: suppressed with __STATICREDIRECT__\n" );
132 ": skipping: single redirect, circular redirect or invalid redirect destination\n" );
136 if ( $newTitle->equals( $this->redirTitle ) ) {
139 wfDebug( __METHOD__ .
" : skipping, already good\n" );
143 $newTitle =
Title::makeTitle( $newTitle->getNamespace(), $newTitle->getDBkey(),
144 $currentDest->getFragment(), $newTitle->getInterwiki() );
147 $newContent =
$content->updateRedirect( $newTitle );
149 if ( $newContent->equals(
$content ) ) {
169 $reason =
wfMessage(
'double-redirect-fixed-' . $this->params[
'reason'],
170 $this->redirTitle->getPrefixedText(), $newTitle->getPrefixedText()
171 )->inContentLanguage()->text();
173 $article->doEditContent( $newContent, $reason, $flags,
false,
$user );
196 if ( isset( $seenTitles[$titleText] ) ) {
197 wfDebug( __METHOD__,
"Circular redirect detected, aborting\n" );
201 $seenTitles[$titleText] =
true;
211 $row = $dbw->selectRow(
212 [
'redirect',
'page' ],
213 [
'rd_namespace',
'rd_title',
'rd_interwiki' ],
220 # No redirect from here, chain terminates
243 if ( !self::$user ) {
244 $username =
wfMessage(
'double-redirect-fixer' )->inContentLanguage()->text();
246 # User::newFromName() can return false on a badly configured wiki.
247 if ( self::$user && !self::$user->isLoggedIn() ) {
248 self::$user->addToDatabase();
static newFromText( $text, $defaultNamespace=NS_MAIN)
Create a new Title from text, such as what one would find in a link.
getPrefixedDBkey()
Get the prefixed database key form.
static getFinalDestination( $title)
Get the final destination of a redirect.
getUser()
Get a user object for doing edits, from a request-lifetime cache False will be returned if the user n...
static newFromName( $name, $validate='valid')
Static factory method for creation from username.
wfMessage( $key,... $params)
This is the function for getting translated interface messages.
isExternal()
Is this Title interwiki?
array $params
Array of job parameters.
Job to fix double redirects after moving a page.
Class to both describe a background job and handle jobs.
static newFromTitle(LinkTarget $linkTarget, $id=0, $flags=0)
Load either the current, or a specified, revision that's attached to a given link target.
getDBkey()
Get the main part with underscores.
static factory(Title $title)
Create a WikiPage object of the appropriate class for the given title.
getNamespace()
Get the namespace index, i.e.
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
static makeTitle( $ns, $title, $fragment='', $interwiki='')
Create a new Title from a namespace index and a DB key.
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
static fixRedirects( $reason, $redirTitle, $destTitle=false)
Insert jobs into the job queue to fix redirects to the given title.
Title $redirTitle
The title which has changed, redirects pointing to this title are fixed.
__construct(Title $title, array $params)
Represents a title within MediaWiki.
static singleton( $domain=false)
The User object encapsulates all of the user-specific settings (user_id, name, rights,...