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.pm17
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/Bookmarks/M/DB/Tags.pm b/lib/Bookmarks/M/DB/Tags.pm
index e9057a8..c1e1f0b 100644
--- a/lib/Bookmarks/M/DB/Tags.pm
+++ b/lib/Bookmarks/M/DB/Tags.pm
@@ -2,9 +2,9 @@ package Bookmarks::M::DB::Tags;
use strict;
-__PACKAGE__->has_many( links => [Bookmarks::M::DB::LinkTags => 'link'] );
+__PACKAGE__->has_many( links => ['Bookmarks::M::DB::LinksTags' => 'link'] );
-__PACKAGE__->set_sql('related_tags' <<'END_SQL');
+__PACKAGE__->set_sql('related_tags', <<'END_SQL');
SELECT tags.pk
FROM tags, links_tags lt1, links_tags lt2
WHERE tags.pk = lt1.tag
@@ -12,13 +12,16 @@ SELECT tags.pk
AND lt2.tag = ?
END_SQL
-__PACKAGE__->set_sql('popularity' <<'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
-ORDER BY how_many
+GROUP BY links_tags.tag
+ORDER BY how_many DESC
END_SQL
+__PACKAGE__->columns(TEMP=> 'how_wany');
+
sub count_links {
my ($self)=@_;
return scalar $self->links();
@@ -34,6 +37,12 @@ sub get_all_tags_by_popularity {
return $_[0]->search_popularity();
}
+sub ordered_links {
+ my ($self)=@_;
+ my @links=$self->links();
+ return sort {$a->access_count <=> $b->access_count} @links;
+}
+
=head1 NAME
Bookmarks::M::DB::Tags - CDBI Model Component Table Class