diff options
| -rw-r--r-- | tools/recount-bumps.php | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/recount-bumps.php b/tools/recount-bumps.php new file mode 100644 index 00000000..633ce4da --- /dev/null +++ b/tools/recount-bumps.php @@ -0,0 +1,39 @@ +<?php +// A script to recount bumps to recover from a last-page-bump attack +// or to be run after the KusabaX Migration. + +require dirname(__FILE__) . '/inc/cli.php'; + +if(!is_writable($config['file_script'])) { + get_httpd_privileges(); +} + +if (!isset ($argv[1])) { + die("Usage: tools/recount-bumps.php board_uri\n"); +} +$board = $argv[1]; + +$q = query(sprintf("SELECT `id`, `bump`, `time` FROM ``posts_%s`` + WHERE `thread` IS NULL", $board)); +while ($val = $q->fetch()) { + $lc = prepare(sprintf('SELECT MAX(`time`) AS `aq` FROM ``posts_%s`` + WHERE ((`thread` = :thread and + `email` != "sage" ) OR `id` = :thread', $board)); + + $lc->bindValue(":thread", $val['id']); + $lc->execute(); + + $f = $lc->fetch(); + if ($val['bump'] != $f['aq']) { + $query = prepare(sprintf("UPDATE ``posts_%s`` SET `bump`=$f[aq] + WHERE `id`=:id", $board)); + $query->bindValue(":bump", $f['aq']); + $query->bindValue(":id", $val['id']); + echo("Thread $val[id] - to be $val[bump] -> $f[aq]\n"); + } + else { + echo("Thread $val[id] ok\n"); + } +} + +echo("done\n"); |
