From 1fd62b36b2d7164d3f25ffd2eda2c48429209901 Mon Sep 17 00:00:00 2001 From: Demian Katz <demian.katz@villanova.edu> Date: Tue, 2 Oct 2012 13:42:41 -0400 Subject: [PATCH] Added injectHeaderElements setting to OAI-PMH harvester. --- harvest/oai.ini | 5 +++++ module/VuFind/src/VuFind/Harvester/OAI.php | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/harvest/oai.ini b/harvest/oai.ini index 67de45b3729..e71fcb56f90 100644 --- a/harvest/oai.ini +++ b/harvest/oai.ini @@ -12,6 +12,7 @@ ; injectId = false ; injectSetName = false ; injectSetSpec = false +; injectHeaderElements[] = hierarchy ; dateGranularity = auto ; harvestedIdLog = harvest.log ; verbose = false @@ -57,6 +58,10 @@ ; omitted or set to false, no setSpec-related changes will be made to the harvested ; metadata. ; +; injectHeaderElements may be set to an array of elements within the header of the +; OAI-PMH response which should be copied into the saved XML document. This is +; rarely necessary. +; ; dateGranularity is the granularity used by the server for representing dates. ; This may be "YYYY-MM-DDThh:mm:ssZ," "YYYY-MM-DD" or "auto" (to query the server ; for details). The default is "auto." diff --git a/module/VuFind/src/VuFind/Harvester/OAI.php b/module/VuFind/src/VuFind/Harvester/OAI.php index 63642654106..86363f87ace 100644 --- a/module/VuFind/src/VuFind/Harvester/OAI.php +++ b/module/VuFind/src/VuFind/Harvester/OAI.php @@ -138,6 +138,13 @@ class OAI */ protected $injectDate = false; + /** + * List of header elements to copy into body + * + * @var array + */ + protected $injectHeaderElements = array(); + /** * Associative array of setSpec => setName * @@ -221,6 +228,12 @@ class OAI if (isset($settings['injectDate'])) { $this->injectDate = $settings['injectDate']; } + if (isset($settings['injectHeaderElements'])) { + $this->injectHeaderElements + = is_array($settings['injectHeaderElements']) + ? $settings['injectHeaderElements'] + : array($settings['injectHeaderElements']); + } if (isset($settings['dateGranularity'])) { $this->granularity = $settings['dateGranularity']; } @@ -503,6 +516,13 @@ class OAI } } } + if (!empty($this->injectHeaderElements)) { + foreach ($this->injectHeaderElements as $element) { + if (isset($record->header->$element)) { + $insert .= $record->header->$element->asXML(); + } + } + } if (!empty($insert)) { $xml = preg_replace('/>/', '>' . $insert, $xml, 1); } -- GitLab