From a2ee91c9b8cd06fe375f326f6c8aacf7783e91e2 Mon Sep 17 00:00:00 2001
From: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Date: Thu, 21 Apr 2022 12:52:32 +0100
Subject: [PATCH] Bug 30576: Use DefaultPatronSearchFields in patron search

This patch corrects the handling of the 'Standard' search field in
patron searches such that it accurately reflects the contents of the
DefaultPatronSearchFields system preference and falls back to a hard
coded list instead of always using the hard coded list.

To test:
1) Empty the contents of DefaultPatronSearchFields systempreference
2) Perform a patron search from the header search
3) Inspect the patrons API request and note that we search on the
   default fallback fields of firstname, surname, othernames,
   cardnumber and userid (and some extended attributes which are
   historically hard coded).
4) Navigate to the memebers-home by clicking the 'Patrons' button from
   the main page
5) Perform another search using the filters on the left with 'Standard'
   selected.
6) Note the same list of search fields used as above in the patrons API
   request.
7) Update the DefaultPatronSearchFields systempreference adding one or
   more borrower fields in a comma delimited list.
8) Repeat steps 2 -> 6 but this time upon inspecting the API request you
   should find that only the fields in your DefaultPatronSearchFields
   list are searched (along with the hard coded extended attributes
   list).
9) Signoff

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
---
 .../intranet-tmpl/prog/en/includes/patron-search-header.inc  | 5 ++---
 koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc   | 5 ++---
 koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc    | 2 +-
 3 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search-header.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search-header.inc
index e7368bd8d2..5a1df7600e 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search-header.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search-header.inc
@@ -23,9 +23,8 @@
     <div id="filters">
         <p><label for="searchfieldstype">Search fields:</label>
             <select name="searchfieldstype" id="searchfieldstype">
-              [% pref_fields = Koha.Preference('DefaultPatronSearchFields').split(',') %]
-              [% default_fields = [ 'firstname,surname,othernames,cardnumber,userid', 'surname', 'cardnumber', 'email', 'borrowernumber', 'userid', 'phone', 'address', 'dateofbirth', 'sort1', 'sort2' ] %]
-              [% search_options = default_fields.merge(pref_fields).unique %]
+              [% SET standard = Koha.Preference('DefaultPatronSearchFields') || 'firstname,surname,othernames,cardnumber,userid' %]
+              [% SET search_options = [ standard, 'surname', 'cardnumber', 'email', 'borrowernumber', 'userid', 'phone', 'address', 'dateofbirth', 'sort1', 'sort2' ] %]
               [% FOREACH s_o IN search_options %]
                   [% display_name = PROCESS patron_fields name=s_o %]
                   [% NEXT IF !display_name.length %]
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc
index de738dab2b..07997bf945 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc
@@ -60,9 +60,8 @@
                         <li>
                             <label for="searchfieldstype_filter">Search field:</label>
                             <select name="searchfieldstype" id="searchfieldstype_filter">
-                                [% pref_fields = Koha.Preference('DefaultPatronSearchFields').split(',') %]
-                                [% default_fields = [ 'firstname,surname,othernames,cardnumber,userid', 'surname', 'cardnumber', 'email', 'borrowernumber', 'userid', 'phone', 'address', 'dateofbirth', 'sort1', 'sort2' ] %]
-                                [% search_options = default_fields.merge(pref_fields).unique %]
+                                [% SET standard = Koha.Preference('DefaultPatronSearchFields') || 'firstname,surname,othernames,cardnumber,userid' %]
+                                [% SET search_options = [ standard, 'surname', 'cardnumber', 'email', 'borrowernumber', 'userid', 'phone', 'address', 'dateofbirth', 'sort1', 'sort2' ] %]
                                 [% FOREACH s_o IN search_options %]
                                     [% display_name = PROCESS patron_fields name=s_o %]
                                     [% NEXT IF !display_name %]
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc
index 5e1c58f38e..416a5ae26c 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc
@@ -1,6 +1,6 @@
 [%- BLOCK patron_fields -%]
      [%- SWITCH name -%]
-     [%- CASE 'firstname,surname,othernames,cardnumber,userid' -%]<span>Standard</span>
+     [%- CASE standard -%]<span>Standard</span>
      [%- CASE 'borrowernumber' -%]<span>Borrowernumber</span>
      [%- CASE 'cardnumber' -%]<span>Card number</span>
      [%- CASE 'surname' -%]<span>Surname</span>
-- 
2.20.1