From 80baaf198e795eaf194396fade1a4134d7932fe9 Mon Sep 17 00:00:00 2001 From: Nahuel ANGELINETTI Date: Tue, 8 Jun 2010 11:14:29 +0200 Subject: [PATCH] (bug #4856) fix rebuild zebra to delete NSB/NSE chars --- misc/migration_tools/rebuild_zebra.pl | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/misc/migration_tools/rebuild_zebra.pl b/misc/migration_tools/rebuild_zebra.pl index 0f4b4a0b13..606bafea43 100755 --- a/misc/migration_tools/rebuild_zebra.pl +++ b/misc/migration_tools/rebuild_zebra.pl @@ -358,6 +358,7 @@ sub generate_deleted_marc_records { } if (C4::Context->preference("marcflavour") eq "UNIMARC") { fix_unimarc_100($marc); + fix_unimarc_titles( $marc ); } print OUT ($as_xml) ? $marc->as_xml_record() : $marc->as_usmarc(); @@ -488,6 +489,27 @@ sub fix_authority_id { } } +sub fix_unimarc_titles { + my $marc = shift; + + for my $field ($marc->field('200'), $marc->field('225'), $marc->field('400'), $marc->field('410') ){ + my $newfield; + for ($field->subfields()){ + # remove SUDOC specific NSB NSE + $_->[1] =~ s/\x{98}|\x{9C}/ /g; + $_->[1] =~ s/\x{88}|\x{89}/ /g; + $_->[1] =~ s/Histoires//g; + unless ($newfield) { + $newfield = MARC::Field->new($field->tag(), '', '', @$_); + }else{ + $newfield->add_subfields(@$_); + } + + } + $field->replace_with($newfield); + } +} + sub fix_unimarc_100 { # FIXME - again, if this is necessary, it belongs in C4::AuthoritiesMarc. my $marc = shift; -- 2.39.5