X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FAuthoritiesMarc.pm;h=95e0655db11bcfb6a4f52e5c94788aaa3366847c;hb=03fdc7defe0663e610cb5fa7568d96408a5b1429;hp=8f67f0d424be9b16fd2b81afe5cd359233b71bbb;hpb=0c42f3ca19dc6977656cad81e850a4913b65e30f;p=koha.git diff --git a/C4/AuthoritiesMarc.pm b/C4/AuthoritiesMarc.pm index 8f67f0d424..95e0655db1 100644 --- a/C4/AuthoritiesMarc.pm +++ b/C4/AuthoritiesMarc.pm @@ -591,7 +591,7 @@ sub AddAuthority { my $sth=$dbh->prepare("select max(authid) from auth_header"); $sth->execute; ($authid)=$sth->fetchrow; - $authid=$authid+1; + ( $authid ||= 0 )++; # $authid is undef for the first authority ## Insert the recordID in MARC record if ( my $field = $record->field('001') ) { $field->data($authid) } else { $record->insert_fields_ordered(MARC::Field->new('001',$authid)) } @@ -1051,12 +1051,13 @@ 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); my $parentrecord = GetAuthority($subfauthid); @@ -1079,7 +1080,7 @@ sub BuildUnimarcHierarchies{ } #Unless there is no ancestor, I am alone. $hierarchies="$authid" unless ($hierarchies); - } + } AddAuthorityTrees($authid,$hierarchies); return $hierarchies; } @@ -1110,11 +1111,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'){