[Koha-patches] [PATCH] Bug 5264 (Retain additional bibliographic subfields when merging authorities) [for 3.0.x only]

Marcel de Rooy M.de.Rooy at rijksmuseum.nl
Thu Sep 30 10:02:28 CEST 2010


The current code in AuthoritiesMarc.pm rewrites all subfields from the report
tag in the authority record to fields in related bibliographic records when
merging authorities. Additional subfields in the biblio records (e.g. relator
code or term) are lost in the process.

This patch retains the original algorithm but restores the additional subfields
from the original biblio record when rewriting the linked marc fields.

The problem also exists in 3.2. Two separate patches have been submitted.
---
 C4/AuthoritiesMarc.pm |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/C4/AuthoritiesMarc.pm b/C4/AuthoritiesMarc.pm
index 7d9a2b4..f4e1f64 100644
--- a/C4/AuthoritiesMarc.pm
+++ b/C4/AuthoritiesMarc.pm
@@ -1282,9 +1282,17 @@ sub merge {
                 my $tag=$field->tag();          
                 if ($auth_number==$mergefrom) {
                 my $field_to=MARC::Field->new(($tag_to?$tag_to:$tag),$field->indicator(1),$field->indicator(2),"9"=>$mergeto);
+		my $exclude='9';
                 foreach my $subfield (@record_to) {
                     $field_to->add_subfields($subfield->[0] =>$subfield->[1]);
+		    $exclude.= $subfield->[0];
                 }
+		$exclude='['.$exclude.']';
+#		add subfields in $field not included in @record_to
+		my @restore= grep {$_->[0]!~/$exclude/} $field->subfields();
+                foreach my $subfield (@restore) {
+                   $field_to->add_subfields($subfield->[0] =>$subfield->[1]);
+		}
                 $marcrecord->delete_field($field);
                 $marcrecord->insert_grouped_field($field_to);            
                 $update=1;
-- 
1.6.0.6



More information about the Koha-patches mailing list