[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
14082024
/
Data
/
htdocs
/
htdocs
/
jurnal-kesmas
/
v1
/
lib
/
pkp
/
classes
/
decision
/
[
Home
]
File: Steps.php
<?php /** * @file classes/decision/Steps.php * * Copyright (c) 2014-2022 Simon Fraser University * Copyright (c) 2000-2022 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class Steps * * @brief A base class to define a step-by-step workflow to record a decision type */ namespace PKP\decision; use APP\facades\Repo; use APP\submission\Submission; use PKP\context\Context; use PKP\db\DAORegistry; use PKP\stageAssignment\StageAssignment; use PKP\stageAssignment\StageAssignmentDAO; use PKP\submission\reviewRound\ReviewRound; use PKP\user\User; class Steps { public DecisionType $decisionType; public Submission $submission; public Context $context; public ?ReviewRound $reviewRound; public array $steps = []; public function __construct(DecisionType $decisionType, Submission $submission, Context $context, ?ReviewRound $reviewRound = null) { $this->decisionType = $decisionType; $this->submission = $submission; $this->context = $context; if ($reviewRound) { $this->reviewRound = $reviewRound; } } /** * Add a step to the workflow * * @param bool $prepend Pass true to add this step before other steps */ public function addStep(Step $step, bool $prepend = false) { if ($prepend) { array_unshift($this->steps, $step); } else { $this->steps[$step->id] = $step; } } /** * Compile initial state data to pass to the frontend * * @see DecisionPage.vue */ public function getState(): array { $state = []; foreach ($this->steps as $step) { $state[] = $step->getState(); } return $state; } /** * Get all users assigned to a role in this decision's stage * * @param integer $roleId * * @return array<User> */ public function getStageParticipants(int $roleId): array { /** @var StageAssignmentDAO $stageAssignmentDao */ $stageAssignmentDao = DAORegistry::getDAO('StageAssignmentDAO'); $userIds = []; $result = $stageAssignmentDao->getBySubmissionAndRoleIds( $this->submission->getId(), [$roleId], $this->decisionType->getStageId() ); /** @var StageAssignment $stageAssignment */ while ($stageAssignment = $result->next()) { $userIds[] = (int) $stageAssignment->getUserId(); } $users = []; foreach (array_unique($userIds) as $authorUserId) { $users[] = Repo::user()->get($authorUserId); } return $users; } /** * Get all reviewers who completed a review in this decision's stage * * @param array<\PKP\submission\reviewAssignment\ReviewAssignment> $reviewAssignments * * @return array<User> */ public function getReviewersFromAssignments(array $reviewAssignments): array { $reviewers = []; foreach ($reviewAssignments as $reviewAssignment) { $reviewers[] = Repo::user()->get((int) $reviewAssignment->getReviewerId()); } return $reviewers; } /** * Get all assigned editors who can make a decision in this stage */ public function getDecidingEditors(): array { /** @var StageAssignmentDAO $stageAssignmentDao */ $stageAssignmentDao = DAORegistry::getDAO('StageAssignmentDAO'); $userIds = $stageAssignmentDao->getDecidingEditorIds($this->submission->getId(), $this->decisionType->getStageId()); $users = []; foreach (array_unique($userIds) as $authorUserId) { $users[] = Repo::user()->get($authorUserId); } return $users; } }