From: Jonathan Druart Date: Sun, 5 May 2019 17:41:46 +0000 (-0500) Subject: Bug 22571: Handle control fields in MMT for conditionals X-Git-Url: http://git.equinoxoli.org/?p=koha-equinox.git;a=commitdiff_plain;h=c59586aebe1d8eab56d3cd32b5156fc1a61f11ec Bug 22571: Handle control fields in MMT for conditionals Control fields are not handled correctly by Koha::SimpleMARC when comparaison (with or without regex) is done. Which means we did not support something like: Do something if control field 008 equals or matches "a string" Test plan: Create a new MARC modification template and a new action, like: Add new field 100$a with value "foo bar" if 008 (or any other control fields) matches (or equals) a regex Then use the record mofication tool and confirm that the new field is create if the regex matches 008 of the bib record Signed-off-by: Mark Tompsett Signed-off-by: Nick Clemens Signed-off-by: Martin Renvoize --- diff --git a/Koha/SimpleMARC.pm b/Koha/SimpleMARC.pm index de76cd3..5a916bd 100644 --- a/Koha/SimpleMARC.pm +++ b/Koha/SimpleMARC.pm @@ -415,9 +415,15 @@ sub field_equals { my @field_numbers = (); my $current_field_number = 1; FIELDS: for my $field ( $record->field( $fieldName ) ) { - my @subfield_values = $subfieldName - ? $field->subfield( $subfieldName ) - : map { $_->[1] } $field->subfields; + my @subfield_values; + if ( $field->is_control_field ) { + push @subfield_values, $field->data; + } else { + @subfield_values = + $subfieldName + ? $field->subfield($subfieldName) + : map { $_->[1] } $field->subfields; + } SUBFIELDS: for my $subfield_value ( @subfield_values ) { if (