]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Fixed the delete orphan script to include deleted notices
authorMikael Nordfeldth <mmn@hethane.se>
Thu, 11 Feb 2016 21:43:26 +0000 (22:43 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Thu, 11 Feb 2016 21:43:26 +0000 (22:43 +0100)
The file_to_post table sometimes had post_id with values that did not
exist in the notice table.

scripts/delete_orphan_files.php

index ad575187bda9f3c5dc25c593384ac9f5e9e8ad5d..5e6c2633a8510553d35cd7c5b23a748d3ec70ec8 100755 (executable)
@@ -37,20 +37,28 @@ END_OF_HELP;
 
 require_once INSTALLDIR.'/scripts/commandline.inc';
 
+print "Finding File entries that are not related to a Notice (or the notice has been deleted)...";
+$file = new File();
+$sql = 'SELECT id FROM file'.
+        ' JOIN file_to_post ON file_to_post.file_id=file.id'.
+        ' WHERE'.
+            ' NOT EXISTS (SELECT file_to_post.file_id FROM file_to_post WHERE file.id=file_id)'.
+            ' OR NOT EXISTS (SELECT notice.id FROM notice WHERE notice.id=post_id);';
+
+print " {$file->N} found.\n";
+if ($file->N == 0) {
+    exit(0);
+}
 if (!have_option('y', 'yes')) {
-    print "About to delete local files that are not related to a Notice. Are you sure? [y/N] ";
+    print "About to delete the entries along with locally stored files. Are you sure? [y/N] ";
     $response = fgets(STDIN);
     if (strtolower(trim($response)) != 'y') {
         print "Aborting.\n";
         exit(0);
     }
 }
-
-print "Finding File entries...";
-$file = new File();
-$sql = 'SELECT * FROM file WHERE NOT EXISTS (SELECT id FROM file_to_post WHERE file.id=file_id);';
 if ($file->query($sql) !== false) {
-    print " Deleting {$file->N} entries: ";
+    print "\nDeleting: ";
     while ($file->fetch()) {
         try {
             $file->getPath();