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