Open Monograph Press  3.3.0
EditorDecisionActionsManager.inc.php
1 <?php
2 
16 // Submission stage decision actions.
17 define('SUBMISSION_EDITOR_DECISION_INTERNAL_REVIEW', 1);
18 
19 // Submission and review stages decision actions.
20 define('SUBMISSION_EDITOR_DECISION_ACCEPT', 2);
21 define('SUBMISSION_EDITOR_DECISION_DECLINE', 6);
22 
23 // Review stage decisions actions.
24 define('SUBMISSION_EDITOR_DECISION_EXTERNAL_REVIEW', 3);
25 define('SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS', 4);
26 define('SUBMISSION_EDITOR_DECISION_RESUBMIT', 5);
27 define('SUBMISSION_EDITOR_DECISION_NEW_ROUND', 16);
28 
29 // Review stage recommendation actions.
30 define('SUBMISSION_EDITOR_RECOMMEND_EXTERNAL_REVIEW', 15);
31 
32 // Editorial stage decision actions.
33 define('SUBMISSION_EDITOR_DECISION_SEND_TO_PRODUCTION', 7);
34 
35 // Editorial stage decision actions.
36 import('lib.pkp.classes.workflow.PKPEditorDecisionActionsManager');
37 
39 
47  function getActionLabels($request, $stageId, $decisions) {
48  $allDecisionsData =
49  $this->_submissionStageDecisions($stageId) +
51  $this->_externalReviewStageDecisions($request) +
52  $this->_editorialStageDecisions();
53 
54  $actionLabels = array();
55  foreach($decisions as $decision) {
56  if ($allDecisionsData[$decision]['title']) {
57  $actionLabels[$decision] = $allDecisionsData[$decision]['title'];
58  } else {
59  assert(false);
60  }
61  }
62 
63  return $actionLabels;
64  }
65 
73  public function getEditorTakenActionInReviewRound($context, $reviewRound, $decisions = array()) {
74  $editDecisionDao = DAORegistry::getDAO('EditDecisionDAO'); /* @var $editDecisionDao EditDecisionDAO */
75  $editorDecisions = $editDecisionDao->getEditorDecisions($reviewRound->getSubmissionId(), $reviewRound->getStageId(), $reviewRound->getRound());
76 
77  if (empty($decisions)) {
78  $decisions = array_keys($this->_internalReviewStageDecisions());
79  }
80  $takenDecision = false;
81  foreach ($editorDecisions as $decision) {
82  if (in_array($decision['decision'], $decisions)) {
83  $takenDecision = true;
84  break;
85  }
86  }
87 
88  return $takenDecision;
89  }
90 
94  public function getStageDecisions($request, $stageId, $makeDecision = true) {
95  switch ($stageId) {
96  case WORKFLOW_STAGE_ID_INTERNAL_REVIEW:
97  return $this->_internalReviewStageDecisions($makeDecision);
98  }
99  return parent::getStageDecisions($request, $stageId, $makeDecision);
100  }
101 
108  public function getRecommendationOptions($stageId) {
109  $recommendationOptions = parent::getRecommendationOptions($stageId);
110  if ($stageId == WORKFLOW_STAGE_ID_INTERNAL_REVIEW) {
111  $recommendationOptions[SUBMISSION_EDITOR_RECOMMEND_EXTERNAL_REVIEW] = 'editor.submission.decision.sendExternalReview';
112  }
113  return $recommendationOptions;
114  }
115 
116  //
117  // Private helper methods.
118  //
122  protected function _submissionStageDecisions($stageId, $makeDecision = true) {
123  $decisions = parent::_submissionStageDecisions($stageId, $makeDecision);
124  $decisions[SUBMISSION_EDITOR_DECISION_INTERNAL_REVIEW] = array(
125  'name' => 'internalReview',
126  'operation' => 'internalReview',
127  'title' => 'editor.submission.decision.sendInternalReview',
128  );
129  return $decisions;
130  }
131 
139  protected function _internalReviewStageDecisions($makeDecision = true) {
140  $decisions = array();
141  if ($makeDecision) {
142  $decisions = array(
143  SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS => array(
144  'operation' => 'sendReviewsInReview',
145  'name' => 'requestRevisions',
146  'title' => 'editor.submission.decision.requestRevisions',
147  ),
148  SUBMISSION_EDITOR_DECISION_RESUBMIT => array(
149  'name' => 'resubmit',
150  'title' => 'editor.submission.decision.resubmit',
151  ),
152  SUBMISSION_EDITOR_DECISION_NEW_ROUND => array(
153  'name' => 'newround',
154  'title' => 'editor.submission.decision.newRound',
155  ),
156  SUBMISSION_EDITOR_DECISION_EXTERNAL_REVIEW => array(
157  'operation' => 'promoteInReview',
158  'name' => 'externalReview',
159  'title' => 'editor.submission.decision.sendExternalReview',
160  'toStage' => 'workflow.review.externalReview',
161  ),
162  SUBMISSION_EDITOR_DECISION_ACCEPT => array(
163  'operation' => 'promoteInReview',
164  'name' => 'accept',
165  'title' => 'editor.submission.decision.accept',
166  'toStage' => 'submission.copyediting',
167  ),
168  SUBMISSION_EDITOR_DECISION_DECLINE => array(
169  'operation' => 'sendReviewsInReview',
170  'name' => 'decline',
171  'title' => 'editor.submission.decision.decline',
172  ),
173  );
174  }
175  return $decisions;
176  }
177 
186  protected function _externalReviewStageDecisions($request, $makeDecision = true) {
187  $decisions = $this->_internalReviewStageDecisions($makeDecision);
188  unset($decisions[SUBMISSION_EDITOR_DECISION_EXTERNAL_REVIEW]);
189  return $decisions;
190  }
191 
196  public function getStageNotifications() {
197  return parent::getStageNotifications() + array(
198  NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_INTERNAL_REVIEW
199  );
200  }
201 }
202 
203 
EditorDecisionActionsManager\_internalReviewStageDecisions
_internalReviewStageDecisions($makeDecision=true)
Definition: EditorDecisionActionsManager.inc.php:139
EditorDecisionActionsManager\getEditorTakenActionInReviewRound
getEditorTakenActionInReviewRound($context, $reviewRound, $decisions=array())
Definition: EditorDecisionActionsManager.inc.php:73
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
EditorDecisionActionsManager\getStageNotifications
getStageNotifications()
Definition: EditorDecisionActionsManager.inc.php:196
EditorDecisionActionsManager\getRecommendationOptions
getRecommendationOptions($stageId)
Definition: EditorDecisionActionsManager.inc.php:108
EditorDecisionActionsManager
Wrapper class for create and assign editor decisions actions to template manager.
Definition: EditorDecisionActionsManager.inc.php:38
EditorDecisionActionsManager\getActionLabels
getActionLabels($request, $stageId, $decisions)
Definition: EditorDecisionActionsManager.inc.php:47
EditorDecisionActionsManager\getStageDecisions
getStageDecisions($request, $stageId, $makeDecision=true)
Definition: EditorDecisionActionsManager.inc.php:94
PKPEditorDecisionActionsManager
Wrapper class for create and assign editor decisions actions to template manager.
Definition: PKPEditorDecisionActionsManager.inc.php:23
EditorDecisionActionsManager\_submissionStageDecisions
_submissionStageDecisions($stageId, $makeDecision=true)
Definition: EditorDecisionActionsManager.inc.php:122
EditorDecisionActionsManager\_externalReviewStageDecisions
_externalReviewStageDecisions($request, $makeDecision=true)
Definition: EditorDecisionActionsManager.inc.php:186
PKPEditorDecisionActionsManager\_editorialStageDecisions
_editorialStageDecisions($makeDecision=true)
Definition: PKPEditorDecisionActionsManager.inc.php:115