17 import(
'classes.workflow.EditorDecisionActionsManager');
39 function recordDecision($request, $submission, $decision, $decisionLabels, $reviewRound =
null, $stageId =
null, $recommendation =
false) {
43 if (!is_null($reviewRound)) {
44 $stageId = $reviewRound->getStageId();
46 if ($stageId ==
null) {
49 $stageId = $submission->getStageId();
53 $editorAssigned = $stageAssignmentDao->editorAssignedToStage(
59 if (!$editorAssigned || !isset($decisionLabels[$decision]))
return false;
61 $user = $request->getUser();
62 $editorDecision = array(
63 'editDecisionId' =>
null,
64 'editorId' => $user->getId(),
65 'decision' => $decision,
69 $result = $editorDecision;
70 if (!
HookRegistry::call(
'EditorAction::recordDecision', array(&$submission, &$editorDecision, &$result, &$recommendation))) {
73 $editDecisionDao->updateEditorDecision($submission->getId(), $editorDecision, $stageId, $reviewRound);
77 if ($decision == SUBMISSION_EDITOR_DECISION_DECLINE || $decision == SUBMISSION_EDITOR_DECISION_INITIAL_DECLINE) {
78 $submission->setStatus(STATUS_DECLINED);
79 $submissionDao->updateObject($submission);
80 } elseif ($submission->getStatus() == STATUS_DECLINED) {
81 $submission->setStatus(STATUS_QUEUED);
82 $submissionDao->updateObject($submission);
86 import(
'lib.pkp.classes.log.SubmissionLog');
87 import(
'lib.pkp.classes.log.PKPSubmissionEventLogEntry');
89 $eventType = $recommendation ? SUBMISSION_LOG_EDITOR_RECOMMENDATION : SUBMISSION_LOG_EDITOR_DECISION;
90 $logKey = $recommendation ?
'log.editor.recommendation' :
'log.editor.decision';
91 SubmissionLog::logEvent($request, $submission, $eventType, $logKey, array(
'editorName' => $user->getFullName(),
'submissionId' => $submission->getId(),
'decision' => __($decisionLabels[$decision])));
106 function addReviewer($request, $submission, $reviewerId, &$reviewRound, $reviewDueDate, $responseDueDate, $reviewMethod =
null) {
110 $reviewer = $userDao->getById($reviewerId);
115 $assigned = $reviewAssignmentDao->reviewerExists($reviewRound->getId(), $reviewerId);
119 $stageId = $reviewRound->getStageId();
120 $round = $reviewRound->getRound();
121 if (!$assigned && isset($reviewer) && !
HookRegistry::call(
'EditorAction::addReviewer', array(&$submission, $reviewerId))) {
122 $reviewAssignment = $reviewAssignmentDao->newDataObject();
123 $reviewAssignment->setSubmissionId($submission->getId());
124 $reviewAssignment->setReviewerId($reviewerId);
126 $reviewAssignment->setStageId($stageId);
127 $reviewAssignment->setRound($round);
128 $reviewAssignment->setReviewRoundId($reviewRound->getId());
129 if (isset($reviewMethod)) {
130 $reviewAssignment->setReviewMethod($reviewMethod);
132 $reviewAssignmentDao->insertObject($reviewAssignment);
134 $this->
setDueDates($request, $submission, $reviewAssignment, $reviewDueDate, $responseDueDate);
137 $notificationMgr->createNotification(
140 NOTIFICATION_TYPE_REVIEW_ASSIGNMENT,
141 $submission->getContextId(),
142 ASSOC_TYPE_REVIEW_ASSIGNMENT,
143 $reviewAssignment->getId(),
144 NOTIFICATION_LEVEL_TASK,
150 import(
'lib.pkp.classes.log.SubmissionLog');
151 import(
'lib.pkp.classes.log.PKPSubmissionEventLogEntry');
152 SubmissionLog::logEvent($request, $submission, SUBMISSION_LOG_REVIEW_ASSIGN,
'log.review.reviewerAssigned', array(
'reviewAssignmentId' => $reviewAssignment->getId(),
'reviewerName' => $reviewer->getFullName(),
'submissionId' => $submission->getId(),
'stageId' => $stageId,
'round' => $round));
165 function setDueDates($request, $submission, $reviewAssignment, $reviewDueDate, $responseDueDate, $logEntry =
false) {
167 $context = $request->getContext();
169 $reviewer = $userDao->getById($reviewAssignment->getReviewerId());
170 if (!isset($reviewer))
return false;
172 if ($reviewAssignment->getSubmissionId() == $submission->getId() && !
HookRegistry::call(
'EditorAction::setDueDates', array(&$reviewAssignment, &$reviewer, &$reviewDueDate, &$responseDueDate))) {
175 $defaultNumWeeks = $context->getData(
'numWeeksPerReview');
176 $reviewAssignment->setDateDue($reviewDueDate);
179 $defaultNumWeeks = $context->getData(
'numWeeksPerReponse');
180 $reviewAssignment->setDateResponseDue($responseDueDate);
183 $reviewAssignment->stampModified();
185 $reviewAssignmentDao->updateObject($reviewAssignment);
190 import(
'lib.pkp.classes.log.SubmissionLog');
191 import(
'classes.log.SubmissionEventLogEntry');
195 SUBMISSION_LOG_REVIEW_SET_DUE_DATE,
196 'log.review.reviewDueDateSet',
198 'reviewAssignmentId' => $reviewAssignment->getId(),
199 'reviewerName' => $reviewer->getFullName(),
200 'dueDate' => strftime(
201 $context->getLocalizedDateFormatShort(),
202 strtotime($reviewAssignment->getDateDue())
204 'submissionId' => $submission->getId(),
205 'stageId' => $reviewAssignment->getStageId(),
206 'round' => $reviewAssignment->getRound()
221 $submission->setStageId($newStage);
223 $submissionDao->updateObject($submission);