From 71a77b6f1600a154b3d399d7d3aca3b1375472d4 Mon Sep 17 00:00:00 2001 From: Janusz Kaczmarek Date: Mon, 3 Jan 2011 16:32:21 +0200 Subject: [PATCH] Bug 5572 - refinements to function merge sub merge in C4::AuthoritiesMarc --- C4/AuthoritiesMarc.pm | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/C4/AuthoritiesMarc.pm b/C4/AuthoritiesMarc.pm index 9ea3b2d..341c78e 100644 --- a/C4/AuthoritiesMarc.pm +++ b/C4/AuthoritiesMarc.pm @@ -1431,6 +1431,13 @@ sub merge { } $oResult->destroy(); #warn scalar(@reccache)." biblios to update"; + #Get a list of authority controlled subfields + $sth = $dbh->prepare("select distinct tagsubfield from auth_subfield_structure where authtypecode=? and tagfield=? and tab >=0 and hidden = 0"); + $sth->execute($authtypecodeto, $auth_tag_to_report_to); + my @subfields_controlled_by_auth_to; + while (my ($tagsubfield) = $sth->fetchrow) { + push @subfields_controlled_by_auth_to, $tagsubfield ; + } # Get All candidate Tags for the change # (This will reduce the search scope in marc records). $sth = $dbh->prepare("select distinct tagfield from marc_subfield_structure where authtypecode=?"); @@ -1463,6 +1470,9 @@ sub merge { $field_to->add_subfields($subfield->[0] =>$subfield->[1]); $exclude.= $subfield->[0]; } + foreach my $subt (@subfields_controlled_by_auth_to) { + $exclude.= $subt; + } $exclude='['.$exclude.']'; # add subfields in $field not included in @record_to my @restore= grep {$_->[0]!~/$exclude/} $field->subfields(); -- 1.7.2.5