@@ -, +, @@ to fetch biblionumber 52 bottom of the MARCXML. things semantically a bit better, so I don't spend ages looking for a function that was staring me in the face all along again. --- C4/Biblio.pm | 16 ++++++++-------- opac/oai.pl | 12 +++++++++--- 2 files changed, 17 insertions(+), 11 deletions(-) --- a/C4/Biblio.pm +++ a/C4/Biblio.pm @@ -57,13 +57,14 @@ BEGIN { # to get something push @EXPORT, qw( - &GetBiblio - &GetBiblioData - &GetBiblioItemData - &GetBiblioItemInfosOf - &GetBiblioItemByBiblioNumber - &GetBiblioFromItemNumber - &GetBiblionumberFromItemnumber + GetBiblio + GetBiblioData + GetMarcBiblio + GetBiblioItemData + GetBiblioItemInfosOf + GetBiblioItemByBiblioNumber + GetBiblioFromItemNumber + GetBiblionumberFromItemnumber &GetRecordValue &GetFieldMapping @@ -77,7 +78,6 @@ BEGIN { &GetMarcISBN &GetMarcISSN &GetMarcSubjects - &GetMarcBiblio &GetMarcAuthors &GetMarcSeries &GetMarcHosts --- a/opac/oai.pl +++ a/opac/oai.pl @@ -247,7 +247,9 @@ package C4::OAI::GetRecord; use strict; use warnings; use HTTP::OAI; +use C4::Biblio; use C4::OAI::Sets; +use MARC::File::XML; use base ("HTTP::OAI::GetRecord"); @@ -259,14 +261,14 @@ sub new { my $dbh = C4::Context->dbh; my $sth = $dbh->prepare(" - SELECT marcxml, timestamp + SELECT timestamp FROM biblioitems WHERE biblionumber=? " ); my $prefix = $repository->{koha_identifier} . ':'; my ($biblionumber) = $args{identifier} =~ /^$prefix(.*)/; $sth->execute( $biblionumber ); - my ($marcxml, $timestamp); - unless ( ($marcxml, $timestamp) = $sth->fetchrow ) { + my ($timestamp); + unless ( ($timestamp) = $sth->fetchrow ) { return HTTP::OAI::Response->new( requestURL => $repository->self_url(), errors => [ new HTTP::OAI::Error( @@ -276,6 +278,10 @@ sub new { ); } + # We fetch it using this method, rather than the database directly, + # so it'll include the item data + my $record = GetMarcBiblio($biblionumber, 1); + my $marcxml = $record->as_xml(); my $oai_sets = GetOAISetsBiblio($biblionumber); my @setSpecs; foreach (@$oai_sets) { --