summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormorkt <>2015-01-17 10:45:41 +0100
committerYorhel <git@yorhel.nl>2015-01-17 10:45:41 +0100
commit5bc52fc618cf200e82d320987a6c6829cf67bf1d (patch)
tree971a2df28615d0f575dfbc0b7c66eb5ae73b273d /lib
parent1cc4307e0097877f0e2a26c03c372651a4eb88f4 (diff)
staff: Fix search to ignore spaces in Japanese names
Diffstat (limited to 'lib')
-rw-r--r--lib/VNDB/DB/Staff.pm7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/VNDB/DB/Staff.pm b/lib/VNDB/DB/Staff.pm
index 3e26e360..2c8dae93 100644
--- a/lib/VNDB/DB/Staff.pm
+++ b/lib/VNDB/DB/Staff.pm
@@ -25,7 +25,12 @@ sub dbStaffGet {
$o{id} ? ( ref $o{id} ? ('s.id IN(!l)' => [$o{id}]) : ('s.id = ?' => $o{id}) ) : (),
$o{aid} ? ( ref $o{aid} ? ('sa.id IN(!l)' => [$o{aid}]) : ('sa.id = ?' => $o{aid}) ) : (),
$o{search} ?
- ( '(sa.name ILIKE ? OR sa.original ILIKE ?)', [ map '%%'.$o{search}.'%%', 1..2 ] ) : (),
+ $o{search} =~ /[\x{3000}-\x{9fff}\x{ff00}-\x{ff9f}]/ ?
+ # match against 'original' column only if search string contains any
+ # japanese character.
+ # note: more precise regex would be /[\p{Hiragana}\p{Katakana}\p{Han}]/
+ ( q|(sa.original LIKE ? OR translate(sa.original,' ','') LIKE ?)| => [ '%'.$o{search}.'%', ($o{search} =~ s/\s+//gr).'%' ] ) :
+ ( '(sa.name ILIKE ? OR sa.original ILIKE ?)' => [ map '%%'.$o{search}.'%%', 1..2 ] ) : (),
$o{char} ? ( 'LOWER(SUBSTR(sa.name, 1, 1)) = ?' => $o{char} ) : (),
defined $o{char} && !$o{char} ?
( '(ASCII(sa.name) < 97 OR ASCII(sa.name) > 122) AND (ASCII(sa.name) < 65 OR ASCII(sa.name) > 90)' => 1 ) : (),