Open Journal Systems  3.3.0
EditorDecisionForm.inc.php
1 <?php
2 
16 import('lib.pkp.classes.form.Form');
17 
18 // Define review round and review stage id constants.
19 import('lib.pkp.classes.submission.reviewRound.ReviewRound');
20 
21 class EditorDecisionForm extends Form {
23  var $_submission;
24 
26  var $_stageId;
27 
29  var $_reviewRound;
30 
33 
34 
42  function __construct($submission, $decision, $stageId, $template, $reviewRound = null) {
43  parent::__construct($template);
44  $this->_submission = $submission;
45  $this->_stageId = $stageId;
46  $this->_reviewRound = $reviewRound;
47  $this->_decision = $decision;
48 
49  // Validation checks for this form
50  $this->addCheck(new FormValidatorPost($this));
51  $this->addCheck(new FormValidatorCSRF($this));
52  }
53 
54  //
55  // Getters and Setters
56  //
61  function getDecision() {
62  return $this->_decision;
63  }
64 
69  function getSubmission() {
70  return $this->_submission;
71  }
72 
77  function getStageId() {
78  return $this->_stageId;
79  }
80 
85  function getReviewRound() {
86  return $this->_reviewRound;
87  }
88 
89  //
90  // Overridden template methods from Form
91  //
95  function readInputData() {
96  $this->readUserVars(array('selectedFiles'));
97  parent::initData();
98  }
99 
100 
104  function fetch($request, $template = null, $display = false) {
105  $submission = $this->getSubmission();
106 
107  $reviewRound = $this->getReviewRound();
108  if (is_a($reviewRound, 'ReviewRound')) {
109  $this->setData('reviewRoundId', $reviewRound->getId());
110  }
111 
112  $this->setData('stageId', $this->getStageId());
113 
114  $templateMgr = TemplateManager::getManager($request);
115  $stageDecisions = (new EditorDecisionActionsManager())->getStageDecisions($request->getContext(), $this->getStageId());
116  $templateMgr->assign(array(
117  'decisionData' => $stageDecisions[$this->getDecision()],
118  'submissionId' => $submission->getId(),
119  'submission' => $submission,
120  ));
121 
122  return parent::fetch($request, $template, $display);
123  }
124 
125 
126  //
127  // Private helper methods
128  //
138  function _initiateReviewRound($submission, $stageId, $request, $status = null) {
139 
140  // If we already have review round for this stage,
141  // we create a new round after the last one.
142  $reviewRoundDao = DAORegistry::getDAO('ReviewRoundDAO'); /* @var $reviewRoundDao ReviewRoundDAO */
143  $lastReviewRound = $reviewRoundDao->getLastReviewRoundBySubmissionId($submission->getId(), $stageId);
144  if ($lastReviewRound) {
145  $newRound = $lastReviewRound->getRound() + 1;
146  } else {
147  // If we don't have any review round, we create the first one.
148  $newRound = 1;
149  }
150 
151  // Create a new review round.
152  $reviewRound = $reviewRoundDao->build($submission->getId(), $stageId, $newRound, $status);
153 
154  // Check for a notification already in place for the current review round.
155  $notificationDao = DAORegistry::getDAO('NotificationDAO'); /* @var $notificationDao NotificationDAO */
156  $notificationFactory = $notificationDao->getByAssoc(
157  ASSOC_TYPE_REVIEW_ROUND,
158  $reviewRound->getId(),
159  null,
160  NOTIFICATION_TYPE_REVIEW_ROUND_STATUS,
161  $submission->getContextId()
162  );
163 
164  // Create round status notification if there is no notification already.
165  if ($notificationFactory->wasEmpty()) {
166  $notificationMgr = new NotificationManager();
167  $notificationMgr->createNotification(
168  $request,
169  null,
170  NOTIFICATION_TYPE_REVIEW_ROUND_STATUS,
171  $submission->getContextId(),
172  ASSOC_TYPE_REVIEW_ROUND,
173  $reviewRound->getId(),
174  NOTIFICATION_LEVEL_NORMAL
175  );
176  }
177 
178  // Add the selected files to the new round.
179  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
180 
181  // Bring in the SUBMISSION_FILE_* constants.
182  import('lib.pkp.classes.submission.SubmissionFile');
183  // Bring in the Manager (we need it).
184  import('lib.pkp.classes.file.SubmissionFileManager');
185  $submissionFileManager = new SubmissionFileManager($submission->getContextId(), $submission->getId());
186  foreach (array('selectedFiles', 'selectedAttachments') as $userVar) {
187  $selectedFiles = $this->getData($userVar);
188  if(is_array($selectedFiles)) {
189  foreach ($selectedFiles as $fileId) {
190  // Retrieve the file last revision number.
191  $revisionNumber = $submissionFileDao->getLatestRevisionNumber($fileId);
192  list($newFileId, $newRevision) = $submissionFileManager->copyFileToFileStage($fileId, $revisionNumber, SUBMISSION_FILE_REVIEW_FILE, null, true);
193  $submissionFileDao->assignRevisionToReviewRound($newFileId, $newRevision, $reviewRound);
194  }
195  }
196  }
197 
198  return $newRound;
199  }
200 }
201 
202 
EditorDecisionForm\$_submission
$_submission
Definition: EditorDecisionForm.inc.php:26
EditorDecisionForm\$_reviewRound
$_reviewRound
Definition: EditorDecisionForm.inc.php:38
SubmissionFileManager
Helper class for database-backed submission file management tasks.
Definition: SubmissionFileManager.inc.php:30
EditorDecisionForm\getSubmission
getSubmission()
Definition: EditorDecisionForm.inc.php:81
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
EditorDecisionForm\getReviewRound
getReviewRound()
Definition: EditorDecisionForm.inc.php:97
Form\setData
setData($key, $value=null)
Definition: Form.inc.php:229
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
Form\getData
getData($key)
Definition: Form.inc.php:220
FormValidatorPost
Form validation check to make sure the form is POSTed.
Definition: FormValidatorPost.inc.php:18
EditorDecisionActionsManager
Wrapper class for create and assign editor decisions actions to template manager.
Definition: EditorDecisionActionsManager.inc.php:33
EditorDecisionForm\getDecision
getDecision()
Definition: EditorDecisionForm.inc.php:73
EditorDecisionForm\_initiateReviewRound
_initiateReviewRound($submission, $stageId, $request, $status=null)
Definition: EditorDecisionForm.inc.php:150
EditorDecisionForm\readInputData
readInputData()
Definition: EditorDecisionForm.inc.php:107
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
NotificationManager
Definition: NotificationManager.inc.php:19
FormValidatorCSRF
Form validation check to make sure the CSRF token is correct.
Definition: FormValidatorCSRF.inc.php:18
EditorDecisionForm
Base class for the editor decision forms.
Definition: EditorDecisionForm.inc.php:21
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
EditorDecisionForm\fetch
fetch($request, $template=null, $display=false)
Definition: EditorDecisionForm.inc.php:116
EditorDecisionForm\$_decision
$_decision
Definition: EditorDecisionForm.inc.php:44
EditorDecisionForm\getStageId
getStageId()
Definition: EditorDecisionForm.inc.php:89
EditorDecisionForm\__construct
__construct($submission, $decision, $stageId, $template, $reviewRound=null)
Definition: EditorDecisionForm.inc.php:54
EditorDecisionForm\$_stageId
$_stageId
Definition: EditorDecisionForm.inc.php:32