Bugzilla – Attachment 139403 Details for
Bug 27138
Host items are not included in Z39 results when using EasyAnalytics
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 27138: Add preference EmbedHostItemsInSearchEngine
Bug-27138-Add-preference-EmbedHostItemsInSearchEng.patch (text/plain), 9.36 KB, created by
Nick Clemens (kidclamp)
on 2022-08-18 16:08:58 UTC
(
hide
)
Description:
Bug 27138: Add preference EmbedHostItemsInSearchEngine
Filename:
MIME Type:
Creator:
Nick Clemens (kidclamp)
Created:
2022-08-18 16:08:58 UTC
Size:
9.36 KB
patch
obsolete
>From 86cf12bae4daba2af880fc27cc8f21f7c0f4dbf0 Mon Sep 17 00:00:00 2001 >From: Nick Clemens <nick@bywatersolutions.com> >Date: Wed, 16 Jun 2021 11:57:31 +0000 >Subject: [PATCH] Bug 27138: Add preference EmbedHostItemsInSearchEngine > >--- > C4/Search.pm | 2 +- > C4/XSLT.pm | 3 ++- > Koha/Biblio/Metadata.pm | 3 ++- > .../bug_27138_add_embedHostItems_syspref.perl | 9 +++++++++ > installer/data/mysql/mandatory/sysprefs.sql | 1 + > .../modules/admin/preferences/searching.pref | 7 +++++++ > misc/migration_tools/rebuild_zebra.pl | 9 +++------ > t/db_dependent/Items.t | 19 +++++++++++++++++-- > 8 files changed, 42 insertions(+), 11 deletions(-) > create mode 100644 installer/data/mysql/atomicupdate/bug_27138_add_embedHostItems_syspref.perl > >diff --git a/C4/Search.pm b/C4/Search.pm >index 75da21a4e6..ce8c710932 100644 >--- a/C4/Search.pm >+++ b/C4/Search.pm >@@ -1755,7 +1755,7 @@ sub searchResults { > my $marcflavor = C4::Context->preference("marcflavour"); > > # adding linked items that belong to host records >- if ( C4::Context->preference('EasyAnalyticalRecords') ) { >+ if ( C4::Context->preference('EasyAnalyticalRecords') && !C4::Context->preference('EmbedHostItemsInSearchEngine') ) { > my $analyticsfield = '773'; > if ($marcflavor eq 'MARC21') { > $analyticsfield = '773'; >diff --git a/C4/XSLT.pm b/C4/XSLT.pm >index 42d5b4e47d..0fe975f3a4 100644 >--- a/C4/XSLT.pm >+++ b/C4/XSLT.pm >@@ -326,7 +326,8 @@ Is only used in this module currently. > sub buildKohaItemsNamespace { > my ($biblionumber, $hidden_items, $items_rs) = @_; > >- my @host_itemnumbers = C4::Items::get_hostitemnumbers_of( $biblionumber ); >+ my @host_itemnumbers = (); >+ @host_itemnumbers = C4::Items::get_hostitemnumbers_of( $biblionumber ) if C4::Context->preference('EmbedHostItemsInSearchEngine'); > $hidden_items ||= []; > > my $query = {}; >diff --git a/Koha/Biblio/Metadata.pm b/Koha/Biblio/Metadata.pm >index 825a3cf61f..b4e83381cc 100644 >--- a/Koha/Biblio/Metadata.pm >+++ b/Koha/Biblio/Metadata.pm >@@ -157,7 +157,8 @@ sub _embed_items { > $record->delete_field($field); > } > >- push @$itemnumbers, C4::Items::get_hostitemnumbers_of( $biblionumber ) if $params->{embed_host_items}; >+ push @$itemnumbers, C4::Items::get_hostitemnumbers_of( $biblionumber ) >+ if $params->{embed_host_items} && C4::Context->preference('EmbedHostItemsInSearchEngine'); > > my $items = Koha::Items->search([ > 'me.biblionumber' => $biblionumber, >diff --git a/installer/data/mysql/atomicupdate/bug_27138_add_embedHostItems_syspref.perl b/installer/data/mysql/atomicupdate/bug_27138_add_embedHostItems_syspref.perl >new file mode 100644 >index 0000000000..831443d937 >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_27138_add_embedHostItems_syspref.perl >@@ -0,0 +1,9 @@ >+$DBversion = 'XXX'; >+if( CheckVersion( $DBversion ) ) { >+ # you can use $dbh here like: >+ $dbh->do(q{ >+ INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES >+ ('EmbedHostItemsInSearchEngine','0','','Add host items to records in the search engine','YesNo'); >+ }); >+ NewVersion( $DBversion, 27138, "Add system preference EmbedHostItemsInSearchEngine"); >+} >diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql >index d151ba6493..d0f70cb02b 100644 >--- a/installer/data/mysql/mandatory/sysprefs.sql >+++ b/installer/data/mysql/mandatory/sysprefs.sql >@@ -205,6 +205,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('emailLibrarianWhenHoldIsPlaced','0',NULL,'If ON, emails the librarian whenever a hold is placed','YesNo'), > ('EmailOverduesNoEmail','1',NULL,'Send send overdues of patrons without email address to staff','YesNo'), > ('EmailPurchaseSuggestions','0','0|EmailAddressForSuggestions|BranchEmailAddress|KohaAdminEmailAddress','Choose email address that new purchase suggestions will be sent to: ','Choice'), >+('EmbedHostItemsInSearchEngine','0','','Add host items to records in the search engine','YesNo'), > ('EnableAdvancedCatalogingEditor','0','','Enable the Rancor advanced cataloging editor','YesNo'), > ('EnableBorrowerFiles','0',NULL,'If enabled, allows librarians to upload and attach arbitrary files to a borrower record.','YesNo'), > ('EnableExpiredPasswordReset', '0', NULL, 'Enable ability for patrons with expired password to reset their password directly', 'YesNo'), >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref >index 0997740dc0..c4c2762d35 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref >@@ -87,6 +87,13 @@ Searching: > 0: Disable > - "the cross_fields option for Elasticsearch searches, supported in Elasticsearch 6.X and above." > - "See documentation at https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#type-cross-fields" >+ - >+ - pref: EmbedHostItemsInSearchEngine >+ default: 0 >+ choices: >+ 1: Embed >+ 0: Don't embed >+ - 'host items in records in the search engine. Requires <a href="/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=EasyAnalyticalRecords">EasyAnalyticalRecords</a>' > Search form: > - > - pref : LoadSearchHistoryToTheFirstLoggedUser >diff --git a/misc/migration_tools/rebuild_zebra.pl b/misc/migration_tools/rebuild_zebra.pl >index 3d92b6e507..b03109d36d 100755 >--- a/misc/migration_tools/rebuild_zebra.pl >+++ b/misc/migration_tools/rebuild_zebra.pl >@@ -511,7 +511,8 @@ sub export_marc_records_from_sth { > if ($record_type eq 'biblio'){ > my $biblio = Koha::Biblios->find($record_number); > next unless $biblio; >- my @host_itemnumbers = C4::Items::get_hostitemnumbers_of( $record_number ); >+ my @host_itemnumbers = (); >+ @host_itemnumbers = C4::Items::get_hostitemnumbers_of( $record_number ) if C4::Context->preference('EmbedHostItemsInSearchEngine'); > my $items = Koha::Items->search({ > -or => [ > biblionumber => $record_number, >@@ -689,14 +690,10 @@ sub get_raw_marc_record { > > my $marc; > if ($record_type eq 'biblio') { >-<<<<<<< HEAD > eval { > my $biblio = Koha::Biblios->find($record_number); >- $marc = $biblio->metadata->record({ embed_items => 1 }); >+ $marc = $biblio->metadata->record({ embed_items => 1, embed_host_items => 1 }); > }; >-======= >- eval { $marc = C4::Biblio::GetMarcBiblio({ biblionumber => $record_number, embed_items => 1, embed_host_items => 1 }); }; >->>>>>>> Bug 27138: Index host items in child records when sending to search engine > if ($@ || !$marc) { > # here we do warn since catching an exception > # means that the bib was found but failed >diff --git a/t/db_dependent/Items.t b/t/db_dependent/Items.t >index b16c6cfc4c..1257492987 100755 >--- a/t/db_dependent/Items.t >+++ b/t/db_dependent/Items.t >@@ -666,7 +666,7 @@ subtest 'Koha::Item(s) tests' => sub { > }; > > subtest 'C4::Biblio::EmbedItemsInMarcBiblio' => sub { >- plan tests => 11; >+ plan tests => 12; > > $schema->storage->txn_begin(); > >@@ -710,6 +710,7 @@ subtest 'C4::Biblio::EmbedItemsInMarcBiblio' => sub { > push @itemnumbers, $itemnumber; > } > >+ t::lib::Mocks::mock_preference( 'EasyAnalyticalRecords', '1' ); > my $host_item = $builder->build_sample_item({ homebranch => $library2->{branchcode} }); > my $child_field = PrepHostMarcField( $host_item->biblionumber, $host_item->itemnumber, 'MARC21'); > my $child_record = $biblio->metadata->record; >@@ -745,12 +746,26 @@ subtest 'C4::Biblio::EmbedItemsInMarcBiblio' => sub { > @items = $record->field($itemfield); > is( scalar @items, $number_of_items + 1, 'Should return all items plus host items' ); > >+ t::lib::Mocks::mock_preference('EmbedHostItemsInSearchEngine', '1'); > $marc_with_items = C4::Biblio::GetMarcBiblio({ > biblionumber => $biblio->biblionumber, > embed_items => 1, > embed_host_items => 1 > }); >- is_deeply( $record, $marc_with_items, 'A direct call to GetMarcBiblio with items matches'); >+ is_deeply( $record, $marc_with_items, 'A direct call to GetMarcBiblio with embed host items matches if embedding items in search engine'); >+ $record = C4::Biblio::GetMarcBiblio({ biblionumber => $biblio->biblionumber }); >+ C4::Biblio::EmbedItemsInMarcBiblio({ >+ marc_record => $record, >+ biblionumber => $biblio->biblionumber, >+ embed_host_items => 0 >+ }); >+ t::lib::Mocks::mock_preference('EmbedHostItemsInSearchEngine', '0'); >+ $marc_with_items = C4::Biblio::GetMarcBiblio({ >+ biblionumber => $biblio->biblionumber, >+ embed_items => 1, >+ embed_host_items => 1 >+ }); >+ is_deeply( $record, $marc_with_items, 'A direct call to GetMarcBiblio with embed host items does not include host item if not embedding items in search engine'); > > C4::Biblio::EmbedItemsInMarcBiblio({ > marc_record => $record, >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 27138
:
114126
|
115158
|
117333
|
117334
|
117346
|
117347
|
122035
|
125698
|
125699
|
125700
|
125701
|
128175
|
128176
|
128177
|
128178
|
128179
|
139401
|
139402
|
139403
|
139404
|
144200
|
144201
|
144202
|
144203