[Koha-patches] [PATCH] (bug #4856) fix rebuild zebra to delete NSB/NSE chars

Nahuel ANGELINETTI nahuel.angelinetti at biblibre.com
Tue Jun 8 11:16:36 CEST 2010


---
 misc/migration_tools/rebuild_zebra.pl |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/misc/migration_tools/rebuild_zebra.pl b/misc/migration_tools/rebuild_zebra.pl
index fe85e13..c8ab757 100755
--- a/misc/migration_tools/rebuild_zebra.pl
+++ b/misc/migration_tools/rebuild_zebra.pl
@@ -385,6 +385,7 @@ sub get_corrected_marc_record {
         }
         if ( C4::Context->preference("marcflavour") eq "UNIMARC" ) {
             fix_unimarc_100($marc);
+            fix_unimarc_titles( $marc );
         }
     }
 
@@ -494,6 +495,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.
-- 
1.7.0.4



More information about the Koha-patches mailing list