X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2FdeleteOldRevisions.php;h=24a63a3eebc2c0a1121524cc43f05cb4afddd5cd;hb=996b7350f3355f24abb55394ced108c0c9b8ef3a;hp=6a3e211b00bee876368eaca88dd3b7f5e7c59080;hpb=89a055491c988688c13b26184c06ba9d7b3585f3;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/deleteOldRevisions.php b/maintenance/deleteOldRevisions.php index 6a3e211b00..24a63a3eeb 100644 --- a/maintenance/deleteOldRevisions.php +++ b/maintenance/deleteOldRevisions.php @@ -22,7 +22,7 @@ * @author Rob Church */ -require_once( __DIR__ . '/Maintenance.php' ); +require_once __DIR__ . '/Maintenance.php'; /** * Maintenance script that deletes old (non-current) revisions from the database. @@ -32,7 +32,7 @@ require_once( __DIR__ . '/Maintenance.php' ); class DeleteOldRevisions extends Maintenance { public function __construct() { parent::__construct(); - $this->mDescription = "Delete old (non-current) revisions from the database"; + $this->addDescription( 'Delete old (non-current) revisions from the database' ); $this->addOption( 'delete', 'Actually perform the deletion' ); $this->addOption( 'page_id', 'List of page ids to work on', false ); } @@ -42,60 +42,57 @@ class DeleteOldRevisions extends Maintenance { $this->doDelete( $this->hasOption( 'delete' ), $this->mArgs ); } - function doDelete( $delete = false, $args = array() ) { + function doDelete( $delete = false, $args = [] ) { # Data should come off the master, wrapped in a transaction - $dbw = wfGetDB( DB_MASTER ); - $dbw->begin( __METHOD__ ); + $dbw = $this->getDB( DB_MASTER ); + $this->beginTransaction( $dbw, __METHOD__ ); - $tbl_pag = $dbw->tableName( 'page' ); - $tbl_rev = $dbw->tableName( 'revision' ); - - $pageIdClause = ''; - $revPageClause = ''; + $pageConds = []; + $revConds = []; # 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 = []; 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 = []; 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', [ 'rev_id' => $oldRevs ], __METHOD__ ); $this->output( "done.\n" ); } # This bit's done # Purge redundant text records - $dbw->commit( __METHOD__ ); + $this->commitTransaction( $dbw, __METHOD__ ); if ( $delete ) { $this->purgeRedundantText( true ); } @@ -103,5 +100,4 @@ class DeleteOldRevisions extends Maintenance { } $maintClass = "DeleteOldRevisions"; -require_once( RUN_MAINTENANCE_IF_MAIN ); - +require_once RUN_MAINTENANCE_IF_MAIN;