From 1163b17c78bec218251b1d3386fd1966579752f3 Mon Sep 17 00:00:00 2001 From: Bozana Bokan Date: Mon, 1 Jul 2024 14:37:27 +0200 Subject: [PATCH] pkp/pkp-lib#9877 consider monograph DOI via OAI --- .../Dc11SchemaPublicationFormatAdapter.php | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/plugins/metadata/dc11/filter/Dc11SchemaPublicationFormatAdapter.php b/plugins/metadata/dc11/filter/Dc11SchemaPublicationFormatAdapter.php index fa5fca43284..0852e87e2e2 100755 --- a/plugins/metadata/dc11/filter/Dc11SchemaPublicationFormatAdapter.php +++ b/plugins/metadata/dc11/filter/Dc11SchemaPublicationFormatAdapter.php @@ -28,6 +28,7 @@ use APP\publicationFormat\PublicationFormat; use APP\section\Section; use APP\submission\Submission; +use PKP\context\Context; use PKP\db\DAORegistry; use PKP\facades\Locale; use PKP\i18n\LocaleConversion; @@ -163,18 +164,24 @@ public function extractMetadataFromDataObject(&$publicationFormat) $pubIdPlugins = PluginRegistry::loadCategory('pubIds', true); foreach ((array) $pubIdPlugins as $plugin) { $pubId = $plugin->getPubId($publicationFormat); + if ($plugin->getSetting($press->getId(), 'enableRepresentationDoi')) { + $pubId = $plugin->getPubId($publicationFormat); + } + if (!$pubId && $plugin->getSetting($press->getId(), 'enablePublicationDoi')) { + $pubId = $plugin->getPubId($publication); + } if ($pubId) { $dc11Description->addStatement('dc:identifier', $pubId); } } - $context = $request->getContext(); - if (!$context) { - $contextDao = Application::getContextDAO(); - /** @var Press */ - $context = $contextDao->getById($monograph->getData('contextId')); - } - if ($context->areDoisEnabled()) { - $doi = $publicationFormat->getDoi(); + if ($press->areDoisEnabled()) { + $enabledDoiTypes = $press->getData(Context::SETTING_ENABLED_DOI_TYPES) ?? []; + if (in_array(Repo::doi()::TYPE_REPRESENTATION, $enabledDoiTypes)) { + $doi = $publicationFormat->getDoi(); + } + if (!$doi && in_array(Repo::doi()::TYPE_PUBLICATION, $enabledDoiTypes)) { + $doi = $publication->getDoi(); + } if ($doi) { $dc11Description->addStatement('dc:identifier', $doi); }