From 13750da4bc7c8b536842c867e88ec81827e11640 Mon Sep 17 00:00:00 2001 From: Mark Tompsett Date: Tue, 1 Aug 2017 14:28:34 -0400 Subject: [PATCH] [SIGNED-OFF] Bug 14385: Refactor EmbedItemsInMarcBiblio parameters to hashref Signed-off-by: Aleisha Amohia --- C4/Biblio.pm | 18 +++++++++++++++--- C4/Record.pm | 5 ++++- Koha/BiblioUtils/Iterator.pm | 4 +++- Koha/Exporter/Record.pm | 5 ++++- cataloguing/additem.pl | 4 +++- misc/migration_tools/build_oai_sets.pl | 4 +++- t/db_dependent/Items.t | 31 +++++++++++++++++++++++-------- 7 files changed, 55 insertions(+), 16 deletions(-) diff --git a/C4/Biblio.pm b/C4/Biblio.pm index 6127ded..be8b791 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -1205,7 +1205,10 @@ sub GetMarcBiblio { C4::Biblio::_koha_marc_update_bib_ids( $record, $frameworkcode, $biblionumber, $biblioitemnumber ); - C4::Biblio::EmbedItemsInMarcBiblio( $record, $biblionumber, undef, $opac ) + C4::Biblio::EmbedItemsInMarcBiblio({ + marc_record => $record, + biblionumber => $biblionumber, + opac => $opac }) if ($embeditems); return $record; @@ -2884,7 +2887,11 @@ sub ModZebra { =head2 EmbedItemsInMarcBiblio - EmbedItemsInMarcBiblio($marc, $biblionumber, $itemnumbers, $opac); + EmbedItemsInMarcBiblio({ + marc_record => $marc, + biblionumber => $biblionumber, + item_numbers => $itemnumbers, + opac => $opac }); Given a MARC::Record object containing a bib record, modify it to include the items attached to it as 9XX @@ -2896,11 +2903,16 @@ If $opac is true, then opac-relevant suppressions are included. =cut sub EmbedItemsInMarcBiblio { - my ($marc, $biblionumber, $itemnumbers, $opac) = @_; + my ($params) = @_; + my ($marc, $biblionumber, $itemnumbers, $opac); + $marc = $params->{marc_record}; if ( !$marc ) { carp 'EmbedItemsInMarcBiblio: No MARC record passed'; return; } + $biblionumber = $params->{biblionumber}; + $itemnumbers = $params->{item_numbers}; + $opac = $params->{opac}; $itemnumbers = [] unless defined $itemnumbers; diff --git a/C4/Record.pm b/C4/Record.pm index af619ac..c125658 100644 --- a/C4/Record.pm +++ b/C4/Record.pm @@ -473,7 +473,10 @@ sub marcrecord2csv { # Getting the record my $record = GetMarcBiblio({ biblionumber => $biblio }); return unless $record; - C4::Biblio::EmbedItemsInMarcBiblio( $record, $biblio, $itemnumbers ); + C4::Biblio::EmbedItemsInMarcBiblio({ + marc_record => $record, + biblionumber => $biblio, + item_numbers => $itemnumbers }); # Getting the framework my $frameworkcode = GetFrameworkCode($biblio); diff --git a/Koha/BiblioUtils/Iterator.pm b/Koha/BiblioUtils/Iterator.pm index 0e71966..ff60871 100644 --- a/Koha/BiblioUtils/Iterator.pm +++ b/Koha/BiblioUtils/Iterator.pm @@ -108,7 +108,9 @@ sub next { if ( !defined($bibnum) ); # TODO this should really be in Koha::BiblioUtils or something similar. - C4::Biblio::EmbedItemsInMarcBiblio( $marc, $bibnum ); + C4::Biblio::EmbedItemsInMarcBiblio({ + marc_record => $marc, + biblionumber => $bibnum }); } if (wantarray) { diff --git a/Koha/Exporter/Record.pm b/Koha/Exporter/Record.pm index f9d62df..45da518 100644 --- a/Koha/Exporter/Record.pm +++ b/Koha/Exporter/Record.pm @@ -70,7 +70,10 @@ sub _get_biblio_for_export { return if $@ or not defined $record; if ($export_items) { - C4::Biblio::EmbedItemsInMarcBiblio( $record, $biblionumber, $itemnumbers ); + C4::Biblio::EmbedItemsInMarcBiblio({ + marc_record => $record, + biblionumber => $biblionumber, + item_numbers => $itemnumbers }); if ($only_export_items_for_branch) { my ( $homebranchfield, $homebranchsubfield ) = GetMarcFromKohaField( 'items.homebranch', '' ); # Should be GetFrameworkCode( $biblionumber )? diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index eb18cc3..be05384 100755 --- a/cataloguing/additem.pl +++ b/cataloguing/additem.pl @@ -733,7 +733,9 @@ my @big_array; #---- finds where items.itemnumber is stored my ( $itemtagfield, $itemtagsubfield) = &GetMarcFromKohaField("items.itemnumber", $frameworkcode); my ($branchtagfield, $branchtagsubfield) = &GetMarcFromKohaField("items.homebranch", $frameworkcode); -C4::Biblio::EmbedItemsInMarcBiblio($temp, $biblionumber); +C4::Biblio::EmbedItemsInMarcBiblio({ + marc_record => $temp, + biblionumber => $biblionumber }); my @fields = $temp->fields(); diff --git a/misc/migration_tools/build_oai_sets.pl b/misc/migration_tools/build_oai_sets.pl index 926b1db..50b8d1f 100755 --- a/misc/migration_tools/build_oai_sets.pl +++ b/misc/migration_tools/build_oai_sets.pl @@ -127,7 +127,9 @@ foreach my $res (@$results) { next; } if($embed_items) { - C4::Biblio::EmbedItemsInMarcBiblio($record, $biblionumber); + C4::Biblio::EmbedItemsInMarcBiblio({ + marc_record => $record, + biblionumber => $biblionumber }); } my @biblio_sets = CalcOAISetsBiblio($record, $mappings); diff --git a/t/db_dependent/Items.t b/t/db_dependent/Items.t index 4746225..05356c6 100755 --- a/t/db_dependent/Items.t +++ b/t/db_dependent/Items.t @@ -567,18 +567,25 @@ subtest 'C4::Biblio::EmbedItemsInMarcBiblio' => sub { my $record = C4::Biblio::GetMarcBiblio({ biblionumber => $biblionumber }); warning_is { C4::Biblio::EmbedItemsInMarcBiblio() } { carped => 'EmbedItemsInMarcBiblio: No MARC record passed' }, - 'Should crap is no record passed.'; + 'Should carp no record is passed.'; - C4::Biblio::EmbedItemsInMarcBiblio( $record, $biblionumber ); + C4::Biblio::EmbedItemsInMarcBiblio({ + marc_record => $record, + biblionumber => $biblionumber }); my @items = $record->field($itemfield); is( scalar @items, $number_of_items, 'Should return all items' ); - C4::Biblio::EmbedItemsInMarcBiblio( $record, $biblionumber, - [ $itemnumbers[1], $itemnumbers[3] ] ); + C4::Biblio::EmbedItemsInMarcBiblio({ + marc_record => $record, + biblionumber => $biblionumber, + item_numbers => [ $itemnumbers[1], $itemnumbers[3] ] }); @items = $record->field($itemfield); is( scalar @items, 2, 'Should return all items present in the list' ); - C4::Biblio::EmbedItemsInMarcBiblio( $record, $biblionumber, undef, 1 ); + C4::Biblio::EmbedItemsInMarcBiblio({ + marc_record => $record, + biblionumber => $biblionumber, + opac => 1 }); @items = $record->field($itemfield); is( scalar @items, $number_of_items, 'Should return all items for opac' ); @@ -586,13 +593,18 @@ subtest 'C4::Biblio::EmbedItemsInMarcBiblio' => sub { homebranch: ['$library1->{branchcode}']"; t::lib::Mocks::mock_preference( 'OpacHiddenItems', $opachiddenitems ); - C4::Biblio::EmbedItemsInMarcBiblio( $record, $biblionumber ); + C4::Biblio::EmbedItemsInMarcBiblio({ + marc_record => $record, + biblionumber => $biblionumber }); @items = $record->field($itemfield); is( scalar @items, $number_of_items, 'Even with OpacHiddenItems set, all items should have been embedded' ); - C4::Biblio::EmbedItemsInMarcBiblio( $record, $biblionumber, undef, 1 ); + C4::Biblio::EmbedItemsInMarcBiblio({ + marc_record => $record, + biblionumber => $biblionumber, + opac => 1 }); @items = $record->field($itemfield); is( scalar @items, @@ -603,7 +615,10 @@ subtest 'C4::Biblio::EmbedItemsInMarcBiblio' => sub { $opachiddenitems = " homebranch: ['$library1->{branchcode}', '$library2->{branchcode}']"; t::lib::Mocks::mock_preference( 'OpacHiddenItems', $opachiddenitems ); - C4::Biblio::EmbedItemsInMarcBiblio( $record, $biblionumber, undef, 1 ); + C4::Biblio::EmbedItemsInMarcBiblio({ + marc_record => $record, + biblionumber => $biblionumber, + opac => 1 }); @items = $record->field($itemfield); is( scalar @items, -- 2.1.4