https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=32464
--- Comment #15 from Nick Clemens <[email protected]> --- (In reply to Jonathan Druart from comment #14) > (In reply to Nick Clemens from comment #13) > > See comment 5, please test > > What/how did you test? > Fortunately, I still had the script I used, it seems we have improved things though, I get much smaller results: Rate noPassMSS passMSS noPassMSS 14088/s -- -14% passMSS 16373/s 16% -- #!/usr/bin/env perl use strict; use warnings; use Benchmark qw/cmpthese timethese/; use Koha::Biblios; my $biblio = Koha::Biblios->find( 25 ); my $record = $biblio->metadata->record; my @items = $biblio->items->as_list; my $record_processor = Koha::RecordProcessor->new({ filters => ['EmbedItems'], options => { interface => 'opac', items => \@items } }); cmpthese( -10, { noPassMSS => sub { $record_processor->process( $record, 0); }, passMSS => sub { $record_processor->process( $record, 1); }, } ); Diff: diff --git a/Koha/Filter/MARC/EmbedItems.pm b/Koha/Filter/MARC/EmbedItems.pm index 2839694ff8..7401c3ebb9 100644 --- a/Koha/Filter/MARC/EmbedItems.pm +++ b/Koha/Filter/MARC/EmbedItems.pm @@ -67,6 +67,7 @@ Embed items into the MARC::Record object. sub filter { my $self = shift; my $record = shift; + my $pass_mss = shift; return unless defined $record and ref($record) eq 'MARC::Record'; @@ -76,6 +77,8 @@ sub filter { my @item_fields; + $mss = undef unless $pass_mss; + foreach my $item ( @{$items} ) { push @item_fields, $item->as_marc_field( { mss => $mss } ); } diff --git a/Koha/Item.pm b/Koha/Item.pm index 7251a8a094..f4e701bd58 100644 --- a/Koha/Item.pm +++ b/Koha/Item.pm @@ -939,15 +939,15 @@ with the current mappings configuration. =cut sub as_marc_field { - my ( $self ) = @_; + my ( $self, $params ) = @_; my ( $itemtag, $itemtagsubfield) = C4::Biblio::GetMarcFromKohaField( "items.itemnumber" ); - my $tagslib = C4::Biblio::GetMarcStructure( 1, $self->biblio->frameworkcode, { unsafe => 1 }); + my $mss = $params->{mss} // C4::Biblio::GetMarcSubfieldStructure( '', { unsafe => 1 } ); my @subfields; - my $item_field = $tagslib->{$itemtag}; + my $item_field = $mss->{$itemtag}; my $more_subfields = $self->additional_attributes->to_hashref; foreach my $subfield ( diff --git a/Koha/RecordProcessor.pm b/Koha/RecordProcessor.pm index ec7cbea0ca..fff2e7810a 100644 --- a/Koha/RecordProcessor.pm +++ b/Koha/RecordProcessor.pm @@ -172,12 +172,13 @@ return value will be of the same type. sub process { my $self = shift; my $record = shift || $self->record; + my $pass_mss = shift; return unless defined $record; foreach my $filterobj (@{$self->filters}) { next unless $filterobj; - $filterobj->filter($record); + $filterobj->filter($record, $pass_mss); } -- You are receiving this mail because: You are watching all bug changes. _______________________________________________ Koha-bugs mailing list [email protected] https://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-bugs website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/
