From 0a1e8f2af4db3cf722aa80a678f27d16fc17993c Mon Sep 17 00:00:00 2001 From: "green-ponies (jgen)" Date: Sat, 4 Feb 2012 12:20:49 -0500 Subject: [PATCH 01/19] Store config values that are used inside a loop. --- ext/tag_list/theme.php | 16 ++++++++++------ ext/upload/main.php | 2 ++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/ext/tag_list/theme.php b/ext/tag_list/theme.php index 99d83664..7014bb3c 100644 --- a/ext/tag_list/theme.php +++ b/ext/tag_list/theme.php @@ -69,23 +69,27 @@ class TagListTheme extends Themelet { */ public function display_popular_block(Page $page, $tag_infos) { global $config; + + $info_link = $config->get_string('info_link'); + $tag_list_num = $config->get_bool("tag_list_numbers"); $html = ""; $n = 0; + foreach($tag_infos as $row) { $tag = $row['tag']; $h_tag = html_escape($tag); $h_tag_no_underscores = str_replace("_", " ", $h_tag); $count = $row['count']; if($n++) $html .= "\n
"; - if(!is_null($config->get_string('info_link'))) { - $link = str_replace('$tag', $tag, $config->get_string('info_link')); - $html .= " ?"; + if(!is_null($info_link)) { + $link = str_replace('$tag', $tag, $info_link); + $html .= ' ?'; } $link = $this->tag_link($row['tag']); - $html .= " $h_tag_no_underscores"; - if($config->get_bool("tag_list_numbers")) { - $html .= " $count"; + $html .= ' '.$h_tag_no_underscores.''; + if($tag_list_num) { + $html .= ' '.$count.''; } } diff --git a/ext/upload/main.php b/ext/upload/main.php index 979ab413..8d2281fa 100644 --- a/ext/upload/main.php +++ b/ext/upload/main.php @@ -58,6 +58,8 @@ class Upload extends SimpleExtension { $this->is_full = false; } else { + // TODO: This size limit should be configureable by the admin... + // currently set to 100 MB $this->is_full = $free_num < 100*1024*1024; } From 68e9bd694ef492a2516c119e7c8e993f6e21e5e4 Mon Sep 17 00:00:00 2001 From: "green-ponies (jgen)" Date: Sat, 4 Feb 2012 14:17:52 -0500 Subject: [PATCH 02/19] Storing copies of config variables outside of for loops. --- core/page.class.php | 10 +++++++--- ext/comment/theme.php | 9 ++++++--- ext/tag_list/theme.php | 13 +++++++++---- ext/upload/theme.php | 3 ++- themes/danbooru/comment.theme.php | 8 ++++++-- 5 files changed, 30 insertions(+), 13 deletions(-) diff --git a/core/page.class.php b/core/page.class.php index 6570632b..356febdf 100644 --- a/core/page.class.php +++ b/core/page.class.php @@ -289,7 +289,11 @@ class Page { { global $config; - if (!$config->get_bool("autocache_css") && !$config->get_bool("autocache_js")) { + // store local copy for speed. + $autocache_css = $config->get_bool("autocache_css"); + $autocache_js = config->get_bool("autocache_js") + + if (!$autocache_css && !$autocache_js) { return false; // caching disabled } @@ -307,7 +311,7 @@ class Page { $data_href = get_base_href(); /* ----- CSS Files ----- */ - if ($config->get_bool("autocache_css")) + if ($autocache_css) { // First get all the CSS from the lib directory $contents_from_lib = ''; @@ -374,7 +378,7 @@ class Page { /* ----- JavaScript Files ----- */ - if ($config->get_bool("autocache_js")) + if ($autocache_js) { $data = ''; $js_files = glob("lib/*.js"); diff --git a/ext/comment/theme.php b/ext/comment/theme.php index 56afa513..15911c47 100644 --- a/ext/comment/theme.php +++ b/ext/comment/theme.php @@ -35,14 +35,17 @@ class CommentListTheme extends Themelet { // parts for each image $position = 10; + + $comment_limit = $config->get_int("comment_list_count", 10); + $comment_captcha = $config->get_bool('comment_captcha'); + foreach($images as $pair) { $image = $pair[0]; $comments = $pair[1]; $thumb_html = $this->build_thumb_html($image); - $comment_html = ""; - $comment_limit = $config->get_int("comment_list_count", 10); + $comment_count = count($comments); if($comment_limit > 0 && $comment_count > $comment_limit) { $hidden = $comment_count - $comment_limit; @@ -59,7 +62,7 @@ class CommentListTheme extends Themelet { } } else { if ($can_post) { - if(!$config->get_bool('comment_captcha')) { + if(!$comment_captcha) { $comment_html .= $this->build_postbox($image->id); } else { diff --git a/ext/tag_list/theme.php b/ext/tag_list/theme.php index 7014bb3c..23065572 100644 --- a/ext/tag_list/theme.php +++ b/ext/tag_list/theme.php @@ -70,6 +70,7 @@ class TagListTheme extends Themelet { public function display_popular_block(Page $page, $tag_infos) { global $config; + // store local copies for speed. $info_link = $config->get_string('info_link'); $tag_list_num = $config->get_bool("tag_list_numbers"); @@ -107,19 +108,23 @@ class TagListTheme extends Themelet { public function display_refine_block(Page $page, $tag_infos, $search) { global $config; + // store local copy for speed. + $info_link = $config->get_string('info_link'); + $html = ""; $n = 0; + foreach($tag_infos as $row) { $tag = $row['tag']; $h_tag = html_escape($tag); $h_tag_no_underscores = str_replace("_", " ", $h_tag); if($n++) $html .= "\n
"; - if(!is_null($config->get_string('info_link'))) { - $link = str_replace('$tag', $tag, $config->get_string('info_link')); - $html .= " ?"; + if(!is_null($info_link)) { + $link = str_replace('$tag', $tag, $info_link); + $html .= ' ?'; } $link = $this->tag_link($row['tag']); - $html .= " $h_tag_no_underscores"; + $html .= ' '.$h_tag_no_underscores.''; $html .= $this->ars($tag, $search); } diff --git a/ext/upload/theme.php b/ext/upload/theme.php index 9e66e457..c237493d 100644 --- a/ext/upload/theme.php +++ b/ext/upload/theme.php @@ -18,6 +18,7 @@ class UploadTheme extends Themelet { $upload_list = ""; $upload_count = $config->get_int('upload_count'); + for($i=0; $i<$upload_count; $i++) { $a=$i+1; @@ -53,7 +54,7 @@ class UploadTheme extends Themelet { ". ""; - if($a==$config->get_int('upload_count')){ + if($a == $upload_count){ $upload_list .=""; }else{ $js1 = 'javascript:$(function() { diff --git a/themes/danbooru/comment.theme.php b/themes/danbooru/comment.theme.php index ff728eac..a9ee90e1 100644 --- a/themes/danbooru/comment.theme.php +++ b/themes/danbooru/comment.theme.php @@ -25,6 +25,10 @@ class CustomCommentListTheme extends CommentListTheme { // parts for each image $position = 10; + + $comment_captcha = $config->get_bool('comment_captcha'); + $comment_limit = $config->get_int("comment_list_count", 10); + foreach($images as $pair) { $image = $pair[0]; $comments = $pair[1]; @@ -42,7 +46,7 @@ class CustomCommentListTheme extends CommentListTheme { $r = class_exists("Ratings") ? "Rating ".Ratings::rating_to_human($image->rating) : ""; $comment_html = "Date $p $s User $un $s $r
Tags $t

 "; - $comment_limit = $config->get_int("comment_list_count", 10); + $comment_count = count($comments); if($comment_limit > 0 && $comment_count > $comment_limit) { $hidden = $comment_count - $comment_limit; @@ -57,7 +61,7 @@ class CustomCommentListTheme extends CommentListTheme { $comment_html .= $this->build_postbox($image->id); } else { - if(!$config->get_bool('comment_captcha')) { + if(!$comment_captcha) { $comment_html .= $this->build_postbox($image->id); } else { From cd1f5d9ed0a133af3563234602ee1530db33b62a Mon Sep 17 00:00:00 2001 From: "green-ponies (jgen)" Date: Sat, 4 Feb 2012 14:49:48 -0500 Subject: [PATCH 03/19] Missed a semicolon. --- core/page.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/page.class.php b/core/page.class.php index 356febdf..2995814c 100644 --- a/core/page.class.php +++ b/core/page.class.php @@ -291,7 +291,7 @@ class Page { // store local copy for speed. $autocache_css = $config->get_bool("autocache_css"); - $autocache_js = config->get_bool("autocache_js") + $autocache_js = config->get_bool("autocache_js"); if (!$autocache_css && !$autocache_js) { return false; // caching disabled From 3b028696a06fe55af9912400f41d247ac38db79d Mon Sep 17 00:00:00 2001 From: "green-ponies (jgen)" Date: Sat, 4 Feb 2012 15:35:21 -0500 Subject: [PATCH 04/19] Rewind arrays before foreach loops over all the elements. (fixed a small typo as well) --- contrib/favorites/theme.php | 2 ++ contrib/log_db/theme.php | 2 ++ contrib/rating/main.php | 3 +++ core/config.class.php | 1 + core/imageboard.pack.php | 9 +++++++++ core/page.class.php | 4 ++-- ext/upload/main.php | 4 ++++ 7 files changed, 23 insertions(+), 2 deletions(-) diff --git a/contrib/favorites/theme.php b/contrib/favorites/theme.php index 4bb452ae..14a4fd39 100644 --- a/contrib/favorites/theme.php +++ b/contrib/favorites/theme.php @@ -24,6 +24,8 @@ class FavoritesTheme extends Themelet { $i_favorites = count($username_array); $html = "$i_favorites people:"; + reset($username_array); // rewind to first element in array. + foreach($username_array as $row) { $username = html_escape($row); $html .= "
$username"; diff --git a/contrib/log_db/theme.php b/contrib/log_db/theme.php index 6ac2d3a1..1d3d8ccf 100644 --- a/contrib/log_db/theme.php +++ b/contrib/log_db/theme.php @@ -41,6 +41,8 @@ class LogDatabaseTheme extends Themelet { \n"; $n = 0; + reset($events); // rewind to first element in array. + foreach($events as $event) { $oe = ($n++ % 2 == 0) ? "even" : "odd"; $c = $this->pri_to_col($event['priority']); diff --git a/contrib/rating/main.php b/contrib/rating/main.php index b246b14e..ba1546ab 100644 --- a/contrib/rating/main.php +++ b/contrib/rating/main.php @@ -40,6 +40,9 @@ class Ratings implements Extension { while(true) { $images = Image::find_images($n, 100, Tag::explode($_POST["query"])); if(count($images) == 0) break; + + reset($images); // rewind to first element in array. + foreach($images as $image) { send_event(new RatingSetEvent($image, $user, $_POST['rating'])); } diff --git a/core/config.class.php b/core/config.class.php index 2f918173..92c27b23 100644 --- a/core/config.class.php +++ b/core/config.class.php @@ -188,6 +188,7 @@ class DatabaseConfig extends BaseConfig { */ public function save($name=null) { if(is_null($name)) { + reset($this->values); // rewind the array to the first element foreach($this->values as $name => $value) { $this->save($name); } diff --git a/core/imageboard.pack.php b/core/imageboard.pack.php index 1be135fa..d215337e 100644 --- a/core/imageboard.pack.php +++ b/core/imageboard.pack.php @@ -770,6 +770,8 @@ class Image { } } + reset($terms); // rewind to first element in array. + // turn each term into a specific type of querylet foreach($terms as $term) { $negative = false; @@ -1002,8 +1004,15 @@ class Tag { } } + /** + * This function takes a list (array) of tags and changes any tags that have aliases + * + * @param $tags Array of tags + * @return Array of tags + */ public static function resolve_list($tags) { $tags = Tag::explode($tags); + reset($tags); // rewind array to the first element. $new = array(); foreach($tags as $tag) { $new_set = explode(' ', Tag::resolve_alias($tag)); diff --git a/core/page.class.php b/core/page.class.php index 2995814c..411c9053 100644 --- a/core/page.class.php +++ b/core/page.class.php @@ -291,7 +291,7 @@ class Page { // store local copy for speed. $autocache_css = $config->get_bool("autocache_css"); - $autocache_js = config->get_bool("autocache_js"); + $autocache_js = $config->get_bool("autocache_js"); if (!$autocache_css && !$autocache_js) { return false; // caching disabled @@ -396,7 +396,7 @@ class Page { // Minify the JS if enabled. if ($config->get_bool("autocache_min_js")){ // not supported yet. - // TODO: add support for Minifying CSS files. + // TODO: add support for Minifying JS files. } // compute the MD5 sum of the concatenated JavaScript files diff --git a/ext/upload/main.php b/ext/upload/main.php index 8d2281fa..2aee068f 100644 --- a/ext/upload/main.php +++ b/ext/upload/main.php @@ -152,12 +152,14 @@ class Upload extends SimpleExtension { $tags = ''; // Tags aren't changed when uploading. Set to null to stop PHP warnings. if(count($_FILES)) { + reset($_FILES); // rewind to first element in array. foreach($_FILES as $file) { $ok = $this->try_upload($file, $tags, $source, $image_id); break; // leave the foreach loop. } } else { + reset($_POST); // rewind to first element in array. foreach($_POST as $name => $value) { if(substr($name, 0, 3) == "url" && strlen($value) > 0) { $ok = $this->try_transload($value, $tags, $source, $image_id); @@ -188,9 +190,11 @@ class Upload extends SimpleExtension { $source = isset($_POST['source']) ? $_POST['source'] : null; $ok = true; foreach($_FILES as $file) { + reset($_FILES); // rewind to first element in array. $ok = $ok & $this->try_upload($file, $tags, $source); } foreach($_POST as $name => $value) { + reset($_POST); // rewind to first element in array. if(substr($name, 0, 3) == "url" && strlen($value) > 0) { $ok = $ok & $this->try_transload($value, $tags, $source); } From d3d395c3472c62fcc96e4a300c326f10c3474250 Mon Sep 17 00:00:00 2001 From: Daku Date: Wed, 1 Feb 2012 19:16:55 +0000 Subject: [PATCH 05/19] reset image id function for admin this basically grabs all the image_id's > sets them all from 1-whatever (so it would be like you never deleted an image) --- contrib/admin/main.php | 43 +++++++++++++++++++++++++++++++++++++++++ contrib/admin/theme.php | 1 + 2 files changed, 44 insertions(+) diff --git a/contrib/admin/main.php b/contrib/admin/main.php index 3d03915d..de3bf10a 100644 --- a/contrib/admin/main.php +++ b/contrib/admin/main.php @@ -78,6 +78,10 @@ class AdminPage extends SimpleExtension { case 'database dump': $this->dbdump($page); break; + case 'reset image ids': + $this->reset_imageids(); + $redirect = true; + break; } if($redirect) { @@ -175,5 +179,44 @@ class AdminPage extends SimpleExtension { } } */ + + private function reset_imageids() { + 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); + } } ?> diff --git a/contrib/admin/theme.php b/contrib/admin/theme.php index 18cc9687..37d1f7e2 100644 --- a/contrib/admin/theme.php +++ b/contrib/admin/theme.php @@ -26,6 +26,7 @@ class AdminPageTheme extends Themelet { + From 26b688fe9b6d19c7d8b5ef354c2b6eb5003db817 Mon Sep 17 00:00:00 2001 From: Daku Date: Thu, 2 Feb 2012 00:56:17 +0000 Subject: [PATCH 06/19] bookmarklet now supports oreno.imouto --- ext/upload/bookmarklet.js | 40 ++++++++++++++++++++++++++++++--------- ext/upload/theme.php | 8 ++++---- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/ext/upload/bookmarklet.js b/ext/upload/bookmarklet.js index 2838bdca..86710973 100644 --- a/ext/upload/bookmarklet.js +++ b/ext/upload/bookmarklet.js @@ -4,22 +4,45 @@ var maxsze = (maxsze.match("(?:\.*[0-9])")) * 1024; //This assumes we are only working with MB. var toobig = "The file you are trying to upload is too big to upload!"; var notsup = "The file you are trying to upload is not supported!"; +if (CA === 0 || CA > 2){ //Default + if (confirm("OK = Use Current tags.\nCancel = Use new tags.")==true){ + }else{ + var tag=prompt("Enter Tags",""); + var chk=1; //This makes sure it doesn't use current tags. + } +}else if (CA === 1){ //Current Tags +}else if (CA === 2){ //New Tags + var tag=prompt("Enter Tags",""); + var chk=1; +} -if (confirm("OK = Use Current tags.\nCancel = Use new tags.")==true){}else{var tag=prompt("Enter Tags","");var chk=1;}; - -// Danbooru +// Danbooru | oreno.imouto if(document.getElementById("post_tags") !== null){ if (typeof tag !=="ftp://ftp." && chk !==1){var tag=document.getElementById("post_tags").value;} - var rtg=document.getElementById("stats").innerHTML.match("

  • Rating: (.*)<\/li>")[1]; var srx="http://" + document.location.hostname + document.location.href.match("\/post\/show\/[0-9]+\/"); + var hrs=document.getElementById("highres").href; + if(srx.search("oreno\\.imouto") >= 0){ + var rtg=document.getElementById("stats").innerHTML.match("
  • Rating: (.*) Rating: (.*)<\/li>")[1]; + } if(tag.search(/\bflash\b/)===-1){ - var filesze=document.getElementById("stats").innerHTML.match("[0-9] \\(((?:\.*[0-9])) ([a-zA-Z]+)"); + if(srx.search("oreno\\.imouto") >= 0){ //oreno's theme seems to have moved the filesize + var filesze = document.getElementById("highres").innerHTML.match("[a-zA-Z0-9]+ \\(+([0-9]+\\.[0-9]+) ([a-zA-Z]+)"); + }else{ + var filesze=document.getElementById("stats").innerHTML.match("[0-9] \\(((?:\.*[0-9])) ([a-zA-Z]+)"); + } if(filesze[2] == "MB"){var filesze = filesze[1] * 1024;}else{var filesze = filesze[2].match("[0-9]+");} - if(supext.search(document.getElementById("highres").href.match("http\:\/\/.*\\.([a-z0-9]+)")[1]) !== -1){ + if(supext.search(hrs.match("http\:\/\/.*\\.([a-z0-9]+)")[1]) !== -1){ if(filesze <= maxsze){ - location.href=ste+document.getElementById("highres").href+"&tags="+tag+"&rating="+rtg+"&source="+srx; + if(srx.search("oreno\\.imouto") >= 0){ + //this regex tends to be a bit picky with tags -_-;; + var hrs=hrs.match("(http\:\/\/[a-z0-9]+\.[a-z]+\.org\/[a-z0-9]+\/[a-z0-9]+)\/[a-z0-9A-Z%_]+(\.[a-zA-Z0-9]+)"); + var hrs=hrs[1]+hrs[2]; //this should bypass hotlink protection + } + location.href=ste+hrs+"&tags="+tag+"&rating="+rtg+"&source="+srx; }else{alert(toobig);} }else{alert(notsup);} }else{ @@ -29,6 +52,7 @@ if(document.getElementById("post_tags") !== null){ } } /* Shimmie +One problem with shimmie is each theme does not show the same info as other themes (I.E only the danbooru & lite themes show statistics) Shimmie doesn't seem to have any way to grab tags via id unless you have the ability to edit tags. Have to go the round about way of checking the title for tags. This crazy way of checking "should" work with older releases though (Seems to work with 2009~ ver) */ @@ -36,7 +60,6 @@ else if(document.getElementsByTagName("title")[0].innerHTML.search("Image [0-9.- if (typeof tag !=="ftp://ftp." && chk !==1){var tag=document.getElementsByTagName("title")[0].innerHTML.match("Image [0-9.-]+\: (.*)")[1];} //TODO: Make rating show in statistics. var srx="http://" + document.location.hostname + document.location.href.match("\/post\/view\/[0-9]+"); - /*TODO: Figure out regex for shortening file link. I.E http://blah.net/_images/1234abcd/everysingletag.png > http://blah.net/_images/1234abcd.png*/ /*TODO: Make file size show on all themes (Only seems to show in lite/Danbooru themes.)*/ if(tag.search(/\bflash\b/)==-1){ var img = document.getElementById("main_image").src; @@ -52,7 +75,6 @@ else if(document.getElementsByTagName("title")[0].innerHTML.search("Image [0-9.- } // Gelbooru else if(document.getElementById("tags") !== null){ - //Gelbooru has an annoying anti-hotlinking thing which doesn't seem to like the bookmarklet. if (typeof tag !=="ftp://ftp." && chk !==1){var tag=document.getElementById("tags").value;} var rtg=document.getElementById("stats").innerHTML.match("
  • Rating: (.*)<\/li>")[1]; //Can't seem to grab source due to url containing a & diff --git a/ext/upload/theme.php b/ext/upload/theme.php index 9e66e457..0e5e7127 100644 --- a/ext/upload/theme.php +++ b/ext/upload/theme.php @@ -145,8 +145,7 @@ class UploadTheme extends Themelet { { /* Imageboard > Shimmie Bookmarklet This is more or less, an upgraded version of the "Danbooru>Shimmie" bookmarklet. - At the moment this works with Shimmie & Danbooru. - It would also work with Gelbooru but unless someone can figure out how to bypass their hotlinking..meh. + At the moment this works with Shimmie/Danbooru/Gelbooru/oreno.imouto. The bookmarklet is now also loaded via the .js file in this folder. */ //Bookmarklet checks if shimmie supports ext. If not, won't upload to site/shows alert saying not supported. @@ -156,8 +155,9 @@ class UploadTheme extends Themelet { if(file_exists("ext/handle_mp3")){$supported_ext .= " mp3";} if(file_exists("ext/handle_svg")){$supported_ext .= " svg";} $title = "Booru to " . $config->get_string('title'); - $html .= '

    '. - $title . ' (Click when looking at an image page. Works on sites running Shimmie/Danbooru/Gelbooru. (This also grabs the tags/rating/source!))'; + //CA=0: Ask to use current or new tags | CA=1: Always use current tags | CA=2: Always use new tags + $html .= '

    '. + $title . ' (Click when looking at an image page. Works on sites running Shimmie/Danbooru/Gelbooru/oreno.imouto. (This also grabs the tags/rating/source!))'; } } From a25f4054707a691b2ad06683c41d8ecaaded8895 Mon Sep 17 00:00:00 2001 From: Daku Date: Thu, 2 Feb 2012 13:01:40 +0000 Subject: [PATCH 07/19] bookmarklet now supports sankaku and konachan --- ext/upload/bookmarklet.js | 14 +++++++++----- ext/upload/theme.php | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ext/upload/bookmarklet.js b/ext/upload/bookmarklet.js index 86710973..5f45c6fc 100644 --- a/ext/upload/bookmarklet.js +++ b/ext/upload/bookmarklet.js @@ -16,19 +16,19 @@ if (CA === 0 || CA > 2){ //Default var chk=1; } -// Danbooru | oreno.imouto +// Danbooru | oreno.imouto | konachan | sankakucomplex if(document.getElementById("post_tags") !== null){ if (typeof tag !=="ftp://ftp." && chk !==1){var tag=document.getElementById("post_tags").value;} var srx="http://" + document.location.hostname + document.location.href.match("\/post\/show\/[0-9]+\/"); var hrs=document.getElementById("highres").href; - if(srx.search("oreno\\.imouto") >= 0){ + if(srx.search("oreno\\.imouto") >= 0 || srx.search("konachan\\.com") >= 0){ var rtg=document.getElementById("stats").innerHTML.match("

  • Rating: (.*) Rating: (.*)<\/li>")[1]; } if(tag.search(/\bflash\b/)===-1){ - if(srx.search("oreno\\.imouto") >= 0){ //oreno's theme seems to have moved the filesize + if(srx.search("oreno\\.imouto") >= 0 || srx.search("konachan\\.com") >= 0){ //oreno's theme seems to have moved the filesize var filesze = document.getElementById("highres").innerHTML.match("[a-zA-Z0-9]+ \\(+([0-9]+\\.[0-9]+) ([a-zA-Z]+)"); }else{ var filesze=document.getElementById("stats").innerHTML.match("[0-9] \\(((?:\.*[0-9])) ([a-zA-Z]+)"); @@ -39,10 +39,14 @@ if(document.getElementById("post_tags") !== null){ if(filesze <= maxsze){ if(srx.search("oreno\\.imouto") >= 0){ //this regex tends to be a bit picky with tags -_-;; - var hrs=hrs.match("(http\:\/\/[a-z0-9]+\.[a-z]+\.org\/[a-z0-9]+\/[a-z0-9]+)\/[a-z0-9A-Z%_]+(\.[a-zA-Z0-9]+)"); + var hrs=hrs.match("(http\:\/\/[a-z0-9]+\.[a-z]+\.[a-z]\/[a-z0-9]+\/[a-z0-9]+)\/[a-z0-9A-Z%_-]+(\.[a-zA-Z0-9]+)"); var hrs=hrs[1]+hrs[2]; //this should bypass hotlink protection + }else if(srx.search("konachan\\.com") >= 0){ + //konachan affixs konachan.com to the start of the tags, this requires different regex + var hrs=hrs.match("(http\:\/\/[a-z0-9]+\.[a-z]+\.[a-z]\/[a-z0-9]+\/[a-z0-9]+)\/[a-z0-9A-Z%_]+\.[a-zA-Z0-9%_-]+(\.[a-z0-9A-Z]+)") + var hrs=hrs[1]+hrs[2]; } - location.href=ste+hrs+"&tags="+tag+"&rating="+rtg+"&source="+srx; + location.href="|"+ste+hrs+"&tags="+tag+"&rating="+rtg+"&source="+srx; }else{alert(toobig);} }else{alert(notsup);} }else{ diff --git a/ext/upload/theme.php b/ext/upload/theme.php index 0e5e7127..47cc9147 100644 --- a/ext/upload/theme.php +++ b/ext/upload/theme.php @@ -145,7 +145,7 @@ class UploadTheme extends Themelet { { /* Imageboard > Shimmie Bookmarklet This is more or less, an upgraded version of the "Danbooru>Shimmie" bookmarklet. - At the moment this works with Shimmie/Danbooru/Gelbooru/oreno.imouto. + At the moment this is known to work with Shimmie/Danbooru/Gelbooru/oreno.imouto/konachan/sankakucomplex. The bookmarklet is now also loaded via the .js file in this folder. */ //Bookmarklet checks if shimmie supports ext. If not, won't upload to site/shows alert saying not supported. @@ -157,7 +157,7 @@ class UploadTheme extends Themelet { $title = "Booru to " . $config->get_string('title'); //CA=0: Ask to use current or new tags | CA=1: Always use current tags | CA=2: Always use new tags $html .= '

    '. - $title . ' (Click when looking at an image page. Works on sites running Shimmie/Danbooru/Gelbooru/oreno.imouto. (This also grabs the tags/rating/source!))'; + $title . ' (Click when looking at an image page. Works on sites running Shimmie/Danbooru/Gelbooru. (This also grabs the tags/rating/source!))'; } } From 1f871a69e14e50c88c439acfd6e811880f533a6a Mon Sep 17 00:00:00 2001 From: Daku Date: Thu, 2 Feb 2012 13:22:33 +0000 Subject: [PATCH 08/19] fixing flash again :x --- ext/upload/bookmarklet.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/upload/bookmarklet.js b/ext/upload/bookmarklet.js index 5f45c6fc..ba0f79ed 100644 --- a/ext/upload/bookmarklet.js +++ b/ext/upload/bookmarklet.js @@ -20,7 +20,6 @@ if (CA === 0 || CA > 2){ //Default if(document.getElementById("post_tags") !== null){ if (typeof tag !=="ftp://ftp." && chk !==1){var tag=document.getElementById("post_tags").value;} var srx="http://" + document.location.hostname + document.location.href.match("\/post\/show\/[0-9]+\/"); - var hrs=document.getElementById("highres").href; if(srx.search("oreno\\.imouto") >= 0 || srx.search("konachan\\.com") >= 0){ var rtg=document.getElementById("stats").innerHTML.match("

  • Rating: (.*) = 0 || srx.search("konachan\\.com") >= 0){ //oreno's theme seems to have moved the filesize var filesze = document.getElementById("highres").innerHTML.match("[a-zA-Z0-9]+ \\(+([0-9]+\\.[0-9]+) ([a-zA-Z]+)"); }else{ From 6e602aa430491b45dd6baadf2a91d31d57463c97 Mon Sep 17 00:00:00 2001 From: Daku Date: Thu, 2 Feb 2012 13:25:27 +0000 Subject: [PATCH 09/19] forgot to remove this... --- ext/upload/bookmarklet.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/upload/bookmarklet.js b/ext/upload/bookmarklet.js index ba0f79ed..687d0c20 100644 --- a/ext/upload/bookmarklet.js +++ b/ext/upload/bookmarklet.js @@ -46,7 +46,7 @@ if(document.getElementById("post_tags") !== null){ var hrs=hrs.match("(http\:\/\/[a-z0-9]+\.[a-z]+\.[a-z]\/[a-z0-9]+\/[a-z0-9]+)\/[a-z0-9A-Z%_]+\.[a-zA-Z0-9%_-]+(\.[a-z0-9A-Z]+)") var hrs=hrs[1]+hrs[2]; } - location.href="|"+ste+hrs+"&tags="+tag+"&rating="+rtg+"&source="+srx; + location.href=ste+hrs+"&tags="+tag+"&rating="+rtg+"&source="+srx; }else{alert(toobig);} }else{alert(notsup);} }else{ From 9efce5378cee5ed5eac90d8b3ae6f19a8306cd11 Mon Sep 17 00:00:00 2001 From: Daku Date: Thu, 2 Feb 2012 21:00:00 +0000 Subject: [PATCH 10/19] small fix for bookmarklet image url --- ext/upload/bookmarklet.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/upload/bookmarklet.js b/ext/upload/bookmarklet.js index 687d0c20..cf951acd 100644 --- a/ext/upload/bookmarklet.js +++ b/ext/upload/bookmarklet.js @@ -19,7 +19,7 @@ if (CA === 0 || CA > 2){ //Default // Danbooru | oreno.imouto | konachan | sankakucomplex if(document.getElementById("post_tags") !== null){ if (typeof tag !=="ftp://ftp." && chk !==1){var tag=document.getElementById("post_tags").value;} - var srx="http://" + document.location.hostname + document.location.href.match("\/post\/show\/[0-9]+\/"); + var srx="http://" + document.location.hostname + document.location.href.match("\/post\/show\/[0-9]+"); if(srx.search("oreno\\.imouto") >= 0 || srx.search("konachan\\.com") >= 0){ var rtg=document.getElementById("stats").innerHTML.match("
  • Rating: (.*) Date: Sat, 4 Feb 2012 23:58:19 +0000 Subject: [PATCH 11/19] this should fix bookmarklet not working with nice urls --- ext/upload/theme.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/upload/theme.php b/ext/upload/theme.php index 47cc9147..17410a96 100644 --- a/ext/upload/theme.php +++ b/ext/upload/theme.php @@ -156,7 +156,7 @@ class UploadTheme extends Themelet { if(file_exists("ext/handle_svg")){$supported_ext .= " svg";} $title = "Booru to " . $config->get_string('title'); //CA=0: Ask to use current or new tags | CA=1: Always use current tags | CA=2: Always use new tags - $html .= '

    '. + $html .= '

    '. $title . ' (Click when looking at an image page. Works on sites running Shimmie/Danbooru/Gelbooru. (This also grabs the tags/rating/source!))'; } From 1fd565fa87a2c7ce25fd847030ee499261df585c Mon Sep 17 00:00:00 2001 From: Daku Date: Mon, 6 Feb 2012 05:23:37 +0000 Subject: [PATCH 12/19] can't check if rating is null if it doesn't exist... --- themes/danbooru/view.theme.php | 2 +- themes/lite/view.theme.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/danbooru/view.theme.php b/themes/danbooru/view.theme.php index 31c553e9..ae5895e6 100644 --- a/themes/danbooru/view.theme.php +++ b/themes/danbooru/view.theme.php @@ -38,7 +38,7 @@ class CustomViewImageTheme extends ViewImageTheme { $html .= "
    Source: link"; } - if(!is_null($image->rating) && file_exists("ext/rating")) { + if(file_exists("ext/rating")) { if($image->rating == null || $image->rating == "u"){ $image->rating = "u"; } diff --git a/themes/lite/view.theme.php b/themes/lite/view.theme.php index 70fd4583..1327b33a 100644 --- a/themes/lite/view.theme.php +++ b/themes/lite/view.theme.php @@ -44,7 +44,7 @@ class CustomViewImageTheme extends ViewImageTheme { $html .= "
    Source: link"; } - if(!is_null($image->rating) && file_exists("ext/rating")) { + if(file_exists("ext/rating")) { if($image->rating == null || $image->rating == "u"){ $image->rating = "u"; } From 07e786101d40318426a78aa8c335359eedf5e760 Mon Sep 17 00:00:00 2001 From: Daku Date: Mon, 6 Feb 2012 06:52:04 +0000 Subject: [PATCH 13/19] download all images function for admin --- .gitignore | 4 +++- contrib/admin/main.php | 26 ++++++++++++++++++++++++++ contrib/admin/theme.php | 1 + 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6dd0495a..1258151b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,10 @@ .svn +backup +data config.php images +imgdump-*.zip thumbs -data sql.log shimmie.log !lib/images diff --git a/contrib/admin/main.php b/contrib/admin/main.php index de3bf10a..c7e5b1a1 100644 --- a/contrib/admin/main.php +++ b/contrib/admin/main.php @@ -82,6 +82,9 @@ class AdminPage extends SimpleExtension { $this->reset_imageids(); $redirect = true; break; + case 'image dump': + $this->imgdump($page); + break; } if($redirect) { @@ -218,5 +221,28 @@ class AdminPage extends SimpleExtension { $count = (count($image)) + 1; $database->execute("ALTER TABLE images AUTO_INCREMENT=".$count); } + + private function imgdump($page) { + global $database; + $zip = new ZipArchive; + $images = $database->get_all("SELECT * FROM images"); + $filename = 'imgdump-'.date('Ymd').'.zip'; + + if($zip->open($filename, 1 ? ZIPARCHIVE::OVERWRITE:ZIPARCHIVE::CREATE)===TRUE){ + foreach($images as $img){ + $hash = $img["hash"]; + preg_match("^[A-Za-z0-9]{2}^", $hash, $matches); + $img_loc = "images/".$matches[0]."/".$hash; + if(file_exists($img_loc)){ + $zip->addFile($img_loc, $hash.".".$img["ext"]); + } + + } + $zip->close(); + } + $page->set_mode("redirect"); + $page->set_redirect(make_link($filename)); //Fairly sure there is better way to do this.. + //TODO: Delete file after downloaded? + } } ?> diff --git a/contrib/admin/theme.php b/contrib/admin/theme.php index 37d1f7e2..c1126fdb 100644 --- a/contrib/admin/theme.php +++ b/contrib/admin/theme.php @@ -27,6 +27,7 @@ class AdminPageTheme extends Themelet { + From 80970f924ebc6398e39fd6ecd114cab4d19ddf14 Mon Sep 17 00:00:00 2001 From: Daku Date: Mon, 6 Feb 2012 07:08:38 +0000 Subject: [PATCH 14/19] this should be here >_< --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1258151b..57872564 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ .svn backup -data config.php +data images imgdump-*.zip thumbs From e92d4f6809e2b3e2a942543f06e214203368c60a Mon Sep 17 00:00:00 2001 From: Daku Date: Mon, 6 Feb 2012 10:22:57 +0000 Subject: [PATCH 15/19] fixes gelbooru with bookmarklet --- ext/upload/bookmarklet.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/upload/bookmarklet.js b/ext/upload/bookmarklet.js index cf951acd..590adaef 100644 --- a/ext/upload/bookmarklet.js +++ b/ext/upload/bookmarklet.js @@ -87,6 +87,6 @@ else if(document.getElementById("tags") !== null){ //Since Gelbooru does not allow flash, no need to search for flash tag. //Gelbooru doesn't show file size in statistics either... if(supext.search(gmi.match("http\:\/\/.*\\.([a-z0-9]+)")[1]) !== -1){ - location.href=ste+gmi+"&tags="+tag+"&rating="+rtg[1];//+"&source="+srx; + location.href=ste+gmi+"&tags="+tag+"&rating="+rtg;//+"&source="+srx; }else{alert(notsup);} } From cca3ce513ad3d2e80232b505e097b87c7c36c6f1 Mon Sep 17 00:00:00 2001 From: Daku Date: Tue, 7 Feb 2012 00:02:30 +0000 Subject: [PATCH 16/19] added confirm/warning to resetting image ids --- contrib/admin/theme.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/contrib/admin/theme.php b/contrib/admin/theme.php index c1126fdb..e72a372a 100644 --- a/contrib/admin/theme.php +++ b/contrib/admin/theme.php @@ -19,9 +19,20 @@ class AdminPageTheme extends Themelet { public function display_form(Page $page) { global $user; - $html = " - ".make_form(make_link("admin_utils"))." - From 4697e21fcd4bab9fb6cf2599cb6ff18f762c4e16 Mon Sep 17 00:00:00 2001 From: Shish Date: Wed, 8 Feb 2012 11:24:25 +0000 Subject: [PATCH 17/19] HINT ALL THE TYPES. SIMPLE ALL THE EXTENSIONS. --- contrib/admin/main.php | 10 +- contrib/artists/main.php | 2 +- contrib/blocks/main.php | 4 +- contrib/blotter/main.php | 8 +- contrib/bookmarks/main.php | 15 +- contrib/browser_search/main.php | 65 +++--- contrib/bulk_add/main.php | 4 +- contrib/danbooru_api/main.php | 32 +-- contrib/emoticons/main.php | 6 +- contrib/et/main.php | 7 +- contrib/favorites/main.php | 28 +-- contrib/featured/main.php | 8 +- contrib/forum/main.php | 6 +- contrib/handle_archive/main.php | 6 +- contrib/handle_ico/main.php | 8 +- contrib/holiday/main.php | 6 +- contrib/ipban/main.php | 12 +- contrib/link_image/main.php | 38 ++-- contrib/log_db/main.php | 10 +- contrib/mass_tagger/main.php | 4 +- contrib/news/main.php | 4 +- contrib/notes/main.php | 12 +- contrib/numeric_score/main.php | 387 ++++++++++++++++---------------- contrib/oekaki/main.php | 4 +- contrib/pm/main.php | 12 +- contrib/pools/main.php | 12 +- contrib/qr_code/main.php | 2 +- contrib/random_image/main.php | 6 +- contrib/regen_thumb/main.php | 4 +- contrib/report_image/main.php | 82 +++---- contrib/res_limit/main.php | 99 ++++---- contrib/resize/main.php | 8 +- contrib/rss_comments/main.php | 4 +- contrib/rss_images/main.php | 4 +- contrib/simpletest/main.php | 4 +- contrib/sitemap/main.php | 4 +- contrib/tag_history/main.php | 19 +- contrib/tagger/main.php | 53 ++--- contrib/tips/main.php | 6 +- contrib/twitter_soc/main.php | 4 +- contrib/update/main.php | 6 +- contrib/wiki/main.php | 8 +- contrib/word_filter/main.php | 4 +- 43 files changed, 492 insertions(+), 535 deletions(-) diff --git a/contrib/admin/main.php b/contrib/admin/main.php index 3d03915d..12c2e347 100644 --- a/contrib/admin/main.php +++ b/contrib/admin/main.php @@ -30,13 +30,13 @@ */ class AdminBuildingEvent extends Event { var $page; - public function AdminBuildingEvent($page) { + public function AdminBuildingEvent(Page $page) { $this->page = $page; } } class AdminPage extends SimpleExtension { - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $page, $user; if($event->page_matches("admin")) { @@ -88,20 +88,20 @@ class AdminPage extends SimpleExtension { } } - public function onAdminBuilding($event) { + public function onAdminBuilding(AdminBuildingEvent $event) { global $page; $this->theme->display_page($page); $this->theme->display_form($page); } - public function onUserBlockBuilding($event) { + public function onUserBlockBuilding(UserBlockBuildingEvent $event) { global $user; if($user->is_admin()) { $event->add_link("Board Admin", make_link("admin")); } } - private function delete_by_query($query) { + private function delete_by_query(/*array(string)*/ $query) { global $page, $user; assert(strlen($query) > 1); foreach(Image::find_images(0, 1000000, Tag::explode($query)) as $image) { diff --git a/contrib/artists/main.php b/contrib/artists/main.php index 0bde987d..361502e8 100644 --- a/contrib/artists/main.php +++ b/contrib/artists/main.php @@ -11,7 +11,7 @@ class AuthorSetEvent extends Event { var $image, $user, $author; - public function AuthorSetEvent(Image $image, User $user, $author) + public function AuthorSetEvent(Image $image, User $user, /*string*/ $author) { $this->image = $image; $this->user = $user; diff --git a/contrib/blocks/main.php b/contrib/blocks/main.php index c3525c63..2fd3dfa7 100644 --- a/contrib/blocks/main.php +++ b/contrib/blocks/main.php @@ -28,7 +28,7 @@ */ class Blocks extends SimpleExtension { - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $config, $page; $all = $config->get_string("blocks_text"); $blocks = explode("----", $all); @@ -70,7 +70,7 @@ class Blocks extends SimpleExtension { } } - public function onSetupBuilding($event) { + public function onSetupBuilding(SetupBuildingEvent $event) { $sb = new SetupBlock("Blocks"); $sb->add_label("See the docs for formatting"); $sb->add_longtext_option("blocks_text"); diff --git a/contrib/blotter/main.php b/contrib/blotter/main.php index d689ba15..8dd4daad 100644 --- a/contrib/blotter/main.php +++ b/contrib/blotter/main.php @@ -9,7 +9,7 @@ * Development TODO at http://github.com/zshall/shimmie2/issues */ class Blotter extends SimpleExtension { - public function onInitExt(Event $event) { + public function onInitExt(InitExtEvent $event) { /** * I love re-using this installer don't I... */ @@ -43,7 +43,7 @@ class Blotter extends SimpleExtension { $config->set_default_string("blotter_position", "subheading"); } - public function onSetupBuilding(Event $event) { + public function onSetupBuilding(SetupBuildingEvent $event) { global $config; $sb = new SetupBlock("Blotter"); $sb->add_int_option("blotter_recent", "
    Number of recent entries to display: "); @@ -51,13 +51,13 @@ class Blotter extends SimpleExtension { $sb->add_choice_option("blotter_position", array("Top of page" => "subheading", "In navigation bar" => "left"), "
    Position: "); $event->panel->add_block($sb); } - public function onUserBlockBuilding(Event $event) { + public function onUserBlockBuilding(UserBlockBuildingEvent $event) { global $user; if($user->is_admin()) { $event->add_link("Blotter Editor", make_link("blotter/editor")); } } - public function onPageRequest(Event $event) { + public function onPageRequest(PageRequestEvent $event) { global $page, $database, $user; if($event->page_matches("blotter")) { switch($event->get_arg(0)) { diff --git a/contrib/bookmarks/main.php b/contrib/bookmarks/main.php index da86f605..3ed8db45 100644 --- a/contrib/bookmarks/main.php +++ b/contrib/bookmarks/main.php @@ -6,16 +6,15 @@ * Description: Allow users to bookmark searches */ -class Bookmarks implements Extension { - var $theme; +class Bookmarks extends SimpleExtension { + public function onInitExt(InitExtEvent $event) { + $this->install(); + } - public function get_priority() {return 50;} + public function onPageRequest(PageRequestEvent $event) { + global $page; - 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("bookmark")) { + if($event->page_matches("bookmark")) { if($event->get_arg(0) == "add") { if(isset($_POST['url'])) { $page->set_mode("redirect"); diff --git a/contrib/browser_search/main.php b/contrib/browser_search/main.php index cf5ee6ac..80c399c2 100755 --- a/contrib/browser_search/main.php +++ b/contrib/browser_search/main.php @@ -13,36 +13,29 @@ * engine" notification they have */ -class BrowserSearch implements Extension { +class BrowserSearch extends SimpleExtension { + public function onInitExt(InitExtEvent $event) { + global $config; + $config->set_default_string("search_suggestions_results_order", 'a'); + } - public function get_priority() {return 50;} - public function receive_event(Event $event) { - global $page; - global $config; - - if($event instanceof InitExtEvent) { - $config->set_default_string("search_suggestions_results_order", 'a'); - } + public function onPageRequest(PageRequestEvent $event) { + global $config, $database, $page; // Add in header code to let the browser know that the search plugin exists - if($event instanceof PageRequestEvent) { - // We need to build the data for the header - global $config; - $search_title = $config->get_string('title'); - $search_file_url = make_link('browser_search/please_dont_use_this_tag_as_it_would_break_stuff__search.xml'); - $page->add_html_header(""); - } + // We need to build the data for the header + $search_title = $config->get_string('title'); + $search_file_url = make_link('browser_search/please_dont_use_this_tag_as_it_would_break_stuff__search.xml'); + $page->add_html_header(""); // The search.xml file that is generated on the fly - if(($event instanceof PageRequestEvent) && $event->page_matches("browser_search/please_dont_use_this_tag_as_it_would_break_stuff__search.xml")) { + if($event->page_matches("browser_search/please_dont_use_this_tag_as_it_would_break_stuff__search.xml")) { // First, we need to build all the variables we'll need - $search_title = $config->get_string('title'); $search_form_url = make_link('post/list/{searchTerms}'); $suggenton_url = make_link('browser_search/')."{searchTerms}"; $icon_b64 = base64_encode(file_get_contents("favicon.ico")); - // Now for the XML $xml = " @@ -63,12 +56,10 @@ class BrowserSearch implements Extension { $page->set_data($xml); } - else if(($event instanceof PageRequestEvent) && ( - $event->page_matches("browser_search") && - !$config->get_bool("disable_search_suggestions") - )) { - global $database; - + else if( + $event->page_matches("browser_search") && + !$config->get_bool("disable_search_suggestions") + ) { // We have to build some json stuff $tag_search = $event->get_arg(0); @@ -89,29 +80,25 @@ class BrowserSearch implements Extension { array_push($tags_array,$tag['tag']); } - $json_tag_list .= implode("\",\"", $tags_array); -// $json_tag_list = implode($tags_array,", "); -// $json_tag_list = "\"".implode($tags_array,"\", \"")."\""; - // And now for the final output $json_string = "[\"$tag_search\",[\"$json_tag_list\"],[],[]]"; $page->set_mode("data"); $page->set_data($json_string); } + } - if($event instanceof SetupBuildingEvent) { - $sort_by = array(); - $sort_by['Alphabetical'] = 'a'; - $sort_by['Tag Count'] = 't'; + public function onSetupBuilding(SetupBuildingEvent $event) { + $sort_by = array(); + $sort_by['Alphabetical'] = 'a'; + $sort_by['Tag Count'] = 't'; - $sb = new SetupBlock("Browser Search"); - $sb->add_bool_option("disable_search_suggestions", "Disable search suggestions: "); - $sb->add_label("
    "); - $sb->add_choice_option("search_suggestions_results_order", $sort_by, "Sort the suggestions by:"); - $event->panel->add_block($sb); - } + $sb = new SetupBlock("Browser Search"); + $sb->add_bool_option("disable_search_suggestions", "Disable search suggestions: "); + $sb->add_label("
    "); + $sb->add_choice_option("search_suggestions_results_order", $sort_by, "Sort the suggestions by:"); + $event->panel->add_block($sb); } } ?> diff --git a/contrib/bulk_add/main.php b/contrib/bulk_add/main.php index 0fa89029..676fc14e 100644 --- a/contrib/bulk_add/main.php +++ b/contrib/bulk_add/main.php @@ -15,7 +15,7 @@ */ class BulkAdd extends SimpleExtension { - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $page, $user; if($event->page_matches("bulk_add")) { if($user->is_admin() && $user->check_auth_token() && isset($_POST['dir'])) { @@ -26,7 +26,7 @@ class BulkAdd extends SimpleExtension { } } - public function onAdminBuilding($event) { + public function onAdminBuilding(AdminBuildingEvent $event) { $this->theme->display_admin_block(); } diff --git a/contrib/danbooru_api/main.php b/contrib/danbooru_api/main.php index 898680f2..f47a34e8 100644 --- a/contrib/danbooru_api/main.php +++ b/contrib/danbooru_api/main.php @@ -47,33 +47,23 @@ Completely compatibility will probably involve a rewrite with a different URL */ -class DanbooruApi implements Extension -{ - - public function get_priority() {return 50;} - // Receive the event - public function receive_event(Event $event) - { - // Check if someone is accessing /api/danbooru (us) - if(($event instanceof PageRequestEvent) && ($event->page_matches("api")) && ($event->get_arg(0) == 'danbooru')) - { - // execute the danbooru processing code +class DanbooruApi extends SimpleExtension { + public function onPageRequest(PageRequestEvent $event) { + if($event->page_matches("api") && ($event->get_arg(0) == 'danbooru')) { $this->api_danbooru($event); } - if($event instanceof SearchTermParseEvent) - { - $matches = array(); - if(preg_match("/^md5:([0-9a-fA-F]*)$/i", $event->term, $matches)) - { - $hash = strtolower($matches[1]); - $event->add_querylet(new Querylet("images.hash = '$hash'")); // :-O -// $event->set_querylet(new Querylet("images.hash = '$hash'")); - } + } + + public function onSearchTermParse(SearchTermParseEvent $event) { + $matches = array(); + if(preg_match("/^md5:([0-9a-fA-F]*)$/i", $event->term, $matches)) { + $hash = strtolower($matches[1]); + $event->add_querylet(new Querylet("images.hash = '$hash'")); // :-O } } // Danbooru API - private function api_danbooru($event) + private function api_danbooru(PageRequestEvent $event) { global $page; global $config; diff --git a/contrib/emoticons/main.php b/contrib/emoticons/main.php index 67d14e29..d7805f47 100644 --- a/contrib/emoticons/main.php +++ b/contrib/emoticons/main.php @@ -13,19 +13,19 @@ */ class Emoticons extends FormatterExtension { - public function format($text) { + public function format(/*string*/ $text) { $data_href = get_base_href(); $text = preg_replace("/:([a-z]*?):/s", "", $text); return $text; } - public function strip($text) { + public function strip(/*string*/ $text) { return $text; } } class EmoticonList extends SimpleExtension { - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { if($event->page_matches("emote/list")) { $this->theme->display_emotes(glob("ext/emoticons/default/*")); } diff --git a/contrib/et/main.php b/contrib/et/main.php index dd6babe2..d54b5631 100644 --- a/contrib/et/main.php +++ b/contrib/et/main.php @@ -13,7 +13,7 @@ */ class ET extends SimpleExtension { - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $user; if($event->page_matches("system_info")) { if($user->is_admin()) { @@ -22,7 +22,7 @@ class ET extends SimpleExtension { } } - public function onUserBlockBuilding($event) { + public function onUserBlockBuilding(UserBlockBuildingEvent $event) { global $user; if($user->is_admin()) { $event->add_link("System Info", make_link("system_info")); @@ -46,9 +46,6 @@ class ET extends SimpleExtension { $info['sys_disk'] = to_shorthand_int(disk_total_space("./") - disk_free_space("./")) . " / " . to_shorthand_int(disk_total_space("./")); $info['sys_server'] = $_SERVER["SERVER_SOFTWARE"]; - $proto = preg_replace("#(.*)://.*#", "$1", DATABASE_DSN); - #$db = $database->db->ServerInfo(); - #$info['sys_db'] = "$proto / {$db['version']}"; $info['stat_images'] = $database->get_one("SELECT COUNT(*) FROM images"); $info['stat_comments'] = $database->get_one("SELECT COUNT(*) FROM comments"); diff --git a/contrib/favorites/main.php b/contrib/favorites/main.php index 15f266c2..9a66fd65 100644 --- a/contrib/favorites/main.php +++ b/contrib/favorites/main.php @@ -16,7 +16,7 @@ class FavoriteSetEvent extends Event { var $image_id, $user, $do_set; - public function FavoriteSetEvent($image_id, User $user, $do_set) { + public function FavoriteSetEvent(/*int*/ $image_id, User $user, /*boolean*/ $do_set) { assert(is_numeric($image_id)); assert(is_bool($do_set)); @@ -27,14 +27,14 @@ class FavoriteSetEvent extends Event { } class Favorites extends SimpleExtension { - public function onInitExt($event) { + public function onInitExt(InitExtEvent $event) { global $config; if($config->get_int("ext_favorites_version", 0) < 1) { $this->install(); } } - public function onImageAdminBlockBuilding($event) { + public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event) { global $database, $page, $user; if(!$user->is_anonymous()) { $user_id = $user->id; @@ -48,14 +48,14 @@ class Favorites extends SimpleExtension { } } - public function onDisplayingImage($event) { + public function onDisplayingImage(DisplayingImageEvent $event) { $people = $this->list_persons_who_have_favorited($event->image); if(count($people) > 0) { $html = $this->theme->display_people($people); } } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $page, $user; if($event->page_matches("change_favorite") && !$user->is_anonymous() && $user->check_auth_token()) { $image_id = int_escape($_POST['image_id']); @@ -67,7 +67,7 @@ class Favorites extends SimpleExtension { } } - public function onUserPageBuilding($event) { + public function onUserPageBuilding(UserPageBuildingEvent $event) { $i_favorites_count = Image::count_images(array("favorited_by={$event->display_user->name}")); $i_days_old = ((time() - strtotime($event->display_user->join_date)) / 86400) + 1; $h_favorites_rate = sprintf("%.1f", ($i_favorites_count / $i_days_old)); @@ -75,7 +75,7 @@ class Favorites extends SimpleExtension { $event->add_stats("Images favorited: $i_favorites_count, $h_favorites_rate per day"); } - public function onImageInfoSet($event) { + public function onImageInfoSet(ImageInfoSetEvent $event) { global $user; if( in_array('favorite_action', $_POST) && @@ -85,28 +85,30 @@ class Favorites extends SimpleExtension { } } - public function onFavoriteSet($event) { + public function onFavoriteSet(FavoriteSetEvent $event) { global $user; $this->add_vote($event->image_id, $user->id, $event->do_set); } - public function onImageDeletion($event) { + // FIXME: this should be handled by the foreign key. Check that it + // is, and then remove this + public function onImageDeletion(ImageDeletionEvent $event) { global $database; $database->execute("DELETE FROM user_favorites WHERE image_id=:image_id", array("image_id"=>$event->image->id)); } - public function onParseLinkTemplate($event) { + public function onParseLinkTemplate(ParseLinkTemplateEvent $event) { $event->replace('$favorites', $event->image->favorites); } - public function onUserBlockBuilding($event) { + public function onUserBlockBuilding(UserBlockBuildingEvent $event) { global $user; $username = url_escape($user->name); $event->add_link("My Favorites", make_link("post/list/favorited_by=$username/1"), 20); } - public function onSearchTermParse($event) { + public function onSearchTermParse(SearchTermParseEvent $event) { $matches = array(); if(preg_match("/favorites(<|>|<=|>=|=)(\d+)/", $event->term, $matches)) { $cmp = $matches[1]; @@ -181,7 +183,7 @@ class Favorites extends SimpleExtension { array("image_id"=>$image_id, "user_id"=>$user_id)); } - private function list_persons_who_have_favorited($image) { + private function list_persons_who_have_favorited(Image $image) { global $database; return $database->get_col( diff --git a/contrib/featured/main.php b/contrib/featured/main.php index 12f06b08..a4defb11 100644 --- a/contrib/featured/main.php +++ b/contrib/featured/main.php @@ -19,12 +19,12 @@ */ class Featured extends SimpleExtension { - public function onInitExt($event) { + public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_int('featured_id', 0); } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $config, $page, $user; if($event->page_matches("featured_image")) { if($event->get_arg(0) == "set" && $user->check_auth_token()) { @@ -54,7 +54,7 @@ class Featured extends SimpleExtension { } } - public function onPostListBuilding($event) { + public function onPostListBuilding(PostListBuildingEvent $event) { global $config, $database, $page, $user; $fid = $config->get_int("featured_id"); if($fid > 0) { @@ -74,7 +74,7 @@ class Featured extends SimpleExtension { } } - public function onImageAdminBlockBuilding($event) { + public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event) { global $user; if($user->is_admin()) { $event->add_part($this->theme->get_buttons_html($event->image->id)); diff --git a/contrib/forum/main.php b/contrib/forum/main.php index a2b2365e..2604c426 100644 --- a/contrib/forum/main.php +++ b/contrib/forum/main.php @@ -9,7 +9,7 @@ */ class Forum extends SimpleExtension { - public function onInitExt($event) { + public function onInitExt(InitExtEvent $event) { global $config, $database; // shortcut to latest @@ -57,7 +57,7 @@ class Forum extends SimpleExtension { $event->panel->add_block($sb); } - public function onUserPageBuilding($event) { + public function onUserPageBuilding(UserPageBuildingEvent $event) { global $page, $user, $database; $threads_count = $database->get_one("SELECT COUNT(*) FROM forum_threads WHERE user_id=?", array($event->display_user->id)); @@ -73,7 +73,7 @@ class Forum extends SimpleExtension { } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $page, $user; if($event->page_matches("forum")) { diff --git a/contrib/handle_archive/main.php b/contrib/handle_archive/main.php index 976f3ca0..c8b92200 100644 --- a/contrib/handle_archive/main.php +++ b/contrib/handle_archive/main.php @@ -11,12 +11,12 @@ */ class ArchiveFileHandler extends SimpleExtension { - public function onInitExt($event) { + public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_string('archive_extract_command', 'unzip -d "%d" "%f"'); } - public function onSetupBuilding($event) { + public function onSetupBuilding(SetupBuildingEvent $event) { $sb = new SetupBlock("Archive Handler Options"); $sb->add_text_option("archive_tmp_dir", "Temporary folder: "); $sb->add_text_option("archive_extract_command", "
    Extraction command: "); @@ -24,7 +24,7 @@ class ArchiveFileHandler extends SimpleExtension { $event->panel->add_block($sb); } - public function onDataUpload($event) { + public function onDataUpload(DataUploadEvent $event) { if($this->supported_ext($event->type)) { global $config; $tmp = sys_get_temp_dir(); diff --git a/contrib/handle_ico/main.php b/contrib/handle_ico/main.php index 771dd506..d8475279 100644 --- a/contrib/handle_ico/main.php +++ b/contrib/handle_ico/main.php @@ -6,7 +6,7 @@ */ class IcoFileHandler extends SimpleExtension { - public function onDataUpload($event) { + public function onDataUpload(DataUploadEvent $event) { if($this->supported_ext($event->type) && $this->check_contents($event->tmpname)) { $hash = $event->hash; $ha = substr($hash, 0, 2); @@ -22,20 +22,20 @@ class IcoFileHandler extends SimpleExtension { } } - public function onThumbnailGeneration($event) { + public function onThumbnailGeneration(ThumbnailGenerationEvent $event) { if($this->supported_ext($event->type)) { $this->create_thumb($event->hash); } } - public function onDisplayingImage($event) { + public function onDisplayingImage(DisplayingImageEvent $event) { global $page; if($this->supported_ext($event->image->ext)) { $this->theme->display_image($page, $event->image); } } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $config, $database, $page; if($event->page_matches("get_ico")) { $id = int_escape($event->get_arg(0)); diff --git a/contrib/holiday/main.php b/contrib/holiday/main.php index aea352f8..58c90a37 100644 --- a/contrib/holiday/main.php +++ b/contrib/holiday/main.php @@ -7,19 +7,19 @@ * Description: Use an additional stylesheet on certain holidays. */ class Holiday extends SimpleExtension { - public function onInitExt(Event $event) { + public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_bool("holiday_aprilfools", false); } - public function onSetupBuilding(Event $event) { + public function onSetupBuilding(SetupBuildingEvent $event) { global $config; $sb = new SetupBlock("Holiday Theme"); $sb->add_bool_option("holiday_aprilfools", "Enable April Fools"); $event->panel->add_block($sb); } - public function onPageRequest(Event $event) { + public function onPageRequest(PageRequestEvent $event) { global $config; $date = /*date('d/m') == '01/01' ||date('d/m') == '14/02' || */date('d/m') == '01/04'/* || date('d/m') == '24/12' || date('d/m') == '25/12' || date('d/m') == '31/12'*/; if($date){ diff --git a/contrib/ipban/main.php b/contrib/ipban/main.php index bd9a11d0..2697155a 100644 --- a/contrib/ipban/main.php +++ b/contrib/ipban/main.php @@ -37,7 +37,7 @@ class AddIPBanEvent extends Event { class IPBan extends SimpleExtension { public function get_priority() {return 10;} - public function onInitExt($event) { + public function onInitExt(InitExtEvent $event) { global $config; if($config->get_int("ext_ipban_version") < 5) { $this->install(); @@ -45,7 +45,7 @@ class IPBan extends SimpleExtension { $this->check_ip_ban(); } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { if($event->page_matches("ip_ban")) { global $config, $database, $page, $user; if($user->is_admin()) { @@ -77,19 +77,19 @@ class IPBan extends SimpleExtension { } } - public function onUserBlockBuilding($event) { + public function onUserBlockBuilding(UserBlockBuildingEvent $event) { global $user; if($user->is_admin()) { $event->add_link("IP Bans", make_link("ip_ban/list")); } } - public function onAddIPBan($event) { + public function onAddIPBan(AddIPBanEvent $event) { global $user; $this->add_ip_ban($event->ip, $event->reason, $event->end, $user); } - public function onRemoveIPBan($event) { + public function onRemoveIPBan(RemoveIPBanEvent $event) { global $database; $database->Execute("DELETE FROM bans WHERE id = :id", array("id"=>$event->id)); $database->cache->delete("ip_bans_sorted"); @@ -178,7 +178,7 @@ class IPBan extends SimpleExtension { } } - private function block($remote) { + private function block(/*string*/ $remote) { global $config, $database; $prefix = ($database->engine->name == "sqlite" ? "bans." : ""); diff --git a/contrib/link_image/main.php b/contrib/link_image/main.php index d8773362..28366e4d 100644 --- a/contrib/link_image/main.php +++ b/contrib/link_image/main.php @@ -4,29 +4,22 @@ * Author: Artanis * Description: Show various forms of link to each image, for copy & paste */ -class LinkImage implements Extension { - var $theme; +class LinkImage extends SimpleExtension { + public function onDisplayingImage(DisplayingImageEvent $event) { + global $page; + $this->theme->links_block($page, $this->data($event->image)); + } - public function get_priority() {return 50;} + public function onSetupBuildingEvent(SetupBuildingEvent $event) { + $sb = new SetupBlock("Link to Image"); + $sb->add_text_option("ext_link-img_text-link_format", "Text Link Format: "); + $event->panel->add_block($sb); + } - 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 DisplayingImageEvent)) { - $this->theme->links_block($page, $this->data($event->image)); - } - if($event instanceof SetupBuildingEvent) { - $sb = new SetupBlock("Link to Image"); - $sb->add_text_option("ext_link-img_text-link_format", "Text Link Format: "); - $event->panel->add_block($sb); - } - if($event instanceof InitExtEvent) { - //just set default if empty. - $config->set_default_string("ext_link-img_text-link_format", - '$title - $id ($ext $size $filesize)'); - } - } + public function onInitExtEvent(InitExtEvent $event) { + global $config; + $config->set_default_string("ext_link-img_text-link_format", '$title - $id ($ext $size $filesize)'); + } private function hostify($str) { $str = str_replace(" ", "%20", $str); @@ -37,7 +30,8 @@ class LinkImage implements Extension { return "http://" . $_SERVER["HTTP_HOST"] . $str; } } - private function data($image) { + + private function data(Image $image) { global $config; $text_link = $image->parse_link_template($config->get_string("ext_link-img_text-link_format")); diff --git a/contrib/log_db/main.php b/contrib/log_db/main.php index 2e51ce24..f83a2aa6 100644 --- a/contrib/log_db/main.php +++ b/contrib/log_db/main.php @@ -7,7 +7,7 @@ */ class LogDatabase extends SimpleExtension { - public function onInitExt($event) { + public function onInitExt(InitExtEvent $event) { global $database; global $config; @@ -28,7 +28,7 @@ class LogDatabase extends SimpleExtension { $config->set_default_int("log_db_priority", SCORE_LOG_INFO); } - public function onSetupBuilding($event) { + public function onSetupBuilding(SetupBuildingEvent $event) { $sb = new SetupBlock("Logging (Database)"); $sb->add_choice_option("log_db_priority", array( "Debug" => SCORE_LOG_DEBUG, @@ -40,7 +40,7 @@ class LogDatabase extends SimpleExtension { $event->panel->add_block($sb); } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $database, $user; if($event->page_matches("log/view")) { if($user->is_admin()) { @@ -104,14 +104,14 @@ class LogDatabase extends SimpleExtension { } } - public function onUserBlockBuilding($event) { + public function onUserBlockBuilding(UserBlockBuildingEvent $event) { global $user; if($user->is_admin()) { $event->add_link("Event Log", make_link("log/view")); } } - public function onLog($event) { + public function onLog(LogEvent $event) { global $config, $database, $user; $username = ($user && $user->name) ? $user->name : "null"; diff --git a/contrib/mass_tagger/main.php b/contrib/mass_tagger/main.php index a83dda44..8cc3c893 100644 --- a/contrib/mass_tagger/main.php +++ b/contrib/mass_tagger/main.php @@ -15,7 +15,7 @@ */ class MassTagger extends SimpleExtension { - public function onPostListBuilding($event) { + public function onPostListBuilding(PostListBuildingEvent $event) { global $config, $page, $user; if( !$user->is_admin() ) return; @@ -23,7 +23,7 @@ class MassTagger extends SimpleExtension { $this->theme->display_mass_tagger( $page, $event, $config ); } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $config, $page, $user; if( !$event->page_matches("mass_tagger") ) return; if( !$user->is_admin() ) return; diff --git a/contrib/news/main.php b/contrib/news/main.php index 69c87255..2091a6ef 100644 --- a/contrib/news/main.php +++ b/contrib/news/main.php @@ -9,14 +9,14 @@ */ class News extends SimpleExtension { - public function onPostListBuilding($event) { + public function onPostListBuilding(PostListBuildingEvent $event) { global $config, $page; if(strlen($config->get_string("news_text")) > 0) { $this->theme->display_news($page, $config->get_string("news_text")); } } - public function onSetupBuilding($event) { + public function onSetupBuilding(SetupBuildingEvent $event) { $sb = new SetupBlock("News"); $sb->add_longtext_option("news_text"); $event->panel->add_block($sb); diff --git a/contrib/notes/main.php b/contrib/notes/main.php index ea82ea6c..3e894770 100644 --- a/contrib/notes/main.php +++ b/contrib/notes/main.php @@ -8,7 +8,7 @@ */ class Notes extends SimpleExtension { - public function onInitExt($event) { + public function onInitExt(InitExtEvent $event) { global $config, $database; // shortcut to latest @@ -66,9 +66,7 @@ class Notes extends SimpleExtension { } } - - - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $page, $user; if($event->page_matches("note")) { @@ -179,7 +177,7 @@ class Notes extends SimpleExtension { /* * HERE WE LOAD THE NOTES IN THE IMAGE */ - public function onDisplayingImage($event) { + public function onDisplayingImage(DisplayingImageEvent $event) { global $page, $user; //display form on image event @@ -191,7 +189,7 @@ class Notes extends SimpleExtension { /* * HERE WE ADD THE BUTTONS ON SIDEBAR */ - public function onImageAdminBlockBuilding($event) { + public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event) { global $user; if(!$user->is_anonymous()) { $event->add_part($this->theme->note_button($event->image->id)); @@ -207,7 +205,7 @@ class Notes extends SimpleExtension { /* * HERE WE ADD QUERYLETS TO ADD SEARCH SYSTEM */ - public function onSearchTermParse($event) { + public function onSearchTermParse(SearchTermParseEvent $event) { $matches = array(); if(preg_match("/note=(.*)/i", $event->term, $matches)) { $notes = int_escape($matches[1]); diff --git a/contrib/numeric_score/main.php b/contrib/numeric_score/main.php index 0e7d5181..7bcf15aa 100755 --- a/contrib/numeric_score/main.php +++ b/contrib/numeric_score/main.php @@ -12,226 +12,227 @@ class NumericScoreSetEvent extends Event { var $image_id, $user, $score; - public function NumericScoreSetEvent($image_id, $user, $score) { + public function NumericScoreSetEvent(/*int*/ $image_id, User $user, /*int*/ $score) { $this->image_id = $image_id; $this->user = $user; $this->score = $score; } } -class NumericScore implements Extension { - var $theme; - - public function get_priority() {return 50;} - - 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_numeric_score_version", 0) < 1) { - $this->install(); - } +class NumericScore extends SimpleExtension { + public function onInitExt(InitExtEvent $event) { + global $config; + if($config->get_int("ext_numeric_score_version", 0) < 1) { + $this->install(); } + } - if($event instanceof DisplayingImageEvent) { + public function onDisplayingImage(DisplayingImageEvent $event) { + global $user, $page; + if(!$user->is_anonymous()) { + $html = $this->theme->get_voter_html($event->image); + $page->add_block(new Block("Image Score", $html, "left", 20)); + } + } + + public function onUserPageBuilding(UserPageBuildingEvent $event) { + global $page; + $html = $this->theme->get_nuller_html($event->display_user); + $page->add_block(new Block("Votes", $html, "main", 60)); + } + + public function onPageRequest(PageRequestEvent $event) { + global $config, $database, $user, $page; + + if($event->page_matches("numeric_score_votes")) { + $image_id = int_escape($event->get_arg(0)); + $x = $database->get_all( + "SELECT users.name as username, user_id, score + FROM numeric_score_votes + JOIN users ON numeric_score_votes.user_id=users.id + WHERE image_id=?", + array($image_id)); + $html = ""; + foreach($x as $vote) { + $html .= ""; + } + die($html); + } + if($event->page_matches("numeric_score_vote") && $user->check_auth_token()) { if(!$user->is_anonymous()) { - $html = $this->theme->get_voter_html($event->image); - $page->add_block(new Block("Image Score", $html, "left", 20)); + $image_id = int_escape($_POST['image_id']); + $char = $_POST['vote']; + $score = null; + if($char == "up") $score = 1; + else if($char == "null") $score = 0; + else if($char == "down") $score = -1; + if(!is_null($score) && $image_id>0) send_event(new NumericScoreSetEvent($image_id, $user, $score)); + $page->set_mode("redirect"); + $page->set_redirect(make_link("post/view/$image_id")); } } - - if($event instanceof UserPageBuildingEvent) { - $html = $this->theme->get_nuller_html($event->display_user); - $page->add_block(new Block("Votes", $html, "main", 60)); + if($event->page_matches("numeric_score/remove_votes_on") && $user->check_auth_token()) { + if($user->is_admin()) { + $image_id = int_escape($_POST['image_id']); + $database->execute( + "DELETE FROM numeric_score_votes WHERE image_id=?", + array($image_id)); + $database->execute( + "UPDATE images SET numeric_score=0 WHERE id=?", + array($image_id)); + $page->set_mode("redirect"); + $page->set_redirect(make_link("post/view/$image_id")); + } } + if($event->page_matches("numeric_score/remove_votes_by") && $user->check_auth_token()) { + if($user->is_admin()) { + $user_id = int_escape($_POST['user_id']); + $image_ids = $database->get_col("SELECT image_id FROM numeric_score_votes WHERE user_id=?", array($user_id)); - if($event instanceof PageRequestEvent) { - if($event->page_matches("numeric_score_votes")) { - $image_id = int_escape($event->get_arg(0)); - $x = $database->get_all( - "SELECT users.name as username, user_id, score - FROM numeric_score_votes - JOIN users ON numeric_score_votes.user_id=users.id - WHERE image_id=?", - array($image_id)); - $html = "
    "; + $html .= "{$vote['username']}"; + $html .= ""; + $html .= $vote['score']; + $html .= "
    "; - foreach($x as $vote) { - $html .= ""; - } - die($html); + $database->execute( + "DELETE FROM numeric_score_votes WHERE user_id=? AND image_id IN ?", + array($user_id, $image_ids)); + $database->execute( + "UPDATE images SET numeric_score=(SELECT SUM(score) FROM numeric_score_votes WHERE image_id=images.id) WHERE images.id IN ?", + array($image_ids)); + $page->set_mode("redirect"); + $page->set_redirect(make_link()); } - if($event->page_matches("numeric_score_vote") && $user->check_auth_token()) { - if(!$user->is_anonymous()) { - $image_id = int_escape($_POST['image_id']); - $char = $_POST['vote']; - $score = null; - if($char == "up") $score = 1; - else if($char == "null") $score = 0; - else if($char == "down") $score = -1; - if(!is_null($score) && $image_id>0) send_event(new NumericScoreSetEvent($image_id, $user, $score)); - $page->set_mode("redirect"); - $page->set_redirect(make_link("post/view/$image_id")); - } + } + if($event->page_matches("popular_by_day") || $event->page_matches("popular_by_month") || $event->page_matches("popular_by_year")) { + $t_images = $config->get_int("index_height") * $config->get_int("index_width"); + + //TODO: Add Popular_by_week. + + //year + if(empty($_GET['year'])){ + $year = date("Y"); + }else{ + $year = $_GET['year']; } - if($event->page_matches("numeric_score/remove_votes_on") && $user->check_auth_token()) { - if($user->is_admin()) { - $image_id = int_escape($_POST['image_id']); - $database->execute( - "DELETE FROM numeric_score_votes WHERE image_id=?", - array($image_id)); - $database->execute( - "UPDATE images SET numeric_score=0 WHERE id=?", - array($image_id)); - $page->set_mode("redirect"); - $page->set_redirect(make_link("post/view/$image_id")); - } + //month + if(empty($_GET['month']) || int_escape($_GET['month']) > 12){ + $month = date("m"); + }else{ + $month = $_GET['month']; } - if($event->page_matches("numeric_score/remove_votes_by") && $user->check_auth_token()) { - if($user->is_admin()) { - $user_id = int_escape($_POST['user_id']); - $image_ids = $database->get_col("SELECT image_id FROM numeric_score_votes WHERE user_id=?", array($user_id)); - - $database->execute( - "DELETE FROM numeric_score_votes WHERE user_id=? AND image_id IN ?", - array($user_id, $image_ids)); - $database->execute( - "UPDATE images SET numeric_score=(SELECT SUM(score) FROM numeric_score_votes WHERE image_id=images.id) WHERE images.id IN ?", - array($image_ids)); - $page->set_mode("redirect"); - $page->set_redirect(make_link()); - } + //day + if(empty($_GET['day']) || int_escape($_GET['day']) > 31){ + $day = date("d"); + }else{ + $day = $_GET['day']; } - if($event->page_matches("popular_by_day") || $event->page_matches("popular_by_month") || $event->page_matches("popular_by_year")) { - $t_images = $config->get_int("index_height") * $config->get_int("index_width"); + $totaldate = $year."/".$month."/".$day; - //TODO: Add Popular_by_week. + $sql = + "SELECT * FROM images + WHERE EXTRACT(YEAR FROM posted) = :year + "; - //year - if(empty($_GET['year'])){ - $year = date("Y"); - }else{ - $year = $_GET['year']; - } - //month - if(empty($_GET['month']) || int_escape($_GET['month']) > 12){ - $month = date("m"); - }else{ - $month = $_GET['month']; - } - //day - if(empty($_GET['day']) || int_escape($_GET['day']) > 31){ - $day = date("d"); - }else{ - $day = $_GET['day']; - } - $totaldate = $year."/".$month."/".$day; + $agrs = array("limit" => $t_images, "year" => $year); - $sql = - "SELECT * FROM images - WHERE EXTRACT(YEAR FROM posted) = :year + if($event->page_matches("popular_by_day")){ + $sql .= + "AND EXTRACT(MONTH FROM posted) = :month + AND EXTRACT(DAY FROM posted) = :day + AND NOT numeric_score=0 "; + //array_push doesn't seem to like using double arrows + //this requires us to instead create two arrays and merge + $sgra = array("month" => $month, "day" => $day); + $args = array_merge($agrs, $sgra); - $agrs = array("limit" => $t_images, "year" => $year); - - if($event->page_matches("popular_by_day")){ - $sql .= - "AND EXTRACT(MONTH FROM posted) = :month - AND EXTRACT(DAY FROM posted) = :day - AND NOT numeric_score=0 - "; - //array_push doesn't seem to like using double arrows - //this requires us to instead create two arrays and merge - $sgra = array("month" => $month, "day" => $day); - $args = array_merge($agrs, $sgra); - - $dte = array($totaldate, date("F jS, Y", (strtotime($totaldate))), "\\y\\e\\a\\r\\=Y\\&\\m\\o\\n\\t\\h\\=m\\&\\d\\a\\y\\=d", "day"); - } - if($event->page_matches("popular_by_month")){ - $sql .= - "AND EXTRACT(MONTH FROM posted) = :month - AND NOT numeric_score=0 - "; - $sgra = array("month" => $month); - $args = array_merge($agrs, $sgra); - - $title = date("F Y", (strtotime($totaldate))); - $dte = array($totaldate, $title, "\\y\\e\\a\\r\\=Y\\&\\m\\o\\n\\t\\h\\=m", "month"); - } - if($event->page_matches("popular_by_year")){ - $sql .= "AND NOT numeric_score=0"; - $dte = array($totaldate, $year, "\y\e\a\\r\=Y", "year"); - $args = $agrs; - } - $sql .= " ORDER BY numeric_score DESC LIMIT :limit OFFSET 0"; - - //filter images by year/score != 0 > limit to max images on one page > order from highest to lowest score - $result = $database->get_all($sql, $args); - - $images = array(); - foreach($result as $singleResult) { - $images[] = Image::by_id($singleResult["id"]); - } - $this->theme->view_popular($images, $dte); + $dte = array($totaldate, date("F jS, Y", (strtotime($totaldate))), "\\y\\e\\a\\r\\=Y\\&\\m\\o\\n\\t\\h\\=m\\&\\d\\a\\y\\=d", "day"); } + if($event->page_matches("popular_by_month")){ + $sql .= + "AND EXTRACT(MONTH FROM posted) = :month + AND NOT numeric_score=0 + "; + $sgra = array("month" => $month); + $args = array_merge($agrs, $sgra); + + $title = date("F Y", (strtotime($totaldate))); + $dte = array($totaldate, $title, "\\y\\e\\a\\r\\=Y\\&\\m\\o\\n\\t\\h\\=m", "month"); + } + if($event->page_matches("popular_by_year")){ + $sql .= "AND NOT numeric_score=0"; + $dte = array($totaldate, $year, "\y\e\a\\r\=Y", "year"); + $args = $agrs; + } + $sql .= " ORDER BY numeric_score DESC LIMIT :limit OFFSET 0"; + + //filter images by year/score != 0 > limit to max images on one page > order from highest to lowest score + $result = $database->get_all($sql, $args); + + $images = array(); + foreach($result as $singleResult) { + $images[] = Image::by_id($singleResult["id"]); + } + $this->theme->view_popular($images, $dte); } + } - if($event instanceof NumericScoreSetEvent) { - log_info("numeric_score", "Rated Image #{$event->image_id} as {$event->score}"); - $this->add_vote($event->image_id, $user->id, $event->score); + public function onNumericScoreSet(NumericScoreSetEvent $event) { + global $user; + log_info("numeric_score", "Rated Image #{$event->image_id} as {$event->score}"); + $this->add_vote($event->image_id, $user->id, $event->score); + } + + public function onImageDeletion(ImageDeletionEvent $event) { + global $database; + $database->execute("DELETE FROM numeric_score_votes WHERE image_id=:id", array("id" => $event->image->id)); + } + + // FIXME: on user deletion + // FIXME: on user vote nuke + + public function onParseLinkTemplate(ParseLinkTemplateEvent $event) { + $event->replace('$score', $event->image->numeric_score); + } + + public function onSearchTermParse(SearchTermParseEvent $event) { + $matches = array(); + if(preg_match("/^score(<|<=|=|>=|>)(\d+)$/", $event->term, $matches)) { + $cmp = $matches[1]; + $score = $matches[2]; + $event->add_querylet(new Querylet("numeric_score $cmp $score")); } - - if($event instanceof ImageDeletionEvent) { - $database->execute("DELETE FROM numeric_score_votes WHERE image_id=:id", array("id" => $event->image->id)); + if(preg_match("/^upvoted_by=(.*)$/", $event->term, $matches)) { + $duser = User::by_name($matches[1]); + if(is_null($duser)) { + throw new SearchTermParseException( + "Can't find the user named ".html_escape($matches[1])); + } + $event->add_querylet(new Querylet( + "images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=1)", + array("ns_user_id"=>$duser->id))); } - - if($event instanceof ParseLinkTemplateEvent) { - $event->replace('$score', $event->image->numeric_score); + if(preg_match("/^downvoted_by=(.*)$/", $event->term, $matches)) { + $duser = User::by_name($matches[1]); + if(is_null($duser)) { + throw new SearchTermParseException( + "Can't find the user named ".html_escape($matches[1])); + } + $event->add_querylet(new Querylet( + "images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=-1)", + array("ns_user_id"=>$duser->id))); } - - if($event instanceof SearchTermParseEvent) { - $matches = array(); - if(preg_match("/^score(<|<=|=|>=|>)(\d+)$/", $event->term, $matches)) { - $cmp = $matches[1]; - $score = $matches[2]; - $event->add_querylet(new Querylet("numeric_score $cmp $score")); - } - if(preg_match("/^upvoted_by=(.*)$/", $event->term, $matches)) { - $duser = User::by_name($matches[1]); - if(is_null($duser)) { - throw new SearchTermParseException( - "Can't find the user named ".html_escape($matches[1])); - } - $event->add_querylet(new Querylet( - "images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=1)", - array("ns_user_id"=>$duser->id))); - } - if(preg_match("/^downvoted_by=(.*)$/", $event->term, $matches)) { - $duser = User::by_name($matches[1]); - if(is_null($duser)) { - throw new SearchTermParseException( - "Can't find the user named ".html_escape($matches[1])); - } - $event->add_querylet(new Querylet( - "images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=-1)", - array("ns_user_id"=>$duser->id))); - } - if(preg_match("/^upvoted_by_id=(\d+)$/", $event->term, $matches)) { - $iid = int_escape($matches[1]); - $event->add_querylet(new Querylet( - "images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=1)", - array("ns_user_id"=>$iid))); - } - if(preg_match("/^downvoted_by_id=(\d+)$/", $event->term, $matches)) { - $iid = int_escape($matches[1]); - $event->add_querylet(new Querylet( - "images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=-1)", - array("ns_user_id"=>$iid))); - } + if(preg_match("/^upvoted_by_id=(\d+)$/", $event->term, $matches)) { + $iid = int_escape($matches[1]); + $event->add_querylet(new Querylet( + "images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=1)", + array("ns_user_id"=>$iid))); + } + if(preg_match("/^downvoted_by_id=(\d+)$/", $event->term, $matches)) { + $iid = int_escape($matches[1]); + $event->add_querylet(new Querylet( + "images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=-1)", + array("ns_user_id"=>$iid))); } } @@ -259,7 +260,7 @@ class NumericScore implements Extension { } } - private function add_vote($image_id, $user_id, $score) { + private function add_vote(/*int*/ $image_id, /*int*/ $user_id, /*int*/ $score) { global $database; $database->execute( "DELETE FROM numeric_score_votes WHERE image_id=:imageid AND user_id=:userid", diff --git a/contrib/oekaki/main.php b/contrib/oekaki/main.php index 7a571242..3027dcfd 100644 --- a/contrib/oekaki/main.php +++ b/contrib/oekaki/main.php @@ -6,7 +6,7 @@ */ class Oekaki extends SimpleExtension { - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $user, $page; if($event->page_matches("oekaki")) { @@ -82,7 +82,7 @@ class Oekaki extends SimpleExtension { } // FIXME: "edit this image" button on existing images? - function onPostListBuilding($event) { + function onPostListBuilding(PostListBuildingEvent $event) { global $user, $page; if($this->can_upload($user)) { $this->theme->display_block($page); diff --git a/contrib/pm/main.php b/contrib/pm/main.php index 0e050f55..5e380278 100755 --- a/contrib/pm/main.php +++ b/contrib/pm/main.php @@ -11,7 +11,7 @@ */ class SendPMEvent extends Event { - public function __construct($pm) { + public function __construct(PM $pm) { $this->pm = $pm; } } @@ -43,7 +43,7 @@ class PM { } class PrivMsg extends SimpleExtension { - public function onInitExt($event) { + public function onInitExt(InitExtEvent $event) { global $config, $database; // shortcut to latest @@ -78,7 +78,7 @@ class PrivMsg extends SimpleExtension { } /* - public function onUserBlockBuilding($event) { + public function onUserBlockBuilding(UserBlockBuilding $event) { global $user; if(!$user->is_anonymous()) { $event->add_link("Private Messages", make_link("pm")); @@ -86,7 +86,7 @@ class PrivMsg extends SimpleExtension { } */ - public function onUserPageBuilding($event) { + public function onUserPageBuilding(UserPageBuilding $event) { global $page, $user; $duser = $event->display_user; if(!$user->is_anonymous() && !$duser->is_anonymous()) { @@ -99,7 +99,7 @@ class PrivMsg extends SimpleExtension { } } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $database, $page, $user; if($event->page_matches("pm")) { if(!$user->is_anonymous()) { @@ -153,7 +153,7 @@ class PrivMsg extends SimpleExtension { } } - public function onSendPM($event) { + public function onSendPM(SendPMEvent $event) { global $database; $database->execute(" INSERT INTO private_message( diff --git a/contrib/pools/main.php b/contrib/pools/main.php index a679f222..fb15d491 100644 --- a/contrib/pools/main.php +++ b/contrib/pools/main.php @@ -11,7 +11,7 @@ class PoolCreationException extends SCoreException { } class Pools extends SimpleExtension { - public function onInitExt($event) { + public function onInitExt(InitExtEvent $event) { global $config, $database; if ($config->get_int("ext_pools_version") < 1){ @@ -65,7 +65,7 @@ class Pools extends SimpleExtension { $event->panel->add_block($sb); } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $config, $page, $user; if($event->page_matches("pool")) { @@ -216,7 +216,7 @@ class Pools extends SimpleExtension { } } - public function onUserBlockBuilding($event) { + public function onUserBlockBuilding(UserBlockBuildingEvent $event) { $event->add_link("Pools", make_link("pool/list")); } @@ -224,7 +224,7 @@ class Pools extends SimpleExtension { /* * HERE WE GET THE POOLS WHERE THE IMAGE APPEARS WHEN THE IMAGE IS DISPLAYED */ - public function onDisplayingImage($event) { + public function onDisplayingImage(DisplayingImageEvent $event) { global $config, $database, $page; if($config->get_bool("poolsInfoOnViewImage")) { @@ -242,7 +242,7 @@ class Pools extends SimpleExtension { } } - public function onImageAdminBlockBuilding($event) { + public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event) { global $config, $database, $user; if($config->get_bool("poolsAdderOnViewImage") && !$user->is_anonymous()) { if($user->is_admin()) { @@ -261,7 +261,7 @@ class Pools extends SimpleExtension { /* * HERE WE GET THE LIST OF POOLS */ - private function list_pools(Page $page, $pageNumber) { + private function list_pools(Page $page, /*int*/ $pageNumber) { global $config, $database; if(is_null($pageNumber) || !is_numeric($pageNumber)) diff --git a/contrib/qr_code/main.php b/contrib/qr_code/main.php index 9309fbb6..7f5b706f 100644 --- a/contrib/qr_code/main.php +++ b/contrib/qr_code/main.php @@ -8,7 +8,7 @@ * and replace it with a link to google chart APIs */ class QRImage extends SimpleExtension { - public function onDisplayingImage($event) { + public function onDisplayingImage(DisplayingImageEvent $event) { $this->theme->links_block(make_http(make_link('image/'.$event->image->id.'.jpg'))); } } diff --git a/contrib/random_image/main.php b/contrib/random_image/main.php index bad07792..79fc6d4f 100644 --- a/contrib/random_image/main.php +++ b/contrib/random_image/main.php @@ -20,7 +20,7 @@ */ class RandomImage extends SimpleExtension { - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $config, $database, $page, $user; if($event->page_matches("random_image")) { if($event->count_args() == 1) { @@ -51,13 +51,13 @@ class RandomImage extends SimpleExtension { } } - public function onSetupBuilding($event) { + public function onSetupBuilding(SetupBuildingEvent $event) { $sb = new SetupBlock("Random Image"); $sb->add_bool_option("show_random_block", "Show Random Block: "); $event->panel->add_block($sb); } - public function onPostListBuilding($event) { + public function onPostListBuilding(PostListBuildingEvent $event) { global $config, $page; if($config->get_bool("show_random_block")) { $image = Image::by_random($event->search_terms); diff --git a/contrib/regen_thumb/main.php b/contrib/regen_thumb/main.php index cf3e2eb6..e5855976 100644 --- a/contrib/regen_thumb/main.php +++ b/contrib/regen_thumb/main.php @@ -13,7 +13,7 @@ */ class RegenThumb extends SimpleExtension { - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $config, $database, $page, $user; if($event->page_matches("regen_thumb") && $user->is_admin() && isset($_POST['image_id'])) { @@ -23,7 +23,7 @@ class RegenThumb extends SimpleExtension { } } - public function onImageAdminBlockBuilding($event) { + public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event) { global $user; if($user->is_admin()) { $event->add_part($this->theme->get_buttons_html($event->image->id)); diff --git a/contrib/report_image/main.php b/contrib/report_image/main.php index 970be8d7..28c0e826 100755 --- a/contrib/report_image/main.php +++ b/contrib/report_image/main.php @@ -29,24 +29,19 @@ class AddReportedImageEvent extends Event { } } -class ReportImage implements Extension { - var $theme; +class ReportImage extends SimpleExtension { + public function onInitExt(InitExtEvent $event) { + global $config; + $config->set_default_bool('report_image_show_thumbs', true); - public function get_priority() {return 50;} - - 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($config->get_int("ext_report_image_version") < 1) { + $this->install(); } + } - if(($event instanceof PageRequestEvent) && $event->page_matches("image_report")) { + public function onPageRequest(PageRequestEvent $event) { + global $page, $user; + if($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']); @@ -70,40 +65,45 @@ class ReportImage implements Extension { } } } + } - if($event instanceof AddReportedImageEvent) { - $database->Execute( - "INSERT INTO image_reports(image_id, reporter_id, reason) - VALUES (?, ?, ?)", - array($event->image_id, $event->reporter_id, $event->reason)); - } + public function onAddReportedImage(AddReportedImageEvent $event) { + global $database; + $database->Execute( + "INSERT INTO image_reports(image_id, reporter_id, reason) + VALUES (?, ?, ?)", + array($event->image_id, $event->reporter_id, $event->reason)); + } - if($event instanceof RemoveReportedImageEvent) { - $database->Execute("DELETE FROM image_reports WHERE id = ?", array($event->id)); - } + public function onRemoveReportedImage(RemoveReportedImageEvent $event) { + global $database; + $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); - } + public function onDisplayingImage(DisplayingImageEvent $event) { + global $config, $user, $page; + 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", "
    Show thumbnails in admin panel: "); - $event->panel->add_block($sb); - } + public function onSetupBuilding(SetupBuildingEvent $event) { + $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", "
    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")); - } + public function onUserBlockBuilding(UserBlockBuildingEvent $event) { + global $user; + 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 onImageDeletion(ImageDeletionEvent $event) { + global $database; + $database->Execute("DELETE FROM image_reports WHERE image_id = ?", array($event->image->id)); } protected function install() { diff --git a/contrib/res_limit/main.php b/contrib/res_limit/main.php index d8ff1dc0..459faa90 100644 --- a/contrib/res_limit/main.php +++ b/contrib/res_limit/main.php @@ -5,69 +5,68 @@ * License: GPLv2 * Description: Allows the admin to set min / max image dimentions */ -class ResolutionLimit implements Extension { +class ResolutionLimit extends SimpleExtension { public function get_priority() {return 40;} // early, to veto ImageUploadEvent - public function receive_event(Event $event) { - if($event instanceof ImageAdditionEvent) { - global $config; - $min_w = $config->get_int("upload_min_width", -1); - $min_h = $config->get_int("upload_min_height", -1); - $max_w = $config->get_int("upload_max_width", -1); - $max_h = $config->get_int("upload_max_height", -1); - $ratios = explode(" ", $config->get_string("upload_ratios", "")); + public function onImageAddition(ImageAdditionEvent $event) { + global $config; + $min_w = $config->get_int("upload_min_width", -1); + $min_h = $config->get_int("upload_min_height", -1); + $max_w = $config->get_int("upload_max_width", -1); + $max_h = $config->get_int("upload_max_height", -1); + $ratios = explode(" ", $config->get_string("upload_ratios", "")); - $image = $event->image; + $image = $event->image; - if($min_w > 0 && $image->width < $min_w) throw new UploadException("Image too small"); - if($min_h > 0 && $image->height < $min_h) throw new UploadException("Image too small"); - if($max_w > 0 && $image->width > $max_w) throw new UploadException("Image too large"); - if($max_h > 0 && $image->height > $max_h) throw new UploadException("Image too large"); + if($min_w > 0 && $image->width < $min_w) throw new UploadException("Image too small"); + if($min_h > 0 && $image->height < $min_h) throw new UploadException("Image too small"); + if($max_w > 0 && $image->width > $max_w) throw new UploadException("Image too large"); + if($max_h > 0 && $image->height > $max_h) throw new UploadException("Image too large"); - if(count($ratios) > 0) { - $ok = false; - $valids = 0; - foreach($ratios as $ratio) { - $parts = explode(":", $ratio); - if(count($parts) < 2) continue; - $valids++; - $width = $parts[0]; - $height = $parts[1]; - if($image->width / $width == $image->height / $height) { - $ok = true; - break; - } - } - if($valids > 0 && !$ok) { - throw new UploadException( - "Image needs to be in one of these ratios: ". - html_escape($config->get_string("upload_ratios", ""))); + if(count($ratios) > 0) { + $ok = false; + $valids = 0; + foreach($ratios as $ratio) { + $parts = explode(":", $ratio); + if(count($parts) < 2) continue; + $valids++; + $width = $parts[0]; + $height = $parts[1]; + if($image->width / $width == $image->height / $height) { + $ok = true; + break; } } + if($valids > 0 && !$ok) { + throw new UploadException( + "Image needs to be in one of these ratios: ". + html_escape($config->get_string("upload_ratios", ""))); + } } - if($event instanceof SetupBuildingEvent) { - $sb = new SetupBlock("Resolution Limits"); + } - $sb->add_label("Min "); - $sb->add_int_option("upload_min_width"); - $sb->add_label(" x "); - $sb->add_int_option("upload_min_height"); - $sb->add_label(" px"); + public function onSetupBuilding(SetupBuildingEvent $event) { + $sb = new SetupBlock("Resolution Limits"); - $sb->add_label("
    Max "); - $sb->add_int_option("upload_max_width"); - $sb->add_label(" x "); - $sb->add_int_option("upload_max_height"); - $sb->add_label(" px"); + $sb->add_label("Min "); + $sb->add_int_option("upload_min_width"); + $sb->add_label(" x "); + $sb->add_int_option("upload_min_height"); + $sb->add_label(" px"); - $sb->add_label("
    (-1 for no limit)"); + $sb->add_label("
    Max "); + $sb->add_int_option("upload_max_width"); + $sb->add_label(" x "); + $sb->add_int_option("upload_max_height"); + $sb->add_label(" px"); - $sb->add_label("
    Ratios "); - $sb->add_text_option("upload_ratios"); - $sb->add_label("
    (eg. '4:3 16:9', blank for no limit)"); + $sb->add_label("
    (-1 for no limit)"); - $event->panel->add_block($sb); - } + $sb->add_label("
    Ratios "); + $sb->add_text_option("upload_ratios"); + $sb->add_label("
    (eg. '4:3 16:9', blank for no limit)"); + + $event->panel->add_block($sb); } } ?> diff --git a/contrib/resize/main.php b/contrib/resize/main.php index 2b75661f..60bc86b9 100644 --- a/contrib/resize/main.php +++ b/contrib/resize/main.php @@ -28,7 +28,7 @@ class ImageResizeException extends SCoreException { */ class ResizeImage extends SimpleExtension { - public function onInitExt($event) { + public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_bool('resize_enabled', true); $config->set_default_bool('resize_upload', false); @@ -36,7 +36,7 @@ class ResizeImage extends SimpleExtension { $config->set_default_int('resize_default_height', 0); } - public function onImageAdminBlockBuilding($event) { + public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event) { global $user, $config; if($user->is_admin() && $config->get_bool("resize_enabled")) { /* Add a link to resize the image */ @@ -44,7 +44,7 @@ class ResizeImage extends SimpleExtension { } } - public function onSetupBuilding($event) { + public function onSetupBuilding(SetupBuildingEvent $event) { $sb = new SetupBlock("Image Resize"); $sb->add_bool_option("resize_enabled", "Allow resizing images: "); $sb->add_bool_option("resize_upload", "
    Resize on upload: "); @@ -89,7 +89,7 @@ class ResizeImage extends SimpleExtension { } } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $page, $user; if ( $event->page_matches("resize") && $user->is_admin() ) { diff --git a/contrib/rss_comments/main.php b/contrib/rss_comments/main.php index 975a384e..8c32bbbf 100644 --- a/contrib/rss_comments/main.php +++ b/contrib/rss_comments/main.php @@ -7,7 +7,7 @@ */ class RSS_Comments extends SimpleExtension { - public function onPostListBuilding($event) { + public function onPostListBuilding(PostListBuildingEvent $event) { global $config, $page; $title = $config->get_string('title'); @@ -15,7 +15,7 @@ class RSS_Comments extends SimpleExtension { "title=\"$title - Comments\" href=\"".make_link("rss/comments")."\" />"); } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $config, $database, $page; if($event->page_matches("rss/comments")) { $page->set_mode("data"); diff --git a/contrib/rss_images/main.php b/contrib/rss_images/main.php index 400767d2..675016e7 100644 --- a/contrib/rss_images/main.php +++ b/contrib/rss_images/main.php @@ -7,7 +7,7 @@ */ class RSS_Images extends SimpleExtension { - public function onPostListBuilding($event) { + public function onPostListBuilding(PostListBuildingEvent $event) { global $config, $page; $title = $config->get_string('title'); @@ -22,7 +22,7 @@ class RSS_Images extends SimpleExtension { } } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { if($event->page_matches("rss/images")) { $search_terms = $event->get_search_terms(); $page_number = $event->get_page_number(); diff --git a/contrib/simpletest/main.php b/contrib/simpletest/main.php index 22ef730e..f56d322a 100644 --- a/contrib/simpletest/main.php +++ b/contrib/simpletest/main.php @@ -206,7 +206,7 @@ class TestFinder extends TestSuite { } class SimpleSCoreTest extends SimpleExtension { - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $page; if($event->page_matches("test")) { set_time_limit(0); @@ -220,7 +220,7 @@ class SimpleSCoreTest extends SimpleExtension { } } - public function onUserBlockBuilding($event) { + public function onUserBlockBuilding(UserBlockBuildingEvent $event) { global $user; if($user->is_admin()) { $event->add_link("Run Tests", make_link("test/all")); diff --git a/contrib/sitemap/main.php b/contrib/sitemap/main.php index 306c3085..8858bb9c 100644 --- a/contrib/sitemap/main.php +++ b/contrib/sitemap/main.php @@ -8,14 +8,14 @@ */ class XMLSitemap extends SimpleExtension { - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { if($event->page_matches("sitemap.xml")) { $images = Image::find_images(0, 50, array()); $this->do_xml($images); } } - private function do_xml($images) { + private function do_xml(/*array(Image)*/ $images) { global $page; $page->set_mode("data"); $page->set_type("application/xml"); diff --git a/contrib/tag_history/main.php b/contrib/tag_history/main.php index 40835fc3..e83fd2c0 100644 --- a/contrib/tag_history/main.php +++ b/contrib/tag_history/main.php @@ -9,7 +9,7 @@ class Tag_History extends SimpleExtension { // in before tags are actually set, so that "get current tags" works public function get_priority() {return 40;} - public function onInitExtEvent($event) { + public function onInitExtEvent(InitExtEvent $event) { global $config; $config->set_default_int("history_limit", -1); @@ -19,7 +19,7 @@ class Tag_History extends SimpleExtension { } } - public function onAdminBuildingEvent($event) { + public function onAdminBuildingEvent(AdminBuildingEvent $event) { global $user; if(isset($_POST['revert_ip']) && $user->is_admin() && $user->check_auth_token()) { @@ -55,7 +55,7 @@ class Tag_History extends SimpleExtension { } } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $config, $page, $user; if ($event->page_matches("tag_history")) { @@ -78,18 +78,18 @@ class Tag_History extends SimpleExtension { } } - public function onDisplayingImage($event) { + public function onDisplayingImage(DisplayingImageEvent $event) { global $page; // handle displaying a link on the view page $this->theme->display_history_link($page, $event->image->id); } - public function onImageDeletion($event) { + public function onImageDeletion(ImageDeletionEvent $event) { // handle removing of history when an image is deleted $this->delete_all_tag_history($event->image->id); } - public function onSetupBuilding($event) { + public function onSetupBuilding(SetupBuildingEvent $event) { $sb = new SetupBlock("Tag History"); $sb->add_label("Limit to "); $sb->add_int_option("history_limit"); @@ -98,19 +98,18 @@ class Tag_History extends SimpleExtension { $event->panel->add_block($sb); } - public function onTagSetEvent($event) { + public function onTagSet(TagSetEvent $event) { $this->add_tag_history($event->image, $event->tags); } - public function onUserBlockBuilding($event) { + public function onUserBlockBuilding(UserBlockBuilding $event) { global $user; if($user->is_admin()) { $event->add_link("Tag Changes", make_link("tag_history")); } } - protected function install() - { + protected function install() { global $database; global $config; diff --git a/contrib/tagger/main.php b/contrib/tagger/main.php index 547f9ebc..3f2256f9 100644 --- a/contrib/tagger/main.php +++ b/contrib/tagger/main.php @@ -6,46 +6,37 @@ * Do not remove this notice. */ -class Tagger implements Extension { - var $theme; +class Tagger extends SimpleExtension { + public function onDisplayingImage(DisplayingImageEvent $event) { + global $page, $config, $user; - public function get_priority() {return 50;} - - public function receive_event(Event $event) { - if(is_null($this->theme)) - $this->theme = get_theme_object($this); - - if($event instanceof DisplayingImageEvent) { - global $page, $config, $user; - - if($config->get_bool("tag_edit_anon") - || ($user->id != $config->get_int("anon_id")) - && $config->get_bool("ext_tagger_enabled")) - { - $this->theme->build_tagger($page,$event); - } + if($config->get_bool("tag_edit_anon") + || ($user->id != $config->get_int("anon_id")) + && $config->get_bool("ext_tagger_enabled")) + { + $this->theme->build_tagger($page,$event); } + } - if($event instanceof SetupBuildingEvent) { - $sb = new SetupBlock("Tagger"); - $sb->add_bool_option("ext_tagger_enabled","Enable Tagger"); - $sb->add_int_option("ext_tagger_search_delay","
    Delay queries by "); - $sb->add_label(" milliseconds."); - $sb->add_label("
    Limit queries returning more than "); - $sb->add_int_option("ext_tagger_tag_max"); - $sb->add_label(" tags to "); - $sb->add_int_option("ext_tagger_limit"); - $event->panel->add_block($sb); - } + public function onSetupBuilding(SetupBuildingEvent $event) { + $sb = new SetupBlock("Tagger"); + $sb->add_bool_option("ext_tagger_enabled","Enable Tagger"); + $sb->add_int_option("ext_tagger_search_delay","
    Delay queries by "); + $sb->add_label(" milliseconds."); + $sb->add_label("
    Limit queries returning more than "); + $sb->add_int_option("ext_tagger_tag_max"); + $sb->add_label(" tags to "); + $sb->add_int_option("ext_tagger_limit"); + $event->panel->add_block($sb); } } // Tagger AJAX back-end -class TaggerXML implements Extension { +class TaggerXML extends SimpleExtension { public function get_priority() {return 10;} - public function receive_event(Event $event) { - if(($event instanceof PageRequestEvent) && $event->page_matches("tagger/tags")) { + public function onPageRequest(PageRequestEvent $event) { + if($event->page_matches("tagger/tags")) { global $page; //$match_tags = null; diff --git a/contrib/tips/main.php b/contrib/tips/main.php index 7cfdf868..bf6ced29 100644 --- a/contrib/tips/main.php +++ b/contrib/tips/main.php @@ -9,7 +9,7 @@ */ class Tips extends SimpleExtension { - public function onInitExt($event) { + public function onInitExt(InitExtEvent $event) { global $config, $database; if ($config->get_int("ext_tips_version") < 1){ @@ -31,7 +31,7 @@ class Tips extends SimpleExtension { } } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $page, $user; $this->getTip(); @@ -67,7 +67,7 @@ class Tips extends SimpleExtension { } } - public function onUserBlockBuilding($event) { + public function onUserBlockBuilding(UserBlockBuildingEvent $event) { global $user; if($user->is_admin()) { $event->add_link("Tips Editor", make_link("tips/list")); diff --git a/contrib/twitter_soc/main.php b/contrib/twitter_soc/main.php index 04d42c48..9f7bed06 100644 --- a/contrib/twitter_soc/main.php +++ b/contrib/twitter_soc/main.php @@ -7,14 +7,14 @@ */ class TwitterSoc extends SimpleExtension { - public function onPostListBuilding($event) { + public function onPostListBuilding(PostListBuildingEvent $event) { global $config, $page; if(strlen($config->get_string("twitter_soc_username")) > 0) { $this->theme->display_feed($page, $config->get_string("twitter_soc_username")); } } - public function onSetupBuilding($event) { + public function onSetupBuilding(SetupBuildingEvent $event) { $sb = new SetupBlock("Tweet!"); $sb->add_text_option("twitter_soc_username", "Username "); $event->panel->add_block($sb); diff --git a/contrib/update/main.php b/contrib/update/main.php index 912f918a..a2ac7ad6 100644 --- a/contrib/update/main.php +++ b/contrib/update/main.php @@ -7,13 +7,13 @@ * Description: Shimmie updater! */ class Update extends SimpleExtension { - public function onInitExt(Event $event) { + public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_string("update_url", "http://nodeload.github.com/shish/shimmie2/zipball/master"); //best to avoid using https $config->set_default_string("commit_hash", ""); } - public function onSetupBuilding($event) { + public function onSetupBuilding(SetupBuildingEvent $event) { global $config; //Would prefer to use the admin panel for this. //But since the admin panel is optional...kind of stuck to using this. @@ -25,7 +25,7 @@ class Update extends SimpleExtension { $event->panel->add_block($sb); } - public function onPageRequest(Event $event) { + public function onPageRequest(PageRequestEvent $event) { global $config, $user; if($event->page_matches("update") && $user->is_admin()) { $ok = $this->update_shimmie(); diff --git a/contrib/wiki/main.php b/contrib/wiki/main.php index 17159e0d..9b5df534 100644 --- a/contrib/wiki/main.php +++ b/contrib/wiki/main.php @@ -54,7 +54,7 @@ class WikiPage { } class Wiki extends SimpleExtension { - public function onInitExt($event) { + public function onInitExt(InitExtEvent $event) { global $database; global $config; @@ -80,7 +80,7 @@ class Wiki extends SimpleExtension { } } - public function onPageRequest($event) { + public function onPageRequest(PageRequestEvent $event) { global $config, $page, $user; if($event->page_matches("wiki")) { if(is_null($event->get_arg(0)) || strlen(trim($event->get_arg(0))) == 0) { @@ -153,7 +153,7 @@ class Wiki extends SimpleExtension { } } - public function onWikiUpdate($event) { + public function onWikiUpdate(WikiUpdateEvent $event) { global $database; $wpage = $event->wikipage; try { @@ -167,7 +167,7 @@ class Wiki extends SimpleExtension { } } - public function onSetupBuilding($event) { + public function onSetupBuilding(SetupBuildingEvent $event) { $sb = new SetupBlock("Wiki"); $sb->add_bool_option("wiki_edit_anon", "Allow anonymous edits: "); $sb->add_bool_option("wiki_edit_user", "
    Allow user edits: "); diff --git a/contrib/word_filter/main.php b/contrib/word_filter/main.php index 1ce8e259..5e9e8acb 100644 --- a/contrib/word_filter/main.php +++ b/contrib/word_filter/main.php @@ -10,12 +10,12 @@ class WordFilter extends SimpleExtension { // before emoticon filter public function get_priority() {return 40;} - public function onTextFormatting($event) { + public function onTextFormatting(TextFormattingEvent $event) { $event->formatted = $this->filter($event->formatted); $event->stripped = $this->filter($event->stripped); } - public function onSetupBuilding($event) { + public function onSetupBuilding(SetupBuildingEvent $event) { $sb = new SetupBlock("Word Filter"); $sb->add_longtext_option("word_filter"); $sb->add_label("
    (each line should be search term and replace term, separated by a comma)"); From 2b85e2d2fd0698625405dc465c60ce0e9b8075bd Mon Sep 17 00:00:00 2001 From: Shish Date: Wed, 8 Feb 2012 11:45:35 +0000 Subject: [PATCH 18/19] all the extensions are simple now --- contrib/artists/main.php | 62 ++++++------ contrib/handle_svg/main.php | 43 +++----- contrib/rating/main.php | 180 ++++++++++++++++----------------- contrib/tag_editcloud/main.php | 78 +++++++------- 4 files changed, 169 insertions(+), 194 deletions(-) diff --git a/contrib/artists/main.php b/contrib/artists/main.php index 361502e8..2b8a79fd 100644 --- a/contrib/artists/main.php +++ b/contrib/artists/main.php @@ -19,41 +19,37 @@ class AuthorSetEvent extends Event { } } -class Artists implements Extension { - var $theme; - - public function get_priority() {return 50;} - - public function receive_event(Event $event) - { +class Artists extends SimpleExtension { + public function onImageInfoSet(ImageInfoSetEvent $event) { global $user; - - if(is_null($this->theme)) $this->theme = get_theme_object($this); - - if ($event instanceof ImageInfoSetEvent) - if (isset($_POST["tag_edit__author"])) - send_event(new AuthorSetEvent($event->image, $user, $_POST["tag_edit__author"])); - - if ($event instanceof AuthorSetEvent) - $this->update_author($event); - - if($event instanceof InitExtEvent) - $this->try_install(); - - if ($event instanceof ImageInfoBoxBuildingEvent) - $this->add_author_field_to_image($event); - - if ($event instanceof PageRequestEvent) - $this->handle_commands($event); - - if ($event instanceof SearchTermParseEvent) { - $matches = array(); - if(preg_match("/^author=(.*)$/", $event->term, $matches)) { - $char = $matches[1]; - $event->add_querylet(new Querylet("Author = :author_char", array("author_char"=>$char))); - } + if (isset($_POST["tag_edit__author"])) { + send_event(new AuthorSetEvent($event->image, $user, $_POST["tag_edit__author"])); } - } + } + + public function onAuthorSet(AuthorSetEvent $event) { + $this->update_author($event); + } + + public function onInitExt(InitExtEvent $event) { + $this->try_install(); + } + + public function onImageInfoBoxBuilding(ImageInfoBoxBuildingEvent $event) { + $this->add_author_field_to_image($event); + } + + public function onPageRequest(PageRequestEvent $event) { + $this->handle_commands($event); + } + + public function onSearchTermParse(SearchTermParseEvent $event) { + $matches = array(); + if(preg_match("/^author=(.*)$/", $event->term, $matches)) { + $char = $matches[1]; + $event->add_querylet(new Querylet("Author = :author_char", array("author_char"=>$char))); + } + } public function try_install() { global $config, $database; diff --git a/contrib/handle_svg/main.php b/contrib/handle_svg/main.php index e2d02a3f..c65edf49 100644 --- a/contrib/handle_svg/main.php +++ b/contrib/handle_svg/main.php @@ -5,15 +5,9 @@ * Description: Handle SVG files */ -class SVGFileHandler implements Extension { - var $theme; - - public function get_priority() {return 50;} - - public function receive_event(Event $event) { - if(is_null($this->theme)) $this->theme = get_theme_object($this); - - if(($event instanceof DataUploadEvent) && $this->supported_ext($event->type) && $this->check_contents($event->tmpname)) { +class SVGFileHandler extends SimpleExtension { + public function onDataUpload(DataUploadEvent $event) { + if($this->supported_ext($event->type) && $this->check_contents($event->tmpname)) { $hash = $event->hash; $ha = substr($hash, 0, 2); if(!move_upload_to_archive($event)) return; @@ -26,33 +20,28 @@ class SVGFileHandler implements Extension { send_event($iae); $event->image_id = $iae->image->id; } + } - if(($event instanceof ThumbnailGenerationEvent) && $this->supported_ext($event->type)) { + public function onThumbnailGeneration(ThumbnailGenerationEvent $event) { + global $config; + if($this->supported_ext($event->type)) { $hash = $event->hash; $ha = substr($hash, 0, 2); - global $config; - -// if($config->get_string("thumb_engine") == "convert") { -// $w = $config->get_int("thumb_width"); -// $h = $config->get_int("thumb_height"); -// $q = $config->get_int("thumb_quality"); -// $mem = $config->get_int("thumb_max_memory") / 1024 / 1024; // IM takes memory in MB -// -// exec("convert images/{$ha}/{$hash}[0] -geometry {$w}x{$h} -quality {$q} jpg:thumbs/{$ha}/{$hash}"); -// } -// else { - copy("ext/handle_svg/thumb.jpg", warehouse_path("thumbs", $hash)); -// } + copy("ext/handle_svg/thumb.jpg", warehouse_path("thumbs", $hash)); } + } - if(($event instanceof DisplayingImageEvent) && $this->supported_ext($event->image->ext)) { - global $page; + public function onDisplayingImage(DisplayingImageEvent $event) { + global $page; + if($this->supported_ext($event->image->ext)) { $this->theme->display_image($page, $event->image); } + } - if(($event instanceof PageRequestEvent) && $event->page_matches("get_svg")) { - global $config, $database, $page; + public function onPageRequest(PageRequestEvent $event) { + global $config, $database, $page; + if($event->page_matches("get_svg")) { $id = int_escape($event->get_arg(0)); $image = Image::by_id($id); $hash = $image->hash; diff --git a/contrib/rating/main.php b/contrib/rating/main.php index b246b14e..71fc0cf8 100644 --- a/contrib/rating/main.php +++ b/contrib/rating/main.php @@ -17,20 +17,13 @@ class RatingSetEvent extends Event { } } -class Ratings implements Extension { - var $theme; +class Ratings extends SimpleExtension { + public function onAdminBuilding(AdminBuildingEvent $event) { + $this->theme->display_bulk_rater(); + } - public function get_priority() {return 50;} - - 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 AdminBuildingEvent) { - $this->theme->display_bulk_rater(); - } - - if(($event instanceof PageRequestEvent) && $event->page_matches("admin/bulk_rate")) { + public function onPageRequest(PageRequestEvent $event) { + if($event->page_matches("admin/bulk_rate")) { global $database, $user, $page; if(!$user->is_admin()) { throw PermissionDeniedException(); @@ -54,95 +47,98 @@ class Ratings implements Extension { $page->set_redirect(make_link("admin")); } } + } - if($event instanceof InitExtEvent) { - if($config->get_int("ext_ratings2_version") < 2) { - $this->install(); - } + public function onInitExt(InitExtEvent $event) { + global $config; - $config->set_default_string("ext_rating_anon_privs", 'squ'); - $config->set_default_string("ext_rating_user_privs", 'sqeu'); - $config->set_default_string("ext_rating_admin_privs", 'sqeu'); + if($config->get_int("ext_ratings2_version") < 2) { + $this->install(); } - if($event instanceof RatingSetEvent) { - if(empty($event->image->rating)){ - $old_rating = ""; - }else{ - $old_rating = $event->image->rating; - } - $this->set_rating($event->image->id, $event->rating, $old_rating); - } + $config->set_default_string("ext_rating_anon_privs", 'squ'); + $config->set_default_string("ext_rating_user_privs", 'sqeu'); + $config->set_default_string("ext_rating_admin_privs", 'sqeu'); + } - if($event instanceof ImageInfoBoxBuildingEvent) { - if($this->can_rate()) { - $event->add_part($this->theme->get_rater_html($event->image->id, $event->image->rating), 80); - } + public function onRatingSet(RatingSetEvent $event) { + if(empty($event->image->rating)){ + $old_rating = ""; + }else{ + $old_rating = $event->image->rating; } + $this->set_rating($event->image->id, $event->rating, $old_rating); + } - if($event instanceof ImageInfoSetEvent) { - if($this->can_rate() && isset($_POST["rating"])) { - send_event(new RatingSetEvent($event->image, $user, $_POST['rating'])); - } - } - - if($event instanceof SetupBuildingEvent) { - $privs = array(); - $privs['Safe Only'] = 's'; - $privs['Safe and Unknown'] = 'su'; - $privs['Safe and Questionable'] = 'sq'; - $privs['Safe, Questionable, Unknown'] = 'squ'; - $privs['All'] = 'sqeu'; - - $sb = new SetupBlock("Image Ratings"); - $sb->add_choice_option("ext_rating_anon_privs", $privs, "Anonymous: "); - $sb->add_choice_option("ext_rating_user_privs", $privs, "
    Users: "); - $sb->add_choice_option("ext_rating_admin_privs", $privs, "
    Admins: "); - $event->panel->add_block($sb); - } - - if($event instanceof ParseLinkTemplateEvent) { - $event->replace('$rating', $this->theme->rating_to_name($event->image->rating)); - } - - if($event instanceof SearchTermParseEvent) { - $matches = array(); - if(is_null($event->term) && $this->no_rating_query($event->context)) { - $set = Ratings::privs_to_sql(Ratings::get_user_privs($user)); - $event->add_querylet(new Querylet("rating IN ($set)")); - } - if(preg_match("/^rating=([sqeu]+)$/", $event->term, $matches)) { - $sqes = $matches[1]; - $arr = array(); - $length = strlen($sqes); - for($i=0; $i<$length; $i++) { - $arr[] = "'" . $sqes[$i] . "'"; - } - $set = join(', ', $arr); - $event->add_querylet(new Querylet("rating IN ($set)")); - } - if(preg_match("/^rating=(safe|questionable|explicit|unknown)$/", strtolower($event->term), $matches)) { - $text = $matches[1]; - $char = $text[0]; - $event->add_querylet(new Querylet("rating = :img_rating", array("img_rating"=>$char))); - } - } - - if($event instanceof DisplayingImageEvent) { - /** - * Deny images upon insufficient permissions. - **/ - global $user, $database, $page; - $user_view_level = Ratings::get_user_privs($user); - $user_view_level = preg_split('//', $user_view_level, -1); - if(!in_array($event->image->rating, $user_view_level)) { - $page->set_mode("redirect"); - $page->set_redirect(make_link("post/list")); - } + public function onImageInfoBoxBuilding(ImageInfoBoxBuildingEvent $event) { + if($this->can_rate()) { + $event->add_part($this->theme->get_rater_html($event->image->id, $event->image->rating), 80); } } - public static function get_user_privs($user) { + public function onImageInfoSet(ImageInfoSetEvent $event) { + global $user; + if($this->can_rate() && isset($_POST["rating"])) { + send_event(new RatingSetEvent($event->image, $user, $_POST['rating'])); + } + } + + public function onSetupBuilding(SetupBuildingEvent $event) { + $privs = array(); + $privs['Safe Only'] = 's'; + $privs['Safe and Unknown'] = 'su'; + $privs['Safe and Questionable'] = 'sq'; + $privs['Safe, Questionable, Unknown'] = 'squ'; + $privs['All'] = 'sqeu'; + + $sb = new SetupBlock("Image Ratings"); + $sb->add_choice_option("ext_rating_anon_privs", $privs, "Anonymous: "); + $sb->add_choice_option("ext_rating_user_privs", $privs, "
    Users: "); + $sb->add_choice_option("ext_rating_admin_privs", $privs, "
    Admins: "); + $event->panel->add_block($sb); + } + + public function onParseLinkTemplate(ParseLinkTemplateEvent $event) { + $event->replace('$rating', $this->theme->rating_to_name($event->image->rating)); + } + + public function onSearchTermParse(SearchTermParseEvent $event) { + $matches = array(); + if(is_null($event->term) && $this->no_rating_query($event->context)) { + $set = Ratings::privs_to_sql(Ratings::get_user_privs($user)); + $event->add_querylet(new Querylet("rating IN ($set)")); + } + if(preg_match("/^rating=([sqeu]+)$/", $event->term, $matches)) { + $sqes = $matches[1]; + $arr = array(); + $length = strlen($sqes); + for($i=0; $i<$length; $i++) { + $arr[] = "'" . $sqes[$i] . "'"; + } + $set = join(', ', $arr); + $event->add_querylet(new Querylet("rating IN ($set)")); + } + if(preg_match("/^rating=(safe|questionable|explicit|unknown)$/", strtolower($event->term), $matches)) { + $text = $matches[1]; + $char = $text[0]; + $event->add_querylet(new Querylet("rating = :img_rating", array("img_rating"=>$char))); + } + } + + public function onDisplayingImage(DisplayingImageEvent $event) { + /** + * Deny images upon insufficient permissions. + **/ + global $user, $page; + $user_view_level = Ratings::get_user_privs($user); + $user_view_level = preg_split('//', $user_view_level, -1); + if(!in_array($event->image->rating, $user_view_level)) { + $page->set_mode("redirect"); + $page->set_redirect(make_link("post/list")); + } + } + + public static function get_user_privs(User $user) { global $config; if($user->is_anonymous()) { $sqes = $config->get_string("ext_rating_anon_privs"); diff --git a/contrib/tag_editcloud/main.php b/contrib/tag_editcloud/main.php index a6b9ecf0..75819299 100644 --- a/contrib/tag_editcloud/main.php +++ b/contrib/tag_editcloud/main.php @@ -12,56 +12,50 @@ * colorize used tags in cloud || always show used tags in front of cloud * theme junk */ -class TagEditCloud implements Extension { - var $theme; +class TagEditCloud extends SimpleExtension { + public function onImageInfoBoxBuilding(ImageInfoBoxBuildingEvent $event) { + global $config; - public function get_priority() {return 50;} - - 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 ImageInfoBoxBuildingEvent) { - if(!$config->get_bool("tageditcloud_disable")) { - if($this->can_tag($event->image)) { - if(!$cfg_minusage=$config->get_int("tageditcloud_minusage")) $cfg_minusage=2; - if(!$cfg_defcount=$config->get_int("tageditcloud_defcount")) $cfg_defcount=40; - if(!$cfg_maxcount=$config->get_int("tageditcloud_maxcount")) $cfg_maxcount=4096; - if($config->get_string("tageditcloud_sort") != "p") { - $event->add_part($this->build_tag_map($event->image,$cfg_minusage,false),40); - } else { - $event->add_part($this->build_tag_map($event->image,$cfg_defcount,$cfg_maxcount),40); - } + if(!$config->get_bool("tageditcloud_disable")) { + if($this->can_tag($event->image)) { + if(!$cfg_minusage=$config->get_int("tageditcloud_minusage")) $cfg_minusage=2; + if(!$cfg_defcount=$config->get_int("tageditcloud_defcount")) $cfg_defcount=40; + if(!$cfg_maxcount=$config->get_int("tageditcloud_maxcount")) $cfg_maxcount=4096; + if($config->get_string("tageditcloud_sort") != "p") { + $event->add_part($this->build_tag_map($event->image,$cfg_minusage,false),40); + } else { + $event->add_part($this->build_tag_map($event->image,$cfg_defcount,$cfg_maxcount),40); } } } + } - if($event instanceof InitExtEvent) { - $config->set_default_bool("tageditcloud_disable",false); - $config->set_default_bool("tageditcloud_usedfirst",true); - $config->set_default_string("tageditcloud_sort",'a'); - $config->set_default_int("tageditcloud_minusage",2); - $config->set_default_int("tageditcloud_defcount",40); - $config->set_default_int("tageditcloud_maxcount",4096); - } + public function onInitExt(InitExtEvent $event) { + global $config; + $config->set_default_bool("tageditcloud_disable",false); + $config->set_default_bool("tageditcloud_usedfirst",true); + $config->set_default_string("tageditcloud_sort",'a'); + $config->set_default_int("tageditcloud_minusage",2); + $config->set_default_int("tageditcloud_defcount",40); + $config->set_default_int("tageditcloud_maxcount",4096); + } - if($event instanceof SetupBuildingEvent) { - $sort_by = array('Alphabetical'=>'a','Popularity'=>'p'); + public function onSetupBuilding(SetupBuildingEvent $event) { + $sort_by = array('Alphabetical'=>'a','Popularity'=>'p'); - $sb = new SetupBlock("Tag Edit Cloud"); - $sb->add_bool_option("tageditcloud_disable", "Disable Tag Selection Cloud: "); - $sb->add_choice_option("tageditcloud_sort", $sort_by, "
    Sort the tags by:"); - $sb->add_bool_option("tageditcloud_usedfirst","
    Always show used tags first: "); - $sb->add_label("
    Alpha sort:
    Only show tags used at least "); - $sb->add_int_option("tageditcloud_minusage"); - $sb->add_label(" times.
    Popularity sort:
    Show "); - $sb->add_int_option("tageditcloud_defcount"); - $sb->add_label(" tags by default.
    Show a maximum of "); - $sb->add_int_option("tageditcloud_maxcount"); - $sb->add_label(" tags."); + $sb = new SetupBlock("Tag Edit Cloud"); + $sb->add_bool_option("tageditcloud_disable", "Disable Tag Selection Cloud: "); + $sb->add_choice_option("tageditcloud_sort", $sort_by, "
    Sort the tags by:"); + $sb->add_bool_option("tageditcloud_usedfirst","
    Always show used tags first: "); + $sb->add_label("
    Alpha sort:
    Only show tags used at least "); + $sb->add_int_option("tageditcloud_minusage"); + $sb->add_label(" times.
    Popularity sort:
    Show "); + $sb->add_int_option("tageditcloud_defcount"); + $sb->add_label(" tags by default.
    Show a maximum of "); + $sb->add_int_option("tageditcloud_maxcount"); + $sb->add_label(" tags."); - $event->panel->add_block($sb); - } + $event->panel->add_block($sb); } private function tag_link($tag) { From 0698b780f94ca757eeaac6a389f29dbb0bfb124c Mon Sep 17 00:00:00 2001 From: Shish Date: Wed, 8 Feb 2012 12:07:01 +0000 Subject: [PATCH 19/19] remove regular Extension, have SimpleExtension take its place, optimise the event system based on SimpleExtension methods --- contrib/admin/main.php | 2 +- contrib/amazon_s3/main.php | 2 +- contrib/artists/main.php | 2 +- contrib/ban_words/main.php | 2 +- contrib/blocks/main.php | 2 +- contrib/blotter/main.php | 2 +- contrib/bookmarks/main.php | 2 +- contrib/browser_search/main.php | 2 +- contrib/bulk_add/main.php | 2 +- contrib/danbooru_api/main.php | 2 +- contrib/downtime/main.php | 2 +- contrib/emoticons/main.php | 2 +- contrib/et/main.php | 2 +- contrib/favorites/main.php | 2 +- contrib/featured/main.php | 2 +- contrib/forum/main.php | 2 +- contrib/handle_archive/main.php | 2 +- contrib/handle_ico/main.php | 2 +- contrib/handle_svg/main.php | 2 +- contrib/holiday/main.php | 2 +- contrib/home/main.php | 2 +- contrib/image_hash_ban/main.php | 2 +- contrib/ipban/main.php | 2 +- contrib/link_image/main.php | 2 +- contrib/log_db/main.php | 2 +- contrib/mass_tagger/main.php | 2 +- contrib/news/main.php | 2 +- contrib/notes/main.php | 2 +- contrib/numeric_score/main.php | 2 +- contrib/oekaki/main.php | 2 +- contrib/pm/main.php | 2 +- contrib/pools/main.php | 2 +- contrib/qr_code/main.php | 2 +- contrib/random_image/main.php | 2 +- contrib/rating/main.php | 2 +- contrib/regen_thumb/main.php | 2 +- contrib/report_image/main.php | 2 +- contrib/res_limit/main.php | 2 +- contrib/resize/main.php | 2 +- contrib/rss_comments/main.php | 2 +- contrib/rss_images/main.php | 2 +- contrib/shimmie_api/main.php | 2 +- contrib/simpletest/main.php | 2 +- contrib/site_description/main.php | 2 +- contrib/sitemap/main.php | 2 +- contrib/tag_editcloud/main.php | 2 +- contrib/tag_history/main.php | 2 +- contrib/tagger/main.php | 4 +-- contrib/tips/main.php | 2 +- contrib/twitter_soc/main.php | 2 +- contrib/update/main.php | 2 +- contrib/wiki/main.php | 2 +- contrib/word_filter/main.php | 2 +- core/extension.class.php | 43 +++++-------------------------- core/util.inc.php | 14 +++------- ext/alias_editor/main.php | 2 +- ext/comment/main.php | 2 +- ext/ext_manager/main.php | 2 +- ext/handle_404/main.php | 2 +- ext/image/main.php | 2 +- ext/index/main.php | 2 +- ext/mail/main.php | 4 +-- ext/setup/main.php | 2 +- ext/tag_edit/main.php | 2 +- ext/tag_list/main.php | 2 +- ext/upgrade/main.php | 2 +- ext/upload/main.php | 2 +- ext/user/main.php | 2 +- ext/view/main.php | 2 +- 69 files changed, 79 insertions(+), 116 deletions(-) diff --git a/contrib/admin/main.php b/contrib/admin/main.php index 12c2e347..020d4640 100644 --- a/contrib/admin/main.php +++ b/contrib/admin/main.php @@ -35,7 +35,7 @@ class AdminBuildingEvent extends Event { } } -class AdminPage extends SimpleExtension { +class AdminPage extends Extension { public function onPageRequest(PageRequestEvent $event) { global $page, $user; diff --git a/contrib/amazon_s3/main.php b/contrib/amazon_s3/main.php index 741b7378..b4191a69 100644 --- a/contrib/amazon_s3/main.php +++ b/contrib/amazon_s3/main.php @@ -9,7 +9,7 @@ require_once "lib/S3.php"; -class UploadS3 extends SimpleExtension { +class UploadS3 extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_string("amazon_s3_access", ""); diff --git a/contrib/artists/main.php b/contrib/artists/main.php index 2b8a79fd..4c2422fa 100644 --- a/contrib/artists/main.php +++ b/contrib/artists/main.php @@ -19,7 +19,7 @@ class AuthorSetEvent extends Event { } } -class Artists extends SimpleExtension { +class Artists extends Extension { public function onImageInfoSet(ImageInfoSetEvent $event) { global $user; if (isset($_POST["tag_edit__author"])) { diff --git a/contrib/ban_words/main.php b/contrib/ban_words/main.php index aee98417..e5f42b89 100644 --- a/contrib/ban_words/main.php +++ b/contrib/ban_words/main.php @@ -19,7 +19,7 @@ * from Essex" */ -class BanWords extends SimpleExtension { +class BanWords extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_string('banned_words', " diff --git a/contrib/blocks/main.php b/contrib/blocks/main.php index 2fd3dfa7..f3ee274d 100644 --- a/contrib/blocks/main.php +++ b/contrib/blocks/main.php @@ -27,7 +27,7 @@ * */ -class Blocks extends SimpleExtension { +class Blocks extends Extension { public function onPageRequest(PageRequestEvent $event) { global $config, $page; $all = $config->get_string("blocks_text"); diff --git a/contrib/blotter/main.php b/contrib/blotter/main.php index 8dd4daad..23dc5fe8 100644 --- a/contrib/blotter/main.php +++ b/contrib/blotter/main.php @@ -8,7 +8,7 @@ * * Development TODO at http://github.com/zshall/shimmie2/issues */ -class Blotter extends SimpleExtension { +class Blotter extends Extension { public function onInitExt(InitExtEvent $event) { /** * I love re-using this installer don't I... diff --git a/contrib/bookmarks/main.php b/contrib/bookmarks/main.php index 3ed8db45..8e47bc83 100644 --- a/contrib/bookmarks/main.php +++ b/contrib/bookmarks/main.php @@ -6,7 +6,7 @@ * Description: Allow users to bookmark searches */ -class Bookmarks extends SimpleExtension { +class Bookmarks extends Extension { public function onInitExt(InitExtEvent $event) { $this->install(); } diff --git a/contrib/browser_search/main.php b/contrib/browser_search/main.php index 80c399c2..78c3b878 100755 --- a/contrib/browser_search/main.php +++ b/contrib/browser_search/main.php @@ -13,7 +13,7 @@ * engine" notification they have */ -class BrowserSearch extends SimpleExtension { +class BrowserSearch extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_string("search_suggestions_results_order", 'a'); diff --git a/contrib/bulk_add/main.php b/contrib/bulk_add/main.php index 676fc14e..21e5a9a3 100644 --- a/contrib/bulk_add/main.php +++ b/contrib/bulk_add/main.php @@ -14,7 +14,7 @@ *

    Note: requires the "admin" extension to be enabled */ -class BulkAdd extends SimpleExtension { +class BulkAdd extends Extension { public function onPageRequest(PageRequestEvent $event) { global $page, $user; if($event->page_matches("bulk_add")) { diff --git a/contrib/danbooru_api/main.php b/contrib/danbooru_api/main.php index f47a34e8..ad9cc13c 100644 --- a/contrib/danbooru_api/main.php +++ b/contrib/danbooru_api/main.php @@ -47,7 +47,7 @@ Completely compatibility will probably involve a rewrite with a different URL */ -class DanbooruApi extends SimpleExtension { +class DanbooruApi extends Extension { public function onPageRequest(PageRequestEvent $event) { if($event->page_matches("api") && ($event->get_arg(0) == 'danbooru')) { $this->api_danbooru($event); diff --git a/contrib/downtime/main.php b/contrib/downtime/main.php index 8c9ced34..3e87bdf3 100644 --- a/contrib/downtime/main.php +++ b/contrib/downtime/main.php @@ -11,7 +11,7 @@ * message specified in the box. */ -class Downtime extends SimpleExtension { +class Downtime extends Extension { public function get_priority() {return 10;} public function onSetupBuilding($event) { diff --git a/contrib/emoticons/main.php b/contrib/emoticons/main.php index d7805f47..be958040 100644 --- a/contrib/emoticons/main.php +++ b/contrib/emoticons/main.php @@ -24,7 +24,7 @@ class Emoticons extends FormatterExtension { } } -class EmoticonList extends SimpleExtension { +class EmoticonList extends Extension { public function onPageRequest(PageRequestEvent $event) { if($event->page_matches("emote/list")) { $this->theme->display_emotes(glob("ext/emoticons/default/*")); diff --git a/contrib/et/main.php b/contrib/et/main.php index d54b5631..6a26ec40 100644 --- a/contrib/et/main.php +++ b/contrib/et/main.php @@ -12,7 +12,7 @@ * versions of PHP I should test with, etc. */ -class ET extends SimpleExtension { +class ET extends Extension { public function onPageRequest(PageRequestEvent $event) { global $user; if($event->page_matches("system_info")) { diff --git a/contrib/favorites/main.php b/contrib/favorites/main.php index 9a66fd65..7c14554f 100644 --- a/contrib/favorites/main.php +++ b/contrib/favorites/main.php @@ -26,7 +26,7 @@ class FavoriteSetEvent extends Event { } } -class Favorites extends SimpleExtension { +class Favorites extends Extension { public function onInitExt(InitExtEvent $event) { global $config; if($config->get_int("ext_favorites_version", 0) < 1) { diff --git a/contrib/featured/main.php b/contrib/featured/main.php index a4defb11..ee25b121 100644 --- a/contrib/featured/main.php +++ b/contrib/featured/main.php @@ -18,7 +18,7 @@ * every couple of hours. */ -class Featured extends SimpleExtension { +class Featured extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_int('featured_id', 0); diff --git a/contrib/forum/main.php b/contrib/forum/main.php index 2604c426..cd5ccdaf 100644 --- a/contrib/forum/main.php +++ b/contrib/forum/main.php @@ -8,7 +8,7 @@ * Documentation: */ -class Forum extends SimpleExtension { +class Forum extends Extension { public function onInitExt(InitExtEvent $event) { global $config, $database; diff --git a/contrib/handle_archive/main.php b/contrib/handle_archive/main.php index c8b92200..2fb2498b 100644 --- a/contrib/handle_archive/main.php +++ b/contrib/handle_archive/main.php @@ -10,7 +10,7 @@ *
    7-zip: 7zr x -o"%d" "%f" */ -class ArchiveFileHandler extends SimpleExtension { +class ArchiveFileHandler extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_string('archive_extract_command', 'unzip -d "%d" "%f"'); diff --git a/contrib/handle_ico/main.php b/contrib/handle_ico/main.php index d8475279..7582fc53 100644 --- a/contrib/handle_ico/main.php +++ b/contrib/handle_ico/main.php @@ -5,7 +5,7 @@ * Description: Handle windows icons */ -class IcoFileHandler extends SimpleExtension { +class IcoFileHandler extends Extension { public function onDataUpload(DataUploadEvent $event) { if($this->supported_ext($event->type) && $this->check_contents($event->tmpname)) { $hash = $event->hash; diff --git a/contrib/handle_svg/main.php b/contrib/handle_svg/main.php index c65edf49..0c59f59d 100644 --- a/contrib/handle_svg/main.php +++ b/contrib/handle_svg/main.php @@ -5,7 +5,7 @@ * Description: Handle SVG files */ -class SVGFileHandler extends SimpleExtension { +class SVGFileHandler extends Extension { public function onDataUpload(DataUploadEvent $event) { if($this->supported_ext($event->type) && $this->check_contents($event->tmpname)) { $hash = $event->hash; diff --git a/contrib/holiday/main.php b/contrib/holiday/main.php index 58c90a37..f435099a 100644 --- a/contrib/holiday/main.php +++ b/contrib/holiday/main.php @@ -6,7 +6,7 @@ * License: GPLv2 * Description: Use an additional stylesheet on certain holidays. */ -class Holiday extends SimpleExtension { +class Holiday extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_bool("holiday_aprilfools", false); diff --git a/contrib/home/main.php b/contrib/home/main.php index f9485309..2ac2412d 100644 --- a/contrib/home/main.php +++ b/contrib/home/main.php @@ -15,7 +15,7 @@ * alongside the default choices. */ -class Home extends SimpleExtension { +class Home extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_string("home_links", '[$base/post/list|Posts] diff --git a/contrib/image_hash_ban/main.php b/contrib/image_hash_ban/main.php index ab0f9bf0..79150d98 100644 --- a/contrib/image_hash_ban/main.php +++ b/contrib/image_hash_ban/main.php @@ -29,7 +29,7 @@ class AddImageHashBanEvent extends Event { } } // }}} -class ImageBan extends SimpleExtension { +class ImageBan extends Extension { public function onInitExt(InitExtEvent $event) { global $config, $database; if($config->get_int("ext_imageban_version") < 1) { diff --git a/contrib/ipban/main.php b/contrib/ipban/main.php index 2697155a..4da24231 100644 --- a/contrib/ipban/main.php +++ b/contrib/ipban/main.php @@ -34,7 +34,7 @@ class AddIPBanEvent extends Event { } // }}} -class IPBan extends SimpleExtension { +class IPBan extends Extension { public function get_priority() {return 10;} public function onInitExt(InitExtEvent $event) { diff --git a/contrib/link_image/main.php b/contrib/link_image/main.php index 28366e4d..ab52935e 100644 --- a/contrib/link_image/main.php +++ b/contrib/link_image/main.php @@ -4,7 +4,7 @@ * Author: Artanis * Description: Show various forms of link to each image, for copy & paste */ -class LinkImage extends SimpleExtension { +class LinkImage extends Extension { public function onDisplayingImage(DisplayingImageEvent $event) { global $page; $this->theme->links_block($page, $this->data($event->image)); diff --git a/contrib/log_db/main.php b/contrib/log_db/main.php index f83a2aa6..bba7c996 100644 --- a/contrib/log_db/main.php +++ b/contrib/log_db/main.php @@ -6,7 +6,7 @@ * Visibility: admin */ -class LogDatabase extends SimpleExtension { +class LogDatabase extends Extension { public function onInitExt(InitExtEvent $event) { global $database; global $config; diff --git a/contrib/mass_tagger/main.php b/contrib/mass_tagger/main.php index 8cc3c893..751cfcdf 100644 --- a/contrib/mass_tagger/main.php +++ b/contrib/mass_tagger/main.php @@ -14,7 +14,7 @@ * As of now only compatible with the lite theme. */ -class MassTagger extends SimpleExtension { +class MassTagger extends Extension { public function onPostListBuilding(PostListBuildingEvent $event) { global $config, $page, $user; diff --git a/contrib/news/main.php b/contrib/news/main.php index 2091a6ef..27765c71 100644 --- a/contrib/news/main.php +++ b/contrib/news/main.php @@ -8,7 +8,7 @@ * Any HTML is allowed */ -class News extends SimpleExtension { +class News extends Extension { public function onPostListBuilding(PostListBuildingEvent $event) { global $config, $page; if(strlen($config->get_string("news_text")) > 0) { diff --git a/contrib/notes/main.php b/contrib/notes/main.php index 3e894770..aa960c1d 100644 --- a/contrib/notes/main.php +++ b/contrib/notes/main.php @@ -7,7 +7,7 @@ * Documentation: */ -class Notes extends SimpleExtension { +class Notes extends Extension { public function onInitExt(InitExtEvent $event) { global $config, $database; diff --git a/contrib/numeric_score/main.php b/contrib/numeric_score/main.php index 7bcf15aa..7df72142 100755 --- a/contrib/numeric_score/main.php +++ b/contrib/numeric_score/main.php @@ -19,7 +19,7 @@ class NumericScoreSetEvent extends Event { } } -class NumericScore extends SimpleExtension { +class NumericScore extends Extension { public function onInitExt(InitExtEvent $event) { global $config; if($config->get_int("ext_numeric_score_version", 0) < 1) { diff --git a/contrib/oekaki/main.php b/contrib/oekaki/main.php index 3027dcfd..16e5748e 100644 --- a/contrib/oekaki/main.php +++ b/contrib/oekaki/main.php @@ -5,7 +5,7 @@ * Description: ChibiPaint-based Oekaki uploader */ -class Oekaki extends SimpleExtension { +class Oekaki extends Extension { public function onPageRequest(PageRequestEvent $event) { global $user, $page; diff --git a/contrib/pm/main.php b/contrib/pm/main.php index 5e380278..dc95db92 100755 --- a/contrib/pm/main.php +++ b/contrib/pm/main.php @@ -42,7 +42,7 @@ class PM { } } -class PrivMsg extends SimpleExtension { +class PrivMsg extends Extension { public function onInitExt(InitExtEvent $event) { global $config, $database; diff --git a/contrib/pools/main.php b/contrib/pools/main.php index fb15d491..afec342c 100644 --- a/contrib/pools/main.php +++ b/contrib/pools/main.php @@ -10,7 +10,7 @@ class PoolCreationException extends SCoreException { } -class Pools extends SimpleExtension { +class Pools extends Extension { public function onInitExt(InitExtEvent $event) { global $config, $database; diff --git a/contrib/qr_code/main.php b/contrib/qr_code/main.php index 7f5b706f..ed671fd3 100644 --- a/contrib/qr_code/main.php +++ b/contrib/qr_code/main.php @@ -7,7 +7,7 @@ * Further modified by Shish to remove the 7MB local QR generator * and replace it with a link to google chart APIs */ -class QRImage extends SimpleExtension { +class QRImage extends Extension { public function onDisplayingImage(DisplayingImageEvent $event) { $this->theme->links_block(make_http(make_link('image/'.$event->image->id.'.jpg'))); } diff --git a/contrib/random_image/main.php b/contrib/random_image/main.php index 79fc6d4f..11d5daa7 100644 --- a/contrib/random_image/main.php +++ b/contrib/random_image/main.php @@ -19,7 +19,7 @@ * /random_image/download/size=1024x768+cute */ -class RandomImage extends SimpleExtension { +class RandomImage extends Extension { public function onPageRequest(PageRequestEvent $event) { global $config, $database, $page, $user; if($event->page_matches("random_image")) { diff --git a/contrib/rating/main.php b/contrib/rating/main.php index 71fc0cf8..4bcbe3f7 100644 --- a/contrib/rating/main.php +++ b/contrib/rating/main.php @@ -17,7 +17,7 @@ class RatingSetEvent extends Event { } } -class Ratings extends SimpleExtension { +class Ratings extends Extension { public function onAdminBuilding(AdminBuildingEvent $event) { $this->theme->display_bulk_rater(); } diff --git a/contrib/regen_thumb/main.php b/contrib/regen_thumb/main.php index e5855976..11355330 100644 --- a/contrib/regen_thumb/main.php +++ b/contrib/regen_thumb/main.php @@ -12,7 +12,7 @@ * since been increased. */ -class RegenThumb extends SimpleExtension { +class RegenThumb extends Extension { public function onPageRequest(PageRequestEvent $event) { global $config, $database, $page, $user; diff --git a/contrib/report_image/main.php b/contrib/report_image/main.php index 28c0e826..aa4290f8 100755 --- a/contrib/report_image/main.php +++ b/contrib/report_image/main.php @@ -29,7 +29,7 @@ class AddReportedImageEvent extends Event { } } -class ReportImage extends SimpleExtension { +class ReportImage extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_bool('report_image_show_thumbs', true); diff --git a/contrib/res_limit/main.php b/contrib/res_limit/main.php index 459faa90..b9657a17 100644 --- a/contrib/res_limit/main.php +++ b/contrib/res_limit/main.php @@ -5,7 +5,7 @@ * License: GPLv2 * Description: Allows the admin to set min / max image dimentions */ -class ResolutionLimit extends SimpleExtension { +class ResolutionLimit extends Extension { public function get_priority() {return 40;} // early, to veto ImageUploadEvent public function onImageAddition(ImageAdditionEvent $event) { diff --git a/contrib/resize/main.php b/contrib/resize/main.php index 60bc86b9..38075290 100644 --- a/contrib/resize/main.php +++ b/contrib/resize/main.php @@ -26,7 +26,7 @@ class ImageResizeException extends SCoreException { /** * This class handles image resize requests. */ -class ResizeImage extends SimpleExtension { +class ResizeImage extends Extension { public function onInitExt(InitExtEvent $event) { global $config; diff --git a/contrib/rss_comments/main.php b/contrib/rss_comments/main.php index 8c32bbbf..d7c02b87 100644 --- a/contrib/rss_comments/main.php +++ b/contrib/rss_comments/main.php @@ -6,7 +6,7 @@ * Description: Self explanatory */ -class RSS_Comments extends SimpleExtension { +class RSS_Comments extends Extension { public function onPostListBuilding(PostListBuildingEvent $event) { global $config, $page; $title = $config->get_string('title'); diff --git a/contrib/rss_images/main.php b/contrib/rss_images/main.php index 675016e7..26924d62 100644 --- a/contrib/rss_images/main.php +++ b/contrib/rss_images/main.php @@ -6,7 +6,7 @@ * Description: Self explanatory */ -class RSS_Images extends SimpleExtension { +class RSS_Images extends Extension { public function onPostListBuilding(PostListBuildingEvent $event) { global $config, $page; $title = $config->get_string('title'); diff --git a/contrib/shimmie_api/main.php b/contrib/shimmie_api/main.php index d7f3128f..b8b9bc0d 100644 --- a/contrib/shimmie_api/main.php +++ b/contrib/shimmie_api/main.php @@ -26,7 +26,7 @@ class _SafeImage { } } -class ShimmieApi extends SimpleExtension { +class ShimmieApi extends Extension { public function onPageRequest(PageRequestEvent $event) { global $database, $page; diff --git a/contrib/simpletest/main.php b/contrib/simpletest/main.php index f56d322a..38666898 100644 --- a/contrib/simpletest/main.php +++ b/contrib/simpletest/main.php @@ -205,7 +205,7 @@ class TestFinder extends TestSuite { } } -class SimpleSCoreTest extends SimpleExtension { +class SimpleSCoreTest extends Extension { public function onPageRequest(PageRequestEvent $event) { global $page; if($event->page_matches("test")) { diff --git a/contrib/site_description/main.php b/contrib/site_description/main.php index 43ed38b1..f2f7f57d 100644 --- a/contrib/site_description/main.php +++ b/contrib/site_description/main.php @@ -9,7 +9,7 @@ * This extension sets the "description" meta tag in the header * of pages so that search engines can pick it up */ -class SiteDescription extends SimpleExtension { +class SiteDescription extends Extension { public function onPageRequest(PageRequestEvent $event) { global $config, $page; if(strlen($config->get_string("site_description")) > 0) { diff --git a/contrib/sitemap/main.php b/contrib/sitemap/main.php index 8858bb9c..e481510f 100644 --- a/contrib/sitemap/main.php +++ b/contrib/sitemap/main.php @@ -7,7 +7,7 @@ * Documentation: */ -class XMLSitemap extends SimpleExtension { +class XMLSitemap extends Extension { public function onPageRequest(PageRequestEvent $event) { if($event->page_matches("sitemap.xml")) { $images = Image::find_images(0, 50, array()); diff --git a/contrib/tag_editcloud/main.php b/contrib/tag_editcloud/main.php index 75819299..71dabc9e 100644 --- a/contrib/tag_editcloud/main.php +++ b/contrib/tag_editcloud/main.php @@ -12,7 +12,7 @@ * colorize used tags in cloud || always show used tags in front of cloud * theme junk */ -class TagEditCloud extends SimpleExtension { +class TagEditCloud extends Extension { public function onImageInfoBoxBuilding(ImageInfoBoxBuildingEvent $event) { global $config; diff --git a/contrib/tag_history/main.php b/contrib/tag_history/main.php index e83fd2c0..2a6d45ca 100644 --- a/contrib/tag_history/main.php +++ b/contrib/tag_history/main.php @@ -5,7 +5,7 @@ * Description: Keep a record of tag changes, and allows you to revert changes. */ -class Tag_History extends SimpleExtension { +class Tag_History extends Extension { // in before tags are actually set, so that "get current tags" works public function get_priority() {return 40;} diff --git a/contrib/tagger/main.php b/contrib/tagger/main.php index 3f2256f9..076457b6 100644 --- a/contrib/tagger/main.php +++ b/contrib/tagger/main.php @@ -6,7 +6,7 @@ * Do not remove this notice. */ -class Tagger extends SimpleExtension { +class Tagger extends Extension { public function onDisplayingImage(DisplayingImageEvent $event) { global $page, $config, $user; @@ -32,7 +32,7 @@ class Tagger extends SimpleExtension { } // Tagger AJAX back-end -class TaggerXML extends SimpleExtension { +class TaggerXML extends Extension { public function get_priority() {return 10;} public function onPageRequest(PageRequestEvent $event) { diff --git a/contrib/tips/main.php b/contrib/tips/main.php index bf6ced29..41cc7823 100644 --- a/contrib/tips/main.php +++ b/contrib/tips/main.php @@ -8,7 +8,7 @@ * Formatting is done with HTML */ -class Tips extends SimpleExtension { +class Tips extends Extension { public function onInitExt(InitExtEvent $event) { global $config, $database; diff --git a/contrib/twitter_soc/main.php b/contrib/twitter_soc/main.php index 9f7bed06..90f60658 100644 --- a/contrib/twitter_soc/main.php +++ b/contrib/twitter_soc/main.php @@ -6,7 +6,7 @@ * Description: Show a twitter feed with the Sea of Clouds script */ -class TwitterSoc extends SimpleExtension { +class TwitterSoc extends Extension { public function onPostListBuilding(PostListBuildingEvent $event) { global $config, $page; if(strlen($config->get_string("twitter_soc_username")) > 0) { diff --git a/contrib/update/main.php b/contrib/update/main.php index a2ac7ad6..3a2f9a11 100644 --- a/contrib/update/main.php +++ b/contrib/update/main.php @@ -6,7 +6,7 @@ * License: GPLv2 * Description: Shimmie updater! */ -class Update extends SimpleExtension { +class Update extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_string("update_url", "http://nodeload.github.com/shish/shimmie2/zipball/master"); //best to avoid using https diff --git a/contrib/wiki/main.php b/contrib/wiki/main.php index 9b5df534..ff7da165 100644 --- a/contrib/wiki/main.php +++ b/contrib/wiki/main.php @@ -53,7 +53,7 @@ class WikiPage { } } -class Wiki extends SimpleExtension { +class Wiki extends Extension { public function onInitExt(InitExtEvent $event) { global $database; global $config; diff --git a/contrib/word_filter/main.php b/contrib/word_filter/main.php index 5e9e8acb..df13e73f 100644 --- a/contrib/word_filter/main.php +++ b/contrib/word_filter/main.php @@ -6,7 +6,7 @@ * Description: Simple search and replace */ -class WordFilter extends SimpleExtension { +class WordFilter extends Extension { // before emoticon filter public function get_priority() {return 40;} diff --git a/core/extension.class.php b/core/extension.class.php index b54956de..6798df29 100644 --- a/core/extension.class.php +++ b/core/extension.class.php @@ -13,20 +13,14 @@ * $formatted_text = $tfe->formatted; * \endcode * - * An extension is something which is capable of reacting to events. They - * register themselves using the add_event_listener() function, after which - * events will be sent to the object's recieve_event() function. - * - * SimpleExtension subclasses are slightly different -- they are registered - * automatically, and events are sent to a named method, eg PageRequestEvent - * will be sent to onPageRequest() + * An extension is something which is capable of reacting to events. * * * \page hello The Hello World Extension * * \code * // ext/hello/main.php - * public class Hello extends SimpleExtension { + * public class Hello extends Extension { * public void onPageRequest(PageRequestEvent $event) { * global $page, $user; * $this->theme->display_hello($page, $user); @@ -62,33 +56,17 @@ * */ -/** - * A generic extension class, for subclassing - */ -interface Extension { - public function receive_event(Event $event); - public function get_priority(); -} - /** * send_event(BlahEvent()) -> onBlah($event) * * Also loads the theme object into $this->theme if available * - * index.php will load all SimpleExtension subclasses, - * so no need for register_extension(new Foo()) - * - * Automatic registration is done with priority returned by get_priority() - * - * Hopefully this removes as much copy & paste code from the extension - * files as possible~ - * - * The original concept came from Artanis's SimpleExtension extension + * The original concept came from Artanis's Extension extension * --> http://github.com/Artanis/simple-extension/tree/master * Then re-implemented by Shish after he broke the forum and couldn't * find the thread where the original was posted >_< */ -abstract class SimpleExtension implements Extension { +abstract class Extension { var $theme; var $_child; @@ -100,15 +78,6 @@ abstract class SimpleExtension implements Extension { if(is_null($this->theme)) $this->theme = get_theme_object($child, false); } - public function receive_event(Event $event) { - $name = get_class($event); - // this is rather clever.. - $name = "on".str_replace("Event", "", $name); - if(method_exists($this->_child, $name)) { - $this->_child->$name($event); - } - } - public function get_priority() { return 50; } @@ -117,7 +86,7 @@ abstract class SimpleExtension implements Extension { /** * Several extensions have this in common, make a common API */ -abstract class FormatterExtension extends SimpleExtension { +abstract class FormatterExtension extends Extension { public function onTextFormatting(TextFormattingEvent $event) { $event->formatted = $this->format($event->formatted); $event->stripped = $this->strip($event->stripped); @@ -131,7 +100,7 @@ abstract class FormatterExtension extends SimpleExtension { * This too is a common class of extension with many methods in common, * so we have a base class to extend from */ -abstract class DataHandlerExtension extends SimpleExtension { +abstract class DataHandlerExtension extends Extension { public function onDataUpload(DataUploadEvent $event) { if($this->supported_ext($event->type) && $this->check_contents($event->tmpname)) { if(!move_upload_to_archive($event)) return; diff --git a/core/util.inc.php b/core/util.inc.php index 3529fb87..43197f5c 100644 --- a/core/util.inc.php +++ b/core/util.inc.php @@ -824,6 +824,7 @@ $_event_count = 0; function send_event(Event $event) { global $_event_listeners, $_event_count; if(!isset($_event_listeners[get_class($event)])) return; + $method_name = "on".str_replace("Event", "", get_class($event)); ctx_log_start(get_class($event)); // SHIT: http://bugs.php.net/bug.php?id=35106 @@ -831,7 +832,7 @@ function send_event(Event $event) { ksort($my_event_listeners); foreach($my_event_listeners as $listener) { ctx_log_start(get_class($listener)); - $listener->receive_event($event); + $listener->$method_name($event); ctx_log_endok(); } $_event_count++; @@ -1001,7 +1002,7 @@ function _load_extensions() { if($rclass->isAbstract()) { // don't do anything } - elseif(is_subclass_of($class, "SimpleExtension")) { + elseif(is_subclass_of($class, "Extension")) { $c = new $class(); $c->i_am($c); $my_events = array(); @@ -1012,10 +1013,6 @@ function _load_extensions() { } add_event_listener($c, $c->get_priority(), $my_events); } - elseif(is_subclass_of($class, "Extension")) { - $c = new $class(); - add_event_listener($c, $c->get_priority(), $all_events); - } } if(COMPILE_ELS) { @@ -1024,13 +1021,10 @@ function _load_extensions() { foreach(get_declared_classes() as $class) { $rclass = new ReflectionClass($class); if($rclass->isAbstract()) {} - elseif(is_subclass_of($class, "SimpleExtension")) { + elseif(is_subclass_of($class, "Extension")) { $p .= "\$$class = new $class(); "; $p .= "\${$class}->i_am(\$$class);\n"; } - elseif(is_subclass_of($class, "Extension")) { - $p .= "\$$class = new $class();\n"; - } } $p .= "\$_event_listeners = array(\n"; diff --git a/ext/alias_editor/main.php b/ext/alias_editor/main.php index 7a246144..cfbf1777 100755 --- a/ext/alias_editor/main.php +++ b/ext/alias_editor/main.php @@ -22,7 +22,7 @@ class AddAliasEvent extends Event { class AddAliasException extends SCoreException {} -class AliasEditor extends SimpleExtension { +class AliasEditor extends Extension { public function onPageRequest(PageRequestEvent $event) { global $config, $database, $page, $user; diff --git a/ext/comment/main.php b/ext/comment/main.php index b64a8984..451cbd51 100644 --- a/ext/comment/main.php +++ b/ext/comment/main.php @@ -60,7 +60,7 @@ class Comment { } } -class CommentList extends SimpleExtension { +class CommentList extends Extension { public function onInitExt(InitExtEvent $event) { global $config, $database; $config->set_default_bool('comment_anon', true); diff --git a/ext/ext_manager/main.php b/ext/ext_manager/main.php index 3500401c..911274e5 100644 --- a/ext/ext_manager/main.php +++ b/ext/ext_manager/main.php @@ -87,7 +87,7 @@ class ExtensionInfo { } } -class ExtManager extends SimpleExtension { +class ExtManager extends Extension { public function onPageRequest(PageRequestEvent $event) { global $page, $user; if($event->page_matches("ext_manager")) { diff --git a/ext/handle_404/main.php b/ext/handle_404/main.php index b7e80aa0..ed01cec1 100644 --- a/ext/handle_404/main.php +++ b/ext/handle_404/main.php @@ -8,7 +8,7 @@ * Description: Shows an error message when the user views a page with no content */ -class Handle404 extends SimpleExtension { +class Handle404 extends Extension { public function onPageRequest(PageRequestEvent $event) { global $page; // hax. diff --git a/ext/image/main.php b/ext/image/main.php index d0288131..b6d842b0 100644 --- a/ext/image/main.php +++ b/ext/image/main.php @@ -129,7 +129,7 @@ class ParseLinkTemplateEvent extends Event { /** * A class to handle adding / getting / removing image files from the disk. */ -class ImageIO extends SimpleExtension { +class ImageIO extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_int('thumb_width', 192); diff --git a/ext/index/main.php b/ext/index/main.php index 14a0ac5c..3494edef 100644 --- a/ext/index/main.php +++ b/ext/index/main.php @@ -128,7 +128,7 @@ class PostListBuildingEvent extends Event { } } -class Index extends SimpleExtension { +class Index extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_int("index_width", 3); diff --git a/ext/mail/main.php b/ext/mail/main.php index 9bf09169..fb3aec97 100644 --- a/ext/mail/main.php +++ b/ext/mail/main.php @@ -7,7 +7,7 @@ * Description: Provides an interface for sending and receiving mail. */ -class Mail extends SimpleExtension { +class Mail extends Extension { public function onSetupBuilding(SetupBuildingEvent $event) { $sb = new SetupBlock("Mailing Options"); $sb->add_text_option("mail_sub", "
    Subject prefix: "); @@ -26,7 +26,7 @@ class Mail extends SimpleExtension { $config->set_default_string("mail_fot", "".$config->get_string("site_title").""); } } -class MailTest extends SimpleExtension { +class MailTest extends Extension { public function onPageRequest(PageRequestEvent $event) { if($event->page_matches("mail/test")) { global $page; diff --git a/ext/setup/main.php b/ext/setup/main.php index 4e5b950a..40551e5c 100644 --- a/ext/setup/main.php +++ b/ext/setup/main.php @@ -161,7 +161,7 @@ class SetupBlock extends Block { } // }}} -class Setup extends SimpleExtension { +class Setup extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_string("title", "Shimmie"); diff --git a/ext/tag_edit/main.php b/ext/tag_edit/main.php index 184a5dba..bdae3ec0 100644 --- a/ext/tag_edit/main.php +++ b/ext/tag_edit/main.php @@ -55,7 +55,7 @@ class LockSetEvent extends Event { } } -class TagEdit extends SimpleExtension { +class TagEdit extends Extension { public function onPageRequest(PageRequestEvent $event) { global $user, $page; if($event->page_matches("tag_edit")) { diff --git a/ext/tag_list/main.php b/ext/tag_list/main.php index c30aacb6..d21de882 100644 --- a/ext/tag_list/main.php +++ b/ext/tag_list/main.php @@ -5,7 +5,7 @@ * Description: Show the tags in various ways */ -class TagList extends SimpleExtension { +class TagList extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_int("tag_list_length", 15); diff --git a/ext/upgrade/main.php b/ext/upgrade/main.php index 35854e1d..0ddc9401 100644 --- a/ext/upgrade/main.php +++ b/ext/upgrade/main.php @@ -6,7 +6,7 @@ * Visibility: admin */ -class Upgrade extends SimpleExtension { +class Upgrade extends Extension { public function onInitExt(InitExtEvent $event) { global $config, $database; diff --git a/ext/upload/main.php b/ext/upload/main.php index 938a27fa..ae719f4e 100644 --- a/ext/upload/main.php +++ b/ext/upload/main.php @@ -41,7 +41,7 @@ class UploadException extends SCoreException {} * All files that are uploaded to the site are handled through this class. * This also includes transloaded files as well. */ -class Upload extends SimpleExtension { +class Upload extends Extension { // early, so it can stop the DataUploadEvent before any data handlers see it public function get_priority() {return 40;} diff --git a/ext/user/main.php b/ext/user/main.php index 678b5b9c..96f5ac69 100644 --- a/ext/user/main.php +++ b/ext/user/main.php @@ -42,7 +42,7 @@ class UserCreationEvent extends Event { class UserCreationException extends SCoreException {} -class UserPage extends SimpleExtension { +class UserPage extends Extension { public function onInitExt(InitExtEvent $event) { global $config; $config->set_default_bool("login_signup_enabled", true); diff --git a/ext/view/main.php b/ext/view/main.php index 3fa700f6..4c4eb074 100644 --- a/ext/view/main.php +++ b/ext/view/main.php @@ -66,7 +66,7 @@ class ImageAdminBlockBuildingEvent extends Event { } } -class ViewImage extends SimpleExtension { +class ViewImage extends Extension { public function onPageRequest(PageRequestEvent $event) { global $page, $user;

    "; - $html .= "{$vote['username']}"; - $html .= ""; - $html .= $vote['score']; - $html .= "