Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion api/v1/dois/DoiController.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,17 @@
use APP\facades\Repo;
use APP\issue\Issue;
use APP\jobs\doi\DepositIssue;
use APP\plugins\IDoiRegistrationAgency;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Route;
use PKP\API\v1\dois\PKPDoiController;
use PKP\context\Context;
use PKP\doi\Doi;
use PKP\doi\exceptions\DoiException;

class DoiController extends \PKP\API\v1\dois\PKPDoiController
class DoiController extends PKPDoiController
{
/**
* @copydoc \PKP\core\PKPBaseController::getGroupRoutes()
Expand Down Expand Up @@ -364,4 +366,18 @@ protected function getPubObjectHandler(string $type): mixed
default => null,
};
}

/** @copydoc PKPDoiController::getPeerReviewExports() */
public function getPeerReviewExports(array $submissionIds, Context $context, IDoiRegistrationAgency $agency): array
{
$exportablePeerReviewIds = Repo::reviewAssignment()
->getExportableDOIsPeerReviewIds($context->getId(), $context->getData(Context::SETTING_DOI_VERSIONING), $submissionIds);

$peerReviews = array_map(
fn ($exportablePeerReviewId) => Repo::reviewAssignment()->get($exportablePeerReviewId),
$exportablePeerReviewIds
);

return $agency->exportPeerReviews($peerReviews, $context);
}
}
31 changes: 31 additions & 0 deletions classes/doi/Repository.php
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,37 @@ public function getDoisForIssue(int $issueId, $enabledDoiTypesOnly = false): arr
return $doiIds;
}

/**
* Gets all DOIs associated with a Peer Review.
* NB: Assumes only enabled DOI types are allowed.
*
*
* @return array<int> DOI IDs
*
*/
public function getDoisForReviewAssignment(int $reviewId, bool $enabledDoiTypesOnly = false): array
{
$doiIds = [];

$reviewAssignment = Repo::reviewAssignment()->get($reviewId);
$reviewDoiId = $reviewAssignment->getData('doiId');

if (!empty($reviewDoiId)) {
$submission = Repo::submission()->get($reviewAssignment->getData('submissionId'));

/** @var JournalDAO $contextDao */
$contextDao = DAORegistry::getDAO('JournalDAO');

/** @var Journal $context */
$context = $contextDao->getById($submission->getData('contextId'));

if (!$enabledDoiTypesOnly || $context->isDoiTypeEnabled(self::TYPE_PEER_REVIEW)) {
$doiIds[] = $reviewDoiId;
}
}
return $doiIds;
}

/**
* Schedules DOI deposits with the active registration agency for all valid and
* unregistered/stale publication items. Items are added as a queued job to be
Expand Down
11 changes: 11 additions & 0 deletions classes/plugins/IDoiRegistrationAgency.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
use APP\submission\Submission;
use PKP\context\Context;
use PKP\plugins\IPKPDoiRegistrationAgency;
use PKP\submission\reviewAssignment\ReviewAssignment;

interface IDoiRegistrationAgency extends IPKPDoiRegistrationAgency
{
Expand All @@ -35,6 +36,11 @@ public function exportSubmissions(array $submissions, Context $context): array;
*/
public function depositSubmissions(array $submissions, Context $context): array;

/**
* @param ReviewAssignment[] $peerReviews
*/
public function depositPeerReviews(array $peerReviews, Context $context): array;

/**
* @param Issue[] $issues
*
Expand All @@ -46,4 +52,9 @@ public function exportIssues(array $issues, Context $context): array;
*
*/
public function depositIssues(array $issues, Context $context): array;

/**
* @param ReviewAssignment[] $reviewAssignments
*/
public function exportPeerReviews(array $reviewAssignments, Context $context): array;
}
10 changes: 10 additions & 0 deletions classes/plugins/PubObjectsExportPlugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,16 @@ public function getSubmissionFilter()
return null;
}

/**
* Get the Peer Review filter.
*
* @return string|null
*/
public function getPeerReviewFilter()
{
return null;
}

/**
* Get the publication filter.
*/
Expand Down
7 changes: 5 additions & 2 deletions cypress/tests/integration/DoiCrossref.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,11 @@ describe('Crossref tests', function () {
})
.then((response) => {
expect(response.status).to.equal(200);
expect(response.body).to.haveOwnProperty('temporaryFileId');
expect(response.body.temporaryFileId).to.be.a('number');
expect(response.body).to.haveOwnProperty('temporaryFileIds');
expect(response.body.temporaryFileIds).to.be.a('array');
response.body.temporaryFileIds.forEach((value) => {
expect(value).to.be.a('number');
});
});

cy.log('Deselect Crossref as registered agency for downstream tests');
Expand Down
16 changes: 16 additions & 0 deletions plugins/generic/datacite/DatacitePlugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,14 @@ public function exportSubmissions(array $submissions, Context $context): array
return ['temporaryFileId' => $temporaryFileId, 'xmlErrors' => $xmlErrors];
}

/**
* @copyDoc IDoiRegistrationAgency::exportPeerReviews()
*/
public function exportPeerReviews(array $reviewAssignments, Context $context): array
{
return [];
}

/**
* @param \APP\submission\Submission[] $submissions
*/
Expand Down Expand Up @@ -165,6 +173,14 @@ public function depositSubmissions(array $submissions, Context $context): array
];
}

/**
* @copyDoc IDoiRegistrationAgency::depositPeerReviews()
*/
public function depositPeerReviews(array $peerReviews, Context $context): array
{
return [];
}

/**
* @param \APP\issue\Issue[] $issues
*
Expand Down
Loading