From 691be78c355bff53d322468fd3ecd5501818f800 Mon Sep 17 00:00:00 2001 From: Demian Katz <demian.katz@villanova.edu> Date: Thu, 26 Jul 2018 14:26:33 -0400 Subject: [PATCH] When a set_query is selected, show it in headers. - Improves OAI-PMH validation. --- module/VuFind/src/VuFind/OAI/Server.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/module/VuFind/src/VuFind/OAI/Server.php b/module/VuFind/src/VuFind/OAI/Server.php index 26ee04b50fd..db808589a5f 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++; -- GitLab