From: Aaron Schulz Date: Mon, 20 Jul 2009 05:16:41 +0000 (+0000) Subject: Update deleteArchivedFiles.inc to use FileRepo (FileStore was removed) X-Git-Tag: 1.31.0-rc.0~40805 X-Git-Url: http://git.cyclocoop.org/%22.%24h.%22?a=commitdiff_plain;h=f1810339072a12185aa72de3b3fdbc945bc27939;p=lhc%2Fweb%2Fwiklou.git Update deleteArchivedFiles.inc to use FileRepo (FileStore was removed) --- diff --git a/maintenance/deleteArchivedFiles.inc b/maintenance/deleteArchivedFiles.inc index da1c14d589..18cd87c0ca 100644 --- a/maintenance/deleteArchivedFiles.inc +++ b/maintenance/deleteArchivedFiles.inc @@ -8,49 +8,37 @@ * @author Aaron Schulz */ -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 ); - - $transaction = new FSTransaction(); - if( !FileStore::lock() ) { - wfDebug( __METHOD__.": failed to acquire file store lock, aborting\n" ); - return false; - } - $tbl_arch = $dbw->tableName( 'filearchive' ); - + $repo = RepoGroup::singleton()->getLocalRepo(); # 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" ); + $count = 0; 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 ); - $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" ); - } + $path = $repo->getZonePath( 'deleted' ).'/'.$repo->getDeletedHashPath($key).$key; + $sha1 = substr( $key, 0, strcspn( $key, '.' ) ); + // Check if the file is used anywhere... + $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 ) { + unlink($path); // delete + $count++; + $dbw->query( "DELETE FROM $tbl_arch WHERE fa_id = $id" ); } else { - echo( "Notice - invalid file storage group '$group' for file '$key'\n" ); + echo( "Notice - file '$key' not found in group '$group'\n" ); } } - echo( "done.\n" ); - - $transaction->commit(); + echo( "Done! [$count file(s)]\n" ); }