From 7ccea5b6f023c2f0c842c63244d7b9a70e28d781 Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 30 May 2022 03:31:44 +0000 Subject: [PATCH] Bug 30865: Double-quote Host-item in Koha::Biblio->get_components_query This patch adds double quotes around the term qualified by "Host-item" in Koha::Biblio->get_components_query(). Without them, reserved charactrs like "=" will cause syntax errors like "CCL parsing error (10014) Unknown qualifier ZOOM for query: Host-item=(MyTitle = Mysubtitle) at /usr/share/koha/lib/C4/Search.pm line 245." Test plan: 0) Don't apply the patch 1) Create biblio with title and subtitle like (MyTitle : MySubtitle) 2) Note the warning "There was an error searching for analytic records, please see the logs for details." on the detail page 3) Apply the patch 4) koha-plack --restart kohadev 5) Refresh the detail page 6) Note that the warning message is gone 7) prove t/db_dependent/Koha/Biblio.t Signed-off-by: Martin Renvoize Signed-off-by: Tomas Cohen Arazi (cherry picked from commit fd385d90b8063d5cbdb0e5d1cf76e99b9c58cc84) Signed-off-by: Lucas Gass (cherry picked from commit 2b4eb64563367d2fb0c51b244d0f9a936c4b49ba) Signed-off-by: Arthur Suzuki --- Koha/Biblio.pm | 2 +- t/db_dependent/Koha/Biblio.t | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Koha/Biblio.pm b/Koha/Biblio.pm index 848e292f54..deb3c1812d 100644 --- a/Koha/Biblio.pm +++ b/Koha/Biblio.pm @@ -594,7 +594,7 @@ sub get_components_query { my $cleaned_title = $marc->subfield('245', "a"); $cleaned_title =~ tr|/||; $cleaned_title = $builder->clean_search_term($cleaned_title); - $searchstr = "Host-item:($cleaned_title)"; + $searchstr = qq#Host-item:("$cleaned_title")#; } return $searchstr; diff --git a/t/db_dependent/Koha/Biblio.t b/t/db_dependent/Koha/Biblio.t index c18ed47c1b..ef0c66e275 100755 --- a/t/db_dependent/Koha/Biblio.t +++ b/t/db_dependent/Koha/Biblio.t @@ -572,7 +572,7 @@ subtest 'get_components_query' => sub { my $record = $biblio->metadata->record; t::lib::Mocks::mock_preference( 'UseControlNumber', '0' ); - is($biblio->get_components_query, "Host-item:(Some boring read)", "UseControlNumber disabled"); + is($biblio->get_components_query, 'Host-item:("Some boring read")', "UseControlNumber disabled"); t::lib::Mocks::mock_preference( 'UseControlNumber', '1' ); my $marc_001_field = MARC::Field->new('001', $biblionumber); -- 2.39.5