Merge "Allow PHP version check to execute on older versions of PHP"
[lhc/web/wiklou.git] / maintenance / rebuildrecentchanges.php
index 471c7ae..35af15c 100644 (file)
@@ -80,6 +80,8 @@ class RebuildRecentchanges extends Maintenance {
 
        /**
         * Rebuild pass 1: Insert `recentchanges` entries for page revisions.
+        *
+        * @param ILBFactory $lbFactory
         */
        private function rebuildRecentChangesTablePass1( ILBFactory $lbFactory ) {
                $dbw = $this->getDB( DB_MASTER );
@@ -177,6 +179,8 @@ class RebuildRecentchanges extends Maintenance {
        /**
         * Rebuild pass 2: Enhance entries for page revisions with references to the previous revision
         * (rc_last_oldid, rc_new etc.) and size differences (rc_old_len, rc_new_len).
+        *
+        * @param ILBFactory $lbFactory
         */
        private function rebuildRecentChangesTablePass2( ILBFactory $lbFactory ) {
                $dbw = $this->getDB( DB_MASTER );
@@ -199,29 +203,29 @@ class RebuildRecentchanges extends Maintenance {
                $lastOldId = 0;
                $lastSize = null;
                $updated = 0;
-               foreach ( $res as $obj ) {
+               foreach ( $res as $row ) {
                        $new = 0;
 
-                       if ( $obj->rc_cur_id != $lastCurId ) {
+                       if ( $row->rc_cur_id != $lastCurId ) {
                                # Switch! Look up the previous last edit, if any
-                               $lastCurId = intval( $obj->rc_cur_id );
-                               $emit = $obj->rc_timestamp;
+                               $lastCurId = intval( $row->rc_cur_id );
+                               $emit = $row->rc_timestamp;
 
-                               $row = $dbw->selectRow(
+                               $revRow = $dbw->selectRow(
                                        'revision',
                                        [ 'rev_id', 'rev_len' ],
                                        [ 'rev_page' => $lastCurId, "rev_timestamp < " . $dbw->addQuotes( $emit ) ],
                                        __METHOD__,
                                        [ 'ORDER BY' => 'rev_timestamp DESC' ]
                                );
-                               if ( $row ) {
-                                       $lastOldId = intval( $row->rev_id );
+                               if ( $revRow ) {
+                                       $lastOldId = intval( $revRow->rev_id );
                                        # Grab the last text size if available
-                                       $lastSize = !is_null( $row->rev_len ) ? intval( $row->rev_len ) : null;
+                                       $lastSize = !is_null( $revRow->rev_len ) ? intval( $revRow->rev_len ) : null;
                                } else {
                                        # No previous edit
                                        $lastOldId = 0;
-                                       $lastSize = null;
+                                       $lastSize = 0;
                                        $new = 1; // probably true
                                }
                        }
@@ -233,7 +237,7 @@ class RebuildRecentchanges extends Maintenance {
                                $size = (int)$dbw->selectField(
                                        'revision',
                                        'rev_len',
-                                       [ 'rev_id' => $obj->rc_this_oldid ],
+                                       [ 'rev_id' => $row->rc_this_oldid ],
                                        __METHOD__
                                );
 
@@ -249,13 +253,13 @@ class RebuildRecentchanges extends Maintenance {
                                        ],
                                        [
                                                'rc_cur_id' => $lastCurId,
-                                               'rc_this_oldid' => $obj->rc_this_oldid,
-                                               'rc_timestamp' => $obj->rc_timestamp // index usage
+                                               'rc_this_oldid' => $row->rc_this_oldid,
+                                               'rc_timestamp' => $row->rc_timestamp // index usage
                                        ],
                                        __METHOD__
                                );
 
-                               $lastOldId = intval( $obj->rc_this_oldid );
+                               $lastOldId = intval( $row->rc_this_oldid );
                                $lastSize = $size;
 
                                if ( ( ++$updated % $this->getBatchSize() ) == 0 ) {
@@ -267,6 +271,8 @@ class RebuildRecentchanges extends Maintenance {
 
        /**
         * Rebuild pass 3: Insert `recentchanges` entries for action logs.
+        *
+        * @param ILBFactory $lbFactory
         */
        private function rebuildRecentChangesTablePass3( ILBFactory $lbFactory ) {
                global $wgLogRestrictions, $wgFilterLogTypes;
@@ -277,17 +283,17 @@ class RebuildRecentchanges extends Maintenance {
                        array_keys( $wgFilterLogTypes ),
                        [ 'create' ] );
 
-               $this->output( "Loading from user, page, and logging tables...\n" );
+               $this->output( "Loading from user and logging tables...\n" );
 
                $commentQuery = $commentStore->getJoin( 'log_comment' );
                $actorQuery = ActorMigration::newMigration()->getJoin( 'log_user' );
                $res = $dbw->select(
-                       [ 'logging', 'page' ] + $commentQuery['tables'] + $actorQuery['tables'],
+                       [ 'logging' ] + $commentQuery['tables'] + $actorQuery['tables'],
                        [
                                'log_timestamp',
                                'log_namespace',
                                'log_title',
-                               'page_id',
+                               'log_page',
                                'log_type',
                                'log_action',
                                'log_id',
@@ -302,10 +308,7 @@ class RebuildRecentchanges extends Maintenance {
                        ],
                        __METHOD__,
                        [ 'ORDER BY' => 'log_timestamp DESC' ],
-                       [
-                               'page' =>
-                                       [ 'LEFT JOIN', [ 'log_namespace=page_namespace', 'log_title=page_title' ] ]
-                       ] + $commentQuery['joins'] + $actorQuery['joins']
+                       $commentQuery['joins'] + $actorQuery['joins']
                );
 
                $field = $dbw->fieldInfo( 'recentchanges', 'rc_cur_id' );
@@ -330,8 +333,8 @@ class RebuildRecentchanges extends Maintenance {
                                        'rc_type' => RC_LOG,
                                        'rc_source' => RecentChange::SRC_LOG,
                                        'rc_cur_id' => $field->isNullable()
-                                               ? $row->page_id
-                                               : (int)$row->page_id, // NULL => 0,
+                                               ? $row->log_page
+                                               : (int)$row->log_page, // NULL => 0,
                                        'rc_log_type' => $row->log_type,
                                        'rc_log_action' => $row->log_action,
                                        'rc_logid' => $row->log_id,
@@ -350,6 +353,8 @@ class RebuildRecentchanges extends Maintenance {
 
        /**
         * Rebuild pass 4: Mark bot and autopatrolled entries.
+        *
+        * @param ILBFactory $lbFactory
         */
        private function rebuildRecentChangesTablePass4( ILBFactory $lbFactory ) {
                global $wgUseRCPatrol, $wgMiserMode;
@@ -375,12 +380,12 @@ class RebuildRecentchanges extends Maintenance {
                                [ 'ug_group' => $botgroups ],
                                __METHOD__,
                                [ 'DISTINCT' ],
-                               [ 'user_group' => [ 'JOIN', 'user_id = ug_user' ] ] + $userQuery['joins']
+                               [ 'user_groups' => [ 'JOIN', 'user_id = ug_user' ] ] + $userQuery['joins']
                        );
 
                        $botusers = [];
-                       foreach ( $res as $obj ) {
-                               $botusers[] = User::newFromRow( $obj );
+                       foreach ( $res as $row ) {
+                               $botusers[] = User::newFromRow( $row );
                        }
 
                        # Fill in the rc_bot field
@@ -428,11 +433,11 @@ class RebuildRecentchanges extends Maintenance {
                                [ 'ug_group' => $autopatrolgroups ],
                                __METHOD__,
                                [ 'DISTINCT' ],
-                               [ 'user_group' => [ 'JOIN', 'user_id = ug_user' ] ] + $userQuery['joins']
+                               [ 'user_groups' => [ 'JOIN', 'user_id = ug_user' ] ] + $userQuery['joins']
                        );
 
-                       foreach ( $res as $obj ) {
-                               $patrolusers[] = User::newFromRow( $obj );
+                       foreach ( $res as $row ) {
+                               $patrolusers[] = User::newFromRow( $row );
                        }
 
                        # Fill in the rc_patrolled field
@@ -456,8 +461,10 @@ class RebuildRecentchanges extends Maintenance {
        }
 
        /**
-        * Rebuild pass 5: Delete duplicate entries where we generate both a page revision and a log entry
-        * for a single action (upload only, at the moment, but potentially also move, protect, ...).
+        * Rebuild pass 5: Delete duplicate entries where we generate both a page revision and a log
+        * entry for a single action (upload only, at the moment, but potentially move, protect, ...).
+        *
+        * @param ILBFactory $lbFactory
         */
        private function rebuildRecentChangesTablePass5( ILBFactory $lbFactory ) {
                $dbw = wfGetDB( DB_MASTER );
@@ -478,9 +485,9 @@ class RebuildRecentchanges extends Maintenance {
                );
 
                $updates = 0;
-               foreach ( $res as $obj ) {
-                       $rev_id = $obj->ls_value;
-                       $log_id = $obj->ls_log_id;
+               foreach ( $res as $row ) {
+                       $rev_id = $row->ls_value;
+                       $log_id = $row->ls_log_id;
 
                        // Mark the logging row as having an associated rev id
                        $dbw->update(