diff options
Diffstat (limited to 'lib/Bookmarks/M/DB/Tags.pm')
-rw-r--r-- | lib/Bookmarks/M/DB/Tags.pm | 17 |
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 |