| 
      
            Lines 71-77
          my $repository = C4::OAI::Repository->new();
      
      
        Link Here
      
     | 
  
        
          | 71 | 
          # - from  | 
          71 | 
          # - from  | 
        
        
          | 72 | 
          # - until  | 
          72 | 
          # - until  | 
        
        
          | 73 | 
          # - offset  | 
          73 | 
          # - offset  | 
        
          
            
              | 74 | 
              #   | 
              74 | 
              #  | 
            
        
          | 75 | 
          package C4::OAI::ResumptionToken;  | 
          75 | 
          package C4::OAI::ResumptionToken;  | 
        
        
          | 76 | 
           | 
          76 | 
           | 
        
        
          | 77 | 
          use strict;  | 
          77 | 
          use strict;  | 
        
  
    | 
      
            Lines 314-319
          sub new {
      
      
        Link Here
      
     | 
  
        
          | 314 | 
              if(defined $token->{'set'}) { | 
          314 | 
              if(defined $token->{'set'}) { | 
        
        
          | 315 | 
                  $set = GetOAISetBySpec($token->{'set'}); | 
          315 | 
                  $set = GetOAISetBySpec($token->{'set'}); | 
        
        
          | 316 | 
              }  | 
          316 | 
              }  | 
        
            
               | 
               | 
              317 | 
                  my $max = $repository->{koha_max_count}; | 
            
        
          | 317 | 
              my $sql = "  | 
          318 | 
              my $sql = "  | 
        
        
          | 318 | 
                  SELECT biblioitems.biblionumber, biblioitems.timestamp  | 
          319 | 
                  SELECT biblioitems.biblionumber, biblioitems.timestamp  | 
        
        
          | 319 | 
                  FROM biblioitems  | 
          320 | 
                  FROM biblioitems  | 
        
  
    | 
      
            Lines 322-353
          sub new {
      
      
        Link Here
      
     | 
  
        
          | 322 | 
              $sql .= " WHERE DATE(timestamp) >= ? AND DATE(timestamp) <= ? ";  | 
          323 | 
              $sql .= " WHERE DATE(timestamp) >= ? AND DATE(timestamp) <= ? ";  | 
        
        
          | 323 | 
              $sql .= " AND oai_sets_biblios.set_id = ? " if defined $set;  | 
          324 | 
              $sql .= " AND oai_sets_biblios.set_id = ? " if defined $set;  | 
        
        
          | 324 | 
              $sql .= "  | 
          325 | 
              $sql .= "  | 
        
          
            
              | 325 | 
                      LIMIT $repository->{'koha_max_count'} | 
              326 | 
                      LIMIT " . ($max+1) . "  | 
            
            
              | 326 | 
                      OFFSET $token->{'offset'} | 
              327 | 
                      OFFSET $token->{offset} | 
            
        
          | 327 | 
              ";  | 
          328 | 
              ";  | 
        
        
          | 328 | 
              my $sth = $dbh->prepare( $sql );  | 
          329 | 
              my $sth = $dbh->prepare( $sql );  | 
        
        
          | 329 | 
              my @bind_params = ($token->{'from'}, $token->{'until'}); | 
          330 | 
              my @bind_params = ($token->{'from'}, $token->{'until'}); | 
        
        
          | 330 | 
              push @bind_params, $set->{'id'} if defined $set; | 
          331 | 
              push @bind_params, $set->{'id'} if defined $set; | 
        
        
          | 331 | 
              $sth->execute( @bind_params );  | 
          332 | 
              $sth->execute( @bind_params );  | 
        
        
          | 332 | 
           | 
          333 | 
           | 
        
          
            
              | 333 | 
                  my $pos = $token->{offset}; | 
              334 | 
                  my $count = 0;  | 
            
        
          | 334 | 
              while ( my ($biblionumber, $timestamp) = $sth->fetchrow ) { | 
          335 | 
              while ( my ($biblionumber, $timestamp) = $sth->fetchrow ) { | 
        
            
               | 
               | 
              336 | 
                      $count++;  | 
            
            
              | 337 | 
                      if ( $count > $max ) { | 
            
            
              | 338 | 
                          $self->resumptionToken(  | 
            
            
              | 339 | 
                              new C4::OAI::ResumptionToken(  | 
            
            
              | 340 | 
                                  metadataPrefix  => $token->{metadata_prefix}, | 
            
            
              | 341 | 
                                  from            => $token->{from}, | 
            
            
              | 342 | 
                                  until           => $token->{until}, | 
            
            
              | 343 | 
                                  offset          => $token->{offset} + $max, | 
            
            
              | 344 | 
                                  set             => $token->{set} | 
            
            
              | 345 | 
                              )  | 
            
            
              | 346 | 
                          );  | 
            
            
              | 347 | 
                          last;  | 
            
            
              | 348 | 
                      }  | 
            
        
          | 335 | 
                  $timestamp =~ s/ /T/, $timestamp .= 'Z';  | 
          349 | 
                  $timestamp =~ s/ /T/, $timestamp .= 'Z';  | 
        
        
          | 336 | 
                  $self->identifier( new HTTP::OAI::Header(  | 
          350 | 
                  $self->identifier( new HTTP::OAI::Header(  | 
        
        
          | 337 | 
                      identifier => $repository->{ koha_identifier} . ':' . $biblionumber, | 
          351 | 
                      identifier => $repository->{ koha_identifier} . ':' . $biblionumber, | 
        
        
          | 338 | 
                      datestamp  => $timestamp,  | 
          352 | 
                      datestamp  => $timestamp,  | 
        
        
          | 339 | 
                  ) );  | 
          353 | 
                  ) );  | 
        
            
              | 340 | 
                      $pos++;  | 
               | 
               | 
            
        
          | 341 | 
              }  | 
          354 | 
              }  | 
        
            
              | 342 | 
                  $self->resumptionToken(  | 
               | 
               | 
            
            
              | 343 | 
                      new C4::OAI::ResumptionToken(  | 
            
            
              | 344 | 
                          metadataPrefix  => $token->{metadata_prefix}, | 
            
            
              | 345 | 
                          from            => $token->{from}, | 
            
            
              | 346 | 
                          until           => $token->{until}, | 
            
            
              | 347 | 
                          offset          => $pos,  | 
            
            
              | 348 | 
                          set             => $token->{set} | 
            
            
              | 349 | 
                      )  | 
            
            
              | 350 | 
                  ) if ($pos > $token->{offset}); | 
            
        
          | 351 | 
           | 
          355 | 
           | 
        
        
          | 352 | 
              return $self;  | 
          356 | 
              return $self;  | 
        
        
          | 353 | 
          }  | 
          357 | 
          }  | 
        
  
    | 
      
            Lines 467-472
          sub new {
      
      
        Link Here
      
     | 
  
        
          | 467 | 
              if(defined $token->{'set'}) { | 
          471 | 
              if(defined $token->{'set'}) { | 
        
        
          | 468 | 
                  $set = GetOAISetBySpec($token->{'set'}); | 
          472 | 
                  $set = GetOAISetBySpec($token->{'set'}); | 
        
        
          | 469 | 
              }  | 
          473 | 
              }  | 
        
            
               | 
               | 
              474 | 
                  my $max = $repository->{koha_max_count}; | 
            
        
          | 470 | 
              my $sql = "  | 
          475 | 
              my $sql = "  | 
        
        
          | 471 | 
                  SELECT biblioitems.biblionumber, biblioitems.marcxml, biblioitems.timestamp  | 
          476 | 
                  SELECT biblioitems.biblionumber, biblioitems.marcxml, biblioitems.timestamp  | 
        
        
          | 472 | 
                  FROM biblioitems  | 
          477 | 
                  FROM biblioitems  | 
        
  
    | 
      
            Lines 475-482
          sub new {
      
      
        Link Here
      
     | 
  
        
          | 475 | 
              $sql .= " WHERE DATE(timestamp) >= ? AND DATE(timestamp) <= ? ";  | 
          480 | 
              $sql .= " WHERE DATE(timestamp) >= ? AND DATE(timestamp) <= ? ";  | 
        
        
          | 476 | 
              $sql .= " AND oai_sets_biblios.set_id = ? " if defined $set;  | 
          481 | 
              $sql .= " AND oai_sets_biblios.set_id = ? " if defined $set;  | 
        
        
          | 477 | 
              $sql .= "  | 
          482 | 
              $sql .= "  | 
        
          
            
              | 478 | 
                      LIMIT $repository->{'koha_max_count'} | 
              483 | 
                      LIMIT " . ($max + 1) . "  | 
            
            
              | 479 | 
                      OFFSET $token->{'offset'} | 
              484 | 
                      OFFSET $token->{offset} | 
            
        
          | 480 | 
              ";  | 
          485 | 
              ";  | 
        
        
          | 481 | 
           | 
          486 | 
           | 
        
        
          | 482 | 
              my $sth = $dbh->prepare( $sql );  | 
          487 | 
              my $sth = $dbh->prepare( $sql );  | 
        
  
    | 
      
            Lines 484-491
          sub new {
      
      
        Link Here
      
     | 
  
        
          | 484 | 
              push @bind_params, $set->{'id'} if defined $set; | 
          489 | 
              push @bind_params, $set->{'id'} if defined $set; | 
        
        
          | 485 | 
              $sth->execute( @bind_params );  | 
          490 | 
              $sth->execute( @bind_params );  | 
        
        
          | 486 | 
           | 
          491 | 
           | 
        
          
            
              | 487 | 
                  my $pos = $token->{offset}; | 
              492 | 
                  my $count = 0;  | 
            
        
          | 488 | 
              while ( my ($biblionumber, $marcxml, $timestamp) = $sth->fetchrow ) { | 
          493 | 
              while ( my ($biblionumber, $marcxml, $timestamp) = $sth->fetchrow ) { | 
        
            
               | 
               | 
              494 | 
                      $count++;  | 
            
            
              | 495 | 
                      if ( $count > $max ) { | 
            
            
              | 496 | 
                          $self->resumptionToken(  | 
            
            
              | 497 | 
                              new C4::OAI::ResumptionToken(  | 
            
            
              | 498 | 
                                  metadataPrefix  => $token->{metadata_prefix}, | 
            
            
              | 499 | 
                                  from            => $token->{from}, | 
            
            
              | 500 | 
                                  until           => $token->{until}, | 
            
            
              | 501 | 
                                  offset          => $token->{offset} + $max, | 
            
            
              | 502 | 
                                  set             => $token->{set} | 
            
            
              | 503 | 
                              )  | 
            
            
              | 504 | 
                          );  | 
            
            
              | 505 | 
                          last;  | 
            
            
              | 506 | 
                      }  | 
            
        
          | 489 | 
                  my $oai_sets = GetOAISetsBiblio($biblionumber);  | 
          507 | 
                  my $oai_sets = GetOAISetsBiblio($biblionumber);  | 
        
        
          | 490 | 
                  my @setSpecs;  | 
          508 | 
                  my @setSpecs;  | 
        
        
          | 491 | 
                  foreach (@$oai_sets) { | 
          509 | 
                  foreach (@$oai_sets) { | 
        
  
    | 
      
            Lines 496-512
          sub new {
      
      
        Link Here
      
     | 
  
        
          | 496 | 
                      identifier      => $repository->{ koha_identifier } . ':' . $biblionumber, | 
          514 | 
                      identifier      => $repository->{ koha_identifier } . ':' . $biblionumber, | 
        
        
          | 497 | 
                      metadataPrefix  => $token->{metadata_prefix} | 
          515 | 
                      metadataPrefix  => $token->{metadata_prefix} | 
        
        
          | 498 | 
                  ) );  | 
          516 | 
                  ) );  | 
        
            
              | 499 | 
                      $pos++;  | 
               | 
               | 
            
        
          | 500 | 
              }  | 
          517 | 
              }  | 
        
            
              | 501 | 
                  $self->resumptionToken(  | 
               | 
               | 
            
            
              | 502 | 
                      new C4::OAI::ResumptionToken(  | 
            
            
              | 503 | 
                          metadataPrefix  => $token->{metadata_prefix}, | 
            
            
              | 504 | 
                          from            => $token->{from}, | 
            
            
              | 505 | 
                          until           => $token->{until}, | 
            
            
              | 506 | 
                          offset          => $pos,  | 
            
            
              | 507 | 
                          set             => $token->{set} | 
            
            
              | 508 | 
                      )  | 
            
            
              | 509 | 
                  ) if ($pos > $token->{offset}); | 
            
        
          | 510 | 
           | 
          518 | 
           | 
        
        
          | 511 | 
              return $self;  | 
          519 | 
              return $self;  | 
        
        
          | 512 | 
          }  | 
          520 | 
          }  | 
        
  
    | 
      
            Lines 639-645
          C4::OAI::Repository - Handles OAI-PMH requests for a Koha database.
      
      
        Link Here
      
     | 
  
        
          | 639 | 
          This object extend HTTP::OAI::Repository object.  | 
          647 | 
          This object extend HTTP::OAI::Repository object.  | 
        
        
          | 640 | 
          It accepts OAI-PMH HTTP requests and returns result.  | 
          648 | 
          It accepts OAI-PMH HTTP requests and returns result.  | 
        
        
          | 641 | 
           | 
          649 | 
           | 
        
          
            
              | 642 | 
              This OAI-PMH server can operate in a simple mode and extended one.   | 
              650 | 
              This OAI-PMH server can operate in a simple mode and extended one.  | 
            
        
          | 643 | 
           | 
          651 | 
           | 
        
        
          | 644 | 
          In simple mode, repository configuration comes entirely from Koha system  | 
          652 | 
          In simple mode, repository configuration comes entirely from Koha system  | 
        
        
          | 645 | 
          preferences (OAI-PMH:archiveID and OAI-PMH:MaxCount) and the server returns  | 
          653 | 
          preferences (OAI-PMH:archiveID and OAI-PMH:MaxCount) and the server returns  | 
        
            
              | 646 | 
              -   | 
               | 
               |