diff options
| author | czaks <marcin@6irc.net> | 2013-09-17 15:08:41 -0400 |
|---|---|---|
| committer | czaks <marcin@6irc.net> | 2013-09-17 15:08:41 -0400 |
| commit | 9092788fe1ab9fe21051eb6277880bc7d0be1d40 (patch) | |
| tree | c8c69295f1469ce54fab930cea584decdf4c95dd /tools/delete-stray-images.php | |
| parent | 6cb7eb939e549f978ca6dd7d2afe2dabc0f18025 (diff) | |
| parent | c43386253aafe5e9bb36b72c2337385a1c22d4fb (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-x | tools/delete-stray-images.php | 60 |
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'])); +} |
