16 import(
'controllers.grid.users.stageParticipant.form.StageParticipantNotifyForm');
40 function __construct($submission, $stageId, $assignmentId =
null) {
41 parent::__construct($submission->getId(), ASSOC_TYPE_SUBMISSION, $stageId,
'controllers/grid/users/stageParticipant/addParticipantForm.tpl');
42 $this->_submission = $submission;
43 $this->_stageId = $stageId;
44 $this->_assignmentId = $assignmentId;
45 $this->_contextId = $submission->getContextId();
49 $this->
addCheck(
new FormValidator($this,
'userGroupId',
'required',
'editor.submission.addStageParticipant.form.userGroupRequired'));
74 $this->_managerGroupIds = $userGroupDao->getUserGroupIdsByRoleId(ROLE_ID_MANAGER, $this->_contextId);
75 $subEditorGroupIds = $userGroupDao->getUserGroupIdsByRoleId(ROLE_ID_SUB_EDITOR, $this->_contextId);
76 $this->_possibleRecommendOnlyUserGroupIds = array_merge($this->_managerGroupIds, $subEditorGroupIds);
85 return !in_array($userGroupId, $this->_managerGroupIds);
94 return in_array($userGroupId, $this->_possibleRecommendOnlyUserGroupIds);
100 function fetch($request, $template =
null, $display =
false) {
102 $userGroups = $userGroupDao->getUserGroupsByStage(
103 $request->getContext()->getId(),
107 $userGroupOptions = array();
108 while ($userGroup = $userGroups->next()) {
110 if ($userGroup->getRoleId() == ROLE_ID_REVIEWER)
continue;
111 $userGroupOptions[$userGroup->getId()] = $userGroup->getLocalizedName();
115 $keys = array_keys($userGroupOptions);
116 $templateMgr->assign(array(
117 'userGroupOptions' => $userGroupOptions,
118 'selectedUserGroupId' => array_shift($keys),
119 'possibleRecommendOnlyUserGroupIds' => $this->_possibleRecommendOnlyUserGroupIds,
120 'recommendOnlyUserGroupIds' => $userGroupDao->getRecommendOnlyGroupIds($request->getContext()->getId()),
121 'notPossibleEditSubmissionMetadataPermissionChange' => $this->_managerGroupIds,
122 'permitMetadataEditUserGroupIds' => $userGroupDao->getPermitMetadataEditGroupIds($request->getContext()->getId()),
123 'submissionId' => $this->getSubmission()->getId(),
125 'userIdSelected' =>
'',
128 if ($this->_assignmentId) {
133 $stageAssignment = $stageAssignmentDao->getById($this->_assignmentId);
137 $currentUser = $userDao->getById($stageAssignment->getUserId());
141 $userGroup = $userGroupDao->getById($stageAssignment->getUserGroupId());
143 $templateMgr->assign(array(
144 'assignmentId' => $this->_assignmentId,
145 'currentUserName' => $currentUser->getFullName(),
146 'currentUserGroup' => $userGroup->getLocalizedName(),
147 'userGroupId' => $stageAssignment->getUserGroupId(),
148 'userIdSelected' => $stageAssignment->getUserId(),
149 'currentAssignmentRecommendOnly' => $stageAssignment->getRecommendOnly(),
150 'currentAssignmentPermitMetadataEdit' => $stageAssignment->getCanChangeMetadata(),
151 'isChangePermitMetadataAllowed' => $this->_isChangePermitMetadataAllowed($userGroup->getId()),
152 'isChangeRecommendOnlyAllowed' => $this->_isChangeRecommendOnlyAllowed($userGroup->getId()),
159 import(
'lib.pkp.classes.submission.reviewAssignment.ReviewAssignment');
160 $blindReviewerIds = array();
161 if (in_array($this->
getSubmission()->
getStageId(), array(WORKFLOW_STAGE_ID_INTERNAL_REVIEW, WORKFLOW_STAGE_ID_EXTERNAL_REVIEW))) {
162 $blindReviewMethods = array(SUBMISSION_REVIEW_METHOD_BLIND, SUBMISSION_REVIEW_METHOD_DOUBLEBLIND);
164 $reviewAssignments = $reviewAssignmentDao->getBySubmissionId($this->
getSubmission()->getId());
165 $blindReviews = array_filter($reviewAssignments,
function($reviewAssignment) use ($blindReviewMethods) {
166 return in_array($reviewAssignment->getReviewMethod(), $blindReviewMethods) && !$reviewAssignment->getDeclined();
168 $blindReviewerIds = array_map(
function($reviewAssignment) {
169 return $reviewAssignment->getReviewerId();
173 $templateMgr->assign(array(
174 'blindReviewerIds' => array_values(array_unique($blindReviewerIds)),
175 'blindReviewerWarning' => __(
'editor.submission.addStageParticipant.form.reviewerWarning'),
176 'blindReviewerWarningOk' => __(
'common.ok'),
179 return parent::fetch($request, $template, $display);
199 function validate($callHooks =
true) {
200 $userGroupId = (int) $this->
getData(
'userGroupId');
201 $userId = (int) $this->
getData(
'userId');
205 return $userGroupDao->userInGroup($userId, $userGroupId) && $userGroupDao->getById($userGroupId, $submission->getContextId());
212 function execute(...$functionParams) {
217 $userGroupId = (int) $this->
getData(
'userGroupId');
218 $userId = (int) $this->
getData(
'userId');
223 if ($userGroupDao->userGroupAssignedToStage($userGroupId, $this->getStageId())) {
226 if ($this->_assignmentId) {
228 $stageAssignment = $stageAssignmentDao->getById($this->_assignmentId);
230 if ($stageAssignment) {
231 $stageAssignment->setRecommendOnly($recommendOnly);
232 $stageAssignment->setCanChangeMetadata($canChangeMetadata);
233 $stageAssignmentDao->updateObject($stageAssignment);
240 $stageAssignment = $stageAssignmentDao->build($submission->getId(), $userGroupId, $userId, $recommendOnly, $canChangeMetadata);
244 parent::execute(...$functionParams);
245 return array($userGroupId, $userId, $stageAssignment->getId());