Open Journal Systems  3.3.0
ReviewerNotifyActionForm.inc.php
1 <?php
15 import('lib.pkp.classes.form.Form');
16 
17 abstract class ReviewerNotifyActionForm extends Form {
20 
23 
26 
34  public function __construct($reviewAssignment, $reviewRound, $submission, $template) {
35  $this->setReviewAssignment($reviewAssignment);
36  $this->setReviewRound($reviewRound);
37  $this->setSubmission($submission);
38  parent::__construct($template);
39  }
40 
41  protected abstract function getEmailKey();
42 
43  //
44  // Overridden template methods
45  //
49  public function initData() {
50  $request = Application::get()->getRequest();
51  $context = $request->getContext();
52  $submission = $this->getSubmission();
53  $reviewAssignment = $this->getReviewAssignment();
54  $reviewRound = $this->getReviewRound();
55  $reviewerId = $reviewAssignment->getReviewerId();
56 
57  $this->setData(array(
58  'submissionId' => $submission->getId(),
59  'stageId' => $reviewRound->getStageId(),
60  'reviewRoundId' => $reviewRound->getId(),
61  'reviewAssignmentId' => $reviewAssignment->getId(),
62  'dateConfirmed' => $reviewAssignment->getDateConfirmed(),
63  'reviewerId' => $reviewerId,
64  ));
65 
66  import('lib.pkp.classes.mail.SubmissionMailTemplate');
67  $template = new SubmissionMailTemplate($submission, $this->getEmailKey());
68  if ($template) {
69  $userDao = DAORegistry::getDAO('UserDAO'); /* @var $userDao UserDAO */
70  $reviewer = $userDao->getById($reviewerId);
71  $user = $request->getUser();
72 
73  $template->assignParams(array(
74  'reviewerName' => $reviewer->getFullName(),
75  'signatureFullName' => $user->getFullname(),
76  ));
77  $template->replaceParams();
78 
79  $this->setData('personalMessage', $template->getBody());
80  }
81  }
82 
87  public function execute(...$functionArgs) {
88  $request = Application::get()->getRequest();
89  $submission = $this->getSubmission();
90  $reviewAssignment = $this->getReviewAssignment();
91 
92  // Notify the reviewer via email.
93  import('lib.pkp.classes.mail.SubmissionMailTemplate');
94  $mail = new SubmissionMailTemplate($submission, $this->getEmailKey(), null, null, false);
95 
96  if ($mail->isEnabled() && !$this->getData('skipEmail')) {
97  $userDao = DAORegistry::getDAO('UserDAO'); /* @var $userDao UserDAO */
98  $reviewerId = (int) $this->getData('reviewerId');
99  $reviewer = $userDao->getById($reviewerId);
100  $mail->addRecipient($reviewer->getEmail(), $reviewer->getFullName());
101  $mail->setBody($this->getData('personalMessage'));
102  $mail->assignParams();
103  if (!$mail->send($request)) {
104  import('classes.notification.NotificationManager');
105  $notificationMgr = new NotificationManager();
106  $notificationMgr->createTrivialNotification($request->getUser()->getId(), NOTIFICATION_TYPE_ERROR, array('contents' => __('email.compose.error')));
107  }
108  }
109  parent::execute(...$functionArgs);
110  return true;
111  }
112 
116  public function readInputData() {
117  $this->readUserVars(array(
118  'personalMessage',
119  'reviewAssignmentId',
120  'reviewRoundId',
121  'reviewerId',
122  'skipEmail',
123  'stageId',
124  'submissionId',
125  ));
126  }
127 
128  //
129  // Getters and Setters
130  //
135  public function setReviewAssignment($reviewAssignment) {
136  $this->_reviewAssignment = $reviewAssignment;
137  }
138 
143  public function getReviewAssignment() {
145  }
146 
151  public function setReviewRound($reviewRound) {
152  $this->_reviewRound = $reviewRound;
153  }
154 
159  public function getReviewRound() {
160  return $this->_reviewRound;
161  }
162 
167  public function setSubmission($submission) {
168  $this->_submission = $submission;
169  }
170 
175  public function getSubmission() {
176  return $this->_submission;
177  }
178 }
ReviewerNotifyActionForm\execute
execute(... $functionArgs)
Definition: ReviewerNotifyActionForm.inc.php:87
ReviewerNotifyActionForm\$_reviewAssignment
$_reviewAssignment
Definition: ReviewerNotifyActionForm.inc.php:19
ReviewerNotifyActionForm\getReviewRound
getReviewRound()
Definition: ReviewerNotifyActionForm.inc.php:159
ReviewerNotifyActionForm\initData
initData()
Definition: ReviewerNotifyActionForm.inc.php:49
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
ReviewerNotifyActionForm\getReviewAssignment
getReviewAssignment()
Definition: ReviewerNotifyActionForm.inc.php:143
ReviewerNotifyActionForm\readInputData
readInputData()
Definition: ReviewerNotifyActionForm.inc.php:116
SubmissionMailTemplate
Subclass of MailTemplate for sending emails related to submissions.
Definition: SubmissionMailTemplate.inc.php:20
ReviewerNotifyActionForm\$_reviewRound
$_reviewRound
Definition: ReviewerNotifyActionForm.inc.php:25
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
ReviewerNotifyActionForm\setReviewRound
setReviewRound($reviewRound)
Definition: ReviewerNotifyActionForm.inc.php:151
ReviewerNotifyActionForm
Perform an action on a review including a reviewer notification email.
Definition: ReviewerNotifyActionForm.inc.php:17
ReviewerNotifyActionForm\setReviewAssignment
setReviewAssignment($reviewAssignment)
Definition: ReviewerNotifyActionForm.inc.php:135
ReviewerNotifyActionForm\setSubmission
setSubmission($submission)
Definition: ReviewerNotifyActionForm.inc.php:167
ReviewerNotifyActionForm\getSubmission
getSubmission()
Definition: ReviewerNotifyActionForm.inc.php:175
ReviewerNotifyActionForm\getEmailKey
getEmailKey()
NotificationManager
Definition: NotificationManager.inc.php:19
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
ReviewerNotifyActionForm\__construct
__construct($reviewAssignment, $reviewRound, $submission, $template)
Definition: ReviewerNotifyActionForm.inc.php:34
ReviewerNotifyActionForm\$_submission
$_submission
Definition: ReviewerNotifyActionForm.inc.php:22