From: Aaron Schulz Date: Tue, 22 May 2007 16:30:13 +0000 (+0000) Subject: *Make bot edit flagging less fragile, flag auto-patrolled edits too X-Git-Tag: 1.31.0-rc.0~52825 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/pie.php?a=commitdiff_plain;h=353b0048498ca9ce165b495dfd527cfd500eaf23;p=lhc%2Fweb%2Fwiklou.git *Make bot edit flagging less fragile, flag auto-patrolled edits too --- diff --git a/maintenance/rebuildrecentchanges.inc b/maintenance/rebuildrecentchanges.inc index 586c9b6ecd..5ec27aa4c7 100644 --- a/maintenance/rebuildrecentchanges.inc +++ b/maintenance/rebuildrecentchanges.inc @@ -92,22 +92,67 @@ function rebuildRecentChangesTablePass2() function rebuildRecentChangesTablePass3() { + global $wgGroupPermissions; + $dbw = wfGetDB( DB_MASTER ); + list ($recentchanges, $usergroups) = $dbw->tableNamesN( 'recentchanges', 'user_groups' ); - print( "Flagging bot account edits...\n" ); + $botgroups = $autopatrolgroups = array(); + foreach( $wgGroupPermissions as $group => $rights ) { + if( isset( $rights['bot'] ) && $rights['bot'] == true ) { + $botgroups[] = "'" . $dbw->strencode( $group ) . "'"; + } + if( isset( $rights['autopatrol'] ) && $rights['autopatrol'] == true ) { + $autopatrolgroups[] = "'" . $dbw->strencode( $group ) . "'"; + } + } + # Flag our recent bot edits + if( !empty($botgroups) ) { + $botwhere = implode(',',$botgroups); + $botusers = array(); - # Fill in the rc_bot field - $sql = "SELECT DISTINCT rc_user FROM $recentchanges " . - "LEFT JOIN $usergroups ON rc_user=ug_user " . - "WHERE ug_group='bot'"; - $res = $dbw->query( $sql, DB_MASTER ); + print( "Flagging bot account edits...\n" ); - while ( $obj = $dbw->fetchObject( $res ) ) { + # Find all users in RC that are bots + $sql = "SELECT DISTINCT rc_user FROM $recentchanges " . + "LEFT JOIN $usergroups ON rc_user=ug_user " . + "WHERE ug_group IN($botwhere)"; + $res = $dbw->query( $sql, DB_MASTER ); + + while( $obj = $dbw->fetchObject( $res ) ) { + $botusers[] = $obj->rc_user; + } + # Fill in the rc_bot field + $botwhere = implode(',',$botusers); $sql2 = "UPDATE $recentchanges SET rc_bot=1 " . - "WHERE rc_user={$obj->rc_user}"; + "WHERE rc_user IN($botwhere)"; + $dbw->query( $sql2 ); + } + # Flag our recent autopatrolled edits + if( !empty($autopatrolgroups) ) { + $patrolwhere = implode(',',$autopatrolgroups); + $patrolusers = array(); + + print( "Flagging auto-patrolled edits...\n" ); + + # Find all users in RC with autopatrol rights + $sql = "SELECT DISTINCT rc_user FROM $recentchanges " . + "LEFT JOIN $usergroups ON rc_user=ug_user " . + "WHERE ug_group IN($patrolwhere)"; + $res = $dbw->query( $sql, DB_MASTER ); + + while( $obj = $dbw->fetchObject( $res ) ) { + $patrolusers[] = $obj->rc_user; + } + + # Fill in the rc_patrolled field + $patrolwhere = implode(',',$patrolusers); + $sql2 = "UPDATE $recentchanges SET rc_patrolled=1 " . + "WHERE rc_user IN($patrolwhere)"; $dbw->query( $sql2 ); } + $dbw->freeResult( $res ); }