/** * Initialize form data from the associated author. * @param $args array * @param $request PKPRequest */ function initData($args, $request) { $userDao = DAORegistry::getDAO('UserDAO'); $user = $request->getUser(); $context = $request->getContext(); $reviewAssignment = $this->getReviewAssignment(); $reviewerId = $reviewAssignment->getReviewerId(); $reviewer = $userDao->getById($reviewerId); $submissionDao = Application::getSubmissionDAO(); $submission = $submissionDao->getById($reviewAssignment->getSubmissionId()); import('lib.pkp.classes.mail.SubmissionMailTemplate'); $email = new SubmissionMailTemplate($submission, 'REVIEW_REMIND'); // Format the review due date $reviewDueDate = strtotime($reviewAssignment->getDateDue()); $dateFormatShort = Config::getVar('general', 'date_format_short'); if ($reviewDueDate == -1) { $reviewDueDate = $dateFormatShort; } else { $reviewDueDate = strftime($dateFormatShort, $reviewDueDate); } $dispatcher = $request->getDispatcher(); $paramArray = array('reviewerName' => $reviewer->getFullName(), 'reviewDueDate' => $reviewDueDate, 'editorialContactSignature' => $user->getContactSignature(), 'reviewerUserName' => $reviewer->getUsername(), 'passwordResetUrl' => $dispatcher->url($request, ROUTE_PAGE, null, 'login', 'resetPassword', $reviewer->getUsername(), array('confirm' => Validation::generatePasswordResetHash($reviewer->getId()))), 'submissionReviewUrl' => $dispatcher->url($request, ROUTE_PAGE, null, 'reviewer', 'submission', null, array('submissionId' => $reviewAssignment->getSubmissionId()))); $email->assignParams($paramArray); $this->setData('stageId', $reviewAssignment->getStageId()); $this->setData('reviewAssignmentId', $reviewAssignment->getId()); $this->setData('submissionId', $submission->getId()); $this->setData('reviewAssignment', $reviewAssignment); $this->setData('reviewerName', $reviewer->getFullName() . ' <' . $reviewer->getEmail() . '>'); $this->setData('message', $email->getBody() . "\n" . $context->getSetting('emailSignature')); }
/** * Fetches an email template's message body and returns it via AJAX. * @param $args array * @param $request PKPRequest */ function fetchTemplateBody($args, $request) { $templateId = $request->getUserVar('template'); import('lib.pkp.classes.mail.SubmissionMailTemplate'); $template = new SubmissionMailTemplate($this->getSubmission(), $templateId); if ($template) { $user = $request->getUser(); $dispatcher = $request->getDispatcher(); $context = $request->getContext(); $template->assignParams(array('editorialContactSignature' => $user->getContactSignature(), 'signatureFullName' => $user->getFullname())); $json = new JSONMessage(true, $template->getBody() . "\n" . $context->getSetting('emailSignature')); return $json->getString(); } }
/** * Initialize form data from the associated author. * @param $args array * @param $request PKPRequest */ function initData($args, $request) { $userDao = DAORegistry::getDAO('UserDAO'); $user = $request->getUser(); $context = $request->getContext(); $reviewAssignment = $this->getReviewAssignment(); $reviewerId = $reviewAssignment->getReviewerId(); $reviewer = $userDao->getById($reviewerId); $submissionDao = Application::getSubmissionDAO(); $submission = $submissionDao->getById($reviewAssignment->getSubmissionId()); import('lib.pkp.classes.mail.SubmissionMailTemplate'); $email = new SubmissionMailTemplate($submission, 'REVIEW_ACK'); $dispatcher = $request->getDispatcher(); $email->assignParams(array('reviewerName' => $reviewer->getFullName(), 'editorialContactSignature' => $user->getContactSignature(), 'reviewerUserName' => $reviewer->getUsername(), 'passwordResetUrl' => $dispatcher->url($request, ROUTE_PAGE, null, 'login', 'resetPassword', $reviewer->getUsername(), array('confirm' => Validation::generatePasswordResetHash($reviewer->getId()))), 'submissionReviewUrl' => $dispatcher->url($request, ROUTE_PAGE, null, 'reviewer', 'submission', null, array('submissionId' => $reviewAssignment->getSubmissionId())))); $email->replaceParams(); $this->setData('submissionId', $submission->getId()); $this->setData('stageId', $reviewAssignment->getStageId()); $this->setData('reviewAssignmentId', $reviewAssignment->getId()); $this->setData('reviewAssignment', $reviewAssignment); $this->setData('reviewerName', $reviewer->getFullName() . ' <' . $reviewer->getEmail() . '>'); $this->setData('message', $email->getBody()); }
/** * Initialize form data * * @param $args array * @param $request PKPRequest */ function initData($args, $request) { $context = $request->getContext(); $submission = $this->getSubmission(); $reviewAssignment = $this->getReviewAssignment(); $reviewRound = $this->getReviewRound(); $reviewerId = $reviewAssignment->getReviewerId(); $this->setData('submissionId', $submission->getId()); $this->setData('stageId', $reviewRound->getStageId()); $this->setData('reviewRoundId', $reviewRound->getId()); $this->setData('reviewAssignmentId', $reviewAssignment->getId()); $this->setData('reviewerId', $reviewerId); import('lib.pkp.classes.mail.SubmissionMailTemplate'); $template = new SubmissionMailTemplate($submission, 'REVIEW_CANCEL'); if ($template) { $userDao = DAORegistry::getDAO('UserDAO'); $reviewer = $userDao->getById($reviewerId); $user = $request->getUser(); $template->assignParams(array('reviewerName' => $reviewer->getFullName(), 'editorialContactSignature' => $user->getContactSignature(), 'signatureFullName' => $user->getFullname())); $this->setData('personalMessage', $template->getBody() . "\n" . $context->getSetting('emailSignature')); } }
/** * @copydoc Form::initData() */ function initData($args, $request, $actionLabels) { $context = $request->getContext(); $router = $request->getRouter(); $dispatcher = $router->getDispatcher(); $submission = $this->getSubmission(); $user = $request->getUser(); import('lib.pkp.classes.mail.SubmissionMailTemplate'); $emailKeys = array(SUBMISSION_EDITOR_DECISION_ACCEPT => 'EDITOR_DECISION_ACCEPT', SUBMISSION_EDITOR_DECISION_DECLINE => 'EDITOR_DECISION_DECLINE', SUBMISSION_EDITOR_DECISION_EXTERNAL_REVIEW => 'EDITOR_DECISION_SEND_TO_EXTERNAL', SUBMISSION_EDITOR_DECISION_RESUBMIT => 'EDITOR_DECISION_RESUBMIT', SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS => 'EDITOR_DECISION_REVISIONS', SUBMISSION_EDITOR_DECISION_SEND_TO_PRODUCTION => 'EDITOR_DECISION_SEND_TO_PRODUCTION'); $email = new SubmissionMailTemplate($submission, $emailKeys[$this->getDecision()]); $paramArray = array('authorName' => $submission->getAuthorString(), 'editorialContactSignature' => $user->getContactSignature(), 'submissionUrl' => $dispatcher->url($request, ROUTE_PAGE, null, 'authorDashboard', 'submission', $submission->getId())); $email->assignParams($paramArray); // If we are in review stage we need a review round. $reviewRound = $this->getReviewRound(); if (is_a($reviewRound, 'ReviewRound')) { $this->setData('reviewRoundId', $reviewRound->getId()); } $data = array('submissionId' => $submission->getId(), 'decision' => $this->getDecision(), 'authorName' => $submission->getAuthorString(), 'personalMessage' => $email->getBody() . "\n" . $context->getSetting('emailSignature'), 'actionLabel' => $actionLabels[$this->getDecision()]); foreach ($data as $key => $value) { $this->setData($key, $value); } return parent::initData($args, $request); }
/** * 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); }
/** * Fetches an email template's message body and returns it via AJAX. * @param $args array * @param $request PKPRequest * @return JSONMessage JSON object */ function fetchTemplateBody($args, $request) { $templateId = $request->getUserVar('template'); import('lib.pkp.classes.mail.SubmissionMailTemplate'); $template = new SubmissionMailTemplate($this->getSubmission(), $templateId); if ($template) { $user = $request->getUser(); $dispatcher = $request->getDispatcher(); $context = $request->getContext(); $template->assignParams(array('editorialContactSignature' => $user->getContactSignature(), 'signatureFullName' => $user->getFullname())); $template->replaceParams(); import('controllers.grid.users.stageParticipant.form.StageParticipantNotifyForm'); // exists in each app. $notifyForm = new StageParticipantNotifyForm($this->getSubmission()->getId(), ASSOC_TYPE_SUBMISSION, $this->getAuthorizedContextObject(ASSOC_TYPE_WORKFLOW_STAGE)); return new JSONMessage(true, array('body' => $template->getBody(), 'variables' => $notifyForm->getEmailVariableNames($templateId))); } }
/** * Initialize form data from the associated author. * @param $args array * @param $request PKPRequest */ function initData($args, $request) { $reviewerId = (int) $request->getUserVar('reviewerId'); $context = $request->getContext(); $reviewRound = $this->getReviewRound(); $submission = $this->getSubmission(); // The reviewer id has been set if (!empty($reviewerId)) { if ($this->_isValidReviewer($context, $submission, $reviewRound, $reviewerId)) { $userDao = DAORegistry::getDAO('UserDAO'); /* @var $userDao UserDAO */ $reviewer = $userDao->getById($reviewerId); $this->setData('userNameString', sprintf('%s (%s)', $reviewer->getFullname(), $reviewer->getUsername())); } } // Get review assignment related data; $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewAssignment = $reviewAssignmentDao->getReviewAssignment($reviewRound->getId(), $reviewerId, $reviewRound->getRound()); // Get the review method (open, blind, or double-blind) if (isset($reviewAssignment) && $reviewAssignment->getReviewMethod() != false) { $reviewMethod = $reviewAssignment->getReviewMethod(); $reviewFormId = $reviewAssignment->getReviewFormId(); } else { // Set default review method. $reviewMethod = $context->getSetting('defaultReviewMode'); if (!$reviewMethod) { $reviewMethod = SUBMISSION_REVIEW_METHOD_BLIND; } // If there is a section/series and it has a default // review form designated, use it. $sectionDao = Application::getSectionDAO(); $section = $sectionDao->getById($submission->getSectionId(), $context->getId()); if ($section) { $reviewFormId = $section->getReviewFormId(); } else { $reviewFormId = null; } } // Get the response/review due dates or else set defaults if (isset($reviewAssignment) && $reviewAssignment->getDueDate() != null) { $reviewDueDate = strftime(Config::getVar('general', 'date_format_short'), strtotime($reviewAssignment->getDueDate())); } else { $numWeeks = (int) $context->getSetting('numWeeksPerReview'); if ($numWeeks <= 0) { $numWeeks = 4; } $reviewDueDate = strftime(Config::getVar('general', 'date_format_short'), strtotime('+' . $numWeeks . ' week')); } if (isset($reviewAssignment) && $reviewAssignment->getResponseDueDate() != null) { $responseDueDate = strftime(Config::getVar('general', 'date_format_short'), strtotime($reviewAssignment->getResponseDueDate())); } else { $numWeeks = (int) $context->getSetting('numWeeksPerResponse'); if ($numWeeks <= 0) { $numWeeks = 3; } $responseDueDate = strftime(Config::getVar('general', 'date_format_short'), strtotime('+' . $numWeeks . ' week')); } // Get the currently selected reviewer selection type to show the correct tab if we're re-displaying the form $selectionType = (int) $request->getUserVar('selectionType'); $stageId = $reviewRound->getStageId(); $this->setData('submissionId', $this->getSubmissionId()); $this->setData('stageId', $stageId); $this->setData('reviewMethod', $reviewMethod); $this->setData('reviewFormId', $reviewFormId); $this->setData('reviewRoundId', $reviewRound->getId()); $this->setData('reviewerId', $reviewerId); $context = $request->getContext(); $templateKey = $this->_getMailTemplateKey($context); $template = new SubmissionMailTemplate($submission, $templateKey); if ($template) { $user = $request->getUser(); $dispatcher = $request->getDispatcher(); AppLocale::requireComponents(LOCALE_COMPONENT_PKP_REVIEWER); // reviewer.step1.requestBoilerplate $template->assignParams(array('contextUrl' => $dispatcher->url($request, ROUTE_PAGE, $context->getPath()), 'editorialContactSignature' => $user->getContactSignature(), 'signatureFullName' => $user->getFullname(), 'passwordResetUrl' => $dispatcher->url($request, ROUTE_PAGE, $context->getPath(), 'login', 'lostPassword'), 'messageToReviewer' => __('reviewer.step1.requestBoilerplate'), 'abstractTermIfEnabled' => $submission->getLocalizedAbstract() == '' ? '' : __('common.abstract'))); $template->replaceParams(); } $this->setData('personalMessage', $template->getBody()); $this->setData('responseDueDate', $responseDueDate); $this->setData('reviewDueDate', $reviewDueDate); $this->setData('selectionType', $selectionType); }
/** * Initialize variables * @param $args array * @param $request PKPRequest */ function initData($args, $request) { $submission = $this->getSubmission(); $this->setData('submissionId', $submission->getId()); $this->setData('fileStage', $this->getFileStage()); $this->setData('assocId', $this->getAssocId()); import('lib.pkp.classes.mail.SubmissionMailTemplate'); $email = new SubmissionMailTemplate($submission, 'AUDITOR_REQUEST'); $user = $request->getUser(); // Intentionally omit {$auditorName} for now -- see bug #7090 $email->assignParams(array('editorialContactSignature' => $user->getContactSignature(), 'weekLaterDate' => strftime(Config::getVar('general', 'date_format_short'), time() + 604800))); $context = $request->getContext(); $this->setData('personalMessage', $email->getBody() . "\n" . $context->getSetting('emailSignature')); }