Merge "Improve brevity of Special:MovePage form and its description"
[lhc/web/wiklou.git] / maintenance / deleteOldRevisions.php
index 6a3e211..847d863 100644 (file)
@@ -22,7 +22,7 @@
  * @author Rob Church <robchur@gmail.com>
  */
 
-require_once( __DIR__ . '/Maintenance.php' );
+require_once __DIR__ . '/Maintenance.php';
 
 /**
  * Maintenance script that deletes old (non-current) revisions from the database.
@@ -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" );
                }
 
@@ -103,5 +100,4 @@ class DeleteOldRevisions extends Maintenance {
 }
 
 $maintClass = "DeleteOldRevisions";
-require_once( RUN_MAINTENANCE_IF_MAIN );
-
+require_once RUN_MAINTENANCE_IF_MAIN;