From 0ae37c5c634337ce9729a6803ce25e2b18371751 Mon Sep 17 00:00:00 2001 From: Dimitris Efstathiou Date: Wed, 31 Jan 2024 13:35:40 +0200 Subject: [PATCH] pkp/pkp-lib#9674 Port StageAssignmentDAO and StageAssignment to Eloquent Model --- classes/install/Upgrade.php | 21 +++++---------------- plugins/reports/monographReport/Report.php | 7 +++---- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/classes/install/Upgrade.php b/classes/install/Upgrade.php index 172d2fc7254..cc2e0f414be 100644 --- a/classes/install/Upgrade.php +++ b/classes/install/Upgrade.php @@ -22,6 +22,7 @@ use APP\file\PublicFileManager; use APP\press\PressDAO; use Exception; +use Illuminate\Database\PostgresConnection; use Illuminate\Support\Facades\DB; use PKP\config\Config; use PKP\db\DAORegistry; @@ -30,7 +31,6 @@ use PKP\install\Installer; use PKP\navigationMenu\NavigationMenuItemDAO; use PKP\site\SiteDAO; -use PKP\stageAssignment\StageAssignmentDAO; use PKP\submissionFile\SubmissionFile; class Upgrade extends Installer @@ -202,8 +202,6 @@ public function migrateUserAndAuthorNames() */ public function changeUserRolesAndStageAssignmentsForStagePermitSubmissionEdit() { - $stageAssignmentDao = DAORegistry::getDAO('StageAssignmentDAO'); /** @var StageAssignmentDAO $stageAssignmentDao */ - $roles = Repo::userGroup()::NOT_CHANGE_METADATA_EDIT_PERMISSION_ROLES; $roleString = '(' . implode(',', $roles) . ')'; @@ -211,19 +209,10 @@ public function changeUserRolesAndStageAssignmentsForStagePermitSubmissionEdit() ->whereIn('role_id', $roles) ->update(['permit_metadata_edit' => 1]); - switch (Config::getVar('database', 'driver')) { - case 'mysql': - case 'mysqli': - $stageAssignmentDao->update('UPDATE stage_assignments sa JOIN user_groups ug on sa.user_group_id = ug.user_group_id SET sa.can_change_metadata = 1 WHERE ug.role_id IN ' . $roleString); - break; - case 'postgres': - case 'postgres64': - case 'postgres7': - case 'postgres8': - case 'postgres9': - $stageAssignmentDao->update('UPDATE stage_assignments sa SET can_change_metadata=1 FROM user_groups ug WHERE sa.user_group_id = ug.user_group_id AND ug.role_id IN ' . $roleString); - break; - default: throw new Exception('Unknown database type!'); + if (DB::connection() instanceof PostgresConnection) { + DB::statement('UPDATE stage_assignments sa SET can_change_metadata=1 FROM user_groups ug WHERE sa.user_group_id = ug.user_group_id AND ug.role_id IN ' . $roleString); + } else { + DB::statement('UPDATE stage_assignments sa JOIN user_groups ug on sa.user_group_id = ug.user_group_id SET sa.can_change_metadata = 1 WHERE ug.role_id IN ' . $roleString); } return true; diff --git a/plugins/reports/monographReport/Report.php b/plugins/reports/monographReport/Report.php index c06abb27263..f77e120e6f1 100644 --- a/plugins/reports/monographReport/Report.php +++ b/plugins/reports/monographReport/Report.php @@ -36,7 +36,6 @@ use PKP\facades\Locale; use PKP\security\Role; use PKP\stageAssignment\StageAssignment; -use PKP\stageAssignment\StageAssignmentDAO; use PKP\submission\SubmissionAgencyDAO; use PKP\submission\SubmissionDisciplineDAO; use PKP\submission\SubmissionKeywordDAO; @@ -419,10 +418,10 @@ private function getCategories(): string */ private function getEditors(): array { - /** @var StageAssignmentDAO */ - $stageAssignmentDao = DAORegistry::getDAO('StageAssignmentDAO'); + $stageAssignments = StageAssignment::withSubmissionId($this->submission->getId()) + ->get(); - return collect($stageAssignmentDao->getBySubmissionAndStageId($this->submission->getId())->toIterator()) + return $stageAssignments ->filter(fn (StageAssignment $stageAssignment) => $this->getEditorUserGroups()->get($stageAssignment->getUserGroupId())) ->map(fn (StageAssignment $stageAssignment) => $this->getUser($stageAssignment->getUserId())) ->unique(fn (User $user) => $user->getId())