diff options
Diffstat (limited to 'maintenance/cleanupSpam.php')
-rw-r--r-- | maintenance/cleanupSpam.php | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/maintenance/cleanupSpam.php b/maintenance/cleanupSpam.php index 8561281d..ca1e302b 100644 --- a/maintenance/cleanupSpam.php +++ b/maintenance/cleanupSpam.php @@ -36,6 +36,9 @@ class CleanupSpam extends Maintenance { $username = wfMsg( 'spambot_username' ); $wgUser = User::newFromName( $username ); + if ( !$wgUser ) { + $this->error( "Invalid username", true ); + } // Create the user if necessary if ( !$wgUser->getId() ) { $wgUser->addToDatabase(); @@ -91,36 +94,29 @@ class CleanupSpam extends Maintenance { $this->output( $title->getPrefixedDBkey() . " ..." ); $rev = Revision::newFromTitle( $title ); - $revId = $rev->getId(); - $currentRevId = $revId; + $currentRevId = $rev->getId(); - while ( $rev && LinkFilter::matchEntry( $rev->getText() , $domain ) ) { - # Revision::getPrevious can't be used in this way before MW 1.6 (Revision.php 1.26) - # $rev = $rev->getPrevious(); - $revId = $title->getPreviousRevisionID( $revId ); - if ( $revId ) { - $rev = Revision::newFromTitle( $title, $revId ); - } else { - $rev = false; - } + while ( $rev && ( $rev->isDeleted( Revision::DELETED_TEXT ) || LinkFilter::matchEntry( $rev->getText() , $domain ) ) ) { + $rev = $rev->getPrevious(); } - if ( $revId == $currentRevId ) { + + if ( $rev && $rev->getId() == $currentRevId ) { // The regex didn't match the current article text // This happens e.g. when a link comes from a template rather than the page itself $this->output( "False match\n" ); } else { $dbw = wfGetDB( DB_MASTER ); $dbw->begin(); + $page = WikiPage::factory( $title ); if ( !$rev ) { // Didn't find a non-spammy revision, blank the page $this->output( "blanking\n" ); - $article = new Article( $title ); - $article->doEdit( '', wfMsg( 'spam_blanking', $domain ) ); + $page->doEdit( '', wfMsgForContent( 'spam_blanking', $domain ) ); } else { // Revert to this revision $this->output( "reverting\n" ); - $article = new Article( $title ); - $article->doEdit( $rev->getText(), wfMsg( 'spam_reverting', $domain ), EDIT_UPDATE ); + $page->doEdit( $rev->getText(), wfMsgForContent( 'spam_reverting', $domain ), + EDIT_UPDATE, $rev->getId() ); } $dbw->commit(); } |