@@ -, +, @@ [SIGNED-OFF] --- C4/Biblio.pm | 1 + opac/oai.pl | 31 +++++++++++++++++++++---------- 2 files changed, 22 insertions(+), 10 deletions(-) --- a/C4/Biblio.pm +++ a/C4/Biblio.pm @@ -1276,6 +1276,7 @@ OpacHiddenItems to be applied. sub GetMarcBiblio { my $biblionumber = shift; my $embeditems = shift || 0; + my $opac = shift || 0; if (not defined $biblionumber) { carp 'GetMarcBiblio called with undefined biblionumber'; --- a/opac/oai.pl +++ a/opac/oai.pl @@ -61,6 +61,9 @@ else { binmode STDOUT, ':encoding(UTF-8)'; my $repository = C4::OAI::Repository->new(); + + + # __END__ Main Prog @@ -103,7 +106,7 @@ sub new { $from .= 'T00:00:00Z' if length($from) == 10; $until .= 'T23:59:59Z' if length($until) == 10; $offset = $args{ offset } || 0; - $set = $args{set}; + $set = $args{set} || ''; } $self->{ metadata_prefix } = $metadata_prefix; @@ -308,7 +311,7 @@ sub new { my $prefix = $repository->{koha_identifier} . ':'; my ($biblionumber) = $args{identifier} =~ /^$prefix(.*)/; $sth->execute( $biblionumber ); - my ($timestamp); + my ($timestamp, $deleted); unless ( ($timestamp) = $sth->fetchrow ) { unless ( ($timestamp) = $dbh->selectrow_array(q/ SELECT timestamp @@ -331,10 +334,8 @@ sub new { # We fetch it using this method, rather than the database directly, # so it'll include the item data my $marcxml; - unless ($deleted) { - my $record = GetMarcBiblio($biblionumber, 1); - $marcxml = $record->as_xml(); - } + $marcxml = $repository->get_biblio_marcxml->($biblionumber, $args{metadataPrefix}) + unless $deleted; my $oai_sets = GetOAISetsBiblio($biblionumber); my @setSpecs; foreach (@$oai_sets) { @@ -345,7 +346,7 @@ sub new { $self->record( $deleted ? C4::OAI::DeletedRecord->new($timestamp, \@setSpecs, %args) - : C4::OAI::Record->new($repository, $marcxml, $timestamp, \@setSpecs, %args); + : C4::OAI::Record->new($repository, $marcxml, $timestamp, \@setSpecs, %args) ); return $self; } @@ -544,7 +545,7 @@ sub new { } my $max = $repository->{koha_max_count}; my $sql = " - SELECT biblioitems.biblionumber, biblioitems.timestamp + (SELECT biblioitems.biblionumber, biblioitems.timestamp, marcxml FROM biblioitems "; $sql .= " JOIN oai_sets_biblios ON biblioitems.biblionumber = oai_sets_biblios.biblionumber " if defined $set; @@ -582,8 +583,7 @@ sub new { ); last; } - my $record = GetMarcBiblio($biblionumber, 1, 1); - my $marcxml = $record->as_xml(); + my $marcxml = $repository->get_biblio_marcxml($biblionumber, $args{metadataPrefix}); my $oai_sets = GetOAISetsBiblio($biblionumber); my @setSpecs; foreach (@$oai_sets) { @@ -694,6 +694,17 @@ sub new { } +sub get_biblio_marcxml { + my ($self, $biblionumber, $format) = @_; + my $with_items = 0; + if ( my $conf = $self->{conf} ) { + $with_items = $conf->{format}->{$format}->{include_items}; + } + my $record = GetMarcBiblio($biblionumber, $with_items, 1); + $record ? $record->as_xml() : undef; +} + + sub stylesheet { my ( $self, $format ) = @_; --