Skip to content

Commit 9180065

Browse files
Merge branch 'relatedPublicationDoi330-768' into 'stable-3_3_0'
Corrige ausência de DOI no campo "Related Publication" - 3.3.0 See merge request softwares-pkp/plugins_ojs/dataverse!190
2 parents 93ac4e7 + f5422f2 commit 9180065

4 files changed

Lines changed: 47 additions & 23 deletions

File tree

classes/APACitation.inc.php

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,17 @@ public function getFormattedCitationBySubmission(Submission $submission): string
1818
$publication = $submission->getCurrentPublication();
1919
$authors = $publication->getData('authors');
2020
$submittedDate = new DateTime($submission->getDateSubmitted());
21+
$submissionDoi = $this->getSubmissionDoi($submission);
2122

2223
$submissionCitation = $this->createAuthorsCitationAPA($authors) . ' ';
2324
$submissionCitation .= '(' . date_format($submittedDate, 'Y') . '). ';
2425
$submissionCitation .= '<em>' . $submission->getLocalizedTitle($submission->getLocale()) . '</em>. ';
2526
$submissionCitation .= $journal->getLocalizedName();
2627

28+
if ($submissionDoi) {
29+
$submissionCitation .= ". <a href=\"$submissionDoi\">$submissionDoi</a>";
30+
}
31+
2732
return $submissionCitation;
2833
}
2934

@@ -67,23 +72,23 @@ private function getAuthorCitation(Author $author): string
6772
return $familyName . ', ' . mb_substr($givenName, 0, 1) . ".";
6873
}
6974

70-
private function retrievePubIdAttributes(Submission $submission): array
75+
private function getSubmissionDoi(Submission $submission): string
7176
{
72-
$contextId = $submission->getContextId();
73-
74-
$pubIdAttributes = array();
75-
$pubIdPlugins = PluginRegistry::loadCategory('pubIds', true, $contextId);
76-
if (isset($pubIdPlugins['doipubidplugin'])) {
77-
$doiPlugin = $pubIdPlugins['doipubidplugin'];
77+
$publication = $submission->getCurrentPublication();
78+
$doi = $publication->getStoredPubId('doi');
7879

79-
$pubId = $submission->getStoredPubId($doiPlugin->getPubIdType());
80-
if (isset($pubId)) {
81-
$pubIdAttributes['holdingsURI'] = $doiPlugin->getResolvingURL($contextId, $pubId);
82-
$pubIdAttributes['agency'] = $doiPlugin->getDisplayName();
83-
$pubIdAttributes['IDNo'] = $pubId;
84-
}
80+
if ($doi) {
81+
return 'https://doi.org/' . $this->doiURLEncode($doi);
8582
}
8683

87-
return $pubIdAttributes;
84+
return '';
85+
}
86+
87+
private function doiURLEncode($pubId)
88+
{
89+
$search = ['%', '"', '#', ' ', '<', '>', '{'];
90+
$replace = ['%25', '%22', '%23', '%20', '%3c', '%3e', '%7b'];
91+
$pubId = str_replace($search, $replace, $pubId);
92+
return $pubId;
8893
}
8994
}

classes/dispatchers/DataverseEventsDispatcher.inc.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,18 @@ public function updateDatasetOnPublicationUpdate(string $hookName, array $args):
420420
return false;
421421
}
422422

423+
try {
424+
$dataverseClient = new DataverseClient();
425+
$dataset = $dataverseClient->getDatasetActions()->get($study->getPersistentId());
426+
427+
if ($dataset->isPublished()) {
428+
return false;
429+
}
430+
} catch (DataverseException $e) {
431+
error_log('Dataverse error while getting dataset on publication update: ' . $e->getMessage());
432+
return false;
433+
}
434+
423435
import('plugins.generic.dataverse.classes.APACitation');
424436
$apaCitation = new APACitation();
425437

tests/APACitationTest.php

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ private function createTestPublication(): void
7474
$this->publication->setData('authors', $this->authors);
7575
$this->publication->setData('locale', 'pt_BR');
7676
$this->publication->setData('relationStatus', '1');
77+
$this->publication->setData('pub-id::doi', '10.1234/LepidusPreprints.1245');
7778
}
7879

7980
private function addCurrentPublicationToSubmission(): void
@@ -82,7 +83,7 @@ private function addCurrentPublicationToSubmission(): void
8283
$this->submission->setData('publications', array($this->publication));
8384
}
8485

85-
public function testHasDOIAsMarkup(): void
86+
public function testDatasetCitationGetsDoiMarkup(): void
8687
{
8788
$expectedDOI = 'https://doi.org/10.12345/FK2/NTF9X8';
8889
$dataCitation = "Iris Castanheiras, 2021, \"The Rise of The Machine Empire\", $expectedDOI, Demo Dataverse, V1, UNF:6:dEgtc5Z1MSF3u7c+kF4kXg== [fileUNF]";
@@ -100,7 +101,8 @@ public function testHasDOIAsMarkup(): void
100101

101102
public function testPreprintCitationIsAPA(): void
102103
{
103-
$expectedSubmissionCitation = 'Castanheiras, I. (2021). <em>The Rise of The Machine Empire</em>. Preprints da Lepidus';
104+
$expectedSubmissionCitation = 'Castanheiras, I. (2021). <em>The Rise of The Machine Empire</em>. Preprints da Lepidus.';
105+
$expectedSubmissionCitation .= ' <a href="https://doi.org/10.1234/LepidusPreprints.1245">https://doi.org/10.1234/LepidusPreprints.1245</a>';
104106

105107
$apaCitation = new APACitation();
106108
$preprintCitation = $apaCitation->getFormattedCitationBySubmission($this->submission);
@@ -116,7 +118,8 @@ public function testFamilyNameWithAccentOnTheFirstLetter(): void
116118
$apaCitation = new APACitation();
117119
$preprintCitation = $apaCitation->getFormattedCitationBySubmission($this->submission);
118120

119-
$expectedSubmissionCitation = 'Álamo, Á. (2021). <em>The Rise of The Machine Empire</em>. Preprints da Lepidus';
121+
$expectedSubmissionCitation = 'Álamo, Á. (2021). <em>The Rise of The Machine Empire</em>. Preprints da Lepidus.';
122+
$expectedSubmissionCitation .= ' <a href="https://doi.org/10.1234/LepidusPreprints.1245">https://doi.org/10.1234/LepidusPreprints.1245</a>';
120123
$this->assertEquals($expectedSubmissionCitation, $preprintCitation);
121124
}
122125

@@ -128,7 +131,8 @@ public function testGivenNameWithAccentAnyLetterExceptFirstLetterAndFamilyNameWi
128131
$apaCitation = new APACitation();
129132
$preprintCitation = $apaCitation->getFormattedCitationBySubmission($this->submission);
130133

131-
$expectedSubmissionCitation = 'Fernandes, M. (2021). <em>The Rise of The Machine Empire</em>. Preprints da Lepidus';
134+
$expectedSubmissionCitation = 'Fernandes, M. (2021). <em>The Rise of The Machine Empire</em>. Preprints da Lepidus.';
135+
$expectedSubmissionCitation .= ' <a href="https://doi.org/10.1234/LepidusPreprints.1245">https://doi.org/10.1234/LepidusPreprints.1245</a>';
132136
$this->assertEquals($expectedSubmissionCitation, $preprintCitation);
133137
}
134138

@@ -140,7 +144,8 @@ public function testFamilyNameWithAccentOnTheFirstLetterAndGivenNameWithoutAccen
140144
$apaCitation = new APACitation();
141145
$preprintCitation = $apaCitation->getFormattedCitationBySubmission($this->submission);
142146

143-
$expectedSubmissionCitation = 'Átila, L. (2021). <em>The Rise of The Machine Empire</em>. Preprints da Lepidus';
147+
$expectedSubmissionCitation = 'Átila, L. (2021). <em>The Rise of The Machine Empire</em>. Preprints da Lepidus.';
148+
$expectedSubmissionCitation .= ' <a href="https://doi.org/10.1234/LepidusPreprints.1245">https://doi.org/10.1234/LepidusPreprints.1245</a>';
144149
$this->assertEquals($expectedSubmissionCitation, $preprintCitation);
145150
}
146151

@@ -152,7 +157,8 @@ public function testGivenNameAndFamilyNameWithAccentExceptFirstLetter(): void
152157
$apaCitation = new APACitation();
153158
$preprintCitation = $apaCitation->getFormattedCitationBySubmission($this->submission);
154159

155-
$expectedSubmissionCitation = 'Sérgio, C. (2021). <em>The Rise of The Machine Empire</em>. Preprints da Lepidus';
160+
$expectedSubmissionCitation = 'Sérgio, C. (2021). <em>The Rise of The Machine Empire</em>. Preprints da Lepidus.';
161+
$expectedSubmissionCitation .= ' <a href="https://doi.org/10.1234/LepidusPreprints.1245">https://doi.org/10.1234/LepidusPreprints.1245</a>';
156162
$this->assertEquals($expectedSubmissionCitation, $preprintCitation);
157163
}
158164

@@ -163,7 +169,8 @@ public function testGivenNameWithAccentOnTheFirstLetter(): void
163169
$apaCitation = new APACitation();
164170
$preprintCitation = $apaCitation->getFormattedCitationBySubmission($this->submission);
165171

166-
$expectedSubmissionCitation = 'Castanheiras, Â. (2021). <em>The Rise of The Machine Empire</em>. Preprints da Lepidus';
172+
$expectedSubmissionCitation = 'Castanheiras, Â. (2021). <em>The Rise of The Machine Empire</em>. Preprints da Lepidus.';
173+
$expectedSubmissionCitation .= ' <a href="https://doi.org/10.1234/LepidusPreprints.1245">https://doi.org/10.1234/LepidusPreprints.1245</a>';
167174
$this->assertEquals($expectedSubmissionCitation, $preprintCitation);
168175
}
169176
}

version.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
<version>
1414
<application>dataverse</application>
1515
<type>plugins.generic</type>
16-
<release>2.7.8.0</release>
17-
<date>2025-04-02</date>
16+
<release>2.7.9.0</release>
17+
<date>2025-04-11</date>
1818
<lazy-load>1</lazy-load>
1919
<class>DataversePlugin</class>
2020
</version>

0 commit comments

Comments
 (0)