--- /dev/null
+<?php\r
+\r
+/**\r
+ * Support functions for the deleteArchivedFiles script\r
+ *\r
+ * @addtogroup Maintenance\r
+ * @author Aaron Schulz\r
+ */\r
+\r
+require_once( "$IP/includes/FileStore.php" );\r
+\r
+function DeleteArchivedFiles( $delete = false ) {\r
+\r
+ # Data should come off the master, wrapped in a transaction\r
+ $dbw = wfGetDB( DB_MASTER );\r
+ $dbw->begin();\r
+ \r
+ $transaction = new FSTransaction();\r
+ if( !FileStore::lock() ) {\r
+ wfDebug( __METHOD__.": failed to acquire file store lock, aborting\n" );\r
+ return false;\r
+ }\r
+ \r
+ $tbl_arch = $dbw->tableName( 'filearchive' );\r
+ \r
+ # Get "active" revisions from the filearchive table\r
+ echo( "Searching for and deleting archived files...\n" );\r
+ $res = $dbw->query( "SELECT fa_storage_group,fa_storage_key FROM $tbl_arch" );\r
+ while( $row = $dbw->fetchObject( $res ) ) {\r
+ $key = $row->fa_storage_key;\r
+ $group = $row->fa_storage_group;\r
+ \r
+ $store = FileStore::get( $group );\r
+ if ( $store ) {\r
+ $path = $store->filePath( $key );\r
+ if ( $path && file_exists($path) ) {\r
+ $transaction->addCommit( FSTransaction::DELETE_FILE, $path );\r
+ } else {\r
+ echo( "Notice - file '$key' not found in group '$group'\n" );\r
+ }\r
+ } else {\r
+ echo( "Notice - invalid file storage group '$group'\n" );\r
+ }\r
+ }\r
+ echo( "done.\n" );\r
+ \r
+ $transaction->commit();\r
+ \r
+ \r
+ # Delete as appropriate\r
+ echo( "Deleting filearchive rows..." );\r
+ $dbw->query( "TRUNCATE TABLE $tbl_arch" );\r
+ echo( "done.\n" );\r
+ \r
+ # This bit's done\r
+ # Purge redundant text records\r
+ $dbw->commit();\r
+\r
+}\r
+\r
+?>
\ No newline at end of file
--- /dev/null
+<?php\r
+\r
+/**\r
+ * Delete archived (non-current) files from the database\r
+ *\r
+ * @addtogroup Maintenance\r
+ * @author Aaron Schulz\r
+ * Based on deleteOldRevisions.php by Rob Church\r
+ */\r
+\r
+$options = array( 'delete', 'help' );\r
+require_once( 'commandLine.inc' );\r
+require_once( 'deleteArchivedFiles.inc' );\r
+\r
+echo( "Delete Archived Images\n\n" );\r
+\r
+if( @$options['help'] ) {\r
+ ShowUsage();\r
+} else {\r
+ DeleteArchivedFiles( @$options['delete'] );\r
+}\r
+\r
+function ShowUsage() {\r
+ echo( "Deletes all archived images.\n\n" );\r
+ echo( "These images will no longer be restorable.\n\n" );\r
+ echo( "Usage: php deleteArchivedRevisions.php [--delete|--help]\n\n" );\r
+ echo( "delete : Performs the deletion\n" );\r
+ echo( " help : Show this usage information\n" );\r
+}\r
+\r
+?>
\ No newline at end of file