From 344e8afd9803eadcc4b00ccdfc83350fcb3a0b01 Mon Sep 17 00:00:00 2001 From: Zarek Jenkinson Date: Wed, 29 May 2013 19:50:00 +1200 Subject: [PATCH] Add reset_image_ids from shish/shimmie2-utils to the admin extension --- ext/admin/main.php | 41 +++++++++++++++++++++++++++++++++++++++++ ext/admin/theme.php | 1 + 2 files changed, 42 insertions(+) diff --git a/ext/admin/main.php b/ext/admin/main.php index 179a13c7..b5542c26 100644 --- a/ext/admin/main.php +++ b/ext/admin/main.php @@ -213,5 +213,46 @@ class AdminPage extends Extension { //TODO: Delete file after downloaded? return false; // we do want a redirect, but a manual one } + + private function reset_image_ids() { + global $database; + + //This might be a bit laggy on boards with lots of images (?) + //Seems to work fine with 1.2k~ images though. + $i = 0; + $image = $database->get_all("SELECT * FROM images ORDER BY images.id ASC"); + /*$score_log = $database->get_all("SELECT message FROM score_log");*/ + foreach($image as $img){ + $xid = $img[0]; + $i = $i + 1; + $table = array( //Might be missing some tables? + "image_tags", "tag_histories", "image_reports", "comments", "user_favorites", "tag_histories", + "numeric_score_votes", "pool_images", "slext_progress_cache", "notes"); + + $sql = + "SET FOREIGN_KEY_CHECKS=0; + UPDATE images + SET id=".$i. + " WHERE id=".$xid.";"; //id for images + + foreach($table as $tbl){ + $sql .= " + UPDATE ".$tbl." + SET image_id=".$i." + WHERE image_id=".$xid.";"; + } + + /*foreach($score_log as $sl){ + //This seems like a bad idea. + //TODO: Might be better for log_info to have an $id option (which would then affix the id to the table?) + preg_replace(".Image \\#[0-9]+.", "Image #".$i, $sl); + }*/ + $sql .= " SET FOREIGN_KEY_CHECKS=1;"; + $database->execute($sql); + } + $count = (count($image)) + 1; + $database->execute("ALTER TABLE images AUTO_INCREMENT=".$count); + return true; + } } ?> diff --git a/ext/admin/theme.php b/ext/admin/theme.php index 7069afc0..f7d2ddb2 100644 --- a/ext/admin/theme.php +++ b/ext/admin/theme.php @@ -41,6 +41,7 @@ class AdminPageTheme extends Themelet { $html .= $this->button("Recount tag use", "recount_tag_user", false); $html .= $this->button("Download all images", "image_dump", false); $html .= $this->button("Download database contents", "database_dump", false); + $html .= $this->button("Reset image IDs", "reset_image_ids", false); $page->add_block(new Block("Misc Admin Tools", $html)); $html = make_form(make_link("admin/set_tag_case"), "POST");