Example #1
0
 public function onUserBlockBuilding(Event $event)
 {
     global $user;
     if ($user->is_admin()) {
         $event->add_link("Blotter Editor", make_link("blotter/editor"));
     }
 }
Example #2
0
 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"));
         }
     }
 }
Example #3
0
 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"));
         }
     }
 }
Example #4
0
 public function onUserBlockBuilding(Event $event)
 {
     $event->add_link("My Profile", make_link("user"));
     $event->add_link("Log Out", make_link("user_admin/logout"), 99);
 }
Example #5
0
 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");
     }
 }
Example #6
0
 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));
     }
 }
Example #7
0
 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"));
         }
     }
 }
Example #8
0
 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"));
         }
     }
 }
Example #9
0
 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));
         }
     }
 }