From aa8e92e68f71c48f03ab763dcd95670c21321ff7 Mon Sep 17 00:00:00 2001
From: Kyle M Hall <kyle@bywatersolutions.com>
Date: Fri, 27 Mar 2015 11:21:39 -0400
Subject: [PATCH] Bug 13822 - Patron autocomplete search is severly limited
The script that returns data for the patron autocomplete does not use C4::Members::Search. Instead it uses bespoke code that does not behave like the traditional search and is very limited in how it can search.
If, for example, I search for "Kyle Hall" in the standard search, I would get "Kyle Hall" back as a result. For the autocomplete search, I will not.
This script should use C4::Members::Search to provide better searching and to keep the code base DRY.
Test Plan:
1) Enable the system preference CircAutocompl
2) Create a user with the first name "Test" and the surname "User"
3) Perform a checkout autocomplete search for "Test User"
4) Note you do not get the user as a result
5) Apply this patch
6) Try different combinations of "Test" and "User" such as
Test User
User Test
U Test
Test U
etc.
7) Note these searches now work
---
circ/ysearch.pl | 23 ++++++++++++++++-------
1 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/circ/ysearch.pl b/circ/ysearch.pl
index 8e43b8e..7370b39 100755
--- a/circ/ysearch.pl
+++ b/circ/ysearch.pl
@@ -51,14 +51,23 @@ if ( C4::Context->preference("IndependentBranches")
$limit_on_branch = 1;
}
+my @parts = split( / /, $query );
+my @params;
+foreach my $p (@parts) {
+ push(
+ @params,
+ -or => [
+ surname => { -like => "$p%" },
+ firstname => { -like => "$p%" },
+ cardnumber => { -like => "$p%" },
+ ]
+ );
+}
+
+push( @params, { branchcode => C4::Context->userenv->{branch} } ) if $limit_on_branch;
+
my $borrowers_rs = Koha::Borrowers->search(
- { -or => {
- surname => { -like => "$query%" },
- firstname => { -like => "$query%" },
- cardnumber => { -like => "$query%" },
- ( $limit_on_branch ? { branchcode => C4::Context->userenv->{branch} } : () ),
- },
- },
+ { -and => \@params },
{
# Get the first 10 results
page => 1,
--
1.7.2.5