diff --git a/DBupdate.php b/DBupdate.php index 29a14b65..183aa044 100644 --- a/DBupdate.php +++ b/DBupdate.php @@ -5,6 +5,17 @@ include_once "config.php"; $db = new Database(); echo "Fixing user_favorites table...."; ($db->Execute("ALTER TABLE user_favorites ENGINE=InnoDB;")) ? print_r("ok
") : print_r("failed
"); -echo "adding Foreign key to users..."; +echo "adding Foreign key to user ids..."; ($db->Execute("ALTER TABLE user_favorites ADD FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;"))? print_r("ok
"):print_r("failed
"); +echo "cleaning, the table from deleted image favorites...
"; +$rows = $db->get_all("SELECT * FROM user_favorites WHERE image_id NOT IN ( SELECT id FROM images );"); +foreach( $rows as $key => $value) + $db->Execute("DELETE FROM user_favorites WHERE image_id = :image_id;", array("image_id" => $value["image_id"])); +echo "adding forign key to image ids..."; +($db->Execute("ALTER TABLE user_favorites ADD FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE;"))? print_r("ok
"):print_r("failed
"); +echo "adding foreign keys to private messages..."; +($db->Execute("ALTER TABLE private_message +ADD FOREIGN KEY (from_id) REFERENCES users(id) ON DELETE CASCADE, +ADD FOREIGN KEY (to_id) REFERENCES users(id) ON DELETE CASCADE;")) ? print_r("ok
"):print_r("failed
"); +echo "DONE!!!!"; ?> \ No newline at end of file diff --git a/ext/user/main.php b/ext/user/main.php index 0f1e8027..4e2620c0 100644 --- a/ext/user/main.php +++ b/ext/user/main.php @@ -147,6 +147,9 @@ class UserPage extends SimpleExtension { else if($event->get_arg(0) == "delete_user") { $this->delete_user($page); } + else if($event->get_arg(0) == "delete_user_with_images") { + $this->delete_user_with_images($page); + } } if(($event instanceof PageRequestEvent) && $event->page_matches("user")) { @@ -487,9 +490,44 @@ class UserPage extends SimpleExtension { $database->execute("DELETE FROM users WHERE id = :id" , array("id"=>$_POST['id'])); + + $page->set_mode("redirect"); + $page->set_redirect(make_link("post/list")); + } + } + + private function delete_user_with_images($page) { + global $user; + global $config; + global $database; + + $page->set_title("Error"); + $page->set_heading("Error"); + $page->add_block(new NavBlock()); + + if (!$user->is_admin()) { + $page->add_block(new Block("Not Admin", "Only admins can delete accounts")); + } + else if(!isset($_POST['id']) || !is_numeric($_POST['id'])) { + $page->add_block(new Block("No ID Specified", + "You need to specify the account number to edit")); + } + else{ + $rows = $database->get_all("SELECT * FROM images WHERE owner_id = :owner_id", array("owner_id" => $_POST['id'])); + foreach ($rows as $key => $value) + { + $image = Image::by_id($value['id']); + if($image) { + send_event(new ImageDeletionEvent($image)); + } + } + $database->execute("DELETE FROM users + WHERE id = :id" + , array("id"=>$_POST['id'])); + + $page->set_mode("redirect"); + $page->set_redirect(make_link("post/list")); } - $page->set_mode("redirect"); - $page->set_redirect(make_link("post/list")); } // }}} diff --git a/ext/user/theme.php b/ext/user/theme.php index 424099f4..304ff541 100644 --- a/ext/user/theme.php +++ b/ext/user/theme.php @@ -180,11 +180,15 @@ class UserPageTheme extends Themelet { Admin: - "; - $html .=" -

".make_form(make_link("user_admin/delete_user"))." + + ".make_form(make_link("user_admin/delete_user"))." + + + ".make_form(make_link("user_admin/delete_user_with_images"))." + + "; } return $html;