diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2007-09-14 13:18:58 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2007-09-14 13:18:58 +0200 |
commit | 8f416baead93a48e5799e44b8bd2e2c4859f4e04 (patch) | |
tree | cd47ac55eb80a39e3225e8b4f3161b88ea16c2cf /maintenance/deleteArchivedFiles.inc | |
parent | d7d08bd1a17618c7d77a6b9b2989e9f7293d6ed6 (diff) |
auf Version 1.11 aktualisiert; Login-Bug behoben
Diffstat (limited to 'maintenance/deleteArchivedFiles.inc')
-rw-r--r-- | maintenance/deleteArchivedFiles.inc | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/maintenance/deleteArchivedFiles.inc b/maintenance/deleteArchivedFiles.inc new file mode 100644 index 00000000..32ddf4c8 --- /dev/null +++ b/maintenance/deleteArchivedFiles.inc @@ -0,0 +1,56 @@ +<?php + +/** + * Support functions for the deleteArchivedFiles script + * + * @addtogroup Maintenance + * @author Aaron Schulz + */ + +require_once( "$IP/includes/FileStore.php" ); + +function DeleteArchivedFiles( $delete = false ) { + + # Data should come off the master, wrapped in a transaction + $dbw = wfGetDB( DB_MASTER ); + $dbw->begin(); + + $transaction = new FSTransaction(); + if( !FileStore::lock() ) { + wfDebug( __METHOD__.": failed to acquire file store lock, aborting\n" ); + return false; + } + + $tbl_arch = $dbw->tableName( 'filearchive' ); + + # Get "active" revisions from the filearchive table + echo( "Searching for and deleting archived files...\n" ); + $res = $dbw->query( "SELECT fa_id,fa_storage_group,fa_storage_key FROM $tbl_arch" ); + while( $row = $dbw->fetchObject( $res ) ) { + $key = $row->fa_storage_key; + $group = $row->fa_storage_group; + $id = $row->fa_id; + + $store = FileStore::get( $group ); + if ( $store ) { + $path = $store->filePath( $key ); + if ( $path && file_exists($path) ) { + $transaction->addCommit( FSTransaction::DELETE_FILE, $path ); + $dbw->query( "DELETE FROM $tbl_arch WHERE fa_id = $id" ); + } else { + echo( "Notice - file '$key' not found in group '$group'\n" ); + } + } else { + echo( "Notice - invalid file storage group '$group'\n" ); + } + } + echo( "done.\n" ); + + $transaction->commit(); + + # This bit's done + $dbw->commit(); + +} + +?>
\ No newline at end of file |