diff --git a/module/VuFind/src/VuFind/OAI/Server.php b/module/VuFind/src/VuFind/OAI/Server.php index 26ee04b50fd128fc72bb9c9e7c02dd97432bb822..db808589a5fe22ab4db0bf16b4317f43a1ca12aa 100644 --- a/module/VuFind/src/VuFind/OAI/Server.php +++ b/module/VuFind/src/VuFind/OAI/Server.php @@ -297,11 +297,12 @@ class Server * @param object $record A record driver object * @param string $format Metadata format to obtain (false for none) * @param bool $headerOnly Only attach the header? + * @param string $set Currently active set * * @return bool */ protected function attachNonDeleted($container, $record, $format, - $headerOnly = false + $headerOnly = false, $set = '' ) { // Get the XML (and display an error if it is unsupported): if ($format === false) { @@ -324,10 +325,13 @@ class Server // Check for sets: $fields = $record->getRawData(); if (null !== $this->setField && !empty($fields[$this->setField])) { - $sets = $fields[$this->setField]; + $sets = (array)$fields[$this->setField]; } else { $sets = []; } + if (!empty($set)) { + $sets = array_unique(array_merge($sets, [$set])); + } // Get modification date: $date = $record->getLastIndexed(); @@ -598,14 +602,14 @@ class Server $solrLimit = ($params['cursor'] + $this->pageSize) - $currentCursor; // Get non-deleted records from the Solr index: + $set = $params['set'] ?? ''; $result = $this->listRecordsGetNonDeleted( - $from, $until, $solrOffset, $solrLimit, - $params['set'] ?? '' + $from, $until, $solrOffset, $solrLimit, $set ); $nonDeletedCount = $result->getResultTotal(); $format = $params['metadataPrefix']; foreach ($result->getResults() as $doc) { - if (!$this->attachNonDeleted($xml, $doc, $format, $headersOnly)) { + if (!$this->attachNonDeleted($xml, $doc, $format, $headersOnly, $set)) { $this->unexpectedError('Cannot load document'); } $currentCursor++;