koha-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Koha-cvs] koha/z3950 processz3950queue [rel_2_2]


From: Henri-Damien LAURENT
Subject: [Koha-cvs] koha/z3950 processz3950queue [rel_2_2]
Date: Mon, 09 Oct 2006 13:48:22 +0000

CVSROOT:        /sources/koha
Module name:    koha
Branch:         rel_2_2
Changes by:     Henri-Damien LAURENT <hdl>      06/10/09 13:48:22

Modified files:
        z3950          : processz3950queue 

Log message:
        BugFixing : re generate fields and subfields to recode them.
        
        BEWARE : Support for Some peculiar characters such as 'oe' has to be 
improved.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/z3950/processz3950queue?cvsroot=koha&only_with_tag=rel_2_2&r1=1.13.2.6&r2=1.13.2.7

Patches:
Index: processz3950queue
===================================================================
RCS file: /sources/koha/koha/z3950/Attic/processz3950queue,v
retrieving revision 1.13.2.6
retrieving revision 1.13.2.7
diff -u -b -r1.13.2.6 -r1.13.2.7
--- processz3950queue   25 Sep 2006 14:02:42 -0000      1.13.2.6
+++ processz3950queue   9 Oct 2006 13:48:22 -0000       1.13.2.7
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-# $Id: processz3950queue,v 1.13.2.6 2006/09/25 14:02:42 tipaul Exp $
+# $Id: processz3950queue,v 1.13.2.7 2006/10/09 13:48:22 hdl Exp $
 use MARC::Record;
 use C4::Context;
 use DBI;
@@ -298,27 +298,30 @@
                                           warn "decodage cible : 
".$targetcharset;
                                           my $newRecord=MARC::Record->new();
                                           foreach my $field 
($marcrecord->fields()){
-                                            my $newField=$field->clone;
                                             if ($field->tag()<'010'){
                                               
$newRecord->insert_grouped_field($field);
                                             } else {
-                                              foreach my $subfield 
($newField->subfields()){
-  #                                               warn ' valeur avant 
encodage'.$subfield->[1];
-#                                                 map 
{char_decode($_,"UNIMARC");Encode::from_to($_,$decoder->name,$targetcharset);$_=~tr#\r##}
 @$subfield;
-                                                map 
{char_decode($_,"UNIMARC");Encode::from_to($_,$decoder->name,$targetcharset);$_=~tr#\r##}
 @$subfield;
-  #                                               warn ' valeur apres 
encodage'.$subfield->[1];
-  #                                               warn ' valeur 
theorique'.Encode::from_to($_,$decoder->name,$targetcharset);
+                                              my $newField;
+                                              my $createdfield=0;
+                                              foreach my $subfield 
($field->subfields()){
+                                                if ($createdfield){
                                                 if (($newField->tag eq '100')) 
{
                                                     
substr($subfield->[1],26,2,"0103") if ($targetcharset eq "latin1");
                                                     
substr($subfield->[1],26,4,"5050") if ($targetcharset eq "utf8");
                                                 }
-                                                
$newField->update($subfield->[0]=>$subfield->[1])
+                                                  map 
{char_decode($_,"UNIMARC");Encode::from_to($_,$decoder->name,$targetcharset);$_=~tr#\r##}
 @$subfield;
+                                                  
$newField->add_subfields($subfield->[0]=>$subfield->[1]);
+                                                } else {
+                                                  map 
{char_decode($_,"UNIMARC");Encode::from_to($_,$decoder->name,$targetcharset);$_=~tr#\r##}
 @$subfield;
+                                                  
$newField=MARC::Field->new($field->tag(),$field->indicator(1),$field->indicator(2),$subfield->[0]=>$subfield->[1]);
+                                                  $createdfield=1;
+                                                }
                                               }
                                               
$newRecord->insert_grouped_field($newField);
                                             }
                                           }
-                                          $newRecord->encoding('UTF-8') if 
($targetcharset eq 'utf8');
-                                          $newRecord->encoding('MARC-8') if 
($targetcharset ne 'utf8');
+#                                           $newRecord->encoding('UTF-8') if 
($targetcharset eq 'utf8');
+#                                           $newRecord->encoding('MARC-8') if 
($targetcharset ne 'utf8');
                                           warn $newRecord->as_formatted(); 
                                           $globalencoding = $targetcharset;
                                           $result.=$newRecord->as_usmarc;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]