diff --git a/ext/tag_list/main.php b/ext/tag_list/main.php index f9216a7d..95a8cfdb 100644 --- a/ext/tag_list/main.php +++ b/ext/tag_list/main.php @@ -88,6 +88,16 @@ class TagList implements Extension { $u_tag = url_escape($tag); return make_link("post/list/$u_tag/1"); } + + private function get_tags_min() { + if(isset($_GET['mincount'])) { + return int_escape($_GET['mincount']); + } + else { + global $config; + return $config->get_int('tags_min'); + } + } // }}} // maps {{{ private function build_navigation() { @@ -96,14 +106,14 @@ class TagList implements Extension { $h_alphabetic = "Alphabetic"; $h_popularity = "Popularity"; $h_cats = "Categories"; - return "$h_index
$h_map
$h_alphabetic
$h_popularity
$h_cats"; + $h_all = "Show All"; + return "$h_index
 
$h_map
$h_alphabetic
$h_popularity
$h_cats
 
$h_all"; } private function build_tag_map() { global $database; - global $config; - $tags_min = $config->get_int('tags_min'); + $tags_min = $this->get_tags_min(); $result = $database->execute(" SELECT tag, @@ -128,9 +138,8 @@ class TagList implements Extension { private function build_tag_alphabetic() { global $database; - global $config; - $tags_min = $config->get_int('tags_min'); + $tags_min = $this->get_tags_min(); $result = $database->execute( "SELECT tag,count FROM tags WHERE count >= ? ORDER BY tag", array($tags_min)); @@ -154,9 +163,8 @@ class TagList implements Extension { private function build_tag_popularity() { global $database; - global $config; - $tags_min = $config->get_int('tags_min'); + $tags_min = $this->get_tags_min(); $result = $database->execute( "SELECT tag,count,FLOOR(LOG(count)) AS scaled FROM tags WHERE count >= ? ORDER BY count DESC, tag ASC", array($tags_min)); @@ -181,9 +189,8 @@ class TagList implements Extension { private function build_tag_categories() { global $database; - global $config; - $tags_min = $config->get_int('tags_min'); + $tags_min = $this->get_tags_min(); $result = $database->execute("SELECT tag,count FROM tags ORDER BY count DESC, tag ASC LIMIT 9"); $tag_data = $result->GetArray(); diff --git a/ext/tag_list/test.php b/ext/tag_list/test.php index 660473d2..fc574eab 100644 --- a/ext/tag_list/test.php +++ b/ext/tag_list/test.php @@ -1,5 +1,7 @@ get_page('tags/map'); $this->assert_title('Tag List'); @@ -15,5 +17,21 @@ class TagListTest extends ShimmieWebTestCase { # FIXME: test that these show the right stuff } + + function testMinCount() { + foreach($this->pages as $page) { + $this->get_page("tags/$page?mincount=999999"); + $this->assert_title("Tag List"); + + $this->get_page("tags/$page?mincount=1"); + $this->assert_title("Tag List"); + + $this->get_page("tags/$page?mincount=0"); + $this->assert_title("Tag List"); + + $this->get_page("tags/$page?mincount=-1"); + $this->assert_title("Tag List"); + } + } } ?>