Lines 1123-1155
sub BuildUnimarcHierarchies{
Link Here
|
1123 |
my $data = GetHeaderAuthority($authid); |
1123 |
my $data = GetHeaderAuthority($authid); |
1124 |
if ($data->{'authtrees'} and not $force){ |
1124 |
if ($data->{'authtrees'} and not $force){ |
1125 |
return $data->{'authtrees'}; |
1125 |
return $data->{'authtrees'}; |
1126 |
} elsif ($data->{'authtrees'}){ |
1126 |
# } elsif ($data->{'authtrees'}){ |
1127 |
$hierarchies=$data->{'authtrees'}; |
1127 |
# $hierarchies=$data->{'authtrees'}; |
1128 |
} else { |
1128 |
} else { |
1129 |
my $record = GetAuthority($authid); |
1129 |
my $record = GetAuthority($authid); |
1130 |
my $found; |
1130 |
my $found; |
1131 |
if ($record){ |
1131 |
return unless $record; |
1132 |
foreach my $field ($record->field('550')){ |
1132 |
foreach my $field ($record->field('5..')){ |
1133 |
if ($field->subfield('5') && $field->subfield('5') eq 'g'){ |
1133 |
if ($field->subfield('5') && $field->subfield('5') eq 'g'){ |
1134 |
my $parentrecord = GetAuthority($field->subfield('3')); |
1134 |
my $subfauthid=_get_authid_subfield($field); |
1135 |
my $localresult=$hierarchies; |
1135 |
next if ($subfauthid eq $authid); |
1136 |
my $trees; |
1136 |
my $parentrecord = GetAuthority($subfauthid); |
1137 |
$trees = BuildUnimarcHierarchies($field->subfield('3')); |
1137 |
my $localresult=$hierarchies; |
1138 |
my @trees; |
1138 |
my $trees; |
1139 |
if ($trees=~/;/){ |
1139 |
$trees = BuildUnimarcHierarchies($subfauthid); |
1140 |
@trees = split(/;/,$trees); |
1140 |
my @trees; |
1141 |
} else { |
1141 |
if ($trees=~/;/){ |
1142 |
push @trees, $trees; |
1142 |
@trees = split(/;/,$trees); |
1143 |
} |
1143 |
} else { |
1144 |
foreach (@trees){ |
1144 |
push @trees, $trees; |
1145 |
$_.= ",$authid"; |
1145 |
} |
1146 |
} |
1146 |
foreach (@trees){ |
1147 |
@globalresult = (@globalresult,@trees); |
1147 |
$_.= ",$authid"; |
1148 |
$found=1; |
1148 |
} |
1149 |
} |
1149 |
@globalresult = (@globalresult,@trees); |
1150 |
$hierarchies=join(";",@globalresult); |
1150 |
$found=1; |
1151 |
} |
1151 |
} |
1152 |
} |
1152 |
$hierarchies=join(";",@globalresult); |
|
|
1153 |
} |
1153 |
#Unless there is no ancestor, I am alone. |
1154 |
#Unless there is no ancestor, I am alone. |
1154 |
$hierarchies="$authid" unless ($hierarchies); |
1155 |
$hierarchies="$authid" unless ($hierarchies); |
1155 |
} |
1156 |
} |
Lines 1185-1199
sub BuildUnimarcHierarchy{
Link Here
|
1185 |
my %cell; |
1186 |
my %cell; |
1186 |
my $parents=""; my $children=""; |
1187 |
my $parents=""; my $children=""; |
1187 |
my (@loopparents,@loopchildren); |
1188 |
my (@loopparents,@loopchildren); |
1188 |
foreach my $field ($record->field('550')){ |
1189 |
foreach my $field ($record->field('5..')){ |
1189 |
if ($field->subfield('5') && $field->subfield('a')){ |
1190 |
my $subfauthid=_get_authid_subfield($field); |
1190 |
if ($field->subfield('5') eq 'h'){ |
1191 |
if ($subfauthid && $field->subfield('5') && $field->subfield('a')){ |
1191 |
push @loopchildren, { "childauthid"=>$field->subfield('3'),"childvalue"=>$field->subfield('a')}; |
1192 |
if ($field->subfield('5') eq 'h'){ |
1192 |
}elsif ($field->subfield('5') eq 'g'){ |
1193 |
push @loopchildren, { "childauthid"=>$field->subfield('3'),"childvalue"=>$field->subfield('a')}; |
1193 |
push @loopparents, { "parentauthid"=>$field->subfield('3'),"parentvalue"=>$field->subfield('a')}; |
1194 |
} |
1194 |
} |
1195 |
elsif ($field->subfield('5') eq 'g'){ |
|
|
1196 |
push @loopparents, { "parentauthid"=>$field->subfield('3'),"parentvalue"=>$field->subfield('a')}; |
1197 |
} |
1195 |
# brothers could get in there with an else |
1198 |
# brothers could get in there with an else |
1196 |
} |
1199 |
} |
1197 |
} |
1200 |
} |
1198 |
$cell{"ifparents"}=1 if (scalar(@loopparents)>0); |
1201 |
$cell{"ifparents"}=1 if (scalar(@loopparents)>0); |
1199 |
$cell{"ifchildren"}=1 if (scalar(@loopchildren)>0); |
1202 |
$cell{"ifchildren"}=1 if (scalar(@loopchildren)>0); |
1200 |
- |
|
|