@@ -, +, @@ when invalid MARCXML --- Koha/Biblio.pm | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) --- a/Koha/Biblio.pm +++ a/Koha/Biblio.pm @@ -563,15 +563,18 @@ sub get_components_query { my $builder = Koha::SearchEngine::QueryBuilder->new( { index => $Koha::SearchEngine::BIBLIOS_INDEX } ); - my $marc = $self->metadata->record; + + my $record; + eval { $record = $self->metadata->record }; + return if !$record; my $searchstr; if ( C4::Context->preference('UseControlNumber') ) { - my $pf001 = $marc->field('001') || undef; + my $pf001 = $record->field('001') || undef; if ( defined($pf001) ) { $searchstr = "("; - my $pf003 = $marc->field('003') || undef; + my $pf003 = $record->field('003') || undef; if ( !defined($pf003) ) { # search for 773$w='Host001' @@ -591,7 +594,7 @@ sub get_components_query { } } else { - my $cleaned_title = $marc->subfield('245', "a"); + my $cleaned_title = $record->subfield('245', "a"); $cleaned_title =~ tr|/||; $cleaned_title = $builder->clean_search_term($cleaned_title); $searchstr = "Host-item:($cleaned_title)"; @@ -650,7 +653,9 @@ Returns the COinS (a span) which can be included in a biblio record sub get_coins { my ( $self ) = @_; - my $record = $self->metadata->record; + my $record; + eval { $record = $self->metadata->record }; + return if !$record; my $pos7 = substr $record->leader(), 7, 1; my $pos6 = substr $record->leader(), 6, 1; @@ -940,7 +945,11 @@ sub get_marc_notes { my %hiddenlist = map { $_ => 1 } split( /,/, C4::Context->preference('NotesToHide')); - my $record = $self->metadata->record; + + my $record; + eval { $record = $self->metadata->record }; + return if !$record; + $record = transformMARCXML4XSLT( $self->biblionumber, $record, $opac ); foreach my $field ( $record->field($scope) ) { --