From 24dff7189bf52072d41435e1873dd50a0c84c746 Mon Sep 17 00:00:00 2001 From: Fridolin Somers Date: Wed, 19 Nov 2014 11:56:54 +0100 Subject: [PATCH] Bug 13296 - error when using z3950 with UNIMARC authorities When using a z3950 connexion with UNIMARC authorities, you get an error : Unsupported UNIMARC character encoding [ ] for XML output for UNIMARCAUTH; 100$a -> 20141119 I've seen thant Bug 2060 when adds authorities import adds a special behavior for UNIMARC : marc flavor must be UNIMARCAUTH instead of just UNIMARC. This patch adds the same behavior when using z3950 connexion and import. Test plan : - Use a UNIMARC install - Define a z3950 connexion for UNIMARC authorities - Go to Authorities module - Click on "New from Z39.50" - Perform a search => Without patch : you get the error => With patch : you get results - Import one result => You get the authoritie creation form with all datas You may check same plan with MARC21 install --- C4/Breeding.pm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/C4/Breeding.pm b/C4/Breeding.pm index cf32bf4..d1dbbcb 100644 --- a/C4/Breeding.pm +++ b/C4/Breeding.pm @@ -431,6 +431,9 @@ sub ImportBreedingAuth { my $searchbreeding = $dbh->prepare("select import_record_id from import_auths where control_number=? and authorized_heading=?"); # $encoding = C4::Context->preference("marcflavour") unless $encoding; + my $marc_type = C4::Context->preference('marcflavour'); + $marc_type .= 'AUTH' if ($marc_type eq 'UNIMARC'); + # fields used for import results my $imported=0; my $alreadyindb = 0; @@ -440,7 +443,7 @@ sub ImportBreedingAuth { for (my $i=0;$i<=$#marcarray;$i++) { my ($marcrecord, $charset_result, $charset_errors); ($marcrecord, $charset_result, $charset_errors) = - MarcToUTF8Record($marcarray[$i]."\x1D", C4::Context->preference("marcflavour"), $encoding); + MarcToUTF8Record($marcarray[$i]."\x1D", $marc_type, $encoding); # Normalize the record so it doesn't have separated diacritics SetUTF8Flag($marcrecord); @@ -542,6 +545,9 @@ sub Z3950SearchAuth { my $query; my $nterms=0; + my $marc_type = C4::Context->preference('marcflavour'); + $marc_type .= 'AUTH' if ($marc_type eq 'UNIMARC'); + if ($nameany) { $query .= " \@attr 1=1002 \"$nameany\" "; #Any name (this includes personal, corporate, meeting/conference authors, and author names in subject headings) #This attribute is supported by both the Library of Congress and Libraries Australia 08/05/2013 @@ -655,7 +661,7 @@ sub Z3950SearchAuth { $marcdata = $rec->raw(); my ($charset_result, $charset_errors); - ($marcrecord, $charset_result, $charset_errors)= MarcToUTF8Record($marcdata, C4::Context->preference('marcflavour'), $encoding[$k]); + ($marcrecord, $charset_result, $charset_errors)= MarcToUTF8Record($marcdata, $marc_type, $encoding[$k]); my $heading; my $heading_authtype_code; -- 1.9.1