diff --git a/ext/tag_list/main.php b/ext/tag_list/main.php
index 8ab59e79..42523953 100644
--- a/ext/tag_list/main.php
+++ b/ext/tag_list/main.php
@@ -12,6 +12,7 @@ class TagList extends Extension {
$config->set_default_int("tag_list_length", 15);
$config->set_default_int("tags_min", 3);
$config->set_default_string("info_link", 'http://en.wikipedia.org/wiki/$tag');
+ $config->set_default_string("tag_list_image_type", 'related');
}
if(is_a($event, 'PageRequestEvent') && ($event->page_name == "tags")) {
@@ -51,7 +52,12 @@ class TagList extends Extension {
if(is_a($event, 'DisplayingImageEvent')) {
global $config;
if($config->get_int('tag_list_length') > 0) {
- $this->add_related_block($event->page, $event->image);
+ if($config->get_string('tag_list_image_type') == 'related') {
+ $this->add_related_block($event->page, $event->image);
+ }
+ else {
+ $this->add_tags_block($event->page, $event->image);
+ }
}
}
@@ -63,6 +69,10 @@ class TagList extends Extension {
$sb = new SetupBlock("Popular / Related Tag List");
$sb->add_int_option("tag_list_length", "Show top "); $sb->add_label(" tags");
$sb->add_text_option("info_link", "
Tag info link: ");
+ $sb->add_choice_option("tag_list_image_type", array(
+ "Image's tags only" => "tags",
+ "Show related" => "related"
+ ), "
Image tag list: ");
$sb->add_bool_option("tag_list_numbers", "
Show tag counts: ");
$event->panel->add_block($sb);
}
@@ -194,6 +204,26 @@ class TagList extends Extension {
}
}
+ private function add_tags_block($page, $image) {
+ global $database;
+ global $config;
+
+ $query = "
+ SELECT tags.tag, tags.count
+ FROM tags, image_tags
+ WHERE tags.id = image_tags.tag_id
+ AND image_tags.image_id = ?
+ ORDER BY count DESC
+ LIMIT ?
+ ";
+ $args = array($image->id, $config->get_int('tag_list_length'));
+
+ $tags = $database->get_all($query, $args);
+ if(count($tags) > 0) {
+ $this->theme->display_related_block($page, $tags);
+ }
+ }
+
private function add_popular_block($page) {
global $database;
global $config;