summaryrefslogtreecommitdiff
path: root/tools/delete-stray-images.php
diff options
context:
space:
mode:
authorczaks <marcin@6irc.net>2013-09-17 15:08:41 -0400
committerczaks <marcin@6irc.net>2013-09-17 15:08:41 -0400
commit9092788fe1ab9fe21051eb6277880bc7d0be1d40 (patch)
treec8c69295f1469ce54fab930cea584decdf4c95dd /tools/delete-stray-images.php
parent6cb7eb939e549f978ca6dd7d2afe2dabc0f18025 (diff)
parentc43386253aafe5e9bb36b72c2337385a1c22d4fb (diff)
Merge https://github.com/savetheinternet/Tinyboard-Tools into vichan-devel-4.5
Conflicts: README.md js/auto-reload.js js/fix-report-delete-submit.js js/forced-anon.js js/local-time.js js/post-hover.js js/quick-post-controls.js js/quick-reply.js js/show-backlinks.js js/smartphone-spoiler.js migration/kusabax.php stylesheets/dark.css stylesheets/futaba+vichan.css stylesheets/miku.css stylesheets/testorange.css stylesheets/wasabi.css tools/benchmark.php tools/i18n_extract.php tools/inc/cli.php tools/rebuild.php
Diffstat (limited to 'tools/delete-stray-images.php')
-rwxr-xr-xtools/delete-stray-images.php60
1 files changed, 60 insertions, 0 deletions
diff --git a/tools/delete-stray-images.php b/tools/delete-stray-images.php
new file mode 100755
index 00000000..cf94dfe5
--- /dev/null
+++ b/tools/delete-stray-images.php
@@ -0,0 +1,60 @@
+#!/usr/bin/php
+<?php
+/*
+ * delete-stray-images.php - there was a period when undoImage() was not working at all. This meant that
+ * if an error occured while uploading an image, the uploaded images might not have been deleted.
+ *
+ * This script iterates through every board and deletes any stray files in src/ or thumb/ that don't
+ * exist in the database.
+ *
+ */
+
+require dirname(__FILE__) . '/inc/cli.php';
+
+$boards = listBoards();
+
+foreach ($boards as $board) {
+ echo "/{$board['uri']}/... ";
+
+ openBoard($board['uri']);
+
+ $query = query(sprintf("SELECT `file`, `thumb` FROM ``posts_%s`` WHERE `file` IS NOT NULL", $board['uri']));
+ $valid_src = array();
+ $valid_thumb = array();
+
+ while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
+ $valid_src[] = $post['file'];
+ $valid_thumb[] = $post['thumb'];
+ }
+
+ $files_src = array_map('basename', glob($board['dir'] . $config['dir']['img'] . '*'));
+ $files_thumb = array_map('basename', glob($board['dir'] . $config['dir']['thumb'] . '*'));
+
+ $stray_src = array_diff($files_src, $valid_src);
+ $stray_thumb = array_diff($files_thumb, $valid_thumb);
+
+ $stats = array(
+ 'deleted' => 0,
+ 'size' => 0
+ );
+
+ foreach ($stray_src as $src) {
+ $stats['deleted']++;
+ $stats['size'] = filesize($board['dir'] . $config['dir']['img'] . $src);
+ if (!file_unlink($board['dir'] . $config['dir']['img'] . $src)) {
+ $er = error_get_last();
+ die("error: " . $er['message'] . "\n");
+ }
+ }
+
+ foreach ($stray_thumb as $thumb) {
+ $stats['deleted']++;
+ $stats['size'] = filesize($board['dir'] . $config['dir']['thumb'] . $thumb);
+ if (!file_unlink($board['dir'] . $config['dir']['thumb'] . $thumb)) {
+ $er = error_get_last();
+ die("error: " . $er['message'] . "\n");
+ }
+ }
+
+ echo sprintf("deleted %s files (%s)\n", $stats['deleted'], format_bytes($stats['size']));
+}