Lines 37-45
use YAML::XS;
Link Here
|
37 |
use CGI qw/:standard -oldstyle_urls/; |
37 |
use CGI qw/:standard -oldstyle_urls/; |
38 |
use C4::Context; |
38 |
use C4::Context; |
39 |
use C4::Biblio qw( GetFrameworkCode ); |
39 |
use C4::Biblio qw( GetFrameworkCode ); |
|
|
40 |
use C4::Charset qw( StripNonXmlChars ); |
40 |
use Koha::XSLT::Base; |
41 |
use Koha::XSLT::Base; |
41 |
use Koha::Biblios; |
42 |
use Koha::Biblios; |
42 |
|
43 |
|
|
|
44 |
use MARC::Record; |
45 |
|
43 |
=head1 NAME |
46 |
=head1 NAME |
44 |
|
47 |
|
45 |
Koha::OAI::Server::Repository - Handles OAI-PMH requests for a Koha database. |
48 |
Koha::OAI::Server::Repository - Handles OAI-PMH requests for a Koha database. |
Lines 178-185
sub get_biblio_marcxml {
Link Here
|
178 |
} |
181 |
} |
179 |
|
182 |
|
180 |
my $biblio = Koha::Biblios->find($biblionumber); |
183 |
my $biblio = Koha::Biblios->find($biblionumber); |
181 |
my $record = $biblio->metadata->record({ embed_items => $with_items, opac => 1 }); |
184 |
my $record; |
182 |
if ( $expanded_avs ) { |
185 |
# Koha::Biblio::Metadata->record throws an exception on bad encoding, |
|
|
186 |
# we don't want OAI harvests to die, so we catch and warn, and try to clean the record |
187 |
eval { $record = $biblio->metadata->record({ embed_items => $with_items, opac => 1 }); }; |
188 |
if ($@) { |
189 |
my $marcxml_error = $@; |
190 |
chomp $marcxml_error; |
191 |
warn $marcxml_error; |
192 |
eval { |
193 |
$record = MARC::Record->new_from_xml( |
194 |
StripNonXmlChars( $biblio->metadata->metadata ), 'UTF-8', |
195 |
$biblio->metadata->schema |
196 |
); |
197 |
}; |
198 |
# If the record still cannot be built, we will warn and return undef |
199 |
# and record will be reported as deleted |
200 |
if( $@ ){ |
201 |
$marcxml_error = $@; |
202 |
chomp $marcxml_error; |
203 |
warn $marcxml_error; |
204 |
} |
205 |
} |
206 |
if ( $record && $expanded_avs ) { |
183 |
my $frameworkcode = GetFrameworkCode($biblionumber) || ''; |
207 |
my $frameworkcode = GetFrameworkCode($biblionumber) || ''; |
184 |
my $record_processor = Koha::RecordProcessor->new( |
208 |
my $record_processor = Koha::RecordProcessor->new( |
185 |
{ |
209 |
{ |
Lines 192-198
sub get_biblio_marcxml {
Link Here
|
192 |
); |
216 |
); |
193 |
$record_processor->process($record); |
217 |
$record_processor->process($record); |
194 |
} |
218 |
} |
195 |
|
|
|
196 |
return $record ? $record->as_xml_record() : undef; |
219 |
return $record ? $record->as_xml_record() : undef; |
197 |
} |
220 |
} |
198 |
|
221 |
|
199 |
- |
|
|