Merge remote branch 'kc/new/bug_5914' into kcmaster
This commit is contained in:
commit
e9db636e63
1 changed files with 34 additions and 32 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue