HINT ALL THE TYPES. SIMPLE ALL THE EXTENSIONS.
This commit is contained in:
parent
9707c1f7ce
commit
4697e21fcd
@ -30,13 +30,13 @@
|
|||||||
*/
|
*/
|
||||||
class AdminBuildingEvent extends Event {
|
class AdminBuildingEvent extends Event {
|
||||||
var $page;
|
var $page;
|
||||||
public function AdminBuildingEvent($page) {
|
public function AdminBuildingEvent(Page $page) {
|
||||||
$this->page = $page;
|
$this->page = $page;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AdminPage extends SimpleExtension {
|
class AdminPage extends SimpleExtension {
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $page, $user;
|
global $page, $user;
|
||||||
|
|
||||||
if($event->page_matches("admin")) {
|
if($event->page_matches("admin")) {
|
||||||
@ -88,20 +88,20 @@ class AdminPage extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onAdminBuilding($event) {
|
public function onAdminBuilding(AdminBuildingEvent $event) {
|
||||||
global $page;
|
global $page;
|
||||||
$this->theme->display_page($page);
|
$this->theme->display_page($page);
|
||||||
$this->theme->display_form($page);
|
$this->theme->display_form($page);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onUserBlockBuilding($event) {
|
public function onUserBlockBuilding(UserBlockBuildingEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
$event->add_link("Board Admin", make_link("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;
|
global $page, $user;
|
||||||
assert(strlen($query) > 1);
|
assert(strlen($query) > 1);
|
||||||
foreach(Image::find_images(0, 1000000, Tag::explode($query)) as $image) {
|
foreach(Image::find_images(0, 1000000, Tag::explode($query)) as $image) {
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
class AuthorSetEvent extends Event {
|
class AuthorSetEvent extends Event {
|
||||||
var $image, $user, $author;
|
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->image = $image;
|
||||||
$this->user = $user;
|
$this->user = $user;
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class Blocks extends SimpleExtension {
|
class Blocks extends SimpleExtension {
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $config, $page;
|
global $config, $page;
|
||||||
$all = $config->get_string("blocks_text");
|
$all = $config->get_string("blocks_text");
|
||||||
$blocks = explode("----", $all);
|
$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 = new SetupBlock("Blocks");
|
||||||
$sb->add_label("See <a href='".make_link("ext_doc/blocks")."'>the docs</a> for formatting");
|
$sb->add_label("See <a href='".make_link("ext_doc/blocks")."'>the docs</a> for formatting");
|
||||||
$sb->add_longtext_option("blocks_text");
|
$sb->add_longtext_option("blocks_text");
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* Development TODO at http://github.com/zshall/shimmie2/issues
|
* Development TODO at http://github.com/zshall/shimmie2/issues
|
||||||
*/
|
*/
|
||||||
class Blotter extends SimpleExtension {
|
class Blotter extends SimpleExtension {
|
||||||
public function onInitExt(Event $event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
/**
|
/**
|
||||||
* I love re-using this installer don't I...
|
* I love re-using this installer don't I...
|
||||||
*/
|
*/
|
||||||
@ -43,7 +43,7 @@ class Blotter extends SimpleExtension {
|
|||||||
$config->set_default_string("blotter_position", "subheading");
|
$config->set_default_string("blotter_position", "subheading");
|
||||||
|
|
||||||
}
|
}
|
||||||
public function onSetupBuilding(Event $event) {
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
global $config;
|
global $config;
|
||||||
$sb = new SetupBlock("Blotter");
|
$sb = new SetupBlock("Blotter");
|
||||||
$sb->add_int_option("blotter_recent", "<br />Number of recent entries to display: ");
|
$sb->add_int_option("blotter_recent", "<br />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"), "<br>Position: ");
|
$sb->add_choice_option("blotter_position", array("Top of page" => "subheading", "In navigation bar" => "left"), "<br>Position: ");
|
||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
public function onUserBlockBuilding(Event $event) {
|
public function onUserBlockBuilding(UserBlockBuildingEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
$event->add_link("Blotter Editor", make_link("blotter/editor"));
|
$event->add_link("Blotter Editor", make_link("blotter/editor"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public function onPageRequest(Event $event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $page, $database, $user;
|
global $page, $database, $user;
|
||||||
if($event->page_matches("blotter")) {
|
if($event->page_matches("blotter")) {
|
||||||
switch($event->get_arg(0)) {
|
switch($event->get_arg(0)) {
|
||||||
|
@ -6,16 +6,15 @@
|
|||||||
* Description: Allow users to bookmark searches
|
* Description: Allow users to bookmark searches
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Bookmarks implements Extension {
|
class Bookmarks extends SimpleExtension {
|
||||||
var $theme;
|
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) {
|
if($event->page_matches("bookmark")) {
|
||||||
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->get_arg(0) == "add") {
|
if($event->get_arg(0) == "add") {
|
||||||
if(isset($_POST['url'])) {
|
if(isset($_POST['url'])) {
|
||||||
$page->set_mode("redirect");
|
$page->set_mode("redirect");
|
||||||
|
@ -13,36 +13,29 @@
|
|||||||
* engine" notification they have
|
* 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 onPageRequest(PageRequestEvent $event) {
|
||||||
public function receive_event(Event $event) {
|
global $config, $database, $page;
|
||||||
global $page;
|
|
||||||
global $config;
|
|
||||||
|
|
||||||
if($event instanceof InitExtEvent) {
|
|
||||||
$config->set_default_string("search_suggestions_results_order", 'a');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add in header code to let the browser know that the search plugin exists
|
// 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
|
||||||
// We need to build the data for the header
|
$search_title = $config->get_string('title');
|
||||||
global $config;
|
$search_file_url = make_link('browser_search/please_dont_use_this_tag_as_it_would_break_stuff__search.xml');
|
||||||
$search_title = $config->get_string('title');
|
$page->add_html_header("<link rel='search' type='application/opensearchdescription+xml' title='$search_title' href='$search_file_url'>");
|
||||||
$search_file_url = make_link('browser_search/please_dont_use_this_tag_as_it_would_break_stuff__search.xml');
|
|
||||||
$page->add_html_header("<link rel='search' type='application/opensearchdescription+xml' title='$search_title' href='$search_file_url'>");
|
|
||||||
}
|
|
||||||
|
|
||||||
// The search.xml file that is generated on the fly
|
// 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
|
// First, we need to build all the variables we'll need
|
||||||
|
|
||||||
$search_title = $config->get_string('title');
|
$search_title = $config->get_string('title');
|
||||||
$search_form_url = make_link('post/list/{searchTerms}');
|
$search_form_url = make_link('post/list/{searchTerms}');
|
||||||
$suggenton_url = make_link('browser_search/')."{searchTerms}";
|
$suggenton_url = make_link('browser_search/')."{searchTerms}";
|
||||||
$icon_b64 = base64_encode(file_get_contents("favicon.ico"));
|
$icon_b64 = base64_encode(file_get_contents("favicon.ico"));
|
||||||
|
|
||||||
|
|
||||||
// Now for the XML
|
// Now for the XML
|
||||||
$xml = "
|
$xml = "
|
||||||
<SearchPlugin xmlns='http://www.mozilla.org/2006/browser/search/' xmlns:os='http://a9.com/-/spec/opensearch/1.1/'>
|
<SearchPlugin xmlns='http://www.mozilla.org/2006/browser/search/' xmlns:os='http://a9.com/-/spec/opensearch/1.1/'>
|
||||||
@ -63,12 +56,10 @@ class BrowserSearch implements Extension {
|
|||||||
$page->set_data($xml);
|
$page->set_data($xml);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(($event instanceof PageRequestEvent) && (
|
else if(
|
||||||
$event->page_matches("browser_search") &&
|
$event->page_matches("browser_search") &&
|
||||||
!$config->get_bool("disable_search_suggestions")
|
!$config->get_bool("disable_search_suggestions")
|
||||||
)) {
|
) {
|
||||||
global $database;
|
|
||||||
|
|
||||||
// We have to build some json stuff
|
// We have to build some json stuff
|
||||||
$tag_search = $event->get_arg(0);
|
$tag_search = $event->get_arg(0);
|
||||||
|
|
||||||
@ -89,29 +80,25 @@ class BrowserSearch implements Extension {
|
|||||||
array_push($tags_array,$tag['tag']);
|
array_push($tags_array,$tag['tag']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$json_tag_list .= implode("\",\"", $tags_array);
|
$json_tag_list .= implode("\",\"", $tags_array);
|
||||||
// $json_tag_list = implode($tags_array,", ");
|
|
||||||
// $json_tag_list = "\"".implode($tags_array,"\", \"")."\"";
|
|
||||||
|
|
||||||
|
|
||||||
// And now for the final output
|
// And now for the final output
|
||||||
$json_string = "[\"$tag_search\",[\"$json_tag_list\"],[],[]]";
|
$json_string = "[\"$tag_search\",[\"$json_tag_list\"],[],[]]";
|
||||||
$page->set_mode("data");
|
$page->set_mode("data");
|
||||||
$page->set_data($json_string);
|
$page->set_data($json_string);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($event instanceof SetupBuildingEvent) {
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
$sort_by = array();
|
$sort_by = array();
|
||||||
$sort_by['Alphabetical'] = 'a';
|
$sort_by['Alphabetical'] = 'a';
|
||||||
$sort_by['Tag Count'] = 't';
|
$sort_by['Tag Count'] = 't';
|
||||||
|
|
||||||
$sb = new SetupBlock("Browser Search");
|
$sb = new SetupBlock("Browser Search");
|
||||||
$sb->add_bool_option("disable_search_suggestions", "Disable search suggestions: ");
|
$sb->add_bool_option("disable_search_suggestions", "Disable search suggestions: ");
|
||||||
$sb->add_label("<br>");
|
$sb->add_label("<br>");
|
||||||
$sb->add_choice_option("search_suggestions_results_order", $sort_by, "Sort the suggestions by:");
|
$sb->add_choice_option("search_suggestions_results_order", $sort_by, "Sort the suggestions by:");
|
||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class BulkAdd extends SimpleExtension {
|
class BulkAdd extends SimpleExtension {
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $page, $user;
|
global $page, $user;
|
||||||
if($event->page_matches("bulk_add")) {
|
if($event->page_matches("bulk_add")) {
|
||||||
if($user->is_admin() && $user->check_auth_token() && isset($_POST['dir'])) {
|
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();
|
$this->theme->display_admin_block();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,33 +47,23 @@ Completely compatibility will probably involve a rewrite with a different URL
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class DanbooruApi implements Extension
|
class DanbooruApi extends SimpleExtension {
|
||||||
{
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
|
if($event->page_matches("api") && ($event->get_arg(0) == 'danbooru')) {
|
||||||
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
|
|
||||||
$this->api_danbooru($event);
|
$this->api_danbooru($event);
|
||||||
}
|
}
|
||||||
if($event instanceof SearchTermParseEvent)
|
}
|
||||||
{
|
|
||||||
$matches = array();
|
public function onSearchTermParse(SearchTermParseEvent $event) {
|
||||||
if(preg_match("/^md5:([0-9a-fA-F]*)$/i", $event->term, $matches))
|
$matches = array();
|
||||||
{
|
if(preg_match("/^md5:([0-9a-fA-F]*)$/i", $event->term, $matches)) {
|
||||||
$hash = strtolower($matches[1]);
|
$hash = strtolower($matches[1]);
|
||||||
$event->add_querylet(new Querylet("images.hash = '$hash'")); // :-O
|
$event->add_querylet(new Querylet("images.hash = '$hash'")); // :-O
|
||||||
// $event->set_querylet(new Querylet("images.hash = '$hash'"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Danbooru API
|
// Danbooru API
|
||||||
private function api_danbooru($event)
|
private function api_danbooru(PageRequestEvent $event)
|
||||||
{
|
{
|
||||||
global $page;
|
global $page;
|
||||||
global $config;
|
global $config;
|
||||||
|
@ -13,19 +13,19 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class Emoticons extends FormatterExtension {
|
class Emoticons extends FormatterExtension {
|
||||||
public function format($text) {
|
public function format(/*string*/ $text) {
|
||||||
$data_href = get_base_href();
|
$data_href = get_base_href();
|
||||||
$text = preg_replace("/:([a-z]*?):/s", "<img src='$data_href/ext/emoticons/default/\\1.gif'>", $text);
|
$text = preg_replace("/:([a-z]*?):/s", "<img src='$data_href/ext/emoticons/default/\\1.gif'>", $text);
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function strip($text) {
|
public function strip(/*string*/ $text) {
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class EmoticonList extends SimpleExtension {
|
class EmoticonList extends SimpleExtension {
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
if($event->page_matches("emote/list")) {
|
if($event->page_matches("emote/list")) {
|
||||||
$this->theme->display_emotes(glob("ext/emoticons/default/*"));
|
$this->theme->display_emotes(glob("ext/emoticons/default/*"));
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class ET extends SimpleExtension {
|
class ET extends SimpleExtension {
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if($event->page_matches("system_info")) {
|
if($event->page_matches("system_info")) {
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
@ -22,7 +22,7 @@ class ET extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onUserBlockBuilding($event) {
|
public function onUserBlockBuilding(UserBlockBuildingEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
$event->add_link("System Info", make_link("system_info"));
|
$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("./")) . " / " .
|
$info['sys_disk'] = to_shorthand_int(disk_total_space("./") - disk_free_space("./")) . " / " .
|
||||||
to_shorthand_int(disk_total_space("./"));
|
to_shorthand_int(disk_total_space("./"));
|
||||||
$info['sys_server'] = $_SERVER["SERVER_SOFTWARE"];
|
$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_images'] = $database->get_one("SELECT COUNT(*) FROM images");
|
||||||
$info['stat_comments'] = $database->get_one("SELECT COUNT(*) FROM comments");
|
$info['stat_comments'] = $database->get_one("SELECT COUNT(*) FROM comments");
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
class FavoriteSetEvent extends Event {
|
class FavoriteSetEvent extends Event {
|
||||||
var $image_id, $user, $do_set;
|
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_numeric($image_id));
|
||||||
assert(is_bool($do_set));
|
assert(is_bool($do_set));
|
||||||
|
|
||||||
@ -27,14 +27,14 @@ class FavoriteSetEvent extends Event {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class Favorites extends SimpleExtension {
|
class Favorites extends SimpleExtension {
|
||||||
public function onInitExt($event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config;
|
global $config;
|
||||||
if($config->get_int("ext_favorites_version", 0) < 1) {
|
if($config->get_int("ext_favorites_version", 0) < 1) {
|
||||||
$this->install();
|
$this->install();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onImageAdminBlockBuilding($event) {
|
public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event) {
|
||||||
global $database, $page, $user;
|
global $database, $page, $user;
|
||||||
if(!$user->is_anonymous()) {
|
if(!$user->is_anonymous()) {
|
||||||
$user_id = $user->id;
|
$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);
|
$people = $this->list_persons_who_have_favorited($event->image);
|
||||||
if(count($people) > 0) {
|
if(count($people) > 0) {
|
||||||
$html = $this->theme->display_people($people);
|
$html = $this->theme->display_people($people);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $page, $user;
|
global $page, $user;
|
||||||
if($event->page_matches("change_favorite") && !$user->is_anonymous() && $user->check_auth_token()) {
|
if($event->page_matches("change_favorite") && !$user->is_anonymous() && $user->check_auth_token()) {
|
||||||
$image_id = int_escape($_POST['image_id']);
|
$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_favorites_count = Image::count_images(array("favorited_by={$event->display_user->name}"));
|
||||||
$i_days_old = ((time() - strtotime($event->display_user->join_date)) / 86400) + 1;
|
$i_days_old = ((time() - strtotime($event->display_user->join_date)) / 86400) + 1;
|
||||||
$h_favorites_rate = sprintf("%.1f", ($i_favorites_count / $i_days_old));
|
$h_favorites_rate = sprintf("%.1f", ($i_favorites_count / $i_days_old));
|
||||||
@ -75,7 +75,7 @@ class Favorites extends SimpleExtension {
|
|||||||
$event->add_stats("<a href='$favorites_link'>Images favorited</a>: $i_favorites_count, $h_favorites_rate per day");
|
$event->add_stats("<a href='$favorites_link'>Images favorited</a>: $i_favorites_count, $h_favorites_rate per day");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onImageInfoSet($event) {
|
public function onImageInfoSet(ImageInfoSetEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if(
|
if(
|
||||||
in_array('favorite_action', $_POST) &&
|
in_array('favorite_action', $_POST) &&
|
||||||
@ -85,28 +85,30 @@ class Favorites extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onFavoriteSet($event) {
|
public function onFavoriteSet(FavoriteSetEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
$this->add_vote($event->image_id, $user->id, $event->do_set);
|
$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;
|
global $database;
|
||||||
$database->execute("DELETE FROM user_favorites WHERE image_id=:image_id", array("image_id"=>$event->image->id));
|
$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);
|
$event->replace('$favorites', $event->image->favorites);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onUserBlockBuilding($event) {
|
public function onUserBlockBuilding(UserBlockBuildingEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
|
|
||||||
$username = url_escape($user->name);
|
$username = url_escape($user->name);
|
||||||
$event->add_link("My Favorites", make_link("post/list/favorited_by=$username/1"), 20);
|
$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();
|
$matches = array();
|
||||||
if(preg_match("/favorites(<|>|<=|>=|=)(\d+)/", $event->term, $matches)) {
|
if(preg_match("/favorites(<|>|<=|>=|=)(\d+)/", $event->term, $matches)) {
|
||||||
$cmp = $matches[1];
|
$cmp = $matches[1];
|
||||||
@ -181,7 +183,7 @@ class Favorites extends SimpleExtension {
|
|||||||
array("image_id"=>$image_id, "user_id"=>$user_id));
|
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;
|
global $database;
|
||||||
|
|
||||||
return $database->get_col(
|
return $database->get_col(
|
||||||
|
@ -19,12 +19,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class Featured extends SimpleExtension {
|
class Featured extends SimpleExtension {
|
||||||
public function onInitExt($event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config;
|
global $config;
|
||||||
$config->set_default_int('featured_id', 0);
|
$config->set_default_int('featured_id', 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $config, $page, $user;
|
global $config, $page, $user;
|
||||||
if($event->page_matches("featured_image")) {
|
if($event->page_matches("featured_image")) {
|
||||||
if($event->get_arg(0) == "set" && $user->check_auth_token()) {
|
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;
|
global $config, $database, $page, $user;
|
||||||
$fid = $config->get_int("featured_id");
|
$fid = $config->get_int("featured_id");
|
||||||
if($fid > 0) {
|
if($fid > 0) {
|
||||||
@ -74,7 +74,7 @@ class Featured extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onImageAdminBlockBuilding($event) {
|
public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
$event->add_part($this->theme->get_buttons_html($event->image->id));
|
$event->add_part($this->theme->get_buttons_html($event->image->id));
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class Forum extends SimpleExtension {
|
class Forum extends SimpleExtension {
|
||||||
public function onInitExt($event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config, $database;
|
global $config, $database;
|
||||||
|
|
||||||
// shortcut to latest
|
// shortcut to latest
|
||||||
@ -57,7 +57,7 @@ class Forum extends SimpleExtension {
|
|||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onUserPageBuilding($event) {
|
public function onUserPageBuilding(UserPageBuildingEvent $event) {
|
||||||
global $page, $user, $database;
|
global $page, $user, $database;
|
||||||
|
|
||||||
$threads_count = $database->get_one("SELECT COUNT(*) FROM forum_threads WHERE user_id=?", array($event->display_user->id));
|
$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;
|
global $page, $user;
|
||||||
|
|
||||||
if($event->page_matches("forum")) {
|
if($event->page_matches("forum")) {
|
||||||
|
@ -11,12 +11,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class ArchiveFileHandler extends SimpleExtension {
|
class ArchiveFileHandler extends SimpleExtension {
|
||||||
public function onInitExt($event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config;
|
global $config;
|
||||||
$config->set_default_string('archive_extract_command', 'unzip -d "%d" "%f"');
|
$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 = new SetupBlock("Archive Handler Options");
|
||||||
$sb->add_text_option("archive_tmp_dir", "Temporary folder: ");
|
$sb->add_text_option("archive_tmp_dir", "Temporary folder: ");
|
||||||
$sb->add_text_option("archive_extract_command", "<br>Extraction command: ");
|
$sb->add_text_option("archive_extract_command", "<br>Extraction command: ");
|
||||||
@ -24,7 +24,7 @@ class ArchiveFileHandler extends SimpleExtension {
|
|||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onDataUpload($event) {
|
public function onDataUpload(DataUploadEvent $event) {
|
||||||
if($this->supported_ext($event->type)) {
|
if($this->supported_ext($event->type)) {
|
||||||
global $config;
|
global $config;
|
||||||
$tmp = sys_get_temp_dir();
|
$tmp = sys_get_temp_dir();
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class IcoFileHandler extends SimpleExtension {
|
class IcoFileHandler extends SimpleExtension {
|
||||||
public function onDataUpload($event) {
|
public function onDataUpload(DataUploadEvent $event) {
|
||||||
if($this->supported_ext($event->type) && $this->check_contents($event->tmpname)) {
|
if($this->supported_ext($event->type) && $this->check_contents($event->tmpname)) {
|
||||||
$hash = $event->hash;
|
$hash = $event->hash;
|
||||||
$ha = substr($hash, 0, 2);
|
$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)) {
|
if($this->supported_ext($event->type)) {
|
||||||
$this->create_thumb($event->hash);
|
$this->create_thumb($event->hash);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onDisplayingImage($event) {
|
public function onDisplayingImage(DisplayingImageEvent $event) {
|
||||||
global $page;
|
global $page;
|
||||||
if($this->supported_ext($event->image->ext)) {
|
if($this->supported_ext($event->image->ext)) {
|
||||||
$this->theme->display_image($page, $event->image);
|
$this->theme->display_image($page, $event->image);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $config, $database, $page;
|
global $config, $database, $page;
|
||||||
if($event->page_matches("get_ico")) {
|
if($event->page_matches("get_ico")) {
|
||||||
$id = int_escape($event->get_arg(0));
|
$id = int_escape($event->get_arg(0));
|
||||||
|
@ -7,19 +7,19 @@
|
|||||||
* Description: Use an additional stylesheet on certain holidays.
|
* Description: Use an additional stylesheet on certain holidays.
|
||||||
*/
|
*/
|
||||||
class Holiday extends SimpleExtension {
|
class Holiday extends SimpleExtension {
|
||||||
public function onInitExt(Event $event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config;
|
global $config;
|
||||||
$config->set_default_bool("holiday_aprilfools", false);
|
$config->set_default_bool("holiday_aprilfools", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onSetupBuilding(Event $event) {
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
global $config;
|
global $config;
|
||||||
$sb = new SetupBlock("Holiday Theme");
|
$sb = new SetupBlock("Holiday Theme");
|
||||||
$sb->add_bool_option("holiday_aprilfools", "Enable April Fools");
|
$sb->add_bool_option("holiday_aprilfools", "Enable April Fools");
|
||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest(Event $event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $config;
|
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'*/;
|
$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){
|
if($date){
|
||||||
|
@ -37,7 +37,7 @@ class AddIPBanEvent extends Event {
|
|||||||
class IPBan extends SimpleExtension {
|
class IPBan extends SimpleExtension {
|
||||||
public function get_priority() {return 10;}
|
public function get_priority() {return 10;}
|
||||||
|
|
||||||
public function onInitExt($event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config;
|
global $config;
|
||||||
if($config->get_int("ext_ipban_version") < 5) {
|
if($config->get_int("ext_ipban_version") < 5) {
|
||||||
$this->install();
|
$this->install();
|
||||||
@ -45,7 +45,7 @@ class IPBan extends SimpleExtension {
|
|||||||
$this->check_ip_ban();
|
$this->check_ip_ban();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
if($event->page_matches("ip_ban")) {
|
if($event->page_matches("ip_ban")) {
|
||||||
global $config, $database, $page, $user;
|
global $config, $database, $page, $user;
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
@ -77,19 +77,19 @@ class IPBan extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onUserBlockBuilding($event) {
|
public function onUserBlockBuilding(UserBlockBuildingEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
$event->add_link("IP Bans", make_link("ip_ban/list"));
|
$event->add_link("IP Bans", make_link("ip_ban/list"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onAddIPBan($event) {
|
public function onAddIPBan(AddIPBanEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
$this->add_ip_ban($event->ip, $event->reason, $event->end, $user);
|
$this->add_ip_ban($event->ip, $event->reason, $event->end, $user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onRemoveIPBan($event) {
|
public function onRemoveIPBan(RemoveIPBanEvent $event) {
|
||||||
global $database;
|
global $database;
|
||||||
$database->Execute("DELETE FROM bans WHERE id = :id", array("id"=>$event->id));
|
$database->Execute("DELETE FROM bans WHERE id = :id", array("id"=>$event->id));
|
||||||
$database->cache->delete("ip_bans_sorted");
|
$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;
|
global $config, $database;
|
||||||
|
|
||||||
$prefix = ($database->engine->name == "sqlite" ? "bans." : "");
|
$prefix = ($database->engine->name == "sqlite" ? "bans." : "");
|
||||||
|
@ -4,29 +4,22 @@
|
|||||||
* Author: Artanis <artanis.00@gmail.com>
|
* Author: Artanis <artanis.00@gmail.com>
|
||||||
* Description: Show various forms of link to each image, for copy & paste
|
* Description: Show various forms of link to each image, for copy & paste
|
||||||
*/
|
*/
|
||||||
class LinkImage implements Extension {
|
class LinkImage extends SimpleExtension {
|
||||||
var $theme;
|
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) {
|
public function onInitExtEvent(InitExtEvent $event) {
|
||||||
global $config, $database, $page, $user;
|
global $config;
|
||||||
if(is_null($this->theme)) $this->theme = get_theme_object($this);
|
$config->set_default_string("ext_link-img_text-link_format", '$title - $id ($ext $size $filesize)');
|
||||||
|
}
|
||||||
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)');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function hostify($str) {
|
private function hostify($str) {
|
||||||
$str = str_replace(" ", "%20", $str);
|
$str = str_replace(" ", "%20", $str);
|
||||||
@ -37,7 +30,8 @@ class LinkImage implements Extension {
|
|||||||
return "http://" . $_SERVER["HTTP_HOST"] . $str;
|
return "http://" . $_SERVER["HTTP_HOST"] . $str;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private function data($image) {
|
|
||||||
|
private function data(Image $image) {
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
$text_link = $image->parse_link_template($config->get_string("ext_link-img_text-link_format"));
|
$text_link = $image->parse_link_template($config->get_string("ext_link-img_text-link_format"));
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class LogDatabase extends SimpleExtension {
|
class LogDatabase extends SimpleExtension {
|
||||||
public function onInitExt($event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $database;
|
global $database;
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ class LogDatabase extends SimpleExtension {
|
|||||||
$config->set_default_int("log_db_priority", SCORE_LOG_INFO);
|
$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 = new SetupBlock("Logging (Database)");
|
||||||
$sb->add_choice_option("log_db_priority", array(
|
$sb->add_choice_option("log_db_priority", array(
|
||||||
"Debug" => SCORE_LOG_DEBUG,
|
"Debug" => SCORE_LOG_DEBUG,
|
||||||
@ -40,7 +40,7 @@ class LogDatabase extends SimpleExtension {
|
|||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $database, $user;
|
global $database, $user;
|
||||||
if($event->page_matches("log/view")) {
|
if($event->page_matches("log/view")) {
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
@ -104,14 +104,14 @@ class LogDatabase extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onUserBlockBuilding($event) {
|
public function onUserBlockBuilding(UserBlockBuildingEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
$event->add_link("Event Log", make_link("log/view"));
|
$event->add_link("Event Log", make_link("log/view"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onLog($event) {
|
public function onLog(LogEvent $event) {
|
||||||
global $config, $database, $user;
|
global $config, $database, $user;
|
||||||
|
|
||||||
$username = ($user && $user->name) ? $user->name : "null";
|
$username = ($user && $user->name) ? $user->name : "null";
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class MassTagger extends SimpleExtension {
|
class MassTagger extends SimpleExtension {
|
||||||
public function onPostListBuilding($event) {
|
public function onPostListBuilding(PostListBuildingEvent $event) {
|
||||||
global $config, $page, $user;
|
global $config, $page, $user;
|
||||||
|
|
||||||
if( !$user->is_admin() ) return;
|
if( !$user->is_admin() ) return;
|
||||||
@ -23,7 +23,7 @@ class MassTagger extends SimpleExtension {
|
|||||||
$this->theme->display_mass_tagger( $page, $event, $config );
|
$this->theme->display_mass_tagger( $page, $event, $config );
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $config, $page, $user;
|
global $config, $page, $user;
|
||||||
if( !$event->page_matches("mass_tagger") ) return;
|
if( !$event->page_matches("mass_tagger") ) return;
|
||||||
if( !$user->is_admin() ) return;
|
if( !$user->is_admin() ) return;
|
||||||
|
@ -9,14 +9,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class News extends SimpleExtension {
|
class News extends SimpleExtension {
|
||||||
public function onPostListBuilding($event) {
|
public function onPostListBuilding(PostListBuildingEvent $event) {
|
||||||
global $config, $page;
|
global $config, $page;
|
||||||
if(strlen($config->get_string("news_text")) > 0) {
|
if(strlen($config->get_string("news_text")) > 0) {
|
||||||
$this->theme->display_news($page, $config->get_string("news_text"));
|
$this->theme->display_news($page, $config->get_string("news_text"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onSetupBuilding($event) {
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
$sb = new SetupBlock("News");
|
$sb = new SetupBlock("News");
|
||||||
$sb->add_longtext_option("news_text");
|
$sb->add_longtext_option("news_text");
|
||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class Notes extends SimpleExtension {
|
class Notes extends SimpleExtension {
|
||||||
public function onInitExt($event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config, $database;
|
global $config, $database;
|
||||||
|
|
||||||
// shortcut to latest
|
// shortcut to latest
|
||||||
@ -66,9 +66,7 @@ class Notes extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
|
|
||||||
public function onPageRequest($event) {
|
|
||||||
global $page, $user;
|
global $page, $user;
|
||||||
if($event->page_matches("note")) {
|
if($event->page_matches("note")) {
|
||||||
|
|
||||||
@ -179,7 +177,7 @@ class Notes extends SimpleExtension {
|
|||||||
/*
|
/*
|
||||||
* HERE WE LOAD THE NOTES IN THE IMAGE
|
* HERE WE LOAD THE NOTES IN THE IMAGE
|
||||||
*/
|
*/
|
||||||
public function onDisplayingImage($event) {
|
public function onDisplayingImage(DisplayingImageEvent $event) {
|
||||||
global $page, $user;
|
global $page, $user;
|
||||||
|
|
||||||
//display form on image event
|
//display form on image event
|
||||||
@ -191,7 +189,7 @@ class Notes extends SimpleExtension {
|
|||||||
/*
|
/*
|
||||||
* HERE WE ADD THE BUTTONS ON SIDEBAR
|
* HERE WE ADD THE BUTTONS ON SIDEBAR
|
||||||
*/
|
*/
|
||||||
public function onImageAdminBlockBuilding($event) {
|
public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if(!$user->is_anonymous()) {
|
if(!$user->is_anonymous()) {
|
||||||
$event->add_part($this->theme->note_button($event->image->id));
|
$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
|
* HERE WE ADD QUERYLETS TO ADD SEARCH SYSTEM
|
||||||
*/
|
*/
|
||||||
public function onSearchTermParse($event) {
|
public function onSearchTermParse(SearchTermParseEvent $event) {
|
||||||
$matches = array();
|
$matches = array();
|
||||||
if(preg_match("/note=(.*)/i", $event->term, $matches)) {
|
if(preg_match("/note=(.*)/i", $event->term, $matches)) {
|
||||||
$notes = int_escape($matches[1]);
|
$notes = int_escape($matches[1]);
|
||||||
|
@ -12,226 +12,227 @@
|
|||||||
class NumericScoreSetEvent extends Event {
|
class NumericScoreSetEvent extends Event {
|
||||||
var $image_id, $user, $score;
|
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->image_id = $image_id;
|
||||||
$this->user = $user;
|
$this->user = $user;
|
||||||
$this->score = $score;
|
$this->score = $score;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class NumericScore implements Extension {
|
class NumericScore extends SimpleExtension {
|
||||||
var $theme;
|
public function onInitExt(InitExtEvent $event) {
|
||||||
|
global $config;
|
||||||
public function get_priority() {return 50;}
|
if($config->get_int("ext_numeric_score_version", 0) < 1) {
|
||||||
|
$this->install();
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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 = "<table>";
|
||||||
|
foreach($x as $vote) {
|
||||||
|
$html .= "<tr><td>";
|
||||||
|
$html .= "<a href='/user/{$vote['username']}'>{$vote['username']}</a>";
|
||||||
|
$html .= "</td><td>";
|
||||||
|
$html .= $vote['score'];
|
||||||
|
$html .= "</td></tr>";
|
||||||
|
}
|
||||||
|
die($html);
|
||||||
|
}
|
||||||
|
if($event->page_matches("numeric_score_vote") && $user->check_auth_token()) {
|
||||||
if(!$user->is_anonymous()) {
|
if(!$user->is_anonymous()) {
|
||||||
$html = $this->theme->get_voter_html($event->image);
|
$image_id = int_escape($_POST['image_id']);
|
||||||
$page->add_block(new Block("Image Score", $html, "left", 20));
|
$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("numeric_score/remove_votes_on") && $user->check_auth_token()) {
|
||||||
if($event instanceof UserPageBuildingEvent) {
|
if($user->is_admin()) {
|
||||||
$html = $this->theme->get_nuller_html($event->display_user);
|
$image_id = int_escape($_POST['image_id']);
|
||||||
$page->add_block(new Block("Votes", $html, "main", 60));
|
$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) {
|
$database->execute(
|
||||||
if($event->page_matches("numeric_score_votes")) {
|
"DELETE FROM numeric_score_votes WHERE user_id=? AND image_id IN ?",
|
||||||
$image_id = int_escape($event->get_arg(0));
|
array($user_id, $image_ids));
|
||||||
$x = $database->get_all(
|
$database->execute(
|
||||||
"SELECT users.name as username, user_id, score
|
"UPDATE images SET numeric_score=(SELECT SUM(score) FROM numeric_score_votes WHERE image_id=images.id) WHERE images.id IN ?",
|
||||||
FROM numeric_score_votes
|
array($image_ids));
|
||||||
JOIN users ON numeric_score_votes.user_id=users.id
|
$page->set_mode("redirect");
|
||||||
WHERE image_id=?",
|
$page->set_redirect(make_link());
|
||||||
array($image_id));
|
|
||||||
$html = "<table>";
|
|
||||||
foreach($x as $vote) {
|
|
||||||
$html .= "<tr><td>";
|
|
||||||
$html .= "<a href='/user/{$vote['username']}'>{$vote['username']}</a>";
|
|
||||||
$html .= "</td><td>";
|
|
||||||
$html .= $vote['score'];
|
|
||||||
$html .= "</td></tr>";
|
|
||||||
}
|
|
||||||
die($html);
|
|
||||||
}
|
}
|
||||||
if($event->page_matches("numeric_score_vote") && $user->check_auth_token()) {
|
}
|
||||||
if(!$user->is_anonymous()) {
|
if($event->page_matches("popular_by_day") || $event->page_matches("popular_by_month") || $event->page_matches("popular_by_year")) {
|
||||||
$image_id = int_escape($_POST['image_id']);
|
$t_images = $config->get_int("index_height") * $config->get_int("index_width");
|
||||||
$char = $_POST['vote'];
|
|
||||||
$score = null;
|
//TODO: Add Popular_by_week.
|
||||||
if($char == "up") $score = 1;
|
|
||||||
else if($char == "null") $score = 0;
|
//year
|
||||||
else if($char == "down") $score = -1;
|
if(empty($_GET['year'])){
|
||||||
if(!is_null($score) && $image_id>0) send_event(new NumericScoreSetEvent($image_id, $user, $score));
|
$year = date("Y");
|
||||||
$page->set_mode("redirect");
|
}else{
|
||||||
$page->set_redirect(make_link("post/view/$image_id"));
|
$year = $_GET['year'];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if($event->page_matches("numeric_score/remove_votes_on") && $user->check_auth_token()) {
|
//month
|
||||||
if($user->is_admin()) {
|
if(empty($_GET['month']) || int_escape($_GET['month']) > 12){
|
||||||
$image_id = int_escape($_POST['image_id']);
|
$month = date("m");
|
||||||
$database->execute(
|
}else{
|
||||||
"DELETE FROM numeric_score_votes WHERE image_id=?",
|
$month = $_GET['month'];
|
||||||
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()) {
|
//day
|
||||||
if($user->is_admin()) {
|
if(empty($_GET['day']) || int_escape($_GET['day']) > 31){
|
||||||
$user_id = int_escape($_POST['user_id']);
|
$day = date("d");
|
||||||
$image_ids = $database->get_col("SELECT image_id FROM numeric_score_votes WHERE user_id=?", array($user_id));
|
}else{
|
||||||
|
$day = $_GET['day'];
|
||||||
$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("popular_by_day") || $event->page_matches("popular_by_month") || $event->page_matches("popular_by_year")) {
|
$totaldate = $year."/".$month."/".$day;
|
||||||
$t_images = $config->get_int("index_height") * $config->get_int("index_width");
|
|
||||||
|
|
||||||
//TODO: Add Popular_by_week.
|
$sql =
|
||||||
|
"SELECT * FROM images
|
||||||
|
WHERE EXTRACT(YEAR FROM posted) = :year
|
||||||
|
";
|
||||||
|
|
||||||
//year
|
$agrs = array("limit" => $t_images, "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;
|
|
||||||
|
|
||||||
$sql =
|
if($event->page_matches("popular_by_day")){
|
||||||
"SELECT * FROM images
|
$sql .=
|
||||||
WHERE EXTRACT(YEAR FROM posted) = :year
|
"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);
|
$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_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);
|
|
||||||
}
|
}
|
||||||
|
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) {
|
public function onNumericScoreSet(NumericScoreSetEvent $event) {
|
||||||
log_info("numeric_score", "Rated Image #{$event->image_id} as {$event->score}");
|
global $user;
|
||||||
$this->add_vote($event->image_id, $user->id, $event->score);
|
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(preg_match("/^upvoted_by=(.*)$/", $event->term, $matches)) {
|
||||||
if($event instanceof ImageDeletionEvent) {
|
$duser = User::by_name($matches[1]);
|
||||||
$database->execute("DELETE FROM numeric_score_votes WHERE image_id=:id", array("id" => $event->image->id));
|
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)) {
|
||||||
if($event instanceof ParseLinkTemplateEvent) {
|
$duser = User::by_name($matches[1]);
|
||||||
$event->replace('$score', $event->image->numeric_score);
|
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)) {
|
||||||
if($event instanceof SearchTermParseEvent) {
|
$iid = int_escape($matches[1]);
|
||||||
$matches = array();
|
$event->add_querylet(new Querylet(
|
||||||
if(preg_match("/^score(<|<=|=|>=|>)(\d+)$/", $event->term, $matches)) {
|
"images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=1)",
|
||||||
$cmp = $matches[1];
|
array("ns_user_id"=>$iid)));
|
||||||
$score = $matches[2];
|
}
|
||||||
$event->add_querylet(new Querylet("numeric_score $cmp $score"));
|
if(preg_match("/^downvoted_by_id=(\d+)$/", $event->term, $matches)) {
|
||||||
}
|
$iid = int_escape($matches[1]);
|
||||||
if(preg_match("/^upvoted_by=(.*)$/", $event->term, $matches)) {
|
$event->add_querylet(new Querylet(
|
||||||
$duser = User::by_name($matches[1]);
|
"images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=-1)",
|
||||||
if(is_null($duser)) {
|
array("ns_user_id"=>$iid)));
|
||||||
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)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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;
|
global $database;
|
||||||
$database->execute(
|
$database->execute(
|
||||||
"DELETE FROM numeric_score_votes WHERE image_id=:imageid AND user_id=:userid",
|
"DELETE FROM numeric_score_votes WHERE image_id=:imageid AND user_id=:userid",
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class Oekaki extends SimpleExtension {
|
class Oekaki extends SimpleExtension {
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $user, $page;
|
global $user, $page;
|
||||||
|
|
||||||
if($event->page_matches("oekaki")) {
|
if($event->page_matches("oekaki")) {
|
||||||
@ -82,7 +82,7 @@ class Oekaki extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: "edit this image" button on existing images?
|
// FIXME: "edit this image" button on existing images?
|
||||||
function onPostListBuilding($event) {
|
function onPostListBuilding(PostListBuildingEvent $event) {
|
||||||
global $user, $page;
|
global $user, $page;
|
||||||
if($this->can_upload($user)) {
|
if($this->can_upload($user)) {
|
||||||
$this->theme->display_block($page);
|
$this->theme->display_block($page);
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class SendPMEvent extends Event {
|
class SendPMEvent extends Event {
|
||||||
public function __construct($pm) {
|
public function __construct(PM $pm) {
|
||||||
$this->pm = $pm;
|
$this->pm = $pm;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -43,7 +43,7 @@ class PM {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class PrivMsg extends SimpleExtension {
|
class PrivMsg extends SimpleExtension {
|
||||||
public function onInitExt($event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config, $database;
|
global $config, $database;
|
||||||
|
|
||||||
// shortcut to latest
|
// shortcut to latest
|
||||||
@ -78,7 +78,7 @@ class PrivMsg extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
public function onUserBlockBuilding($event) {
|
public function onUserBlockBuilding(UserBlockBuilding $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if(!$user->is_anonymous()) {
|
if(!$user->is_anonymous()) {
|
||||||
$event->add_link("Private Messages", make_link("pm"));
|
$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;
|
global $page, $user;
|
||||||
$duser = $event->display_user;
|
$duser = $event->display_user;
|
||||||
if(!$user->is_anonymous() && !$duser->is_anonymous()) {
|
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;
|
global $database, $page, $user;
|
||||||
if($event->page_matches("pm")) {
|
if($event->page_matches("pm")) {
|
||||||
if(!$user->is_anonymous()) {
|
if(!$user->is_anonymous()) {
|
||||||
@ -153,7 +153,7 @@ class PrivMsg extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onSendPM($event) {
|
public function onSendPM(SendPMEvent $event) {
|
||||||
global $database;
|
global $database;
|
||||||
$database->execute("
|
$database->execute("
|
||||||
INSERT INTO private_message(
|
INSERT INTO private_message(
|
||||||
|
@ -11,7 +11,7 @@ class PoolCreationException extends SCoreException {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class Pools extends SimpleExtension {
|
class Pools extends SimpleExtension {
|
||||||
public function onInitExt($event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config, $database;
|
global $config, $database;
|
||||||
|
|
||||||
if ($config->get_int("ext_pools_version") < 1){
|
if ($config->get_int("ext_pools_version") < 1){
|
||||||
@ -65,7 +65,7 @@ class Pools extends SimpleExtension {
|
|||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $config, $page, $user;
|
global $config, $page, $user;
|
||||||
|
|
||||||
if($event->page_matches("pool")) {
|
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"));
|
$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
|
* 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;
|
global $config, $database, $page;
|
||||||
|
|
||||||
if($config->get_bool("poolsInfoOnViewImage")) {
|
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;
|
global $config, $database, $user;
|
||||||
if($config->get_bool("poolsAdderOnViewImage") && !$user->is_anonymous()) {
|
if($config->get_bool("poolsAdderOnViewImage") && !$user->is_anonymous()) {
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
@ -261,7 +261,7 @@ class Pools extends SimpleExtension {
|
|||||||
/*
|
/*
|
||||||
* HERE WE GET THE LIST OF POOLS
|
* 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;
|
global $config, $database;
|
||||||
|
|
||||||
if(is_null($pageNumber) || !is_numeric($pageNumber))
|
if(is_null($pageNumber) || !is_numeric($pageNumber))
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
* and replace it with a link to google chart APIs
|
* and replace it with a link to google chart APIs
|
||||||
*/
|
*/
|
||||||
class QRImage extends SimpleExtension {
|
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')));
|
$this->theme->links_block(make_http(make_link('image/'.$event->image->id.'.jpg')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class RandomImage extends SimpleExtension {
|
class RandomImage extends SimpleExtension {
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $config, $database, $page, $user;
|
global $config, $database, $page, $user;
|
||||||
if($event->page_matches("random_image")) {
|
if($event->page_matches("random_image")) {
|
||||||
if($event->count_args() == 1) {
|
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 = new SetupBlock("Random Image");
|
||||||
$sb->add_bool_option("show_random_block", "Show Random Block: ");
|
$sb->add_bool_option("show_random_block", "Show Random Block: ");
|
||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPostListBuilding($event) {
|
public function onPostListBuilding(PostListBuildingEvent $event) {
|
||||||
global $config, $page;
|
global $config, $page;
|
||||||
if($config->get_bool("show_random_block")) {
|
if($config->get_bool("show_random_block")) {
|
||||||
$image = Image::by_random($event->search_terms);
|
$image = Image::by_random($event->search_terms);
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class RegenThumb extends SimpleExtension {
|
class RegenThumb extends SimpleExtension {
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $config, $database, $page, $user;
|
global $config, $database, $page, $user;
|
||||||
|
|
||||||
if($event->page_matches("regen_thumb") && $user->is_admin() && isset($_POST['image_id'])) {
|
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;
|
global $user;
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
$event->add_part($this->theme->get_buttons_html($event->image->id));
|
$event->add_part($this->theme->get_buttons_html($event->image->id));
|
||||||
|
@ -29,24 +29,19 @@ class AddReportedImageEvent extends Event {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ReportImage implements Extension {
|
class ReportImage extends SimpleExtension {
|
||||||
var $theme;
|
public function onInitExt(InitExtEvent $event) {
|
||||||
|
global $config;
|
||||||
|
$config->set_default_bool('report_image_show_thumbs', true);
|
||||||
|
|
||||||
public function get_priority() {return 50;}
|
if($config->get_int("ext_report_image_version") < 1) {
|
||||||
|
$this->install();
|
||||||
public function receive_event(Event $event) {
|
|
||||||
global $config, $database, $page, $user;
|
|
||||||
if(is_null($this->theme)) $this->theme = get_theme_object($this);
|
|
||||||
|
|
||||||
if($event instanceof InitExtEvent) {
|
|
||||||
$config->set_default_bool('report_image_show_thumbs', true);
|
|
||||||
|
|
||||||
if($config->get_int("ext_report_image_version") < 1) {
|
|
||||||
$this->install();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(($event instanceof PageRequestEvent) && $event->page_matches("image_report")) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
|
global $page, $user;
|
||||||
|
if($event->page_matches("image_report")) {
|
||||||
if($event->get_arg(0) == "add") {
|
if($event->get_arg(0) == "add") {
|
||||||
if(isset($_POST['image_id']) && isset($_POST['reason'])) {
|
if(isset($_POST['image_id']) && isset($_POST['reason'])) {
|
||||||
$image_id = int_escape($_POST['image_id']);
|
$image_id = int_escape($_POST['image_id']);
|
||||||
@ -70,40 +65,45 @@ class ReportImage implements Extension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($event instanceof AddReportedImageEvent) {
|
public function onAddReportedImage(AddReportedImageEvent $event) {
|
||||||
$database->Execute(
|
global $database;
|
||||||
"INSERT INTO image_reports(image_id, reporter_id, reason)
|
$database->Execute(
|
||||||
VALUES (?, ?, ?)",
|
"INSERT INTO image_reports(image_id, reporter_id, reason)
|
||||||
array($event->image_id, $event->reporter_id, $event->reason));
|
VALUES (?, ?, ?)",
|
||||||
}
|
array($event->image_id, $event->reporter_id, $event->reason));
|
||||||
|
}
|
||||||
|
|
||||||
if($event instanceof RemoveReportedImageEvent) {
|
public function onRemoveReportedImage(RemoveReportedImageEvent $event) {
|
||||||
$database->Execute("DELETE FROM image_reports WHERE id = ?", array($event->id));
|
global $database;
|
||||||
}
|
$database->Execute("DELETE FROM image_reports WHERE id = ?", array($event->id));
|
||||||
|
}
|
||||||
|
|
||||||
if($event instanceof DisplayingImageEvent) {
|
public function onDisplayingImage(DisplayingImageEvent $event) {
|
||||||
if($config->get_bool('report_image_anon') || !$user->is_anonymous()) {
|
global $config, $user, $page;
|
||||||
$this->theme->display_image_banner($page, $event->image);
|
if($config->get_bool('report_image_anon') || !$user->is_anonymous()) {
|
||||||
}
|
$this->theme->display_image_banner($page, $event->image);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($event instanceof SetupBuildingEvent) {
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
$sb = new SetupBlock("Report Image Options");
|
$sb = new SetupBlock("Report Image Options");
|
||||||
$sb->add_bool_option("report_image_anon", "Allow anonymous image reporting: ");
|
$sb->add_bool_option("report_image_anon", "Allow anonymous image reporting: ");
|
||||||
$sb->add_bool_option("report_image_show_thumbs", "<br>Show thumbnails in admin panel: ");
|
$sb->add_bool_option("report_image_show_thumbs", "<br>Show thumbnails in admin panel: ");
|
||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($event instanceof UserBlockBuildingEvent) {
|
public function onUserBlockBuilding(UserBlockBuildingEvent $event) {
|
||||||
if($user->is_admin()) {
|
global $user;
|
||||||
$event->add_link("Reported Images", make_link("image_report/list"));
|
if($user->is_admin()) {
|
||||||
}
|
$event->add_link("Reported Images", make_link("image_report/list"));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($event instanceof ImageDeletionEvent) {
|
public function onImageDeletion(ImageDeletionEvent $event) {
|
||||||
$database->Execute("DELETE FROM image_reports WHERE image_id = ?", array($event->image->id));
|
global $database;
|
||||||
}
|
$database->Execute("DELETE FROM image_reports WHERE image_id = ?", array($event->image->id));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function install() {
|
protected function install() {
|
||||||
|
@ -5,69 +5,68 @@
|
|||||||
* License: GPLv2
|
* License: GPLv2
|
||||||
* Description: Allows the admin to set min / max image dimentions
|
* 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 get_priority() {return 40;} // early, to veto ImageUploadEvent
|
||||||
|
|
||||||
public function receive_event(Event $event) {
|
public function onImageAddition(ImageAdditionEvent $event) {
|
||||||
if($event instanceof ImageAdditionEvent) {
|
global $config;
|
||||||
global $config;
|
$min_w = $config->get_int("upload_min_width", -1);
|
||||||
$min_w = $config->get_int("upload_min_width", -1);
|
$min_h = $config->get_int("upload_min_height", -1);
|
||||||
$min_h = $config->get_int("upload_min_height", -1);
|
$max_w = $config->get_int("upload_max_width", -1);
|
||||||
$max_w = $config->get_int("upload_max_width", -1);
|
$max_h = $config->get_int("upload_max_height", -1);
|
||||||
$max_h = $config->get_int("upload_max_height", -1);
|
$ratios = explode(" ", $config->get_string("upload_ratios", ""));
|
||||||
$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_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($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_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($max_h > 0 && $image->height > $max_h) throw new UploadException("Image too large");
|
||||||
|
|
||||||
if(count($ratios) > 0) {
|
if(count($ratios) > 0) {
|
||||||
$ok = false;
|
$ok = false;
|
||||||
$valids = 0;
|
$valids = 0;
|
||||||
foreach($ratios as $ratio) {
|
foreach($ratios as $ratio) {
|
||||||
$parts = explode(":", $ratio);
|
$parts = explode(":", $ratio);
|
||||||
if(count($parts) < 2) continue;
|
if(count($parts) < 2) continue;
|
||||||
$valids++;
|
$valids++;
|
||||||
$width = $parts[0];
|
$width = $parts[0];
|
||||||
$height = $parts[1];
|
$height = $parts[1];
|
||||||
if($image->width / $width == $image->height / $height) {
|
if($image->width / $width == $image->height / $height) {
|
||||||
$ok = true;
|
$ok = true;
|
||||||
break;
|
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($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 ");
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
$sb->add_int_option("upload_min_width");
|
$sb = new SetupBlock("Resolution Limits");
|
||||||
$sb->add_label(" x ");
|
|
||||||
$sb->add_int_option("upload_min_height");
|
|
||||||
$sb->add_label(" px");
|
|
||||||
|
|
||||||
$sb->add_label("<br>Max ");
|
$sb->add_label("Min ");
|
||||||
$sb->add_int_option("upload_max_width");
|
$sb->add_int_option("upload_min_width");
|
||||||
$sb->add_label(" x ");
|
$sb->add_label(" x ");
|
||||||
$sb->add_int_option("upload_max_height");
|
$sb->add_int_option("upload_min_height");
|
||||||
$sb->add_label(" px");
|
$sb->add_label(" px");
|
||||||
|
|
||||||
$sb->add_label("<br>(-1 for no limit)");
|
$sb->add_label("<br>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("<br>Ratios ");
|
$sb->add_label("<br>(-1 for no limit)");
|
||||||
$sb->add_text_option("upload_ratios");
|
|
||||||
$sb->add_label("<br>(eg. '4:3 16:9', blank for no limit)");
|
|
||||||
|
|
||||||
$event->panel->add_block($sb);
|
$sb->add_label("<br>Ratios ");
|
||||||
}
|
$sb->add_text_option("upload_ratios");
|
||||||
|
$sb->add_label("<br>(eg. '4:3 16:9', blank for no limit)");
|
||||||
|
|
||||||
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
@ -28,7 +28,7 @@ class ImageResizeException extends SCoreException {
|
|||||||
*/
|
*/
|
||||||
class ResizeImage extends SimpleExtension {
|
class ResizeImage extends SimpleExtension {
|
||||||
|
|
||||||
public function onInitExt($event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config;
|
global $config;
|
||||||
$config->set_default_bool('resize_enabled', true);
|
$config->set_default_bool('resize_enabled', true);
|
||||||
$config->set_default_bool('resize_upload', false);
|
$config->set_default_bool('resize_upload', false);
|
||||||
@ -36,7 +36,7 @@ class ResizeImage extends SimpleExtension {
|
|||||||
$config->set_default_int('resize_default_height', 0);
|
$config->set_default_int('resize_default_height', 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onImageAdminBlockBuilding($event) {
|
public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event) {
|
||||||
global $user, $config;
|
global $user, $config;
|
||||||
if($user->is_admin() && $config->get_bool("resize_enabled")) {
|
if($user->is_admin() && $config->get_bool("resize_enabled")) {
|
||||||
/* Add a link to resize the image */
|
/* 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 = new SetupBlock("Image Resize");
|
||||||
$sb->add_bool_option("resize_enabled", "Allow resizing images: ");
|
$sb->add_bool_option("resize_enabled", "Allow resizing images: ");
|
||||||
$sb->add_bool_option("resize_upload", "<br>Resize on upload: ");
|
$sb->add_bool_option("resize_upload", "<br>Resize on upload: ");
|
||||||
@ -89,7 +89,7 @@ class ResizeImage extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $page, $user;
|
global $page, $user;
|
||||||
|
|
||||||
if ( $event->page_matches("resize") && $user->is_admin() ) {
|
if ( $event->page_matches("resize") && $user->is_admin() ) {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class RSS_Comments extends SimpleExtension {
|
class RSS_Comments extends SimpleExtension {
|
||||||
public function onPostListBuilding($event) {
|
public function onPostListBuilding(PostListBuildingEvent $event) {
|
||||||
global $config, $page;
|
global $config, $page;
|
||||||
$title = $config->get_string('title');
|
$title = $config->get_string('title');
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ class RSS_Comments extends SimpleExtension {
|
|||||||
"title=\"$title - Comments\" href=\"".make_link("rss/comments")."\" />");
|
"title=\"$title - Comments\" href=\"".make_link("rss/comments")."\" />");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $config, $database, $page;
|
global $config, $database, $page;
|
||||||
if($event->page_matches("rss/comments")) {
|
if($event->page_matches("rss/comments")) {
|
||||||
$page->set_mode("data");
|
$page->set_mode("data");
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class RSS_Images extends SimpleExtension {
|
class RSS_Images extends SimpleExtension {
|
||||||
public function onPostListBuilding($event) {
|
public function onPostListBuilding(PostListBuildingEvent $event) {
|
||||||
global $config, $page;
|
global $config, $page;
|
||||||
$title = $config->get_string('title');
|
$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")) {
|
if($event->page_matches("rss/images")) {
|
||||||
$search_terms = $event->get_search_terms();
|
$search_terms = $event->get_search_terms();
|
||||||
$page_number = $event->get_page_number();
|
$page_number = $event->get_page_number();
|
||||||
|
@ -206,7 +206,7 @@ class TestFinder extends TestSuite {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class SimpleSCoreTest extends SimpleExtension {
|
class SimpleSCoreTest extends SimpleExtension {
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $page;
|
global $page;
|
||||||
if($event->page_matches("test")) {
|
if($event->page_matches("test")) {
|
||||||
set_time_limit(0);
|
set_time_limit(0);
|
||||||
@ -220,7 +220,7 @@ class SimpleSCoreTest extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onUserBlockBuilding($event) {
|
public function onUserBlockBuilding(UserBlockBuildingEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
$event->add_link("Run Tests", make_link("test/all"));
|
$event->add_link("Run Tests", make_link("test/all"));
|
||||||
|
@ -8,14 +8,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class XMLSitemap extends SimpleExtension {
|
class XMLSitemap extends SimpleExtension {
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
if($event->page_matches("sitemap.xml")) {
|
if($event->page_matches("sitemap.xml")) {
|
||||||
$images = Image::find_images(0, 50, array());
|
$images = Image::find_images(0, 50, array());
|
||||||
$this->do_xml($images);
|
$this->do_xml($images);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function do_xml($images) {
|
private function do_xml(/*array(Image)*/ $images) {
|
||||||
global $page;
|
global $page;
|
||||||
$page->set_mode("data");
|
$page->set_mode("data");
|
||||||
$page->set_type("application/xml");
|
$page->set_type("application/xml");
|
||||||
|
@ -9,7 +9,7 @@ class Tag_History extends SimpleExtension {
|
|||||||
// in before tags are actually set, so that "get current tags" works
|
// in before tags are actually set, so that "get current tags" works
|
||||||
public function get_priority() {return 40;}
|
public function get_priority() {return 40;}
|
||||||
|
|
||||||
public function onInitExtEvent($event) {
|
public function onInitExtEvent(InitExtEvent $event) {
|
||||||
global $config;
|
global $config;
|
||||||
$config->set_default_int("history_limit", -1);
|
$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;
|
global $user;
|
||||||
|
|
||||||
if(isset($_POST['revert_ip']) && $user->is_admin() && $user->check_auth_token()) {
|
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;
|
global $config, $page, $user;
|
||||||
|
|
||||||
if ($event->page_matches("tag_history")) {
|
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;
|
global $page;
|
||||||
// handle displaying a link on the view page
|
// handle displaying a link on the view page
|
||||||
$this->theme->display_history_link($page, $event->image->id);
|
$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
|
// handle removing of history when an image is deleted
|
||||||
$this->delete_all_tag_history($event->image->id);
|
$this->delete_all_tag_history($event->image->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onSetupBuilding($event) {
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
$sb = new SetupBlock("Tag History");
|
$sb = new SetupBlock("Tag History");
|
||||||
$sb->add_label("Limit to ");
|
$sb->add_label("Limit to ");
|
||||||
$sb->add_int_option("history_limit");
|
$sb->add_int_option("history_limit");
|
||||||
@ -98,19 +98,18 @@ class Tag_History extends SimpleExtension {
|
|||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onTagSetEvent($event) {
|
public function onTagSet(TagSetEvent $event) {
|
||||||
$this->add_tag_history($event->image, $event->tags);
|
$this->add_tag_history($event->image, $event->tags);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onUserBlockBuilding($event) {
|
public function onUserBlockBuilding(UserBlockBuilding $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
$event->add_link("Tag Changes", make_link("tag_history"));
|
$event->add_link("Tag Changes", make_link("tag_history"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function install()
|
protected function install() {
|
||||||
{
|
|
||||||
global $database;
|
global $database;
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
|
@ -6,46 +6,37 @@
|
|||||||
* Do not remove this notice.
|
* Do not remove this notice.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Tagger implements Extension {
|
class Tagger extends SimpleExtension {
|
||||||
var $theme;
|
public function onDisplayingImage(DisplayingImageEvent $event) {
|
||||||
|
global $page, $config, $user;
|
||||||
|
|
||||||
public function get_priority() {return 50;}
|
if($config->get_bool("tag_edit_anon")
|
||||||
|
|| ($user->id != $config->get_int("anon_id"))
|
||||||
public function receive_event(Event $event) {
|
&& $config->get_bool("ext_tagger_enabled"))
|
||||||
if(is_null($this->theme))
|
{
|
||||||
$this->theme = get_theme_object($this);
|
$this->theme->build_tagger($page,$event);
|
||||||
|
|
||||||
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($event instanceof SetupBuildingEvent) {
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
$sb = new SetupBlock("Tagger");
|
$sb = new SetupBlock("Tagger");
|
||||||
$sb->add_bool_option("ext_tagger_enabled","Enable Tagger");
|
$sb->add_bool_option("ext_tagger_enabled","Enable Tagger");
|
||||||
$sb->add_int_option("ext_tagger_search_delay","<br/>Delay queries by ");
|
$sb->add_int_option("ext_tagger_search_delay","<br/>Delay queries by ");
|
||||||
$sb->add_label(" milliseconds.");
|
$sb->add_label(" milliseconds.");
|
||||||
$sb->add_label("<br/>Limit queries returning more than ");
|
$sb->add_label("<br/>Limit queries returning more than ");
|
||||||
$sb->add_int_option("ext_tagger_tag_max");
|
$sb->add_int_option("ext_tagger_tag_max");
|
||||||
$sb->add_label(" tags to ");
|
$sb->add_label(" tags to ");
|
||||||
$sb->add_int_option("ext_tagger_limit");
|
$sb->add_int_option("ext_tagger_limit");
|
||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tagger AJAX back-end
|
// Tagger AJAX back-end
|
||||||
class TaggerXML implements Extension {
|
class TaggerXML extends SimpleExtension {
|
||||||
public function get_priority() {return 10;}
|
public function get_priority() {return 10;}
|
||||||
|
|
||||||
public function receive_event(Event $event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
if(($event instanceof PageRequestEvent) && $event->page_matches("tagger/tags")) {
|
if($event->page_matches("tagger/tags")) {
|
||||||
global $page;
|
global $page;
|
||||||
|
|
||||||
//$match_tags = null;
|
//$match_tags = null;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class Tips extends SimpleExtension {
|
class Tips extends SimpleExtension {
|
||||||
public function onInitExt($event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config, $database;
|
global $config, $database;
|
||||||
|
|
||||||
if ($config->get_int("ext_tips_version") < 1){
|
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;
|
global $page, $user;
|
||||||
|
|
||||||
$this->getTip();
|
$this->getTip();
|
||||||
@ -67,7 +67,7 @@ class Tips extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onUserBlockBuilding($event) {
|
public function onUserBlockBuilding(UserBlockBuildingEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if($user->is_admin()) {
|
if($user->is_admin()) {
|
||||||
$event->add_link("Tips Editor", make_link("tips/list"));
|
$event->add_link("Tips Editor", make_link("tips/list"));
|
||||||
|
@ -7,14 +7,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class TwitterSoc extends SimpleExtension {
|
class TwitterSoc extends SimpleExtension {
|
||||||
public function onPostListBuilding($event) {
|
public function onPostListBuilding(PostListBuildingEvent $event) {
|
||||||
global $config, $page;
|
global $config, $page;
|
||||||
if(strlen($config->get_string("twitter_soc_username")) > 0) {
|
if(strlen($config->get_string("twitter_soc_username")) > 0) {
|
||||||
$this->theme->display_feed($page, $config->get_string("twitter_soc_username"));
|
$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 = new SetupBlock("Tweet!");
|
||||||
$sb->add_text_option("twitter_soc_username", "Username ");
|
$sb->add_text_option("twitter_soc_username", "Username ");
|
||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
|
@ -7,13 +7,13 @@
|
|||||||
* Description: Shimmie updater!
|
* Description: Shimmie updater!
|
||||||
*/
|
*/
|
||||||
class Update extends SimpleExtension {
|
class Update extends SimpleExtension {
|
||||||
public function onInitExt(Event $event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config;
|
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("update_url", "http://nodeload.github.com/shish/shimmie2/zipball/master"); //best to avoid using https
|
||||||
$config->set_default_string("commit_hash", "");
|
$config->set_default_string("commit_hash", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onSetupBuilding($event) {
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
global $config;
|
global $config;
|
||||||
//Would prefer to use the admin panel for this.
|
//Would prefer to use the admin panel for this.
|
||||||
//But since the admin panel is optional...kind of stuck to using 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);
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest(Event $event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $config, $user;
|
global $config, $user;
|
||||||
if($event->page_matches("update") && $user->is_admin()) {
|
if($event->page_matches("update") && $user->is_admin()) {
|
||||||
$ok = $this->update_shimmie();
|
$ok = $this->update_shimmie();
|
||||||
|
@ -54,7 +54,7 @@ class WikiPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class Wiki extends SimpleExtension {
|
class Wiki extends SimpleExtension {
|
||||||
public function onInitExt($event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $database;
|
global $database;
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ class Wiki extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest($event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $config, $page, $user;
|
global $config, $page, $user;
|
||||||
if($event->page_matches("wiki")) {
|
if($event->page_matches("wiki")) {
|
||||||
if(is_null($event->get_arg(0)) || strlen(trim($event->get_arg(0))) == 0) {
|
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;
|
global $database;
|
||||||
$wpage = $event->wikipage;
|
$wpage = $event->wikipage;
|
||||||
try {
|
try {
|
||||||
@ -167,7 +167,7 @@ class Wiki extends SimpleExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onSetupBuilding($event) {
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
$sb = new SetupBlock("Wiki");
|
$sb = new SetupBlock("Wiki");
|
||||||
$sb->add_bool_option("wiki_edit_anon", "Allow anonymous edits: ");
|
$sb->add_bool_option("wiki_edit_anon", "Allow anonymous edits: ");
|
||||||
$sb->add_bool_option("wiki_edit_user", "<br>Allow user edits: ");
|
$sb->add_bool_option("wiki_edit_user", "<br>Allow user edits: ");
|
||||||
|
@ -10,12 +10,12 @@ class WordFilter extends SimpleExtension {
|
|||||||
// before emoticon filter
|
// before emoticon filter
|
||||||
public function get_priority() {return 40;}
|
public function get_priority() {return 40;}
|
||||||
|
|
||||||
public function onTextFormatting($event) {
|
public function onTextFormatting(TextFormattingEvent $event) {
|
||||||
$event->formatted = $this->filter($event->formatted);
|
$event->formatted = $this->filter($event->formatted);
|
||||||
$event->stripped = $this->filter($event->stripped);
|
$event->stripped = $this->filter($event->stripped);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onSetupBuilding($event) {
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
$sb = new SetupBlock("Word Filter");
|
$sb = new SetupBlock("Word Filter");
|
||||||
$sb->add_longtext_option("word_filter");
|
$sb->add_longtext_option("word_filter");
|
||||||
$sb->add_label("<br>(each line should be search term and replace term, separated by a comma)");
|
$sb->add_label("<br>(each line should be search term and replace term, separated by a comma)");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user