Open Journal Systems  3.3.0
ReviewReminderForm.inc.php
1 <?php
2 
16 import('lib.pkp.classes.form.Form');
17 
18 class ReviewReminderForm extends Form {
21 
25  function __construct($reviewAssignment) {
26  parent::__construct('controllers/grid/users/reviewer/form/reviewReminderForm.tpl');
27  $this->_reviewAssignment = $reviewAssignment;
28  AppLocale::requireComponents(LOCALE_COMPONENT_APP_SUBMISSION);
29 
30  // Validation checks for this form
31  $this->addCheck(new FormValidatorPost($this));
32  $this->addCheck(new FormValidatorCSRF($this));
33  }
34 
35  //
36  // Getters and Setters
37  //
42  function getReviewAssignment() {
44  }
45 
46 
47  //
48  // Overridden template methods
49  //
53  function initData() {
54  $request = Application::get()->getRequest();
55  $userDao = DAORegistry::getDAO('UserDAO'); /* @var $userDao UserDAO */
56  $user = $request->getUser();
57  $context = $request->getContext();
58 
59  $reviewAssignment = $this->getReviewAssignment();
60  $reviewerId = $reviewAssignment->getReviewerId();
61  $reviewer = $userDao->getById($reviewerId);
62 
63  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
64  $submission = $submissionDao->getById($reviewAssignment->getSubmissionId());
65 
66  import('lib.pkp.classes.mail.SubmissionMailTemplate');
67  $context = $request->getContext();
68  $templateKey = $this->_getMailTemplateKey($context);
69 
70  $email = new SubmissionMailTemplate($submission, $templateKey);
71 
72  // Format the review due date
73  $reviewDueDate = strtotime($reviewAssignment->getDateDue());
74  $dateFormatShort = $context->getLocalizedDateFormatShort();
75  if ($reviewDueDate == -1) $reviewDueDate = $dateFormatShort; // Default to something human-readable if no date specified
76  else $reviewDueDate = strftime($dateFormatShort, $reviewDueDate);
77 
78  $dispatcher = $request->getDispatcher();
79  $paramArray = array(
80  'reviewerName' => $reviewer->getFullName(),
81  'reviewDueDate' => $reviewDueDate,
82  'editorialContactSignature' => $user->getContactSignature(),
83  'reviewerUserName' => $reviewer->getUsername(),
84  'passwordResetUrl' => $dispatcher->url($request, ROUTE_PAGE, null, 'login', 'resetPassword', $reviewer->getUsername(), array('confirm' => Validation::generatePasswordResetHash($reviewer->getId()))),
85  'submissionReviewUrl' => $dispatcher->url($request, ROUTE_PAGE, null, 'reviewer', 'submission', null, array('submissionId' => $reviewAssignment->getSubmissionId()))
86  );
87  $email->assignParams($paramArray);
88 
89  $this->setData('stageId', $reviewAssignment->getStageId());
90  $this->setData('reviewAssignmentId', $reviewAssignment->getId());
91  $this->setData('submissionId', $submission->getId());
92  $this->setData('reviewAssignment', $reviewAssignment);
93  $this->setData('reviewerName', $reviewer->getFullName() . ' <' . $reviewer->getEmail() . '>');
94  $this->setData('message', $email->getBody());
95  $this->setData('reviewDueDate', $reviewDueDate);
96  }
97 
101  function fetch($request, $template = null, $display = false) {
102  $context = $request->getContext();
103  $user = $request->getUser();
104 
105  $templateMgr = TemplateManager::getManager($request);
106  $templateMgr->assign('emailVariables', array(
107  'reviewerName' => __('user.name'),
108  'reviewDueDate' => __('reviewer.submission.reviewDueDate'),
109  'submissionReviewUrl' => __('common.url'),
110  'submissionTitle' => __('submission.title'),
111  'passwordResetUrl' => __('common.url'),
112  'contextName' => $context->getLocalizedName(),
113  'editorialContactSignature' => $user->getContactSignature(),
114  ));
115  return parent::fetch($request, $template, $display);
116  }
117 
122  function readInputData() {
123  $this->readUserVars(array(
124  'message',
125  'reviewDueDate',
126  ));
127  }
128 
132  function execute(...$functionArgs) {
133  $userDao = DAORegistry::getDAO('UserDAO'); /* @var $userDao UserDAO */
134  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
135  $request = Application::get()->getRequest();
136 
137  $reviewAssignment = $this->getReviewAssignment();
138  $reviewerId = $reviewAssignment->getReviewerId();
139  $reviewer = $userDao->getById($reviewerId);
140  $submission = $submissionDao->getById($reviewAssignment->getSubmissionId());
141  $reviewDueDate = $this->getData('reviewDueDate');
142  $dispatcher = $request->getDispatcher();
143  $user = $request->getUser();
144 
145  import('lib.pkp.classes.mail.SubmissionMailTemplate');
146  $context = $request->getContext();
147  $templateKey = $this->_getMailTemplateKey($context);
148  $email = new SubmissionMailTemplate($submission, $templateKey, null, null, null, false);
149 
150  $reviewUrlArgs = array('submissionId' => $reviewAssignment->getSubmissionId());
151  if ($context->getData('reviewerAccessKeysEnabled')) {
152  import('lib.pkp.classes.security.AccessKeyManager');
153  $accessKeyManager = new AccessKeyManager();
154  $expiryDays = ($context->getData('numWeeksPerReview') + 4) * 7;
155  $accessKey = $accessKeyManager->createKey($context->getId(), $reviewerId, $reviewAssignment->getId(), $expiryDays);
156  $reviewUrlArgs = array_merge($reviewUrlArgs, array('reviewId' => $reviewAssignment->getId(), 'key' => $accessKey));
157  }
158 
159  $email->addRecipient($reviewer->getEmail(), $reviewer->getFullName());
160  $email->setBody($this->getData('message'));
161  $email->assignParams(array(
162  'reviewerName' => $reviewer->getFullName(),
163  'reviewDueDate' => $reviewDueDate,
164  'passwordResetUrl' => $dispatcher->url($request, ROUTE_PAGE, null, 'login', 'resetPassword', $reviewer->getUsername(), array('confirm' => Validation::generatePasswordResetHash($reviewer->getId()))),
165  'submissionReviewUrl' => $dispatcher->url($request, ROUTE_PAGE, null, 'reviewer', 'submission', null, $reviewUrlArgs),
166  'editorialContactSignature' => $user->getContactSignature(),
167  ));
168  if (!$email->send($request)) {
169  import('classes.notification.NotificationManager');
170  $notificationMgr = new NotificationManager();
171  $notificationMgr->createTrivialNotification($request->getUser()->getId(), NOTIFICATION_TYPE_ERROR, array('contents' => __('email.compose.error')));
172  }
173 
174  // update the ReviewAssignment with the reminded and modified dates
175  $reviewAssignment->setDateReminded(Core::getCurrentDate());
176  $reviewAssignment->stampModified();
177  $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); /* @var $reviewAssignmentDao ReviewAssignmentDAO */
178  $reviewAssignmentDao->updateObject($reviewAssignment);
179 
180  parent::execute(...$functionArgs);
181  }
182 
190  function _getMailTemplateKey($context) {
191  $templateKey = 'REVIEW_REMIND';
192  if ($context->getData('reviewerAccessKeysEnabled')) {
193  $templateKey = 'REVIEW_REMIND_ONECLICK';
194  }
195 
196  return $templateKey;
197  }
198 
199 }
200 
201 
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
ReviewReminderForm\execute
execute(... $functionArgs)
Definition: ReviewReminderForm.inc.php:132
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
AccessKeyManager
Class defining operations for AccessKey management.
Definition: AccessKeyManager.inc.php:18
SubmissionMailTemplate
Subclass of MailTemplate for sending emails related to submissions.
Definition: SubmissionMailTemplate.inc.php:20
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
ReviewReminderForm\_getMailTemplateKey
_getMailTemplateKey($context)
Definition: ReviewReminderForm.inc.php:190
ReviewReminderForm\__construct
__construct($reviewAssignment)
Definition: ReviewReminderForm.inc.php:25
ReviewReminderForm\getReviewAssignment
getReviewAssignment()
Definition: ReviewReminderForm.inc.php:42
ReviewReminderForm
Form for sending a review reminder to a reviewer.
Definition: ReviewReminderForm.inc.php:18
ReviewReminderForm\$_reviewAssignment
$_reviewAssignment
Definition: ReviewReminderForm.inc.php:20
ReviewReminderForm\initData
initData()
Definition: ReviewReminderForm.inc.php:53
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
Core\getCurrentDate
static getCurrentDate($ts=null)
Definition: Core.inc.php:63
ReviewReminderForm\fetch
fetch($request, $template=null, $display=false)
Definition: ReviewReminderForm.inc.php:101
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
ReviewReminderForm\readInputData
readInputData()
Definition: ReviewReminderForm.inc.php:122
NotificationManager
Definition: NotificationManager.inc.php:19
Validation\generatePasswordResetHash
static generatePasswordResetHash($userId, $expiry=null)
Definition: Validation.inc.php:305
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