From 23c15da705e5e7491818f4a6a7a94bf1eb6330d8 Mon Sep 17 00:00:00 2001 From: Bozana Bokan Date: Wed, 29 Jan 2025 20:22:01 +0100 Subject: [PATCH] fix changing author metadata on submission locale change --- QuickSubmitForm.php | 10 ++++++++-- classes/form/SubmissionMetadataForm.php | 14 +------------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/QuickSubmitForm.php b/QuickSubmitForm.php index 70edfdf..60aeb4f 100644 --- a/QuickSubmitForm.php +++ b/QuickSubmitForm.php @@ -48,6 +48,7 @@ class QuickSubmitForm extends Form protected PKPSubmission $_submission; protected Journal $_context; protected SubmissionMetadataForm $form; + protected string $oldSubmissionLocale; /** * Constructor @@ -68,6 +69,11 @@ public function __construct(QuickSubmitPlugin $plugin, PKPRequest $request) if ($submissionId = $request->getUserVar('submissionId')) { $this->_submission = Repo::submission()->get($submissionId); + if ($locale !== $this->_submission->getData('locale')) { + // This should actually happen when saving the submission, but I was not able to + // find the sulution to have old submission locale in execute() + Repo::author()->changePublicationLocale($this->_submission->getCurrentPublication()->getId(), $this->_submission->getData('locale'), $locale); + } if ($this->_submission->getData('contextId') != $this->_context->getId()) { throw new Exception('Submission not in context!'); @@ -343,8 +349,8 @@ public function initData() // Assign the user author to the stage Repo::stageAssignment() ->build( - $this->_submission->getId(), - $userGroupId, + $this->_submission->getId(), + $userGroupId, $user->getId() ); } diff --git a/classes/form/SubmissionMetadataForm.php b/classes/form/SubmissionMetadataForm.php index 518f472..71c5b2b 100644 --- a/classes/form/SubmissionMetadataForm.php +++ b/classes/form/SubmissionMetadataForm.php @@ -52,7 +52,7 @@ public function _getAbstractsRequired($submission) { $section = Repo::section() ->get( - $submission->getCurrentPublication()->getData('sectionId'), + $submission->getCurrentPublication()->getData('sectionId'), $submission->getData('contextId') ); @@ -239,18 +239,6 @@ public function execute($submission, $request) 'dataAvailability' => $this->_parentForm->getData('dataAvailability'), ]; - // Update locale - $newLocale = $this->_parentForm->getData('locale'); - if ($newLocale) { - $oldLocale = $publication->getData('locale'); - if (in_array($newLocale, $context->getData('supportedSubmissionLocales'))) { - $params['locale'] = $newLocale; - } - if ($newLocale !== $oldLocale) { - Repo::author()->changePublicationLocale($publication->getId(), $oldLocale, $newLocale); - } - } - // Save the publication Repo::publication()->edit($publication, $params); $publication = Repo::publication()->get($publication->getId());