Пример #1
0
 /**
  * Responds to the two main List verbs, includes resumption and limiting.
  *
  * @param string $verb OAI-PMH verb for the request
  * @param string $metadataPrefix Metadata prefix
  * @param int $cursor Offset in response to begin output at
  * @param mixed $set Optional set argument
  * @param string $from Optional from date argument
  * @param string $until Optional until date argument
  * @uses createResumptionToken()
  */
 private function listResponse($verb, $metadataPrefix, $cursor, $set, $from, $until)
 {
     $listLimit = 30;
     $itemTable = new OaiFinds();
     $items = $itemTable->getRecords($cursor, $set, $from, $until);
     $totals = $itemTable->getCountAllFinds($set, $from, $until);
     $rows = $totals['0']['c'];
     if (count($items) == 0) {
         $this->throwError(self::OAI_ERR_NO_RECORDS_MATCH, 'No records match the given criteria');
     } else {
         if ($verb == 'ListIdentifiers') {
             $method = 'appendHeader';
         } else {
             if ($verb == 'ListRecords') {
                 $method = 'appendRecord';
             }
         }
         $verbElement = $this->document->createElement($verb);
         $this->document->documentElement->appendChild($verbElement);
         foreach ($items as $item) {
             $record = new $this->metadataFormats[$metadataPrefix]($item, $verbElement);
             $record->{$method}();
         }
         $total = $cursor + $listLimit;
         if ($rows > $total) {
             $token = $this->createResumptionToken($verb, $metadataPrefix, $cursor, $set, $from, $until);
             $tokenElement = $this->document->createElement('resumptionToken', $token->id);
             $tokenElement->setAttribute('expirationDate', self::dbToUtc($token->expiration));
             $tokenElement->setAttribute('completeListSize', $rows);
             $tokenElement->setAttribute('cursor', $cursor + $listLimit);
             $verbElement->appendChild($tokenElement);
         } else {
             if ($cursor != 0) {
                 $tokenElement = $this->document->createElement('resumptionToken');
                 $verbElement->appendChild($tokenElement);
             }
         }
     }
 }