diff options
author | Yorhel <git@yorhel.nl> | 2013-01-21 13:34:49 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2013-01-21 13:37:28 +0100 |
commit | acae2bea4397c84aae5610a375a9b8119ddc5645 (patch) | |
tree | 12a8640ca9ce5076d9245ec31d27ff7f6189ba2a /lib/VNDB/DB/Releases.pm | |
parent | 6f5d0ae1bacab24e4ba9c854501930572f84d256 (diff) |
Added "unknown platform" release filter
Diffstat (limited to 'lib/VNDB/DB/Releases.pm')
-rw-r--r-- | lib/VNDB/DB/Releases.pm | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index a2f1363c..56fcf0b4 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -19,6 +19,7 @@ sub dbReleaseGet { $o{results} ||= 50; $o{page} ||= 1; $o{what} ||= ''; + $o{plat} = [ $o{plat} ] if $o{plat} && !ref $o{plat}; my @where = ( !$o{id} && !$o{rev} ? ( 'r.hidden = FALSE' => 0 ) : (), @@ -42,8 +43,10 @@ sub dbReleaseGet { 'rr.id IN(SELECT irl.rid FROM releases_lang irl JOIN releases ir ON ir.latest = irl.rid WHERE irl.lang IN(!l))' => [ ref $o{lang} ? $o{lang} : [ $o{lang} ] ] ) : (), $o{olang} ? ( 'rr.id IN(SELECT irv.rid FROM releases_vn irv JOIN releases ir ON ir.latest = irv.rid JOIN vn v ON irv.vid = v.id WHERE v.c_olang && ARRAY[!l]::language[])' => [ ref $o{olang} ? $o{olang} : [ $o{olang} ] ] ) : (), - $o{plat} ? ( - 'rr.id IN(SELECT irp.rid FROM releases_platforms irp JOIN releases ir ON ir.latest = irp.rid WHERE irp.platform IN(!l))' => [ ref $o{plat} ? $o{plat} : [ $o{plat} ] ] ) : (), + $o{plat} ? (join(' OR ', + grep(/^unk$/, @{$o{plat}}) ? 'NOT EXISTS(SELECT 1 FROM releases_platforms irp WHERE irp.rid = r.latest)' : (), + grep(!/^unk$/, @{$o{plat}}) ? 'rr.id IN(SELECT irp.rid FROM releases_platforms irp JOIN releases ir ON ir.latest = irp.rid WHERE irp.platform IN(!l))' : (), + ), [ [ grep !/^unk$/, @{$o{plat}} ] ]) : (), $o{med} ? ( 'rr.id IN(SELECT irm.rid FROM releases_media irm JOIN releases ir ON ir.latest = irm.rid WHERE irm.medium IN(!l))' => [ ref $o{med} ? $o{med} : [ $o{med} ] ] ) : (), ); |