From 25ea703e30bd822bbfc2e1ba1f898bb2179bc4f8 Mon Sep 17 00:00:00 2001 From: Henri-Damien LAURENT Date: Wed, 19 Nov 2008 15:36:18 +0100 Subject: [PATCH] problem saving authority with ? and other special characters [resend] Filtering those signs in order not to have them interpreted. Removing some warns Signed-off-by: Henri-Damien LAURENT --- C4/AuthoritiesMarc.pm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/C4/AuthoritiesMarc.pm b/C4/AuthoritiesMarc.pm index 6080c39501..7751a1013c 100644 --- a/C4/AuthoritiesMarc.pm +++ b/C4/AuthoritiesMarc.pm @@ -796,7 +796,8 @@ sub FindDuplicateAuthority { # warn "record :".$record->as_formatted." auth_tag_to_report :$auth_tag_to_report"; # build a request for SearchAuthorities my $query='at='.$authtypecode.' '; - map {$query.= " and he=\"".$_->[1]."\"" if ($_->[0]=~/[A-z]/)} $record->field($auth_tag_to_report)->subfields() if $record->field($auth_tag_to_report); + my $filtervalues=qr([\001-\040\!\'\"\`\#\$\%\&\*\+,\-\./:;<=>\?\@\(\)\{\[\]\}_\|\~]); + map {$_->[1]=~s/$filtervalues/ /g; $query.= " and he,wrdl=\"".$_->[1]."\"" if ($_->[0]=~/[A-z]/)} $record->field($auth_tag_to_report)->subfields() if $record->field($auth_tag_to_report); my ($error, $results, $total_hits)=SimpleSearch( $query, 0, 1, [ "authorityserver" ] ); # there is at least 1 result => return the 1st one if (@$results>0) { @@ -1152,7 +1153,7 @@ sub merge { my $dbh=C4::Context->dbh; my $authtypecodefrom = GetAuthTypeCode($mergefrom); my $authtypecodeto = GetAuthTypeCode($mergeto); - warn "mergefrom : $authtypecodefrom $mergefrom mergeto : $authtypecodeto $mergeto "; +# warn "mergefrom : $authtypecodefrom $mergefrom mergeto : $authtypecodeto $mergeto "; # return if authority does not exist my @X = $MARCfrom->fields(); return "error MARCFROM not a marcrecord ".Data::Dumper::Dumper($MARCfrom) if $#X == -1; @@ -1226,7 +1227,7 @@ sub merge { my $update; $marcrecord= MARC::Record->new_from_xml($marcrecord,"utf8",C4::Context->preference("marcflavour")) unless(C4::Context->preference('NoZebra')); foreach my $tagfield (@tags_using_authtype){ - warn "tagfield : $tagfield "; +# warn "tagfield : $tagfield "; foreach my $field ($marcrecord->field($tagfield)){ my $auth_number=$field->subfield("9"); my $tag=$field->tag(); -- 2.39.5