Bug 14607: Baker & Taylor cover images should be accessible by UPC as well as ISBN
[koha.git] / opac / oai.pl
index bb6fecb..7eb0f6b 100755 (executable)
@@ -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;
 }
@@ -552,7 +553,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;
@@ -576,6 +577,7 @@ sub new {
     $sth->execute( @bind_params );
 
     my $count = 0;
+    my $format = $args{metadataPrefix} || $token->{metadata_prefix};
     while ( my ($biblionumber, $timestamp) = $sth->fetchrow ) {
         $count++;
         if ( $count > $max ) {
@@ -590,8 +592,7 @@ sub new {
             );
             last;
         }
-        my $record = GetMarcBiblio($biblionumber, 1, 1);
-        my $marcxml = $record->as_xml();
+        my $marcxml = $repository->get_biblio_marcxml($biblionumber, $format);
         my $oai_sets = GetOAISetsBiblio($biblionumber);
         my @setSpecs;
         foreach (@$oai_sets) {
@@ -710,6 +711,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 ) = @_;