Bug 28290: Don't send subfields to 'as_string' if none to send

This fixes an error where we send a blank string to
Marc::Field->as_string

The subroutine fails as the regex is marked as incomplete as there is
nothing between the brackets

Also fixes a missing hidden input for 'item_action' when no items are
staged during import

 1 - Define a new matching rule with no subfields
    Match-threshold: 1000
    Record type: bibliographic record
    Search-index: Other-control-number
    Score: 1000
    Tag: 035
    Subfields:
    Offset:
    Length:
 2 - Attempt to stage a record with an 035 using this rule (i will
     attach example to bug)
 3 - Staging fails
 4 - Stage again with no matching rule
 5 - Manage the staged record, try to apply the matching rule
 6 - It fails, 500 error
 7 - Apply patch
 8 - Restart all the things
 9 - Apply rule again, it works!
10 - Stage the record again using the rule for matching
11 - It stages and matches!

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit eded6edacc)

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Nick Clemens 2021-05-04 18:29:05 +00:00 committed by Lucas Gass
parent 41346b523e
commit 0c8e4780d7
2 changed files with 4 additions and 1 deletions

View file

@ -838,10 +838,12 @@ sub _get_match_keys {
}
elsif ( $field->is_control_field() ) {
$string = $field->data();
} else {
} elsif ( defined $component->{subfields} && keys %{$component->{subfields}} ){
$string = $field->as_string(
join('', keys %{ $component->{ subfields } }), ' ' # ' ' as separator
);
} else {
$string = $field->as_string();
}
if ($component->{'length'}>0) {

View file

@ -1,5 +1,6 @@
[% IF item_action_ignore AND num_items == 0 %]
No items were found during staging
<input type ="hidden" name="item_action" value="ignore">
[% ELSE %]
<select name="item_action" id="item_action">
[% IF ( item_action_always_add ) %]