From 1584fc961ab5a12647f42a4b181a6cb33f24fc50 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Tue, 1 Apr 2008 15:30:52 +0000 Subject: [PATCH] Check for hidden images --- maintenance/deleteArchivedFiles.inc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/maintenance/deleteArchivedFiles.inc b/maintenance/deleteArchivedFiles.inc index 32ddf4c82a..98b409ec88 100644 --- a/maintenance/deleteArchivedFiles.inc +++ b/maintenance/deleteArchivedFiles.inc @@ -8,12 +8,12 @@ */ require_once( "$IP/includes/FileStore.php" ); +require_once( "$IP/includes/filerepo/File.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() ) { @@ -32,25 +32,26 @@ function DeleteArchivedFiles( $delete = false ) { $id = $row->fa_id; $store = FileStore::get( $group ); - if ( $store ) { + if( $store ) { $path = $store->filePath( $key ); - if ( $path && file_exists($path) ) { + $sha1 = substr( $key, 0, strcspn( $key, '.' ) ); + $inuse = $dbw->selectField( 'oldimage', '1', + array( 'oi_sha1' => $sha1, + 'oi_deleted & '.File::DELETED_FILE => File::DELETED_FILE ), + __METHOD__, array( 'FOR UPDATE' ) ); + if ( $path && file_exists($path) && !$inuse ) { $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( "Notice - invalid file storage group '$group' for file '$key'\n" ); } } echo( "done.\n" ); $transaction->commit(); - - # This bit's done - $dbw->commit(); - } ?> \ No newline at end of file -- 2.20.1