Open Monograph Press  3.3.0
EditReviewForm.inc.php
1 <?php
2 
17 import('lib.pkp.classes.form.Form');
18 
19 class EditReviewForm extends Form {
22 
25 
30  function __construct($reviewAssignment) {
31  $this->_reviewAssignment = $reviewAssignment;
32  assert(is_a($this->_reviewAssignment, 'ReviewAssignment'));
33 
34  $reviewRoundDao = DAORegistry::getDAO('ReviewRoundDAO'); /* @var $reviewRoundDao ReviewRoundDAO */
35  $this->_reviewRound = $reviewRoundDao->getById($reviewAssignment->getReviewRoundId());
36  assert(is_a($this->_reviewRound, 'ReviewRound'));
37 
38  parent::__construct('controllers/grid/users/reviewer/form/editReviewForm.tpl');
39 
40  // Validation checks for this form
41  $this->addCheck(new FormValidator($this, 'responseDueDate', 'required', 'editor.review.errorAddingReviewer'));
42  $this->addCheck(new FormValidator($this, 'reviewDueDate', 'required', 'editor.review.errorAddingReviewer'));
43  $this->addCheck(new FormValidatorPost($this));
44  $this->addCheck(new FormValidatorCSRF($this));
45  }
46 
47  //
48  // Overridden template methods
49  //
53  function initData() {
54  $this->setData('responseDueDate', $this->_reviewAssignment->getDateResponseDue());
55  $this->setData('reviewDueDate', $this->_reviewAssignment->getDateDue());
56  return parent::initData();
57  }
58 
63  function fetch($request, $template = null, $display = false) {
64  $templateMgr = TemplateManager::getManager($request);
65  $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); /* @var $reviewAssignmentDao ReviewAssignmentDAO */
66  $context = $request->getContext();
67 
68  if (!$this->_reviewAssignment->getDateCompleted()){
69  $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /* @var $reviewFormDao ReviewFormDAO */
70  $reviewFormsIterator = $reviewFormDao->getActiveByAssocId(Application::getContextAssocType(), $context->getId());
71  $reviewForms = array();
72  while ($reviewForm = $reviewFormsIterator->next()) {
73  $reviewForms[$reviewForm->getId()] = $reviewForm->getLocalizedTitle();
74  }
75  $templateMgr->assign(array(
76  'reviewForms' => $reviewForms,
77  'reviewFormId' => $this->_reviewAssignment->getReviewFormId(),
78  ));
79  }
80 
81  $templateMgr->assign(array(
82  'stageId' => $this->_reviewAssignment->getStageId(),
83  'reviewRoundId' => $this->_reviewRound->getId(),
84  'submissionId' => $this->_reviewAssignment->getSubmissionId(),
85  'reviewAssignmentId' => $this->_reviewAssignment->getId(),
86  'reviewMethod' => $this->_reviewAssignment->getReviewMethod(),
87  'reviewMethods' => $reviewAssignmentDao->getReviewMethodsTranslationKeys(),
88  ));
89  return parent::fetch($request, $template, $display);
90  }
91 
96  function readInputData() {
97  $this->readUserVars(array(
98  'selectedFiles',
99  'responseDueDate',
100  'reviewDueDate',
101  'reviewMethod',
102  'reviewFormId',
103 
104  ));
105  }
106 
110  function execute(...$functionArgs) {
111  $request = Application::get()->getRequest();
112  $context = $request->getContext();
113 
114  // Get the list of available files for this review.
115  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
116  import('lib.pkp.classes.submission.SubmissionFile'); // File constants
117  $submissionFiles = $submissionFileDao->getLatestRevisionsByReviewRound($this->_reviewRound, SUBMISSION_FILE_REVIEW_FILE);
118  $selectedFiles = (array) $this->getData('selectedFiles');
119 
120  // Revoke all, then grant selected.
121  $reviewFilesDao = DAORegistry::getDAO('ReviewFilesDAO'); /* @var $reviewFilesDao ReviewFilesDAO */
122  $reviewFilesDao->revokeByReviewId($this->_reviewAssignment->getId());
123  foreach ($submissionFiles as $submissionFile) {
124  if (in_array($submissionFile->getFileId(), $selectedFiles)) {
125  $reviewFilesDao->grant($this->_reviewAssignment->getId(), $submissionFile->getFileId());
126  }
127  }
128 
129  $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); /* @var $reviewAssignmentDao ReviewAssignmentDAO */
130  $reviewAssignment = $reviewAssignmentDao->getReviewAssignment($this->_reviewRound->getId(), $this->_reviewAssignment->getReviewerId(), $this->_reviewRound->getRound(), $this->_reviewRound->getStageId());
131 
132  // Send notification to reviewer if details have changed.
133  if (strtotime($reviewAssignment->getDateDue()) != strtotime($this->getData('reviewDueDate')) || strtotime($reviewAssignment->getDateResponseDue()) != strtotime($this->getData('responseDueDate')) || $reviewAssignment->getReviewMethod() != $this->getData('reviewMethod')){
134  $notificationManager = new NotificationManager();
135  $request = Application::get()->getRequest();
136  $context = $request->getContext();
137 
138  $notificationManager->createNotification(
139  $request,
140  $reviewAssignment->getReviewerId(),
141  NOTIFICATION_TYPE_REVIEW_ASSIGNMENT_UPDATED,
142  $context->getId(),
143  ASSOC_TYPE_REVIEW_ASSIGNMENT,
144  $reviewAssignment->getId(),
145  NOTIFICATION_LEVEL_TASK
146  );
147 
148  }
149 
150  $reviewAssignment->setDateDue($this->getData('reviewDueDate'));
151  $reviewAssignment->setDateResponseDue($this->getData('responseDueDate'));
152  $reviewAssignment->setReviewMethod($this->getData('reviewMethod'));
153 
154  if (!$reviewAssignment->getDateCompleted()){
155  // Ensure that the review form ID is valid, if specified
156  $reviewFormId = (int) $this->getData('reviewFormId');
157  $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /* @var $reviewFormDao ReviewFormDAO */
158  $reviewForm = $reviewFormDao->getById($reviewFormId, Application::getContextAssocType(), $context->getId());
159  $reviewAssignment->setReviewFormId($reviewForm?$reviewFormId:null);
160  }
161 
162  $reviewAssignmentDao->updateObject($reviewAssignment);
163  parent::execute(...$functionArgs);
164  }
165 }
166 
167 
EditReviewForm\initData
initData()
Definition: EditReviewForm.inc.php:59
EditReviewForm\execute
execute(... $functionArgs)
Definition: EditReviewForm.inc.php:116
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
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
EditReviewForm\$_reviewAssignment
$_reviewAssignment
Definition: EditReviewForm.inc.php:24
EditReviewForm
Allow the editor to limit the available files to an assigned reviewer after the assignment has taken ...
Definition: EditReviewForm.inc.php:19
EditReviewForm\__construct
__construct($reviewAssignment)
Definition: EditReviewForm.inc.php:36
Application\getContextAssocType
static getContextAssocType()
Definition: Application.inc.php:203
EditReviewForm\$_reviewRound
$_reviewRound
Definition: EditReviewForm.inc.php:30
EditReviewForm\readInputData
readInputData()
Definition: EditReviewForm.inc.php:102
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
EditReviewForm\fetch
fetch($request, $template=null, $display=false)
Definition: EditReviewForm.inc.php:69
FormValidator
Class to represent a form validation check.
Definition: FormValidator.inc.php:23
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
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235