Fixing Hierarchies : taking any heading subfield
authorPaul Poulain <paul.poulain@biblibre.com>
Wed, 24 Mar 2010 12:44:50 +0000 (13:44 +0100)
committerHenri-Damien LAURENT <henridamien.laurent@biblibre.com>
Fri, 14 May 2010 07:27:44 +0000 (09:27 +0200)
C4/AuthoritiesMarc.pm

index 3e3534f..ba71a8d 100644 (file)
@@ -1051,10 +1051,12 @@ sub BuildUnimarcHierarchies{
   my $data = GetHeaderAuthority($authid);
   if ($data->{'authtrees'} and not $force){
     return $data->{'authtrees'};
-  } elsif ($force or !($data->{authtrees})) {
+#  } elsif ($data->{'authtrees'}){
+#    $hierarchies=$data->{'authtrees'};
+  } else {
     my $record = GetAuthority($authid);
     my $found;
-    foreach my $field ($record->field('550')){
+    foreach my $field ($record->field('5..')){
       if ($field->subfield('5') && $field->subfield('5') eq 'g'){
                my $subfauthid=_get_authid_subfield($field);
         my $parentrecord = GetAuthority($subfauthid);
@@ -1078,9 +1080,6 @@ sub BuildUnimarcHierarchies{
     #Unless there is no ancestor, I am alone.
     $hierarchies="$authid" unless ($hierarchies);
   } 
-  else {
-    $hierarchies=$data->{'authtrees'};
-  }
   AddAuthorityTrees($authid,$hierarchies);
   return $hierarchies;
 }
@@ -1111,11 +1110,12 @@ sub BuildUnimarcHierarchy{
   my $record = shift @_;
   my $class = shift @_;
   my $authid_constructed = shift @_;
+  return unless $record;
   my $authid=$record->field('001')->data();
   my %cell;
   my $parents=""; my $children="";
   my (@loopparents,@loopchildren);
-  foreach my $field ($record->field('550')){
+  foreach my $field ($record->field('5..')){
        my $subfauthid=_get_authid_subfield($field);
     if ($field->subfield('5') && $field->subfield('a')){
       if ($field->subfield('5') eq 'h'){