Merge remote branch 'kc/new/bug_5914' into kcmaster

This commit is contained in:
Chris Cormack 2011-04-06 15:35:11 +12:00
commit e9db636e63

View file

@ -1125,18 +1125,20 @@ sub BuildUnimarcHierarchies{
my $data = GetHeaderAuthority($authid); my $data = GetHeaderAuthority($authid);
if ($data->{'authtrees'} and not $force){ if ($data->{'authtrees'} and not $force){
return $data->{'authtrees'}; return $data->{'authtrees'};
} elsif ($data->{'authtrees'}){ # } elsif ($data->{'authtrees'}){
$hierarchies=$data->{'authtrees'}; # $hierarchies=$data->{'authtrees'};
} else { } else {
my $record = GetAuthority($authid); my $record = GetAuthority($authid);
my $found; my $found;
if ($record){ return unless $record;
foreach my $field ($record->field('550')){ foreach my $field ($record->field('5..')){
if ($field->subfield('5') && $field->subfield('5') eq 'g'){ if ($field->subfield('5') && $field->subfield('5') eq 'g'){
my $parentrecord = GetAuthority($field->subfield('3')); my $subfauthid=_get_authid_subfield($field);
next if ($subfauthid eq $authid);
my $parentrecord = GetAuthority($subfauthid);
my $localresult=$hierarchies; my $localresult=$hierarchies;
my $trees; my $trees;
$trees = BuildUnimarcHierarchies($field->subfield('3')); $trees = BuildUnimarcHierarchies($subfauthid);
my @trees; my @trees;
if ($trees=~/;/){ if ($trees=~/;/){
@trees = split(/;/,$trees); @trees = split(/;/,$trees);
@ -1151,7 +1153,6 @@ sub BuildUnimarcHierarchies{
} }
$hierarchies=join(";",@globalresult); $hierarchies=join(";",@globalresult);
} }
}
#Unless there is no ancestor, I am alone. #Unless there is no ancestor, I am alone.
$hierarchies="$authid" unless ($hierarchies); $hierarchies="$authid" unless ($hierarchies);
} }
@ -1189,11 +1190,12 @@ sub BuildUnimarcHierarchy{
my (@loopparents,@loopchildren); my (@loopparents,@loopchildren);
foreach my $field ($record->field('5..')){ foreach my $field ($record->field('5..')){
my $subfauthid=_get_authid_subfield($field); my $subfauthid=_get_authid_subfield($field);
if ($field->subfield('5') && $field->subfield('a')){ if ($subfauthid && $field->subfield('5') && $field->subfield('a')){
if ($field->subfield('5') eq 'h'){ if ($field->subfield('5') eq 'h'){
push @loopchildren, { "childauthid"=>$subfauthid,"childvalue"=>$field->subfield('a')}; push @loopchildren, { "childauthid"=>$field->subfield('3'),"childvalue"=>$field->subfield('a')};
}elsif ($field->subfield('5') eq 'g'){ }
push @loopparents, { "parentauthid"=>$subfauthid,"parentvalue"=>$field->subfield('a')}; elsif ($field->subfield('5') eq 'g'){
push @loopparents, { "parentauthid"=>$field->subfield('3'),"parentvalue"=>$field->subfield('a')};
} }
# brothers could get in there with an else # brothers could get in there with an else
} }