X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/mediawiki.git/blobdiff_plain/d75ce11339b35963b5f8c3d53190819c1c025716..refs/tags/mediawiki-1.17.0:/maintenance/cleanupSpam.php diff --git a/maintenance/cleanupSpam.php b/maintenance/cleanupSpam.php index e78ffe41..39abe4c5 100644 --- a/maintenance/cleanupSpam.php +++ b/maintenance/cleanupSpam.php @@ -17,10 +17,11 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * http://www.gnu.org/copyleft/gpl.html * + * @file * @ingroup Maintenance */ -require_once( dirname(__FILE__) . '/Maintenance.php' ); +require_once( dirname( __FILE__ ) . '/Maintenance.php' ); class CleanupSpam extends Maintenance { public function __construct() { @@ -31,7 +32,7 @@ class CleanupSpam extends Maintenance { } public function execute() { - global $wgLocalDatabases; + global $wgLocalDatabases, $wgUser; $username = wfMsg( 'spambot_username' ); $wgUser = User::newFromName( $username ); @@ -44,15 +45,15 @@ class CleanupSpam extends Maintenance { if ( !$like ) { $this->error( "Not a valid hostname specification: $spec", true ); } - - if ( $this->hasOption('all') ) { + + if ( $this->hasOption( 'all' ) ) { // Clean up spam on all wikis $this->output( "Finding spam on " . count( $wgLocalDatabases ) . " wikis\n" ); $found = false; foreach ( $wgLocalDatabases as $wikiID ) { $dbr = wfGetDB( DB_SLAVE, array(), $wikiID ); - $count = $dbr->selectField( 'externallinks', 'COUNT(*)', + $count = $dbr->selectField( 'externallinks', 'COUNT(*)', array( 'el_index' . $dbr->buildLike( $like ) ), __METHOD__ ); if ( $count ) { $found = true; @@ -68,7 +69,7 @@ class CleanupSpam extends Maintenance { // Clean up spam on this wiki $dbr = wfGetDB( DB_SLAVE ); - $res = $dbr->select( 'externallinks', array( 'DISTINCT el_from' ), + $res = $dbr->select( 'externallinks', array( 'DISTINCT el_from' ), array( 'el_index' . $dbr->buildLike( $like ) ), __METHOD__ ); $count = $dbr->numRows( $res ); $this->output( "Found $count articles containing $spec\n" ); @@ -87,15 +88,15 @@ class CleanupSpam extends Maintenance { $this->error( "Internal error: no page for ID $id" ); return; } - + $this->output( $title->getPrefixedDBkey() . " ..." ); $rev = Revision::newFromTitle( $title ); $revId = $rev->getId(); $currentRevId = $revId; - + 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(); + # $rev = $rev->getPrevious(); $revId = $title->getPreviousRevisionID( $revId ); if ( $revId ) { $rev = Revision::newFromTitle( $title, $revId ); @@ -114,14 +115,12 @@ class CleanupSpam extends Maintenance { // Didn't find a non-spammy revision, blank the page $this->output( "blanking\n" ); $article = new Article( $title ); - $article->updateArticle( '', wfMsg( 'spam_blanking', $domain ), - false, false ); - + $article->doEdit( '', wfMsg( 'spam_blanking', $domain ) ); } else { // Revert to this revision $this->output( "reverting\n" ); $article = new Article( $title ); - $article->updateArticle( $rev->getText(), wfMsg( 'spam_reverting', $domain ), false, false ); + $article->doEdit( $rev->getText(), wfMsg( 'spam_reverting', $domain ), EDIT_UPDATE ); } $dbw->commit(); wfDoUpdates(); @@ -130,4 +129,4 @@ class CleanupSpam extends Maintenance { } $maintClass = "CleanupSpam"; -require_once( DO_MAINTENANCE ); +require_once( RUN_MAINTENANCE_IF_MAIN );