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

Henri-Damien LAURENT laurenthdl at alinto.com
Mon Oct 9 15:48:22 CEST 2006


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;





More information about the Koha-cvs mailing list