View | Details | Raw Unified | Return to bug 5914
Collapse All | Expand All

(-)a/C4/AuthoritiesMarc.pm (-33 / +35 lines)
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
- 

Return to bug 5914