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 <mtompset@hotmail.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
(cherry picked from commit c59586aebe)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
Jonathan Druart 2019-05-05 12:41:46 -05:00 committed by Fridolin Somers
parent 371389605f
commit e9455e8d55
1 changed files with 9 additions and 3 deletions

View File

@ -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 (