Bugzilla – Attachment 72624 Details for
Bug 20346
Patron filtering resulting in new search rather than filtering existing results
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 20346 - Amended Server side patron filtering
Bug-20346---Amended-Server-side-patron-filtering.patch (text/plain), 5.01 KB, created by
Alex Buckley
on 2018-03-11 04:21:59 UTC
(
hide
)
Description:
Bug 20346 - Amended Server side patron filtering
Filename:
MIME Type:
Creator:
Alex Buckley
Created:
2018-03-11 04:21:59 UTC
Size:
5.01 KB
patch
obsolete
>From 3d58b60a2c7452f301625ffc056541ca58ef97d3 Mon Sep 17 00:00:00 2001 >From: Alex Buckley <alexbuckley@catalyst.net.nz> >Date: Thu, 8 Mar 2018 19:26:50 +0000 >Subject: [PATCH] Bug 20346 - Amended Server side patron filtering > >The number of results returned has been fixed so it is not affected by >what the user sets for the number of records they want displayed on each >page. > >In addition to ensuring all matching patrons are returned no matter >what the numberof patrons to be displayed on each page is, filtering >also takes place over all returned patrons and not just those displayed >on the current page this ensures filtering finds all matching patrons. > >Test plan: >The same as the previous bug 20346 patch > >Sponsored-By: Catalyst IT >--- > svc/members/search | 69 +++++++++++++++++++++++++++++++++++++----------------- > 1 file changed, 48 insertions(+), 21 deletions(-) > >diff --git a/svc/members/search b/svc/members/search >index a1d2f72..fcce3b1 100755 >--- a/svc/members/search >+++ b/svc/members/search >@@ -26,7 +26,6 @@ use C4::Utils::DataTables qw( dt_get_params ); > use C4::Utils::DataTables::Members qw( search ); > use Koha::DateUtils qw( output_pref dt_from_string ); > use Koha::Patrons; >-use Data::Dumper; > use Time::Piece; > use JSON::XS qw( ); > use HTML::Entities qw( encode_entities ); >@@ -77,18 +76,49 @@ if ( $searchmember > } if $member; > } > >-# Perform the patrons search >-$results = C4::Utils::DataTables::Members::search( >- { >- searchmember => $first_query, >- firstletter => $firstletter, >- categorycode => $categorycode, >- branchcode => $branchcode, >- searchtype => $searchtype, >- searchfieldstype => $searchfieldstype, >- dt_params => \%dt_params, >- } >-) unless $results; >+my $filterable_results; >+if ($searchmember ne $first_query) { >+ # Perform the patrons search >+ $results = C4::Utils::DataTables::Members::search( >+ { >+ searchmember => $first_query, >+ firstletter => $firstletter, >+ categorycode => $categorycode, >+ branchcode => $branchcode, >+ searchtype => $searchtype, >+ searchfieldstype => $searchfieldstype, >+ dt_params => \%dt_params, >+ } >+ ) unless $results; >+ my $value_to_display = $dt_params{'iDisplayLength'}; >+ $dt_params{'iDisplayLength'} = -1; >+ >+ # Retreive all patrons matching the $first_query value. These will be filtered >+ $filterable_results = C4::Utils::DataTables::Members::search( >+ { >+ searchmember => $first_query, >+ firstletter => $firstletter, >+ categorycode => $categorycode, >+ branchcode => $branchcode, >+ searchtype => $searchtype, >+ searchfieldstype => $searchfieldstype, >+ dt_params => \%dt_params, >+ } >+ ) unless $filterable_results; >+} else { >+ # Perform the patrons search >+ $results = C4::Utils::DataTables::Members::search( >+ { >+ searchmember => $first_query, >+ firstletter => $firstletter, >+ categorycode => $categorycode, >+ branchcode => $branchcode, >+ searchtype => $searchtype, >+ searchfieldstype => $searchfieldstype, >+ dt_params => \%dt_params, >+ } >+ ) unless $results; >+} > > # It is not recommanded to use the has_permission param if you use the pagination > # The filter is done AFTER requested the data >@@ -115,13 +145,12 @@ $results = C4::Utils::DataTables::Members::search( > } > my $date_format = C4::Context->preference("dateformat"); > >- if ($searchmember) { >+ if ($searchmember ne $first_query) { > my @filtered_patron_list; > my $count; >- for my $patron ( @{ $results->{patrons} } ) { >+ for my $patron ( @{ $filterable_results->{patrons} } ) { > my $match; > for my $value (values $patron) { >- warn $value; > my $lc_patron_value = lc $value; > my $lc_searchmember = lc $searchmember; > >@@ -138,14 +167,10 @@ $results = C4::Utils::DataTables::Members::search( > > } > } >- warn $lc_patron_value; >- warn $lc_searchmember; > if ($searchtype eq "start_with") { > #Find a match starting with the start of a value in the patron record > if (index($lc_patron_value, $lc_searchmember) == 0) { > $match = 1; >- warn $lc_patron_value; >- warn $lc_searchmember; > } > } else { > if (($lc_patron_value) =~ /($lc_searchmember)/) { >@@ -159,7 +184,9 @@ $results = C4::Utils::DataTables::Members::search( > } > } > $results->{patrons} = \@filtered_patron_list; >- $results->{iTotalDisplayRecords} = scalar( @filtered_patron_list ); >+ if ($searchmember ne $first_query) { >+ $results->{iTotalDisplayRecords} = scalar @{$results->{patrons}}; >+ } > } > > my $date_format = C4::Context->preference("dateformat"); >-- >2.1.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 20346
:
72496
|
72520
|
72523
|
72623
|
72624
|
72815
|
73520