/** * Send the email * @param $request PKPRequest * @param $submission Submission */ function execute($request, $submission) { $userDao = DAORegistry::getDAO('UserDAO'); $toUser = $userDao->getById($this->_reviewAssignment->getReviewerId()); $fromUser = $request->getUser(); import('lib.pkp.classes.mail.SubmissionMailTemplate'); $email = new SubmissionMailTemplate($submission); $email->addRecipient($toUser->getEmail(), $toUser->getFullName()); $email->setReplyTo($fromUser->getEmail(), $fromUser->getFullName()); $email->setSubject($this->getData('subject')); $email->setBody($this->getData('message')); $email->assignParams(); $email->send(); }
/** * Send the automatic review reminder to the reviewer. * @param $reviewAssignment ReviewAssignment * @param $submission Submission * @param $context Context * @param $reminderType string * REVIEW_REMIND_AUTO, REVIEW_REQUEST_REMIND_AUTO */ function sendReminder($reviewAssignment, $submission, $context, $reminderType = REVIEW_REMIND_AUTO) { $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); $userDao = DAORegistry::getDAO('UserDAO'); $reviewId = $reviewAssignment->getId(); $reviewer = $userDao->getById($reviewAssignment->getReviewerId()); if (!isset($reviewer)) { return false; } import('lib.pkp.classes.mail.SubmissionMailTemplate'); $emailKey = $reminderType; $reviewerAccessKeysEnabled = $context->getSetting('reviewerAccessKeysEnabled'); switch (true) { case $reviewerAccessKeysEnabled && $reminderType == REVIEW_REMIND_AUTO: $emailKey = 'REVIEW_REMIND_AUTO_ONECLICK'; break; case $reviewerAccessKeysEnabled && $reminderType == REVIEW_REQUEST_REMIND_AUTO: $emailKey = 'REVIEW_REQUEST_REMIND_AUTO_ONECLICK'; break; } $email = new SubmissionMailTemplate($submission, $emailKey, $context->getPrimaryLocale(), $context, false); $email->setContext($context); $email->setReplyTo(null); $email->addRecipient($reviewer->getEmail(), $reviewer->getFullName()); $email->setSubject($email->getSubject($context->getPrimaryLocale())); $email->setBody($email->getBody($context->getPrimaryLocale())); $urlParams = array('submissionId' => $reviewAssignment->getSubmissionId()); if ($reviewerAccessKeysEnabled) { import('lib.pkp.classes.security.AccessKeyManager'); $accessKeyManager = new AccessKeyManager(); // Key lifetime is the typical review period plus four weeks $keyLifetime = ($context->getSetting('numWeeksPerReview') + 4) * 7; $urlParams['key'] = $accessKeyManager->createKey('ReviewerContext', $reviewer->getId(), $reviewId, $keyLifetime); } $application = PKPApplication::getApplication(); $request = $application->getRequest(); $dispatcher = $application->getDispatcher(); $submissionReviewUrl = $dispatcher->url($request, ROUTE_PAGE, $context->getPath(), 'reviewer', 'submission', null, $urlParams); // Format the review due date $reviewDueDate = strtotime($reviewAssignment->getDateDue()); $dateFormatShort = Config::getVar('general', 'date_format_short'); if ($reviewDueDate === -1 || $reviewDueDate === false) { // Default to something human-readable if no date specified $reviewDueDate = '_____'; } else { $reviewDueDate = strftime($dateFormatShort, $reviewDueDate); } // Format the review response due date $responseDueDate = strtotime($reviewAssignment->getDateResponseDue()); if ($responseDueDate === -1 || $responseDueDate === false) { // Default to something human-readable if no date specified $responseDueDate = '_____'; } else { $responseDueDate = strftime($dateFormatShort, $responseDueDate); } AppLocale::requireComponents(LOCALE_COMPONENT_PKP_REVIEWER); AppLocale::requireComponents(LOCALE_COMPONENT_PKP_COMMON); $paramArray = array('reviewerName' => $reviewer->getFullName(), 'reviewerUserName' => $reviewer->getUsername(), 'reviewDueDate' => $reviewDueDate, 'responseDueDate' => $responseDueDate, 'editorialContactSignature' => $context->getSetting('contactName') . "\n" . $context->getLocalizedName(), 'passwordResetUrl' => $dispatcher->url($request, ROUTE_PAGE, $context->getPath(), 'login', 'resetPassword', $reviewer->getUsername(), array('confirm' => Validation::generatePasswordResetHash($reviewer->getId()))), 'submissionReviewUrl' => $submissionReviewUrl, 'messageToReviewer' => __('reviewer.step1.requestBoilerplate'), 'abstractTermIfEnabled' => $submission->getLocalizedAbstract() == '' ? '' : __('common.abstract')); $email->assignParams($paramArray); $email->send(); $reviewAssignment->setDateReminded(Core::getCurrentDate()); $reviewAssignment->setReminderWasAutomatic(1); $reviewAssignmentDao->updateObject($reviewAssignment); }
/** * Get the reviewer response email template. */ function getResponseEmail($submission, $reviewAssignment, $request, $decline) { import('lib.pkp.classes.mail.SubmissionMailTemplate'); $email = new SubmissionMailTemplate($submission, $decline ? 'REVIEW_DECLINE' : 'REVIEW_CONFIRM'); // Get reviewer $userDao = DAORegistry::getDAO('UserDAO'); $reviewer = $userDao->getById($reviewAssignment->getReviewerId()); // Get editorial contact name $stageAssignmentDao = DAORegistry::getDAO('StageAssignmentDAO'); $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); $userDao = DAORegistry::getDAO('UserDAO'); $stageAssignments = $stageAssignmentDao->getBySubmissionAndStageId($submission->getId(), $reviewAssignment->getStageId()); $recipient = null; while ($stageAssignment = $stageAssignments->next()) { $userGroup = $userGroupDao->getById($stageAssignment->getUserGroupId()); if (!in_array($userGroup->getRoleId(), array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR))) { continue; } $recipient = $userDao->getById($stageAssignment->getUserId()); $email->addRecipient($recipient->getEmail(), $recipient->getFullName()); } if (!$recipient) { $context = $request->getContext(); $email->addRecipient($context->getSetting('contactEmail'), $context->getSetting('contactName')); } // Get due date $reviewDueDate = strtotime($reviewAssignment->getDateDue()); $dateFormatShort = Config::getVar('general', 'date_format_short'); if ($reviewDueDate == -1) { $reviewDueDate = $dateFormatShort; } else { $reviewDueDate = strftime($dateFormatShort, $reviewDueDate); } $email->setReplyTo($reviewer->getEmail(), $reviewer->getFullName()); $email->assignParams(array('reviewerName' => $reviewer->getFullName(), 'reviewDueDate' => $reviewDueDate)); $email->replaceParams(); return $email; }
/** * Get the reviewer response email template. */ function getResponseEmail($submission, $reviewAssignment, $request, $decline) { import('lib.pkp.classes.mail.SubmissionMailTemplate'); $email = new SubmissionMailTemplate($submission, $decline ? 'REVIEW_DECLINE' : 'REVIEW_CONFIRM'); // Get reviewer $userDao = DAORegistry::getDAO('UserDAO'); $reviewer = $userDao->getById($reviewAssignment->getReviewerId()); // Get editorial contact name $context = $request->getContext(); $email->addRecipient($context->getSetting('contactEmail'), $context->getSetting('contactName')); $editorialContactName = $context->getSetting('contactName'); // Get due date $reviewDueDate = strtotime($reviewAssignment->getDateDue()); $dateFormatShort = Config::getVar('general', 'date_format_short'); if ($reviewDueDate == -1) { $reviewDueDate = $dateFormatShort; } else { $reviewDueDate = strftime($dateFormatShort, $reviewDueDate); } $email->setReplyTo($reviewer->getEmail(), $reviewer->getFullName()); $email->assignParams(array('editorialContactName' => $editorialContactName, 'reviewerName' => $reviewer->getFullName(), 'reviewDueDate' => $reviewDueDate)); return $email; }