summaryrefslogtreecommitdiff
path: root/lib/VNDB/DB/Releases.pm
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2009-05-10 14:23:57 +0200
committerYorhel <git@yorhel.nl>2009-05-10 14:23:57 +0200
commit31c7f61c58686e39645a45fa2feeb435ac023e7f (patch)
tree5f677ced7f32bf5e03e229a8c4ea4aa974e9e761 /lib/VNDB/DB/Releases.pm
parenta979409bd60aa04593dfd3fa1c1bbc5eb5248e8a (diff)
Advanced filtering for the release browser
Diffstat (limited to 'lib/VNDB/DB/Releases.pm')
-rw-r--r--lib/VNDB/DB/Releases.pm13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm
index ddf9a66c..da50a6d8 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
+# Options: id vid rev order unreleased page results what date platforms languages type minage
# What: extended changes vn producers platforms media
sub dbReleaseGet {
my($self, %o) = @_;
@@ -31,6 +31,17 @@ sub dbReleaseGet {
q|rr.released !s ?| => [ $o{unreleased} ? '>' : '<=', strftime('%Y%m%d', gmtime) ] ) : (),
$o{date} ? (
'(rr.released > ? AND rr.released < ?)' => [ $o{date}*100, $o{date}*100+99 ] ) : (),
+ $o{languages} ? (
+ 'rr.language IN(!l)', => [ $o{languages} ] ) : (),
+ $o{platforms} ? (
+ #'EXISTS(SELECT 1 FROM releases_platforms rp WHERE rp.rid = rr.id AND rp.platform IN(!l))' => [ $o{platforms} ] ) : (),
+ 'rr.id IN(SELECT irp.rid FROM releases_platforms irp JOIN releases ir ON ir.latest = irp.rid WHERE irp.platform IN(!l))' => [ $o{platforms} ] ) : (),
+ defined $o{type} ? (
+ 'rr.type = ?' => $o{type} ) : (),
+ $o{minage} ? (
+ '(rr.minage !s ? AND rr.minage <> -1)' => [ $o{minage}[0] ? '<=' : '>=', $o{minage}[1] ] ) : (),
+ $o{patch} ? (
+ 'rr.patch = ?', $o{patch} == 1 ? 1 : 0) : (),
);
my @join = (