00001 <?php
00002
00013 $options = array( 'report', 'help' );
00014 require_once( 'commandLine.inc' );
00015 require_once( 'deleteOrphanedRevisions.inc.php' );
00016 echo( "Delete Orphaned Revisions\n" );
00017
00018 if( isset( $options['help'] ) )
00019 showUsage();
00020
00021 $report = isset( $options['report'] );
00022
00023 $dbw = wfGetDB( DB_MASTER );
00024 $dbw->immediateBegin();
00025 extract( $dbw->tableNames( 'page', 'revision' ) );
00026
00027 # Find all the orphaned revisions
00028 echo( "Checking for orphaned revisions..." );
00029 $sql = "SELECT rev_id FROM {$revision} LEFT JOIN {$page} ON rev_page = page_id WHERE page_namespace IS NULL";
00030 $res = $dbw->query( $sql, 'deleteOrphanedRevisions' );
00031
00032 # Stash 'em all up for deletion (if needed)
00033 while( $row = $dbw->fetchObject( $res ) )
00034 $revisions[] = $row->rev_id;
00035 $dbw->freeResult( $res );
00036 $count = count( $revisions );
00037 echo( "found {$count}.\n" );
00038
00039 # Nothing to do?
00040 if( $report || $count == 0 ) {
00041 $dbw->immediateCommit();
00042 exit();
00043 }
00044
00045 # Delete each revision
00046 echo( "Deleting..." );
00047 deleteRevisions( $revisions, $dbw );
00048 echo( "done.\n" );
00049
00050 # Close the transaction and call the script to purge unused text records
00051 $dbw->immediateCommit();
00052 require_once( 'purgeOldText.inc' );
00053 PurgeRedundantText( true );
00054