Update cleanupSpam.php to hide its activity from RecentChanges
[lhc/web/wiklou.git] / maintenance / cleanupSpam.php
index 020f5cd..fc3cc5b 100644 (file)
@@ -49,10 +49,9 @@ class CleanupSpam extends Maintenance {
                if ( !$wgUser ) {
                        $this->error( "Invalid username specified in 'spambot_username' message: $username", true );
                }
-               // Create the user if necessary
-               if ( !$wgUser->getId() ) {
-                       $wgUser->addToDatabase();
-               }
+               // Hack: Grant bot rights so we don't flood RecentChanges
+               $wgUser->addGroup( 'bot' );
+
                $spec = $this->getArg();
                $like = LinkFilter::makeLikeArray( $spec );
                if ( !$like ) {
@@ -64,14 +63,14 @@ class CleanupSpam extends Maintenance {
                        $this->output( "Finding spam on " . count( $wgLocalDatabases ) . " wikis\n" );
                        $found = false;
                        foreach ( $wgLocalDatabases as $wikiID ) {
-                               $dbr = $this->getDB( DB_SLAVE, array(), $wikiID );
+                               $dbr = $this->getDB( DB_REPLICA, [], $wikiID );
 
                                $count = $dbr->selectField( 'externallinks', 'COUNT(*)',
-                                       array( 'el_index' . $dbr->buildLike( $like ) ), __METHOD__ );
+                                       [ 'el_index' . $dbr->buildLike( $like ) ], __METHOD__ );
                                if ( $count ) {
                                        $found = true;
                                        $cmd = wfShellWikiCmd( "$IP/maintenance/cleanupSpam.php",
-                                               array( '--wiki', $wikiID, $spec ) );
+                                               [ '--wiki', $wikiID, $spec ] );
                                        passthru( "$cmd | sed 's/^/$wikiID:  /'" );
                                }
                        }
@@ -83,9 +82,9 @@ class CleanupSpam extends Maintenance {
                } else {
                        // Clean up spam on this wiki
 
-                       $dbr = $this->getDB( DB_SLAVE );
-                       $res = $dbr->select( 'externallinks', array( 'DISTINCT el_from' ),
-                               array( 'el_index' . $dbr->buildLike( $like ) ), __METHOD__ );
+                       $dbr = $this->getDB( DB_REPLICA );
+                       $res = $dbr->select( 'externallinks', [ 'DISTINCT el_from' ],
+                               [ 'el_index' . $dbr->buildLike( $like ) ], __METHOD__ );
                        $count = $dbr->numRows( $res );
                        $this->output( "Found $count articles containing $spec\n" );
                        foreach ( $res as $row ) {
@@ -131,7 +130,7 @@ class CleanupSpam extends Maintenance {
                                $page->doEditContent(
                                        $content,
                                        wfMessage( 'spam_reverting', $domain )->inContentLanguage()->text(),
-                                       EDIT_UPDATE,
+                                       EDIT_UPDATE | EDIT_FORCE_BOT,
                                        $rev->getId()
                                );
                        } elseif ( $this->hasOption( 'delete' ) ) {
@@ -148,7 +147,8 @@ class CleanupSpam extends Maintenance {
                                $this->output( "blanking\n" );
                                $page->doEditContent(
                                        $content,
-                                       wfMessage( 'spam_blanking', $domain )->inContentLanguage()->text()
+                                       wfMessage( 'spam_blanking', $domain )->inContentLanguage()->text(),
+                                       EDIT_UPDATE | EDIT_FORCE_BOT
                                );
                        }
                        $this->commitTransaction( $dbw, __METHOD__ );