]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - maintenance/deleteOldRevisions.inc
MediaWiki 1.11.0
[autoinstalls/mediawiki.git] / maintenance / deleteOldRevisions.inc
1 <?php
2
3 /**
4  * Support functions for the deleteOldRevisions script
5  *
6  * @addtogroup Maintenance
7  * @author Rob Church <robchur@gmail.com>
8  */
9  
10 require_once( 'purgeOldText.inc' );
11
12 function DeleteOldRevisions( $delete = false ) {
13
14         # Data should come off the master, wrapped in a transaction
15         $dbw = wfGetDB( DB_MASTER );
16         $dbw->begin();
17         
18         $tbl_pag = $dbw->tableName( 'page' );
19         $tbl_rev = $dbw->tableName( 'revision' );
20         
21         # Get "active" revisions from the page table
22         echo( "Searching for active revisions..." );
23         $res = $dbw->query( "SELECT page_latest FROM $tbl_pag" );
24         while( $row = $dbw->fetchObject( $res ) ) {
25                 $cur[] = $row->page_latest;
26         }
27         echo( "done.\n" );
28         
29         # Get all revisions that aren't in this set
30         echo( "Searching for inactive revisions..." );
31         $set = implode( ', ', $cur );
32         $res = $dbw->query( "SELECT rev_id FROM $tbl_rev WHERE rev_id NOT IN ( $set )" );
33         while( $row = $dbw->fetchObject( $res ) ) {
34                 $old[] = $row->rev_id;
35         }
36         echo( "done.\n" );
37         
38         # Inform the user of what we're going to do
39         $count = count( $old );
40         echo( "$count old revisions found.\n" );
41         
42         # Delete as appropriate
43         if( $delete && $count ) {
44                 echo( "Deleting..." );
45                 $set = implode( ', ', $old );
46                 $dbw->query( "DELETE FROM $tbl_rev WHERE rev_id IN ( $set )" );
47                 echo( "done.\n" );
48         }
49         
50         # This bit's done
51         # Purge redundant text records
52         $dbw->commit();
53         if( $delete ) {
54                 PurgeRedundantText( true );
55         }
56
57 }
58
59 ?>