From 1871d9a6e71f9abaadfcc86b50aab0cd038f7890 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Fri, 27 Mar 2015 11:21:39 -0400 Subject: [PATCH] Bug 13822: Patron autocomplete search is severly limited MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Works as expected. Signed-off-by: Marc Véron Signed-off-by: Katrin Fischer Signed-off-by: Tomas Cohen Arazi --- circ/ysearch.pl | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/circ/ysearch.pl b/circ/ysearch.pl index e5c8d26841..518915fec0 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, -- 2.39.5