X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2FdeleteOldRevisions.php;h=114aefd7ec74ef5fc71a22c51854cc15dd30a298;hb=43a4dcc2d25f5aee2f88b92f72703f55d1c63381;hp=6a3e211b00bee876368eaca88dd3b7f5e7c59080;hpb=bceb90ceedc4f8256bad231311bd59a0bb4f2a4e;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/deleteOldRevisions.php b/maintenance/deleteOldRevisions.php index 6a3e211b00..114aefd7ec 100644 --- a/maintenance/deleteOldRevisions.php +++ b/maintenance/deleteOldRevisions.php @@ -48,48 +48,45 @@ class DeleteOldRevisions extends Maintenance { $dbw = wfGetDB( DB_MASTER ); $dbw->begin( __METHOD__ ); - $tbl_pag = $dbw->tableName( 'page' ); - $tbl_rev = $dbw->tableName( 'revision' ); - - $pageIdClause = ''; - $revPageClause = ''; + $pageConds = array(); + $revConds = array(); # If a list of page_ids was provided, limit results to that set of page_ids - if ( sizeof( $args ) > 0 ) { - $pageIdList = implode( ',', $args ); - $pageIdClause = " WHERE page_id IN ({$pageIdList})"; - $revPageClause = " AND rev_page IN ({$pageIdList})"; - $this->output( "Limiting to {$tbl_pag}.page_id IN ({$pageIdList})\n" ); + if ( count( $args ) > 0 ) { + $pageConds['page_id'] = $args; + $revConds['rev_page'] = $args; + $this->output( "Limiting to page IDs " . implode( ',', $args ) . "\n" ); } # Get "active" revisions from the page table $this->output( "Searching for active revisions..." ); - $res = $dbw->query( "SELECT page_latest FROM $tbl_pag{$pageIdClause}" ); - $cur = array(); + $res = $dbw->select( 'page', 'page_latest', $pageConds, __METHOD__ ); + $latestRevs = array(); foreach ( $res as $row ) { - $cur[] = $row->page_latest; + $latestRevs[] = $row->page_latest; } $this->output( "done.\n" ); # Get all revisions that aren't in this set - $old = array(); $this->output( "Searching for inactive revisions..." ); - $set = implode( ', ', $cur ); - $res = $dbw->query( "SELECT rev_id FROM $tbl_rev WHERE rev_id NOT IN ( $set ){$revPageClause}" ); + if ( count( $latestRevs ) > 0 ) { + $revConds[] = 'rev_id NOT IN (' . $dbw->makeList( $latestRevs ) . ')'; + } + $res = $dbw->select( 'revision', 'rev_id', $revConds, __METHOD__ ); + $oldRevs = array(); foreach ( $res as $row ) { - $old[] = $row->rev_id; + $oldRevs[] = $row->rev_id; } $this->output( "done.\n" ); # Inform the user of what we're going to do - $count = count( $old ); + $count = count( $oldRevs ); $this->output( "$count old revisions found.\n" ); # Delete as appropriate if ( $delete && $count ) { $this->output( "Deleting..." ); - $set = implode( ', ', $old ); - $dbw->query( "DELETE FROM $tbl_rev WHERE rev_id IN ( $set )" ); + $dbw->delete( 'revision', array( 'rev_id' => $oldRevs ), __METHOD__ ); $this->output( "done.\n" ); } @@ -104,4 +101,3 @@ class DeleteOldRevisions extends Maintenance { $maintClass = "DeleteOldRevisions"; require_once( RUN_MAINTENANCE_IF_MAIN ); -