From d22f1bc1a3fd58ce9b622eaa00c3653cdcccbd88 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Tue, 20 Aug 2013 17:18:13 +0000 Subject: [PATCH] Bug 10656: (follow-up) handle OPAC sorting of authvals where lib_opac is NULL The OPAC description for an authorized value is not required to be populated. In particular, if it is NULL, the staff description is displayed instead. This match makes sure that the sort order (in OPAC mode) uses either the staff description or the OPAC description as needed for each value. To test: [1] Make sure that AdvancedSearchTypes includes "ccode" [1] Arrange your CCODE values so the sort order for staff labels is different from the sort order for OPAC descriptions. Also, ensure that one of the OPAC descriptions is NULL. For example, authorised_value | lib | lib_opac -------------------------------------- ZZZ | A_STAFF | Z_PUBLIC DDD | D_STAFF | NULL AAA | Z_STAFF | A_PUBLIC [2] Prior to the patch, any CCODE values where the OPAC description is NULL will sort first in the OPAC advanced search page, even if the displayed label shouldn't come first. [3] Apply the patch. [4] Verify that the collection list on the OPAC advanced search page is now correct. [5] Verify that the sort order on the staff advanced search page has not changed. Signed-off-by: Galen Charlton --- C4/Koha.pm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/C4/Koha.pm b/C4/Koha.pm index 5deb61b..8429eac 100644 --- a/C4/Koha.pm +++ b/C4/Koha.pm @@ -1076,7 +1076,11 @@ sub GetAuthorisedValues { if(@where_strings > 0) { $query .= " WHERE " . join(" AND ", @where_strings); } - $query .= " GROUP BY lib ORDER BY category, " . ($opac ? "lib_opac, lib" : "lib, lib_opac"); + $query .= " GROUP BY lib"; + $query .= ' ORDER BY category, ' . ( + $opac ? 'COALESCE(lib_opac, lib)' + : 'lib, lib_opac' + ); my $sth = $dbh->prepare($query); -- 1.7.10.4