From 55d190d6f8847ad697a0182dbb545224a34e86da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9rick=20Capovilla?= <frederick.capovilla@libeo.com>
Date: Wed, 28 Sep 2011 13:58:14 -0400
Subject: [PATCH] Normalize records imported from Z39.50 servers.

Some Z39.50 server may use the MARC-8 encoding, which uses separated
diacritics. By forcing a normalization, all imported records will have
combined diacritics.

Records with separated diacritics might not show up in Zebra searches if
the search terms use accented characters.
---
 C4/Breeding.pm              |    3 +++
 C4/ImportBatch.pm           |    4 ++++
 acqui/z3950_search.pl       |    4 ++++
 cataloguing/z3950_search.pl |    4 ++++
 4 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/C4/Breeding.pm b/C4/Breeding.pm
index 0653d50..9ca6b12 100644
--- a/C4/Breeding.pm
+++ b/C4/Breeding.pm
@@ -94,6 +94,9 @@ sub ImportBreeding {
         ($marcrecord, $charset_result, $charset_errors) = 
             MarcToUTF8Record($marcarray[$i]."\x1D", C4::Context->preference("marcflavour"), $encoding);
         
+        # Normalize the record so it doesn't have separated diacritics
+        SetUTF8Flag($marcrecord);
+
 #         warn "$i : $marcarray[$i]";
         # FIXME - currently this does nothing 
         my @warnings = $marcrecord->warnings();
diff --git a/C4/ImportBatch.pm b/C4/ImportBatch.pm
index 386bac9..d7c755c 100644
--- a/C4/ImportBatch.pm
+++ b/C4/ImportBatch.pm
@@ -337,6 +337,10 @@ sub  BatchStageMarcRecords {
         if (scalar($marc_record->fields()) == 0) {
             push @invalid_records, $marc_blob;
         } else {
+
+            # Normalize the record so it doesn't have separated diacritics
+            SetUTF8Flag($marc_record);
+
             $num_valid++;
             $import_record_id = AddBiblioToBatch($batch_id, $rec_num, $marc_record, $encoding, int(rand(99999)), 0);
             if ($parse_items) {
diff --git a/acqui/z3950_search.pl b/acqui/z3950_search.pl
index 9dc8b6e..4f0be65 100755
--- a/acqui/z3950_search.pl
+++ b/acqui/z3950_search.pl
@@ -277,6 +277,10 @@ warn "query ".$query  if $DEBUG;
 ## In HEAD i change everything to UTF-8
 # In rel2_2 i am not sure what encoding is so no character conversion is done here
 ##Add necessary encoding changes to here -TG
+
+                        # Normalize the record so it doesn't have separated diacritics
+                        SetUTF8Flag($marcrecord);
+
                         my $oldbiblio = TransformMarcToKoha( $dbh, $marcrecord, "" );
                         $oldbiblio->{isbn}   =~ s/ |-|\.//g if $oldbiblio->{isbn};
                         # pad | and ( with spaces to allow line breaks in the HTML
diff --git a/cataloguing/z3950_search.pl b/cataloguing/z3950_search.pl
index a44b5ea..2668e27 100755
--- a/cataloguing/z3950_search.pl
+++ b/cataloguing/z3950_search.pl
@@ -245,6 +245,10 @@ warn "query ".$query  if $DEBUG;
 ## In HEAD i change everything to UTF-8
 # In rel2_2 i am not sure what encoding is so no character conversion is done here
 ##Add necessary encoding changes to here -TG
+
+                        # Normalize the record so it doesn't have separated diacritics
+                        SetUTF8Flag($marcrecord);
+
                         my $oldbiblio = TransformMarcToKoha( $dbh, $marcrecord, "" );
                         $oldbiblio->{isbn}   =~ s/ |-|\.//g if $oldbiblio->{isbn};
                         # pad | and ( with spaces to allow line breaks in the HTML
-- 
1.7.2.5