From 269a9c2966468ace44ed3465a37e545a211981a4 Mon Sep 17 00:00:00 2001 From: Henri-Damien LAURENT Date: Thu, 5 Nov 2009 21:47:29 +0100 Subject: [PATCH] Adding Support for $9 and $3 on authority hierarchy Please test and tell me if it is helpfull and does what it is meant for --- C4/AuthoritiesMarc.pm | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/C4/AuthoritiesMarc.pm b/C4/AuthoritiesMarc.pm index aef8b6c60e..c61031b27d 100644 --- a/C4/AuthoritiesMarc.pm +++ b/C4/AuthoritiesMarc.pm @@ -920,7 +920,6 @@ sub BuildSummary{ $summary =~ s/\n/
/g; } else { my $heading; - my $authid; my $altheading; my $seealso; my $broaderterms; @@ -934,7 +933,6 @@ sub BuildSummary{ # accepted form foreach my $field ($record->field('2..')) { $heading.= $field->subfield('a'); - $authid=$field->subfield('3'); } # rejected form(s) foreach my $field ($record->field('3..')) { @@ -948,13 +946,13 @@ sub BuildSummary{ } # see : foreach my $field ($record->field('5..')) { - + my $authid=_get_authid_subfield($field); if (($field->subfield('5')) && ($field->subfield('a')) && ($field->subfield('5') eq 'g')) { - $broaderterms.= ' '.$field->subfield('a')." -- \n"; + $broaderterms.= ' '.$field->subfield('a')." -- \n"; } elsif (($field->subfield('5')) && ($field->subfield('a')) && ($field->subfield('5') eq 'h')){ - $narrowerterms.= ''.$field->subfield('a')." -- \n"; + $narrowerterms.= ''.$field->subfield('a')." -- \n"; } elsif ($field->subfield('a')) { - $seealso.= ''.$field->subfield('a')." -- \n"; + $seealso.= ''.$field->subfield('a')." -- \n"; } } # // form @@ -1025,6 +1023,10 @@ sub BuildSummary{ return $summary; } +sub _get_authid_subfield{ + my ($field)=@_; + return $field->subfield('9')||$field->subfield('3'); +} =head2 BuildUnimarcHierarchies =over 4 @@ -1057,10 +1059,11 @@ sub BuildUnimarcHierarchies{ my $found; foreach my $field ($record->field('550')){ if ($field->subfield('5') && $field->subfield('5') eq 'g'){ - my $parentrecord = GetAuthority($field->subfield('3')); + my $subfauthid=_get_authid_subfield($field); + my $parentrecord = GetAuthority($subfauthid); my $localresult=$hierarchies; my $trees; - $trees = BuildUnimarcHierarchies($field->subfield('3')); + $trees = BuildUnimarcHierarchies($subfauthid); my @trees; if ($trees=~/;/){ @trees = split(/;/,$trees); @@ -1113,11 +1116,12 @@ sub BuildUnimarcHierarchy{ my $parents=""; my $children=""; my (@loopparents,@loopchildren); foreach my $field ($record->field('550')){ + my $subfauthid=_get_authid_subfield($field); if ($field->subfield('5') && $field->subfield('a')){ if ($field->subfield('5') eq 'h'){ - push @loopchildren, { "childauthid"=>$field->subfield('3'),"childvalue"=>$field->subfield('a')}; + push @loopchildren, { "childauthid"=>$subfauthid,"childvalue"=>$field->subfield('a')}; }elsif ($field->subfield('5') eq 'g'){ - push @loopparents, { "parentauthid"=>$field->subfield('3'),"parentvalue"=>$field->subfield('a')}; + push @loopparents, { "parentauthid"=>$subfauthid,"parentvalue"=>$field->subfield('a')}; } # brothers could get in there with an else } -- 2.39.5