Open Monograph Press  3.3.0
SendReviewsForm.inc.php
1 <?php
2 
17 import('lib.pkp.controllers.modals.editorDecision.form.EditorDecisionWithEmailForm');
18 
19 // Access decision actions constants.
20 import('classes.workflow.EditorDecisionActionsManager');
21 
30  function __construct($submission, $decision, $stageId, $reviewRound = null) {
31  if (!in_array($decision, $this->_getDecisions())) {
32  fatalError('Invalid decision!');
33  }
34 
35  $this->setSaveFormOperation('saveSendReviews');
36 
37  parent::__construct(
38  $submission, $decision, $stageId,
39  'controllers/modals/editorDecision/form/sendReviewsForm.tpl', $reviewRound
40  );
41  }
42 
43 
44  //
45  // Implement protected template methods from Form
46  //
50  function initData($actionLabels = array()) {
51  $request = Application::get()->getRequest();
52  $actionLabels = (new EditorDecisionActionsManager())->getActionLabels($request->getContext(), $this->getStageId(), $this->_getDecisions());
53 
54  return parent::initData($actionLabels);
55  }
56 
60  function readInputData() {
61  $this->readUserVars(array('decision'));
62  parent::readInputData();
63  }
64 
68  function fetch($request, $template = null, $display = false) {
69  $templateMgr = TemplateManager::getManager($request);
70  $router = $request->getRouter();
71  $dispatcher = $router->getDispatcher();
72  $submission = $this->getSubmission();
73  $user = $request->getUser();
74 
75  import('lib.pkp.classes.mail.SubmissionMailTemplate');
76  $revisionsEmail = new SubmissionMailTemplate($submission, 'EDITOR_DECISION_REVISIONS');
77  $resubmitEmail = new SubmissionMailTemplate($submission, 'EDITOR_DECISION_RESUBMIT');
78 
79  foreach (array($revisionsEmail, $resubmitEmail) as &$email) {
80  $email->assignParams(array(
81  'authorName' => $submission->getAuthorString(),
82  'submissionUrl' => $dispatcher->url($request, ROUTE_PAGE, null, 'authorDashboard', 'submission', $submission->getId()),
83  ));
84  $email->replaceParams();
85  }
86 
87  $templateMgr->assign(array(
88  'revisionsEmail' => $revisionsEmail->getBody(),
89  'resubmitEmail' => $resubmitEmail->getBody(),
90  ));
91 
92  return parent::fetch($request, $template, $display);
93  }
94 
98  function execute(...$functionArgs) {
99  $request = Application::get()->getRequest();
100 
101  // Retrieve the submission.
102  $submission = $this->getSubmission();
103 
104  // Get this form decision actions labels.
105  $actionLabels = (new EditorDecisionActionsManager())->getActionLabels($request->getContext(), $this->getStageId(), $this->_getDecisions());
106 
107  // Record the decision.
108  $reviewRound = $this->getReviewRound();
109  $decision = $this->getDecision();
110  $stageId = $this->getStageId();
111  import('lib.pkp.classes.submission.action.EditorAction');
112  $editorAction = new EditorAction();
113  $editorAction->recordDecision($request, $submission, $decision, $actionLabels, $reviewRound, $stageId);
114 
115  parent::execute(...$functionArgs);
116 
117  // Identify email key and status of round.
118  switch ($decision) {
119  case SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS:
120  $emailKey = 'EDITOR_DECISION_REVISIONS';
121  $status = REVIEW_ROUND_STATUS_REVISIONS_REQUESTED;
122  break;
123 
124  case SUBMISSION_EDITOR_DECISION_RESUBMIT:
125  $emailKey = 'EDITOR_DECISION_RESUBMIT';
126  $status = REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW;
127  break;
128 
129  case SUBMISSION_EDITOR_DECISION_DECLINE:
130  $emailKey = 'EDITOR_DECISION_DECLINE';
131  $status = REVIEW_ROUND_STATUS_DECLINED;
132  break;
133 
134  case SUBMISSION_EDITOR_DECISION_INITIAL_DECLINE:
135  $emailKey = 'EDITOR_DECISION_INITIAL_DECLINE';
136  $status = REVIEW_ROUND_STATUS_DECLINED;
137  break;
138 
139  default:
140  fatalError('Unsupported decision!');
141  }
142 
143  $this->_updateReviewRoundStatus($submission, $status, $reviewRound);
144 
145  // Send email to the author.
146  $this->_sendReviewMailToAuthor($submission, $emailKey, $request);
147  }
148 
149  //
150  // Private functions
151  //
156  function _getDecisions() {
157  return array(
158  SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS,
159  SUBMISSION_EDITOR_DECISION_RESUBMIT,
160  SUBMISSION_EDITOR_DECISION_DECLINE,
161  SUBMISSION_EDITOR_DECISION_INITIAL_DECLINE
162  );
163  }
164 }
165 
166 
SendReviewsForm\fetch
fetch($request, $template=null, $display=false)
Definition: SendReviewsForm.inc.php:68
SendReviewsForm\__construct
__construct($submission, $decision, $stageId, $reviewRound=null)
Definition: SendReviewsForm.inc.php:30
SendReviewsForm
Form to request additional work from the author (Request revisions or resubmit for review),...
Definition: SendReviewsForm.inc.php:22
EditorDecisionForm\getSubmission
getSubmission()
Definition: EditorDecisionForm.inc.php:81
EditorDecisionWithEmailForm\setSaveFormOperation
setSaveFormOperation($saveFormOperation)
Definition: EditorDecisionWithEmailForm.inc.php:41
EditorDecisionForm\getReviewRound
getReviewRound()
Definition: EditorDecisionForm.inc.php:97
SubmissionMailTemplate
Subclass of MailTemplate for sending emails related to submissions.
Definition: SubmissionMailTemplate.inc.php:20
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
SendReviewsForm\initData
initData($actionLabels=array())
Definition: SendReviewsForm.inc.php:50
SendReviewsForm\readInputData
readInputData()
Definition: SendReviewsForm.inc.php:60
EditorDecisionWithEmailForm
Base class for the editor decision forms.
Definition: EditorDecisionWithEmailForm.inc.php:18
SendReviewsForm\_getDecisions
_getDecisions()
Definition: SendReviewsForm.inc.php:156
EditorDecisionActionsManager
Wrapper class for create and assign editor decisions actions to template manager.
Definition: EditorDecisionActionsManager.inc.php:38
EditorDecisionWithEmailForm\_updateReviewRoundStatus
_updateReviewRoundStatus($submission, $status, $reviewRound=null)
Definition: EditorDecisionWithEmailForm.inc.php:180
EditorDecisionForm\getDecision
getDecision()
Definition: EditorDecisionForm.inc.php:73
SendReviewsForm\execute
execute(... $functionArgs)
Definition: SendReviewsForm.inc.php:98
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
EditorDecisionWithEmailForm\_sendReviewMailToAuthor
_sendReviewMailToAuthor($submission, $emailKey, $request)
Definition: EditorDecisionWithEmailForm.inc.php:202
EditorAction
Editor actions.
Definition: EditorAction.inc.php:19
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
fatalError
if(!function_exists('import')) fatalError($reason)
Definition: functions.inc.php:32
EditorDecisionForm\getStageId
getStageId()
Definition: EditorDecisionForm.inc.php:89