Don't generate RC entries for filterable log types
authorGeoffreyT2000 <geoffreytrang@gmail.com>
Fri, 28 Jul 2017 01:44:21 +0000 (18:44 -0700)
committerGeoffreyT2000 <geoffreytrang@gmail.com>
Wed, 1 Aug 2018 17:59:08 +0000 (17:59 +0000)
This change is needed so that filterable log types (e.g. patrol) will not get corresponding recent changes entries after running rebuildrecentchanges.php. Creation log entries will not get an RC entry regenerated either.

Bug: T20364
Change-Id: Id18364599b44d16f867f1042e1dc7e8f51b1b369

maintenance/rebuildrecentchanges.php

index d86c8ed..471c7ae 100644 (file)
@@ -269,10 +269,13 @@ class RebuildRecentchanges extends Maintenance {
         * Rebuild pass 3: Insert `recentchanges` entries for action logs.
         */
        private function rebuildRecentChangesTablePass3( ILBFactory $lbFactory ) {
-               global $wgLogRestrictions;
+               global $wgLogRestrictions, $wgFilterLogTypes;
 
                $dbw = $this->getDB( DB_MASTER );
                $commentStore = CommentStore::getStore();
+               $nonRCLogs = array_merge( array_keys( $wgLogRestrictions ),
+                       array_keys( $wgFilterLogTypes ),
+                       [ 'create' ] );
 
                $this->output( "Loading from user, page, and logging tables...\n" );
 
@@ -294,9 +297,8 @@ class RebuildRecentchanges extends Maintenance {
                        [
                                'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
                                'log_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ),
-                               // Some logs don't go in RC since they are private.
-                               // @FIXME: core/extensions also have spammy logs that don't go in RC.
-                               'log_type' => array_diff( LogPage::validTypes(), array_keys( $wgLogRestrictions ) ),
+                               // Some logs don't go in RC since they are private, or are included in the filterable log types.
+                               'log_type' => array_diff( LogPage::validTypes(), $nonRCLogs ),
                        ],
                        __METHOD__,
                        [ 'ORDER BY' => 'log_timestamp DESC' ],