From f1d36ab27f4b67f024a79918c65cd7518bab8b76 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 8 Feb 2024 01:08:10 +0000 Subject: [PATCH] Bug 36025: Incorrect clause in patron search This patch removes the search clause for extended_attributes when there is no patron attribute types which are searchable by default. The clause was incorrectly added because the array extended_attribute_types was rendered as [""] This seems to be an issue with get_columns from DBIX Class and how that is cast when forcing an array in the template. It returns an empty string for nothing, a scalar for a single value, and an array for multiple values. This patch now checks if the variable is set and has content, and wraps as an array if so. In the case of two attributes, we do double the array, but this was true before as we always cast the return as an array. Test plan: * Make sure that no borrower attribute type is set to "searched by default" in Koha administration -> Patron attribute types. * Enable the network monitring in the developer tools in your web browser (Ctrl + Shift + E in firefox or Ctrl + Shift + I and select the "Network" tab). * Go to the patrons view members-home.pl (click patrons in top menu bar). * Search for a string that will match multiple borrowers (to not be automatically redirected) * Examine the ajax-request and make sure that "extended_attributes.code" is NOT part of the query. * Also, in koha-testing-docker with selenium enabled, run 'perl t/db_dependent/selenium/patrons_search.t' * Now set one patro attribute to searchable and searched by default and add a value for a patron, confirm search works * Set a second patron attribute to searchable and searched by default and confirm searching works Signed-off-by: Nick Clemens --- Koha/Template/Plugin/ExtendedAttributeTypes.pm | 2 ++ koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc | 3 ++- koha-tmpl/intranet-tmpl/prog/js/staff-global.js | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Koha/Template/Plugin/ExtendedAttributeTypes.pm b/Koha/Template/Plugin/ExtendedAttributeTypes.pm index 9511b7325e2..837e014fa8a 100644 --- a/Koha/Template/Plugin/ExtendedAttributeTypes.pm +++ b/Koha/Template/Plugin/ExtendedAttributeTypes.pm @@ -33,7 +33,9 @@ sub all { sub codes { my ( $self, $params ) = @_; + return Koha::Patron::Attribute::Types->search($params)->get_column('code'); + } 1; 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 e8317798399..7688cdad665 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc @@ -280,7 +280,8 @@ }, {}); [% IF Koha.Preference('ExtendedPatronAttributes') %] - [% SET extended_attribute_types = [ ExtendedAttributeTypes.codes( staff_searchable => 1, searched_by_default => 1 ) ] %] + [% SET extended_attribute_types = ExtendedAttributeTypes.codes( staff_searchable => 1, searched_by_default => 1 ) %] + [% IF ( extended_attribute_types ) %][% extended_attribute_types = [ extended_attribute_types ] %][% END %] var extended_attribute_types = [% To.json(extended_attribute_types || []) | $raw %]; [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/js/staff-global.js b/koha-tmpl/intranet-tmpl/prog/js/staff-global.js index e76bf876f68..1e050dc4d83 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/staff-global.js +++ b/koha-tmpl/intranet-tmpl/prog/js/staff-global.js @@ -860,7 +860,7 @@ function buildPatronSearchQuery(term, options) { if ( typeof options !== "undefined" && ((options.search_fields == "standard" && - options.extended_attribute_types) || + options.extended_attribute_types.length > 0) || searched_attribute_fields.length > 0) && extendedPatronAttributes ) { -- 2.39.5