public function onUserBlockBuilding(Event $event) { global $user; if ($user->is_admin()) { $event->add_link("Blotter Editor", make_link("blotter/editor")); } }
public function receive_event(Event $event) { global $config, $database, $page, $user; if (is_null($this->theme)) { $this->theme = get_theme_object($this); } if ($event instanceof InitExtEvent) { $config->set_default_int("history_limit", -1); // shimmie is being installed so call install to create the table. if ($config->get_int("ext_tag_history_version") < 3) { $this->install(); } } if ($event instanceof PageRequestEvent && $event->page_matches("tag_history")) { if ($event->get_arg(0) == "revert") { // this is a request to revert to a previous version of the tags if ($config->get_bool("tag_edit_anon") || !$user->is_anonymous()) { $this->process_revert_request($_POST['revert']); } } else { if ($event->count_args() == 1) { // must be an attempt to view a tag history $image_id = int_escape($event->get_arg(0)); $this->theme->display_history_page($page, $image_id, $this->get_tag_history_from_id($image_id)); } else { $this->theme->display_global_page($page, $this->get_global_tag_history()); } } } if ($event instanceof DisplayingImageEvent) { // handle displaying a link on the view page $this->theme->display_history_link($page, $event->image->id); } if ($event instanceof ImageDeletionEvent) { // handle removing of history when an image is deleted $this->delete_all_tag_history($event->image->id); } if ($event instanceof SetupBuildingEvent) { $sb = new SetupBlock("Tag History"); $sb->add_label("Limit to "); $sb->add_int_option("history_limit"); $sb->add_label(" entires per image"); $sb->add_label("<br>(-1 for unlimited)"); $event->panel->add_block($sb); } if ($event instanceof TagSetEvent) { $this->add_tag_history($event->image, $event->tags); } if ($event instanceof UserBlockBuildingEvent) { if ($user->is_admin()) { $event->add_link("Tag Changes", make_link("tag_history")); } } }
public function receive_event(Event $event) { global $config, $database, $page, $user; if (is_null($this->theme)) { $this->theme = get_theme_object($this); } if ($event instanceof PageRequestEvent && $event->page_matches("system_info")) { if ($user->is_admin()) { $this->theme->display_info_page($page, $this->get_info()); } } if ($event instanceof UserBlockBuildingEvent) { if ($user->is_admin()) { $event->add_link("System Info", make_link("system_info")); } } }
public function onUserBlockBuilding(Event $event) { $event->add_link("My Profile", make_link("user")); $event->add_link("Log Out", make_link("user_admin/logout"), 99); }
public function receive_event(Event $event) { global $config, $database, $page, $user; if (is_null($this->theme)) { $this->theme = get_theme_object($this); } if ($event instanceof InitExtEvent) { if ($config->get_int("ext_ipban_version") < 5) { $this->install(); } $this->check_ip_ban(); } if ($event instanceof PageRequestEvent && $event->page_matches("ip_ban")) { if ($user->is_admin()) { if ($event->get_arg(0) == "add" && $user->check_auth_token()) { if (isset($_POST['ip']) && isset($_POST['reason']) && isset($_POST['end'])) { if (empty($_POST['end'])) { $end = null; } else { $end = $_POST['end']; } send_event(new AddIPBanEvent($_POST['ip'], $_POST['reason'], $end)); $page->set_mode("redirect"); $page->set_redirect(make_link("ip_ban/list")); } } else { if ($event->get_arg(0) == "remove" && $user->check_auth_token()) { if (isset($_POST['id'])) { send_event(new RemoveIPBanEvent($_POST['id'])); $page->set_mode("redirect"); $page->set_redirect(make_link("ip_ban/list")); } } else { if ($event->get_arg(0) == "list") { $bans = isset($_GET["all"]) ? $this->get_bans() : $this->get_active_bans(); $this->theme->display_bans($page, $bans); } } } } else { $this->theme->display_permission_denied($page); } } if ($event instanceof UserBlockBuildingEvent) { if ($user->is_admin()) { $event->add_link("IP Bans", make_link("ip_ban/list")); } } if ($event instanceof AddIPBanEvent) { $this->add_ip_ban($event->ip, $event->reason, $event->end, $user); } if ($event instanceof RemoveIPBanEvent) { $database->Execute("DELETE FROM bans WHERE id = :id", array("id" => $event->id)); $database->cache->delete("ip_bans"); } }
public function receive_event(Event $event) { global $config, $database, $page, $user; if (is_null($this->theme)) { $this->theme = get_theme_object($this); } if ($event instanceof InitExtEvent) { $config->set_default_bool('report_image_show_thumbs', true); if ($config->get_int("ext_report_image_version") < 1) { $this->install(); } } if ($event instanceof PageRequestEvent && $event->page_matches("image_report")) { if ($event->get_arg(0) == "add") { if (isset($_POST['image_id']) && isset($_POST['reason'])) { $image_id = int_escape($_POST['image_id']); send_event(new AddReportedImageEvent($image_id, $user->id, $_POST['reason'])); $page->set_mode("redirect"); $page->set_redirect(make_link("post/view/{$image_id}")); } } else { if ($event->get_arg(0) == "remove") { if (isset($_POST['id'])) { if ($user->is_admin()) { send_event(new RemoveReportedImageEvent($_POST['id'])); $page->set_mode("redirect"); $page->set_redirect(make_link("image_report/list")); } } } else { if ($event->get_arg(0) == "list") { if ($user->is_admin()) { $this->theme->display_reported_images($page, $this->get_reported_images()); } } } } } if ($event instanceof AddReportedImageEvent) { $database->Execute("INSERT INTO image_reports(image_id, reporter_id, reason)\n\t\t\t\t\tVALUES (?, ?, ?)", array($event->image_id, $event->reporter_id, $event->reason)); } if ($event instanceof RemoveReportedImageEvent) { $database->Execute("DELETE FROM image_reports WHERE id = ?", array($event->id)); } if ($event instanceof DisplayingImageEvent) { if ($config->get_bool('report_image_anon') || !$user->is_anonymous()) { $this->theme->display_image_banner($page, $event->image); } } if ($event instanceof SetupBuildingEvent) { $sb = new SetupBlock("Report Image Options"); $sb->add_bool_option("report_image_anon", "Allow anonymous image reporting: "); $sb->add_bool_option("report_image_show_thumbs", "<br>Show thumbnails in admin panel: "); $event->panel->add_block($sb); } if ($event instanceof UserBlockBuildingEvent) { if ($user->is_admin()) { $event->add_link("Reported Images", make_link("image_report/list")); } } if ($event instanceof ImageDeletionEvent) { $database->Execute("DELETE FROM image_reports WHERE image_id = ?", array($event->image->id)); } }
public function receive_event(Event $event) { global $config, $database, $page, $user; if (is_null($this->theme)) { $this->theme = get_theme_object($this); } if ($event instanceof PageRequestEvent && $event->page_matches("admin")) { if (!$user->is_admin()) { $this->theme->display_permission_denied($page); } else { send_event(new AdminBuildingEvent($page)); } } if ($event instanceof PageRequestEvent && $event->page_matches("admin_utils")) { if ($user->is_admin()) { log_info("admin", "Util: {$_POST['action']}"); set_time_limit(0); $redirect = false; switch ($_POST['action']) { case 'lowercase all tags': $this->lowercase_all_tags(); $redirect = true; break; case 'recount tag use': $this->recount_tag_use(); $redirect = true; break; case 'purge unused tags': $this->purge_unused_tags(); $redirect = true; break; case 'convert to innodb': $this->convert_to_innodb(); $redirect = true; break; case 'database dump': $this->dbdump($page); break; } if ($redirect) { $page->set_mode("redirect"); $page->set_redirect(make_link("admin")); } } } if ($event instanceof AdminBuildingEvent) { $this->theme->display_page($page); $this->theme->display_form($page); } if ($event instanceof UserBlockBuildingEvent) { if ($user->is_admin()) { $event->add_link("Board Admin", make_link("admin")); } } }
public function receive_event(Event $event) { global $config, $database, $page, $user; if (is_null($this->theme)) { $this->theme = get_theme_object($this); } if ($event instanceof PageRequestEvent && $event->page_matches("alias")) { if ($event->get_arg(0) == "add") { if ($user->is_admin()) { if (isset($_POST['oldtag']) && isset($_POST['newtag'])) { try { $aae = new AddAliasEvent($_POST['oldtag'], $_POST['newtag']); send_event($aae); $page->set_mode("redirect"); $page->set_redirect(make_link("alias/list")); } catch (AddAliasException $ex) { $this->theme->display_error($page, "Error adding alias", $ex->getMessage()); } } } } else { if ($event->get_arg(0) == "remove") { if ($user->is_admin()) { if (isset($_POST['oldtag'])) { $database->Execute("DELETE FROM aliases WHERE oldtag=?", array($_POST['oldtag'])); log_info("alias_editor", "Deleted alias for " . $_POST['oldtag']); $page->set_mode("redirect"); $page->set_redirect(make_link("alias/list")); } } } else { if ($event->get_arg(0) == "list") { $page_number = $event->get_arg(1); if (is_null($page_number) || !is_numeric($page_number)) { $page_number = 0; } else { if ($page_number <= 0) { $page_number = 0; } else { $page_number--; } } $alias_per_page = $config->get_int('alias_items_per_page', 30); if ($database->engine->name == "mysql") { $query = "SELECT oldtag, newtag FROM aliases ORDER BY newtag ASC LIMIT ?, ?"; } else { $query = "SELECT oldtag, newtag FROM aliases ORDER BY newtag ASC OFFSET ? LIMIT ?"; } $alias = $database->db->GetAssoc($query, array($page_number * $alias_per_page, $alias_per_page)); $total_pages = ceil($database->db->GetOne("SELECT COUNT(*) FROM aliases") / $alias_per_page); $this->theme->display_aliases($page, $alias, $user->is_admin(), $page_number + 1, $total_pages); } else { if ($event->get_arg(0) == "export") { $page->set_mode("data"); $page->set_type("text/plain"); $page->set_data($this->get_alias_csv($database)); } else { if ($event->get_arg(0) == "import") { if ($user->is_admin()) { print_r($_FILES); if (count($_FILES) > 0) { global $database; $tmp = $_FILES['alias_file']['tmp_name']; $contents = file_get_contents($tmp); $this->add_alias_csv($database, $contents); $page->set_mode("redirect"); $page->set_redirect(make_link("alias/list")); } else { $this->theme->display_error($page, "No File Specified", "You have to upload a file"); } } else { $this->theme->display_error($page, "Admins Only", "Only admins can edit the alias list"); } } } } } } } if ($event instanceof AddAliasEvent) { global $database; $pair = array($event->oldtag, $event->newtag); if ($database->db->GetRow("SELECT * FROM aliases WHERE oldtag=? AND lower(newtag)=lower(?)", $pair)) { throw new AddAliasException("That alias already exists"); } else { $database->Execute("INSERT INTO aliases(oldtag, newtag) VALUES(?, ?)", $pair); log_info("alias_editor", "Added alias for {$event->oldtag} -> {$event->newtag}"); } } if ($event instanceof UserBlockBuildingEvent) { if ($user->is_admin()) { $event->add_link("Alias Editor", make_link("alias/list")); } } }
public function receive_event(Event $event) { global $config, $database, $page, $user; if (is_null($this->theme)) { $this->theme = get_theme_object($this); } if ($event instanceof InitExtEvent) { if ($config->get_int("ext_imageban_version") < 1) { $this->install(); } } if ($event instanceof DataUploadEvent) { $row = $database->db->GetRow("SELECT * FROM image_bans WHERE hash = ?", $event->hash); if ($row) { log_info("image_hash_ban", "Blocked image ({$event->hash})"); throw new UploadException("Image " . html_escape($row["hash"]) . " has been banned, reason: " . format_text($row["reason"])); } } if ($event instanceof PageRequestEvent && $event->page_matches("image_hash_ban")) { if ($user->is_admin()) { if ($event->get_arg(0) == "add") { if (isset($_POST['hash']) && isset($_POST['reason'])) { send_event(new AddImageHashBanEvent($_POST['hash'], $_POST['reason'])); $page->set_mode("redirect"); $page->set_redirect(make_link("image_hash_ban/list/1")); } if (isset($_POST['image_id'])) { $image = Image::by_id(int_escape($_POST['image_id'])); if ($image) { send_event(new ImageDeletionEvent($image)); $page->set_mode("redirect"); $page->set_redirect(make_link("post/list")); } } } else { if ($event->get_arg(0) == "remove") { if (isset($_POST['hash'])) { send_event(new RemoveImageHashBanEvent($_POST['hash'])); $page->set_mode("redirect"); $page->set_redirect(make_link("image_hash_ban/list/1")); } } else { if ($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->db->getone("SELECT COUNT(id) FROM image_bans") / $page_size); $this->theme->display_Image_hash_Bans($page, $page_num, $page_count, $this->get_image_hash_bans($page_num, $page_size)); } } } } } if ($event instanceof UserBlockBuildingEvent) { if ($user->is_admin()) { $event->add_link("Image Bans", make_link("image_hash_ban/list/1")); } } if ($event instanceof AddImageHashBanEvent) { $this->add_image_hash_ban($event->hash, $event->reason); } if ($event instanceof RemoveImageHashBanEvent) { $this->remove_image_hash_ban($event->hash); } if ($event instanceof ImageAdminBlockBuildingEvent) { if ($user->is_admin()) { $event->add_part($this->theme->get_buttons_html($event->image)); } } }