diff options
author | dakkar <dakkar@luxion> | 2005-11-10 20:19:29 +0000 |
---|---|---|
committer | dakkar <dakkar@luxion> | 2005-11-10 20:19:29 +0000 |
commit | cac81c5c401813e609a9b3345eec91a570071fab (patch) | |
tree | f45a7079a2ed6f09413940299fc0848908fbe68d /lib/Bookmarks/M/DB/Links.pm | |
parent | * cambiato ordinamento dei tag (ora è sempre alfabetico) (diff) | |
download | Bookmarks-cac81c5c401813e609a9b3345eec91a570071fab.tar.gz Bookmarks-cac81c5c401813e609a9b3345eec91a570071fab.tar.bz2 Bookmarks-cac81c5c401813e609a9b3345eec91a570071fab.zip |
aggiunta la funzionalità di ricerca, e "finiti" gli stili
Diffstat (limited to 'lib/Bookmarks/M/DB/Links.pm')
-rw-r--r-- | lib/Bookmarks/M/DB/Links.pm | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/Bookmarks/M/DB/Links.pm b/lib/Bookmarks/M/DB/Links.pm index 5c0d37f..5103522 100644 --- a/lib/Bookmarks/M/DB/Links.pm +++ b/lib/Bookmarks/M/DB/Links.pm @@ -2,6 +2,7 @@ package Bookmarks::M::DB::Links; use strict; use MIME::Base64; use Bookmarks::M::DB::LinksTags; +use List::MoreUtils qw(uniq); for my $col_name (qw(add_date last_access_date)) { __PACKAGE__->has_a( $col_name => 'DateTime', @@ -19,6 +20,29 @@ sub get_icon { return decode_base64($self->icon()||''); } +sub search_complex { + my ($class, $query, @tags)=@_; + + $query =~ s{^ +| +$}{}g; + $query =~ s{ +}{%}g; + + my $iterator = $class->search_like(title => "%$query%", {order_by => 'access_count'}); + + my @result=(); + + while (my $link=$iterator->next()) { + my @link_tags = map {$_->pk} $link->tags(); + + # se @tags contiene roba non in @link_tags, i risultati sono diversi + # notare che @tags=() significa 'tutti' + if (scalar uniq(@link_tags,@tags) == scalar @link_tags) { + push @result,$link; + } + } + + return @result; +} + __PACKAGE__->has_many( tags => ['Bookmarks::M::DB::LinksTags' => 'tag'] ); =head1 NAME |