From 7d30aaf1ea06b1c50bd90460a28e04f03b1ac92d Mon Sep 17 00:00:00 2001 From: Shish Date: Fri, 29 Nov 2019 02:06:22 +0000 Subject: [PATCH] microcrud for notatag --- ext/image_hash_ban/main.php | 15 +++------- ext/ipban/main.php | 12 ++++---- ext/not_a_tag/main.php | 60 ++++++++++++++++++++++++------------- ext/not_a_tag/theme.php | 54 ++------------------------------- 4 files changed, 52 insertions(+), 89 deletions(-) diff --git a/ext/image_hash_ban/main.php b/ext/image_hash_ban/main.php index fec46ec0..33c49d29 100644 --- a/ext/image_hash_ban/main.php +++ b/ext/image_hash_ban/main.php @@ -7,13 +7,11 @@ use MicroCRUD\Table; class HashBanTable extends Table { - public function __construct(\FFSPHP\PDO $db, $token=null) + public function __construct(\FFSPHP\PDO $db) { - parent::__construct($db, $token); - + parent::__construct($db); $this->table = "image_bans"; $this->base_query = "SELECT * FROM image_bans"; - $this->size = 100; $this->limit = 1000000; $this->columns = [ @@ -24,7 +22,6 @@ class HashBanTable extends Table $this->order_by = ["date DESC", "id"]; $this->create_url = make_link("image_hash_ban/add"); $this->delete_url = make_link("image_hash_ban/remove"); - $this->table_attrs = ["class" => "zebra"]; } } @@ -104,12 +101,8 @@ class ImageBan extends Extension } } elseif ($event->get_arg(0) == "remove") { $user->ensure_authed(); - $input = validate_input(["d_id"=>"int"]); - $hash = $database->get_one( - "SELECT hash FROM image_hash_bans WHERE id=:id", - ["id"=>$input['d_id']] - ); - send_event(new RemoveImageHashBanEvent($hash)); + $input = validate_input(["d_hash"=>"string"]); + send_event(new RemoveImageHashBanEvent($input['hash'])); flash_message("Image ban removed"); $page->set_mode(PageMode::REDIRECT); $page->set_redirect($_SERVER['HTTP_REFERER']); diff --git a/ext/ipban/main.php b/ext/ipban/main.php index 068729bb..c059d7b7 100644 --- a/ext/ipban/main.php +++ b/ext/ipban/main.php @@ -9,10 +9,9 @@ use MicroCRUD\Table; class IPBanTable extends Table { - public function __construct(\FFSPHP\PDO $db, $token=null) + public function __construct(\FFSPHP\PDO $db) { - parent::__construct($db, $token); - + parent::__construct($db); $this->table = "bans"; $this->base_query = " SELECT * FROM ( @@ -20,8 +19,8 @@ class IPBanTable extends Table FROM bans JOIN users ON banner_id=users.id ) AS tbl1 "; - - $this->size = 10; + $this->size = 100; + $this->limit = 1000000; $this->columns = [ new InetColumn("ip", "IP"), new EnumColumn("mode", "Mode", ["Block"=>"block", "Firewall"=>"firewall", "Ghost"=>"ghost"]), @@ -36,8 +35,7 @@ class IPBanTable extends Table ]; $this->create_url = make_link("ip_ban/create"); $this->delete_url = make_link("ip_ban/delete"); - - $this->table_attrs = ["class" => "sortable zebra"]; + $this->table_attrs = ["class" => "zebra"]; } } diff --git a/ext/not_a_tag/main.php b/ext/not_a_tag/main.php index 5d637f20..4a0d56d4 100644 --- a/ext/not_a_tag/main.php +++ b/ext/not_a_tag/main.php @@ -1,5 +1,28 @@ table = "untags"; + $this->base_query = "SELECT * FROM untags"; + $this->size = 100; + $this->limit = 1000000; + $this->columns = [ + new TextColumn("tag", "Tag"), + new TextColumn("redirect", "Redirect"), + ]; + $this->order_by = ["tag", "redirect"]; + $this->create_url = make_link("untag/add"); + $this->delete_url = make_link("untag/remove"); + $this->table_attrs = ["class" => "zebra"]; + } +} + class NotATag extends Extension { public function get_priority(): int @@ -77,32 +100,29 @@ class NotATag extends Extension if ($event->page_matches("untag")) { if ($user->can(Permissions::BAN_IMAGE)) { if ($event->get_arg(0) == "add") { - $tag = $_POST["tag"]; - $redirect = isset($_POST['redirect']) ? $_POST['redirect'] : "DNP"; - - $database->Execute( + $user->ensure_authed(); + $input = validate_input(["c_tag"=>"string", "c_redirect"=>"string"]); + $database->execute( "INSERT INTO untags(tag, redirect) VALUES (:tag, :redirect)", - ["tag"=>$tag, "redirect"=>$redirect] + ["tag"=>$input['c_tag'], "redirect"=>$input['c_redirect']] ); - $page->set_mode(PageMode::REDIRECT); $page->set_redirect($_SERVER['HTTP_REFERER']); } elseif ($event->get_arg(0) == "remove") { - if (isset($_POST['tag'])) { - $database->Execute($database->scoreql_to_sql("DELETE FROM untags WHERE SCORE_STRNORM(tag) = SCORE_STRNORM(:tag)"), ["tag"=>$_POST['tag']]); - - flash_message("Image ban removed"); - $page->set_mode(PageMode::REDIRECT); - $page->set_redirect($_SERVER['HTTP_REFERER']); - } + $user->ensure_authed(); + $input = validate_input(["d_tag"=>"string"]); + $database->execute($database->scoreql_to_sql( + "DELETE FROM untags WHERE SCORE_STRNORM(tag) = SCORE_STRNORM(:tag)"), + ["tag"=>$input['d_tag']] + ); + flash_message("Image ban removed"); + $page->set_mode(PageMode::REDIRECT); + $page->set_redirect($_SERVER['HTTP_REFERER']); } elseif ($event->get_arg(0) == "list") { - $page_num = 0; - if ($event->count_args() == 2) { - $page_num = int_escape($event->get_arg(1)); - } - $page_size = 100; - $page_count = ceil($database->get_one("SELECT COUNT(tag) FROM untags")/$page_size); - $this->theme->display_untags($page, $page_num, $page_count, $this->get_untags($page_num, $page_size)); + $t = new NotATagTable($database->raw_db()); + $t->token = $user->get_auth_token(); + $t->inputs = $_GET; + $this->theme->display_bans($page, $t->table($t->query()), $t->paginator()); } } } diff --git a/ext/not_a_tag/theme.php b/ext/not_a_tag/theme.php index 535a1b36..ddd08fca 100644 --- a/ext/not_a_tag/theme.php +++ b/ext/not_a_tag/theme.php @@ -1,59 +1,11 @@ - ".make_form(make_link("untag/remove"))." - {$ban['tag']} - {$ban['redirect']} - - - - - - - "; - } - $html = " - - - - - - - - - - - - $h_bans - - ".make_form(make_link("untag/add"))." - - - - - -
TagRedirectAction
- "; - - $prev = $page_number - 1; - $next = $page_number + 1; - - $h_prev = ($page_number <= 1) ? "Prev" : "Prev"; - $h_index = "Index"; - $h_next = ($page_number >= $page_count) ? "Next" : "Next"; - - $nav = "$h_prev | $h_index | $h_next"; - $page->set_title("UnTags"); $page->set_heading("UnTags"); - $page->add_block(new Block("Edit UnTags", $html)); - $page->add_block(new Block("Navigation", $nav, "left", 0)); - $this->display_paginator($page, "untag/list", null, $page_number, $page_count); + $page->add_block(new NavBlock()); + $page->add_block(new Block("Edit UnTags", $table . $paginator)); } }