From 110a3e8bde9e2d08dfdad2ccd0801e67a29eaaa2 Mon Sep 17 00:00:00 2001 From: Magnus Enger Date: Wed, 29 Jan 2020 23:59:44 +0100 Subject: [PATCH] Bug 24531 - Fix OAI-PMH sets for records with repeated fields Currently, an OAI-PMH set mapping will only match if the value it is looking for occurs in the first instance of a repeated field. To test: - Apply the first patch with two new tests - Run something like this: sudo koha-shell -c "prove -v t/db_dependent/OAI/Sets.t" kohadev - Verify that the last test fails - Apply this secind patch - Rerun the test file above - Verify that all tests now pass --- C4/OAI/Sets.pm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/C4/OAI/Sets.pm b/C4/OAI/Sets.pm index 44100e8794..454f80c224 100644 --- a/C4/OAI/Sets.pm +++ b/C4/OAI/Sets.pm @@ -541,7 +541,18 @@ sub _evalRule { my $subfield = $mapping->{'marcsubfield'}; my $operator = $mapping->{'operator'}; my $value = $mapping->{'marcvalue'}; - my @subfield_values = $record->subfield($field, $subfield); + + my @subfield_values; + # Get all the fields with the given tag + my @fields = $record->field($field); + # Iterate over all the fields + foreach my $field ( @fields ) { + # Get the value from the given subfield + if ( my $subfield_value = $field->subfield($subfield) ) { + push @subfield_values, $subfield_value; + } + } + if ($operator eq 'notequal') { if(0 == grep /^$value$/, @subfield_values) { return 1; -- 2.11.0