From 739a6ac48ec171179ef660d1f319fd51a8f57a59 Mon Sep 17 00:00:00 2001 From: Kaitlin Newson Date: Thu, 23 Jan 2025 12:10:18 -0400 Subject: [PATCH 1/2] pkp/pkp-lib#10796 check if ORCID is verified in export plugins --- .../datacite/filter/DataciteXmlFilter.php | 2 +- .../importexport/doaj/filter/DOAJJsonFilter.php | 4 ++-- .../importexport/doaj/filter/DOAJXmlFilter.php | 4 ++-- .../pubmed/filter/ArticlePubMedXmlFilter.php | 17 ++++++++++------- .../marc/templates/record.tpl | 2 +- .../marcxml/templates/record.tpl | 2 +- 6 files changed, 17 insertions(+), 14 deletions(-) diff --git a/plugins/generic/datacite/filter/DataciteXmlFilter.php b/plugins/generic/datacite/filter/DataciteXmlFilter.php index 0d90380681e..9ebe19a7819 100644 --- a/plugins/generic/datacite/filter/DataciteXmlFilter.php +++ b/plugins/generic/datacite/filter/DataciteXmlFilter.php @@ -311,7 +311,7 @@ public function createCreatorsNode(DOMDocument $doc, Issue $issue, Publication $ foreach ($authors as $author) { /** @var Author $author */ $creators[] = [ 'name' => $author->getFullName(false, true, $publication->getData('locale')), - 'orcid' => $author->getOrcid(), + 'orcid' => $author->getData('orcidIsVerified') ? $author->getData('orcid') : null, 'affiliation' => $author->getLocalizedData('affiliation', $publication->getData('locale')), 'ror' => $author->getData('rorId') ?? null ]; diff --git a/plugins/importexport/doaj/filter/DOAJJsonFilter.php b/plugins/importexport/doaj/filter/DOAJJsonFilter.php index ce0011000f8..151878cd45d 100644 --- a/plugins/importexport/doaj/filter/DOAJJsonFilter.php +++ b/plugins/importexport/doaj/filter/DOAJJsonFilter.php @@ -162,8 +162,8 @@ public function &process(&$pubObject) if (!empty($affiliation)) { $author['affiliation'] = $affiliation; } - if ($orcid = $articleAuthor->getData('orcid')) { - $author['orcid_id'] = $orcid; + if ($articleAuthor->getData('orcid') && $articleAuthor->getData('orcidIsVerified')) { + $author['orcid_id'] = $articleAuthor->getData('orcid'); } $article['bibjson']['author'][] = $author; } diff --git a/plugins/importexport/doaj/filter/DOAJXmlFilter.php b/plugins/importexport/doaj/filter/DOAJXmlFilter.php index fb5b79b88bb..7a2fad5357c 100644 --- a/plugins/importexport/doaj/filter/DOAJXmlFilter.php +++ b/plugins/importexport/doaj/filter/DOAJXmlFilter.php @@ -251,8 +251,8 @@ public function createAuthorNode($doc, $publication, $author, $affilList) if (in_array($author->getAffiliation($publication->getData('locale')), $affilList) && !empty($affilList[0])) { $authorNode->appendChild($node = $doc->createElement('affiliationId', htmlspecialchars(current(array_keys($affilList, $author->getAffiliation($publication->getData('locale')))), ENT_COMPAT, 'UTF-8'))); } - if ($orcid = $author->getData('orcid')) { - $authorNode->appendChild($doc->createElement('orcid_id'))->appendChild($doc->createTextNode($orcid)); + if ($author->getData('orcid') && $author->getData('orcidIsVerified')) { + $authorNode->appendChild($doc->createElement('orcid_id'))->appendChild($doc->createTextNode($author->getData('orcid'))); } return $authorNode; } diff --git a/plugins/importexport/pubmed/filter/ArticlePubMedXmlFilter.php b/plugins/importexport/pubmed/filter/ArticlePubMedXmlFilter.php index e0bc58289df..efa34b0b39d 100644 --- a/plugins/importexport/pubmed/filter/ArticlePubMedXmlFilter.php +++ b/plugins/importexport/pubmed/filter/ArticlePubMedXmlFilter.php @@ -216,13 +216,16 @@ public function generateAuthorNode($doc, $journal, $issue, $submission, $author) $authorElement->appendChild($doc->createElement('LastName'))->appendChild($doc->createTextNode(ucfirst($author->getLocalizedFamilyName()))); } $authorElement->appendChild($doc->createElement('Affiliation'))->appendChild($doc->createTextNode($author->getLocalizedAffiliation())); - // We're storing the ORCID with a URL (http://orcid.org/{$ID}), but the XML expects just the ID - $orcidId = explode('/', trim($author->getData('orcid') ?? '', '/')); - $orcidId = array_pop($orcidId); - if ($orcidId) { - $orcidNode = $authorElement->appendChild($doc->createElement('Identifier')); - $orcidNode->setAttribute('Source', 'ORCID'); - $orcidNode->appendChild($doc->createTextNode($orcidId)); + + if ($author->getData('orcid') && $author->getData('orcidIsVerified')) { + // We're storing the ORCID with a URL (http://orcid.org/{$ID}), but the XML expects just the ID + $orcidId = explode('/', trim($author->getData('orcid') ?? '', '/')); + $orcidId = array_pop($orcidId); + if ($orcidId) { + $orcidNode = $authorElement->appendChild($doc->createElement('Identifier')); + $orcidNode->setAttribute('Source', 'ORCID'); + $orcidNode->appendChild($doc->createTextNode($orcidId)); + } } return $authorElement; diff --git a/plugins/oaiMetadataFormats/marc/templates/record.tpl b/plugins/oaiMetadataFormats/marc/templates/record.tpl index 12ac9ffa3b3..ccacad97be4 100644 --- a/plugins/oaiMetadataFormats/marc/templates/record.tpl +++ b/plugins/oaiMetadataFormats/marc/templates/record.tpl @@ -37,7 +37,7 @@ {assign var=affiliation value=$author->getAffiliation($journal->getPrimaryLocale())} {if $affiliation}{$affiliation|escape}{/if} {if $author->getUrl()}{$author->getUrl()|escape}{/if} - {if $author->getData('orcid')}{$author->getData('orcid')|escape}{/if} + {if $author->getData('orcid') && $author->getData('orcidIsVerified')}{$author->getData('orcid')|escape}{/if} {/foreach} {if $subject} diff --git a/plugins/oaiMetadataFormats/marcxml/templates/record.tpl b/plugins/oaiMetadataFormats/marcxml/templates/record.tpl index bf6fde66c36..023f0e4a582 100644 --- a/plugins/oaiMetadataFormats/marcxml/templates/record.tpl +++ b/plugins/oaiMetadataFormats/marcxml/templates/record.tpl @@ -46,7 +46,7 @@ {assign var=affiliation value=$author->getAffiliation($journal->getPrimaryLocale())} {if $affiliation}{$affiliation|escape}{/if} {if $author->getUrl()}{$author->getUrl()|escape}{/if} - {if $author->getData('orcid')}{$author->getData('orcid')|escape}{/if} + {if $author->getData('orcid') && $author->getData('orcidIsVerified')}{$author->getData('orcid')|escape}{/if} {/foreach} {if $subject} From bd7de1507625e387dc3b31e9c42e82f0c981a389 Mon Sep 17 00:00:00 2001 From: Kaitlin Newson Date: Thu, 23 Jan 2025 13:19:34 -0400 Subject: [PATCH 2/2] submodule update for crossref --- plugins/generic/crossref | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/generic/crossref b/plugins/generic/crossref index 42cc2e90909..58ff1647dbc 160000 --- a/plugins/generic/crossref +++ b/plugins/generic/crossref @@ -1 +1 @@ -Subproject commit 42cc2e90909475c3756c7f5e8c0b72529e89110f +Subproject commit 58ff1647dbcc30124dbd726d407653198c60af4a