21 define(
'REVIEW_ROUND_STATUS_REVISIONS_REQUESTED', 1);
22 define(
'REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW', 2);
23 define(
'REVIEW_ROUND_STATUS_SENT_TO_EXTERNAL', 3);
24 define(
'REVIEW_ROUND_STATUS_ACCEPTED', 4);
25 define(
'REVIEW_ROUND_STATUS_DECLINED', 5);
29 define(
'REVIEW_ROUND_STATUS_PENDING_REVIEWERS', 6);
30 define(
'REVIEW_ROUND_STATUS_PENDING_REVIEWS', 7);
31 define(
'REVIEW_ROUND_STATUS_REVIEWS_READY', 8);
32 define(
'REVIEW_ROUND_STATUS_REVIEWS_COMPLETED', 9);
33 define(
'REVIEW_ROUND_STATUS_REVIEWS_OVERDUE', 10);
36 define(
'REVIEW_ROUND_STATUS_REVISIONS_SUBMITTED', 11);
40 define(
'REVIEW_ROUND_STATUS_PENDING_RECOMMENDATIONS', 12);
41 define(
'REVIEW_ROUND_STATUS_RECOMMENDATIONS_READY', 13);
42 define(
'REVIEW_ROUND_STATUS_RECOMMENDATIONS_COMPLETED', 14);
46 define(
'REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW_SUBMITTED', 15);
59 return $this->
getData(
'submissionId');
67 $this->
setData(
'submissionId', $submissionId);
75 return $this->
getData(
'stageId');
83 $this->
setData(
'stageId', $stageId);
99 $this->
setData(
'round', $round);
107 return $this->
getData(
'status');
115 $this->
setData(
'status', $status);
129 import(
'lib.pkp.classes.submission.SubmissionFile');
136 if ($this->
getStatus() == REVIEW_ROUND_STATUS_REVISIONS_REQUESTED || $this->
getStatus() == REVIEW_ROUND_STATUS_REVISIONS_SUBMITTED) {
139 $pendingRevisionDecision = $editDecisionDao->findValidPendingRevisionsDecision($this->
getSubmissionId(), $this->
getStageId(), SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS);
141 if ($pendingRevisionDecision) {
142 if ($editDecisionDao->responseExists($pendingRevisionDecision, $this->getSubmissionId())) {
143 return REVIEW_ROUND_STATUS_REVISIONS_SUBMITTED;
146 return REVIEW_ROUND_STATUS_REVISIONS_REQUESTED;
151 if ($this->
getStatus() == REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW || $this->
getStatus() == REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW_SUBMITTED) {
154 $pendingRevisionDecision = $editDecisionDao->findValidPendingRevisionsDecision($this->
getSubmissionId(), $this->
getStageId(), SUBMISSION_EDITOR_DECISION_RESUBMIT);
156 if ($pendingRevisionDecision) {
157 if ($editDecisionDao->responseExists($pendingRevisionDecision, $this->getSubmissionId())) {
158 return REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW_SUBMITTED;
161 return REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW;
164 $statusFinished = in_array(
166 REVIEW_ROUND_STATUS_SENT_TO_EXTERNAL,
167 REVIEW_ROUND_STATUS_ACCEPTED,
168 REVIEW_ROUND_STATUS_DECLINED
171 if ($statusFinished) {
178 $pendingRecommendations =
false;
179 $recommendationsFinished =
true;
180 $recommendationsReady =
false;
181 $editorsStageAssignments = $stageAssignmentDao->getEditorsAssignedToStage($this->
getSubmissionId(), $this->
getStageId());
182 foreach ($editorsStageAssignments as $editorsStageAssignment) {
183 if ($editorsStageAssignment->getRecommendOnly()) {
184 $pendingRecommendations =
true;
186 $editorId = $editorsStageAssignment->getUserId();
188 if (empty($editorRecommendations)) {
189 $recommendationsFinished =
false;
191 $recommendationsReady =
true;
195 if ($pendingRecommendations) {
196 if ($recommendationsFinished) {
197 return REVIEW_ROUND_STATUS_RECOMMENDATIONS_COMPLETED;
198 } elseif ($recommendationsReady) {
199 return REVIEW_ROUND_STATUS_RECOMMENDATIONS_READY;
204 $anyOverdueReview =
false;
205 $anyIncompletedReview =
false;
206 $anyUnreadReview =
false;
207 import(
'lib.pkp.classes.submission.reviewAssignment.ReviewAssignmentDAO');
209 $reviewAssignments = $reviewAssignmentDao->getByReviewRoundId($this->
getId());
210 foreach ($reviewAssignments as $reviewAssignment) {
211 assert(is_a($reviewAssignment,
'ReviewAssignment'));
213 $assignmentStatus = $reviewAssignment->getStatus();
215 switch ($assignmentStatus) {
216 case REVIEW_ASSIGNMENT_STATUS_DECLINED:
217 case REVIEW_ASSIGNMENT_STATUS_CANCELLED:
220 case REVIEW_ASSIGNMENT_STATUS_RESPONSE_OVERDUE:
221 case REVIEW_ASSIGNMENT_STATUS_REVIEW_OVERDUE:
222 $anyOverdueReview =
true;
225 case REVIEW_ASSIGNMENT_STATUS_AWAITING_RESPONSE:
226 case REVIEW_ASSIGNMENT_STATUS_ACCEPTED:
227 $anyIncompletedReview =
true;
230 case REVIEW_ASSIGNMENT_STATUS_RECEIVED:
231 $anyUnreadReview =
true;
239 if (empty($reviewAssignments)) {
240 return REVIEW_ROUND_STATUS_PENDING_REVIEWERS;
241 } elseif ($anyOverdueReview) {
242 return REVIEW_ROUND_STATUS_REVIEWS_OVERDUE;
243 } elseif ($anyUnreadReview) {
244 return REVIEW_ROUND_STATUS_REVIEWS_READY;
245 } elseif ($anyIncompletedReview) {
246 return REVIEW_ROUND_STATUS_PENDING_REVIEWS;
247 } elseif ($pendingRecommendations) {
248 return REVIEW_ROUND_STATUS_PENDING_RECOMMENDATIONS;
250 return REVIEW_ROUND_STATUS_REVIEWS_COMPLETED;
260 case REVIEW_ROUND_STATUS_REVISIONS_REQUESTED:
261 return 'editor.submission.roundStatus.revisionsRequested';
262 case REVIEW_ROUND_STATUS_REVISIONS_SUBMITTED:
263 return 'editor.submission.roundStatus.revisionsSubmitted';
264 case REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW:
265 return 'editor.submission.roundStatus.resubmitForReview';
266 case REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW_SUBMITTED:
267 return 'editor.submission.roundStatus.submissionResubmitted';
268 case REVIEW_ROUND_STATUS_SENT_TO_EXTERNAL:
269 return 'editor.submission.roundStatus.sentToExternal';
270 case REVIEW_ROUND_STATUS_ACCEPTED:
271 return 'editor.submission.roundStatus.accepted';
272 case REVIEW_ROUND_STATUS_DECLINED:
273 return 'editor.submission.roundStatus.declined';
274 case REVIEW_ROUND_STATUS_PENDING_REVIEWERS:
275 return 'editor.submission.roundStatus.pendingReviewers';
276 case REVIEW_ROUND_STATUS_PENDING_REVIEWS:
277 return 'editor.submission.roundStatus.pendingReviews';
278 case REVIEW_ROUND_STATUS_REVIEWS_READY:
279 return $isAuthor ?
'author.submission.roundStatus.reviewsReady' :
'editor.submission.roundStatus.reviewsReady';
280 case REVIEW_ROUND_STATUS_REVIEWS_COMPLETED:
281 return 'editor.submission.roundStatus.reviewsCompleted';
282 case REVIEW_ROUND_STATUS_REVIEWS_OVERDUE:
283 return 'editor.submission.roundStatus.reviewOverdue';
284 case REVIEW_ROUND_STATUS_PENDING_RECOMMENDATIONS:
285 return 'editor.submission.roundStatus.pendingRecommendations';
286 case REVIEW_ROUND_STATUS_RECOMMENDATIONS_READY:
287 return 'editor.submission.roundStatus.recommendationsReady';
288 case REVIEW_ROUND_STATUS_RECOMMENDATIONS_COMPLETED:
289 return 'editor.submission.roundStatus.recommendationsCompleted';
290 default:
return null;