Bug 8550: Z39.50 searches for ISBN/ISSN problematic
[koha.git] / C4 / Biblio.pm
index f8ba099..c479502 100644 (file)
@@ -105,6 +105,7 @@ BEGIN {
       &ModBiblioframework
       &ModZebra
       &UpdateTotalIssues
+      &RemoveAllNsb
     );
 
     # To delete something
@@ -3876,6 +3877,50 @@ sub UpdateTotalIssues {
      return;
 }
 
+=head2 RemoveAllNsb
+
+    &RemoveAllNsb($record);
+
+Removes all nsb/nse chars from a record
+
+=cut
+
+sub RemoveAllNsb {
+    my $record = shift;
+
+    SetUTF8Flag($record);
+
+    foreach my $field ($record->fields()) {
+        if ($field->is_control_field()) {
+            $field->update(nsb_clean($field->data()));
+        } else {
+            my @subfields = $field->subfields();
+            my @new_subfields;
+            foreach my $subfield (@subfields) {
+                push @new_subfields, $subfield->[0] => nsb_clean($subfield->[1]);
+            }
+            if (scalar(@new_subfields) > 0) {
+                my $new_field;
+                eval {
+                    $new_field = MARC::Field->new(
+                        $field->tag(),
+                        $field->indicator(1),
+                        $field->indicator(2),
+                        @new_subfields
+                    );
+                };
+                if ($@) {
+                    warn "error in RemoveAllNsb : $@";
+                } else {
+                    $field->replace_with($new_field);
+                }
+            }
+        }
+    }
+
+    return $record;
+}
+
 1;