From a7b6e9ebda8678f55ffd4432d72bf2e00879cb92 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Mon, 10 Dec 2007 03:17:24 +0000 Subject: [PATCH] *Join on user table to get name. This allows for rc_user_text index use for pass 3 *Remove old unused vars --- maintenance/rebuildrecentchanges.inc | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/maintenance/rebuildrecentchanges.inc b/maintenance/rebuildrecentchanges.inc index c7d01d02db..125de551a7 100644 --- a/maintenance/rebuildrecentchanges.inc +++ b/maintenance/rebuildrecentchanges.inc @@ -11,7 +11,6 @@ function rebuildRecentChangesTablePass1() { $fname = 'rebuildRecentChangesTablePass1'; $dbw = wfGetDB( DB_MASTER ); - extract( $dbw->tableNames( 'recentchanges', 'cur', 'old' ) ); $dbw->delete( 'recentchanges', '*' ); @@ -103,7 +102,7 @@ function rebuildRecentChangesTablePass3() $dbw = wfGetDB( DB_MASTER ); - list ($recentchanges, $usergroups) = $dbw->tableNamesN( 'recentchanges', 'user_groups' ); + list($recentchanges,$usergroups,$user) = $dbw->tableNamesN( 'recentchanges', 'user_groups', 'user' ); $botgroups = $autopatrolgroups = array(); foreach( $wgGroupPermissions as $group => $rights ) { @@ -122,18 +121,18 @@ function rebuildRecentChangesTablePass3() print( "Flagging bot account edits...\n" ); # Find all users that are bots - $sql = "SELECT DISTINCT ug_user FROM $usergroups " . - "WHERE ug_group IN($botwhere)"; + $sql = "SELECT DISTINCT user_name FROM $usergroups, $user " . + "WHERE ug_group IN($botwhere) AND user_id = ug_user"; $res = $dbw->query( $sql, DB_MASTER ); while( $obj = $dbw->fetchObject( $res ) ) { - $botusers[] = $obj->ug_user; + $botusers[] = $dbw->strencode( $obj->user_name ); } # Fill in the rc_bot field if( !empty($botusers) ) { $botwhere = implode(',',$botusers); $sql2 = "UPDATE $recentchanges SET rc_bot=1 " . - "WHERE rc_user IN($botwhere)"; + "WHERE rc_user_text IN($botwhere)"; $dbw->query( $sql2 ); } } @@ -145,19 +144,19 @@ function rebuildRecentChangesTablePass3() print( "Flagging auto-patrolled edits...\n" ); # Find all users in RC with autopatrol rights - $sql = "SELECT DISTINCT ug_user FROM $usergroups " . - "WHERE ug_group IN($patrolwhere)"; + $sql = "SELECT DISTINCT user_name FROM $usergroups, $user " . + "WHERE ug_group IN($patrolwhere) AND user_id = ug_user"; $res = $dbw->query( $sql, DB_MASTER ); while( $obj = $dbw->fetchObject( $res ) ) { - $patrolusers[] = $obj->ug_user; + $patrolusers[] = $dbw->strencode( $obj->user_name ); } # Fill in the rc_patrolled field if( !empty($patrolusers) ) { $patrolwhere = implode(',',$patrolusers); $sql2 = "UPDATE $recentchanges SET rc_patrolled=1 " . - "WHERE rc_user IN($patrolwhere)"; + "WHERE rc_user_text IN($patrolwhere)"; $dbw->query( $sql2 ); } } -- 2.20.1