diff options
author | Yorhel <git@yorhel.nl> | 2009-05-10 14:48:34 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2009-05-10 14:48:34 +0200 |
commit | d3e270d6987cfe696ee2c2e25bb344f242f53a1e (patch) | |
tree | 11343e05596afea0ba795c913d68d247eaa336ee /lib/VNDB/DB/Releases.pm | |
parent | 31c7f61c58686e39645a45fa2feeb435ac023e7f (diff) |
Added search field on release browser
Diffstat (limited to 'lib/VNDB/DB/Releases.pm')
-rw-r--r-- | lib/VNDB/DB/Releases.pm | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index da50a6d8..4aa844a8 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -9,7 +9,7 @@ use Exporter 'import'; our @EXPORT = qw|dbReleaseGet dbReleaseAdd dbReleaseEdit|; -# Options: id vid rev order unreleased page results what date platforms languages type minage +# Options: id vid rev order unreleased page results what date platforms languages type minage search # What: extended changes vn producers platforms media sub dbReleaseGet { my($self, %o) = @_; @@ -18,7 +18,7 @@ sub dbReleaseGet { $o{what} ||= ''; $o{order} ||= 'rr.released ASC'; - my %where = ( + my @where = ( !$o{id} && !$o{rev} ? ( 'r.hidden = FALSE' => 0 ) : (), $o{id} ? ( @@ -44,6 +44,20 @@ sub dbReleaseGet { 'rr.patch = ?', $o{patch} == 1 ? 1 : 0) : (), ); + if($o{search}) { + for (split /[ -,._]/, $o{search}) { + s/%//g; + next if length($_) < 2; + if(/^\d+$/ && gtintype($_)) { + push @where, 'rr.gtin = ?', $_; + } else { + $_ = "%$_%"; + push @where, '(rr.title ILIKE ? OR rr.original ILIKE ? OR rr.catalog = ?)', + [ $_, $_, $_ ]; + } + } + } + my @join = ( $o{rev} ? 'JOIN releases r ON r.id = rr.rid' : 'JOIN releases r ON rr.id = r.latest', $o{vid} ? 'JOIN releases_vn rv ON rv.rid = rr.id' : (), @@ -66,7 +80,7 @@ sub dbReleaseGet { !s !W ORDER BY !s|, - join(', ', @select), join(' ', @join), \%where, $o{order} + join(', ', @select), join(' ', @join), \@where, $o{order} ); if(@$r && $o{what} =~ /(vn|producers|platforms|media)/) { |