summaryrefslogtreecommitdiff
path: root/lib/VNDB/DB/Releases.pm
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2009-05-10 14:48:34 +0200
committerYorhel <git@yorhel.nl>2009-05-10 14:48:34 +0200
commitd3e270d6987cfe696ee2c2e25bb344f242f53a1e (patch)
tree11343e05596afea0ba795c913d68d247eaa336ee /lib/VNDB/DB/Releases.pm
parent31c7f61c58686e39645a45fa2feeb435ac023e7f (diff)
Added search field on release browser
Diffstat (limited to 'lib/VNDB/DB/Releases.pm')
-rw-r--r--lib/VNDB/DB/Releases.pm20
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)/) {