[Koha-patches] [biblibre-integration] Bug fix : 3618
Henri-Damien LAURENT
henridamien.laurent at biblibre.com
Mon Sep 14 21:17:52 CEST 2009
Add some error proof on BuildUnimarcHierarchies
---
C4/AuthoritiesMarc.pm | 43 +++++++++++++++++++++++--------------------
1 files changed, 23 insertions(+), 20 deletions(-)
diff --git a/C4/AuthoritiesMarc.pm b/C4/AuthoritiesMarc.pm
index 3be5ee4..a423738 100644
--- a/C4/AuthoritiesMarc.pm
+++ b/C4/AuthoritiesMarc.pm
@@ -1164,26 +1164,28 @@ sub BuildUnimarcHierarchies{
} else {
my $record = GetAuthority($authid);
my $found;
- foreach my $field ($record->field('550')){
- if ($field->subfield('5') && $field->subfield('5') eq 'g'){
- my $parentrecord = GetAuthority($field->subfield('3'));
- my $localresult=$hierarchies;
- my $trees;
- $trees = BuildUnimarcHierarchies($field->subfield('3'));
- my @trees;
- if ($trees=~/;/){
- @trees = split(/;/,$trees);
- } else {
- push @trees, $trees;
- }
- foreach (@trees){
- $_.= ",$authid";
- }
- @globalresult = (@globalresult, at trees);
- $found=1;
- }
- $hierarchies=join(";", at globalresult);
- }
+ if ($record){
+ foreach my $field ($record->field('550')){
+ if ($field->subfield('5') && $field->subfield('5') eq 'g'){
+ my $parentrecord = GetAuthority($field->subfield('3'));
+ my $localresult=$hierarchies;
+ my $trees;
+ $trees = BuildUnimarcHierarchies($field->subfield('3'));
+ my @trees;
+ if ($trees=~/;/){
+ @trees = split(/;/,$trees);
+ } else {
+ push @trees, $trees;
+ }
+ foreach (@trees){
+ $_.= ",$authid";
+ }
+ @globalresult = (@globalresult, at trees);
+ $found=1;
+ }
+ $hierarchies=join(";", at globalresult);
+ }
+ }
#Unless there is no ancestor, I am alone.
$hierarchies="$authid" unless ($hierarchies);
}
@@ -1217,6 +1219,7 @@ sub BuildUnimarcHierarchy{
my $record = shift @_;
my $class = shift @_;
my $authid_constructed = shift @_;
+ return undef unless ($record);
my $authid=$record->subfield('2..','3');
my %cell;
my $parents=""; my $children="";
--
1.6.0.4
More information about the Koha-patches
mailing list