summaryrefslogtreecommitdiff
path: root/lib/Bookmarks/M/DB/Tags.pm
blob: b01695abfe6627acd7fecfda6636ed11ff5d3bd7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package Bookmarks::M::DB::Tags; 
 
use strict;
 
__PACKAGE__->has_many( links => ['Bookmarks::M::DB::LinksTags' => 'link'] );
 
__PACKAGE__->set_sql('related_tags'<<'END_SQL');
SELECT DISTINCT tags.pk
  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
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
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();
}
 
sub related_tags {
    my ($self)=@_;
 
    return $self->search_related_tags($self->pk());
}
 
sub get_all_tags_by_popularity {
    return $_[0]->search_popularity();
}
 
sub ordered_links {
    my ($self)=@_;
    my @links=$self->links();
    return sort {
        ($b->access_count || 0)
            <=>
        ($a->access_count || 0)
    @links;
}
 
=head1 NAME
 
Bookmarks::M::DB::Tags - CDBI Model Component Table Class
 
=head1 SYNOPSIS
 
    Very simple to use
 
=head1 DESCRIPTION
 
Very nice component.
 
=head1 AUTHOR
 
Clever guy
 
=head1 LICENSE
 
This library is free software . You can redistribute it and/or modify it under
the same terms as perl itself.
 
=cut
 
1;