@@ -, +, @@ hashref --- 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(-) --- a/C4/Biblio.pm +++ a/C4/Biblio.pm @@ -1191,7 +1191,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; @@ -2868,7 +2871,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 @@ -2880,11 +2887,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; --- a/C4/Record.pm +++ a/C4/Record.pm @@ -473,7 +473,10 @@ sub marcrecord2csv { # Getting the record my $record = GetMarcBiblio($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); --- a/Koha/BiblioUtils/Iterator.pm +++ a/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) { --- a/Koha/Exporter/Record.pm +++ a/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 )? --- a/cataloguing/additem.pl +++ a/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(); --- a/misc/migration_tools/build_oai_sets.pl +++ a/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); --- a/t/db_dependent/Items.t +++ a/t/db_dependent/Items.t @@ -567,18 +567,25 @@ subtest 'C4::Biblio::EmbedItemsInMarcBiblio' => sub { my $record = C4::Biblio::GetMarcBiblio($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, --