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