diff options
author | Yorhel <git@yorhel.nl> | 2014-03-14 08:47:30 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2014-03-14 08:47:30 +0100 |
commit | 6a3b9349b19ca53c18a2ce1d7a1478a0f9d74e16 (patch) | |
tree | 990631a02b4855edd84cf49d022449a2aad8c5d5 /lib/VNDB/DB/Releases.pm | |
parent | 00f58fee48952b81722eb03025aa4197ac57ec34 (diff) |
DB::Releases: Fix mixing AND/OR expressions in platform/media filters
Fixes http://vndb.org/t5136
Diffstat (limited to 'lib/VNDB/DB/Releases.pm')
-rw-r--r-- | lib/VNDB/DB/Releases.pm | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index 28edd869..3c19cfb2 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -44,14 +44,14 @@ 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} ? (join(' OR ', + $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} ? (join(' OR ', + ).')', [ [ grep !/^unk$/, @{$o{plat}} ] ]) : (), + $o{med} ? ('('.join(' OR ', grep(/^unk$/, @{$o{med}}) ? 'NOT EXISTS(SELECT 1 FROM releases_media irm WHERE irm.rid = r.latest)' : (), grep(!/^unk$/, @{$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))' : () - ), [ [ grep(!/^unk$/, @{$o{med}}) ] ]) : (), + ).')', [ [ grep(!/^unk$/, @{$o{med}}) ] ]) : (), ); if($o{search}) { |