*Add a script to delete archived images
authorAaron Schulz <aaron@users.mediawiki.org>
Thu, 10 May 2007 22:10:25 +0000 (22:10 +0000)
committerAaron Schulz <aaron@users.mediawiki.org>
Thu, 10 May 2007 22:10:25 +0000 (22:10 +0000)
maintenance/deleteArchivedFiles.inc [new file with mode: 0644]
maintenance/deleteArchivedFiles.php [new file with mode: 0644]
maintenance/deleteArchivedRevisions.inc
maintenance/deleteArchivedRevisions.php

diff --git a/maintenance/deleteArchivedFiles.inc b/maintenance/deleteArchivedFiles.inc
new file mode 100644 (file)
index 0000000..1880ed9
--- /dev/null
@@ -0,0 +1,61 @@
+<?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
diff --git a/maintenance/deleteArchivedFiles.php b/maintenance/deleteArchivedFiles.php
new file mode 100644 (file)
index 0000000..7aee527
--- /dev/null
@@ -0,0 +1,31 @@
+<?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
index 0cb1e86..8d89bad 100644 (file)
@@ -1,7 +1,7 @@
 <?php\r
 \r
 /**\r
- * Support functions for the deleteOldRevisions script\r
+ * Support functions for the deleteArchivedRevisions script\r
  *\r
  * @addtogroup Maintenance\r
  * @author Aaron Schulz\r
index 57a725f..26cc5ca 100644 (file)
@@ -1,7 +1,7 @@
 <?php\r
 \r
 /**\r
- * Delete old (non-current) revisions from the database\r
+ * Delete arcived (deleted from public) revisions from the database\r
  *\r
  * @addtogroup Maintenance\r
  * @author Aaron Schulz\r