From f693efc02f9315790462e995bee452c192ed0bfb Mon Sep 17 00:00:00 2001 From: Katrin Fischer Date: Sat, 21 Nov 2015 22:32:52 +0100 Subject: [PATCH] [SIGNED-OFF] Bug 14636: Item search - fix search and sort by publication date for MARC21 Content-Type: text/plain; charset="utf-8" Problem: MARC21/NORMARC stores the publication date in biblio.copyrightdate, but UNIMARC uses biblioitems.publicationyear. To test: - Without patch in a MARC21 installation: - Search by publication date - Verify that the results don't match the publication year you searched for. - Try sorting the table by publication year. - Verify that the sort doesn't work. - Apply patch. - Repeat both, search and sort. - Verify both work correctly now. - Repeat tests on a UNIMARC installation. - Verify both still work. Signed-off-by: Owen Leonard Tested searching and sorting successfully in a MARC21 installation. DID NOT test in UNIMARC. --- catalogue/itemsearch.pl | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/catalogue/itemsearch.pl b/catalogue/itemsearch.pl index c1253d7..3cf364c 100755 --- a/catalogue/itemsearch.pl +++ b/catalogue/itemsearch.pl @@ -128,6 +128,9 @@ if (scalar keys %params > 0) { my $op = shift @op; if (defined $q and $q ne '') { if ($i == 0) { + if (C4::Context->preference("marcflavor") ne "UNIMARC" && $field eq 'publicationdate') { + $field = 'copyrightdate'; + } $f = { field => $field, query => $q, @@ -181,10 +184,15 @@ if (scalar keys %params > 0) { }; } + my $sortby = $cgi->param('sortby') || 'itemnumber'; + if (C4::Context->preference("marcflavor") ne "UNIMARC" && $sortby eq 'publicationyear') { + $sortby = 'copyrightdate'; + } + warn $sortby; my $search_params = { rows => $cgi->param('rows') // 20, page => $cgi->param('page') || 1, - sortby => $cgi->param('sortby') || 'itemnumber', + sortby => $sortby, sortorder => $cgi->param('sortorder') || 'asc', }; -- 2.1.4