summaryrefslogtreecommitdiff
path: root/lib/Bookmarks/M/DB/Tags.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Bookmarks/M/DB/Tags.pm')
-rw-r--r--lib/Bookmarks/M/DB/Tags.pm20
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/Bookmarks/M/DB/Tags.pm b/lib/Bookmarks/M/DB/Tags.pm
index 4ca832a..56ec4fa 100644
--- a/lib/Bookmarks/M/DB/Tags.pm
+++ b/lib/Bookmarks/M/DB/Tags.pm
@@ -4,20 +4,28 @@ use strict;
__PACKAGE__->has_many( links => ['Bookmarks::M::DB::LinksTags' => 'link'] );
-# magari ordiniamoli per popolrità
__PACKAGE__->set_sql('related_tags', <<'END_SQL');
-SELECT DISTINCT tags.pk
+SELECT DISTINCT tags.pk, tags.name
FROM tags, links_tags lt1, links_tags lt2
WHERE tags.pk = lt1.tag
AND lt1.link = lt2.link
AND lt2.tag = ?
AND lt1.tag != lt2.tag
+ORDER BY tags.name
+END_SQL
+
+__PACKAGE__->set_sql('name', <<'END_SQL');
+SELECT tags.pk, tags.name, COUNT(links_tags.link) AS how_many
+ FROM tags LEFT JOIN links_tags
+ ON tags.pk = links_tags.tag
+GROUP BY tags.pk
+ORDER BY tags.name
END_SQL
__PACKAGE__->set_sql('popularity', <<'END_SQL');
SELECT tags.pk, COUNT(links_tags.link) AS how_many
- FROM tags, links_tags
- WHERE tags.pk = links_tags.tag
+ FROM tags LEFT JOIN links_tags
+ ON tags.pk = links_tags.tag
GROUP BY tags.pk
ORDER BY how_many DESC
END_SQL
@@ -39,6 +47,10 @@ sub get_all_tags_by_popularity {
return $_[0]->search_popularity();
}
+sub get_all_tags_by_name {
+ return $_[0]->search_name();
+}
+
sub links_sorter($$) {
return
($_[1]->access_count || 0)