From: Marcel de Rooy <[email protected]>

Fixing the regex to detect index names in ccl queries.  Changing loop
structure: looping through the index candidates in the query is faster than
testing every index name with a regex.  Making the index comparison case
insensitive will benefit users misspelling the case of an index; Zebra does not
care about it.  Test the change by searching on a word followed by a : or =
character.  Previously, when that word contained an index name like an or nb,
the search would crash.

Signed-off-by: Frédéric Demians <[email protected]>
---
 C4/Search.pm |   15 +++++++--------
 1 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/C4/Search.pm b/C4/Search.pm
index c3cff65..e16772d 100644
--- a/C4/Search.pm
+++ b/C4/Search.pm
@@ -1071,15 +1071,14 @@ sub buildQuery {
 
     my $stopwords_removed;    # flag to determine if stopwords have been 
removed
 
-    my $cclq;
+    my $cclq=0;
     my $cclindexes = getIndexes();
-    if( $query !~ /\s*ccl=/ ){
-        for my $index (@$cclindexes){
-            if($query =~ /($index)(,?\w)*[:=]/){
-                $cclq = 1;
-            }
-        }
-        $query = "ccl=$query" if($cclq);
+    if( $query !~ /\s*ccl=/ ) {
+      while(!$cclq && $query=~/(?:^|\W)(\w+)(,\w+)*[:=]/g) {
+        my $dx=lc($1);
+        $cclq= grep {lc($_) eq $dx} @$cclindexes;
+      }
+      $query = "ccl=$query" if $cclq;
     }
 
 # for handling ccl, cql, pqf queries in diagnostic mode, skip the rest of the 
steps
-- 
1.7.6.1

_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to