(bug #4491) fix weird code in search scripts
[koha.git] / C4 / AuthoritiesMarc.pm
index c2c1786..7d9a2b4 100644 (file)
@@ -1051,14 +1051,16 @@ sub BuildUnimarcHierarchies{
   my $data = GetHeaderAuthority($authid);
   if ($data->{'authtrees'} and not $force){
     return $data->{'authtrees'};
-  } elsif ($data->{'authtrees'}){
-    $hierarchies=$data->{'authtrees'};
+#  } elsif ($data->{'authtrees'}){
+#    $hierarchies=$data->{'authtrees'};
   } else {
     my $record = GetAuthority($authid);
     my $found;
-    foreach my $field ($record->field('550')){
+    return unless $record;
+    foreach my $field ($record->field('5..')){
       if ($field->subfield('5') && $field->subfield('5') eq 'g'){
                my $subfauthid=_get_authid_subfield($field);
+        next if ($subfauthid eq $authid);
         my $parentrecord = GetAuthority($subfauthid);
         my $localresult=$hierarchies;
         my $trees;
@@ -1079,7 +1081,7 @@ sub BuildUnimarcHierarchies{
     }
     #Unless there is no ancestor, I am alone.
     $hierarchies="$authid" unless ($hierarchies);
-  }
+  } 
   AddAuthorityTrees($authid,$hierarchies);
   return $hierarchies;
 }
@@ -1110,11 +1112,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'){