/** * 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())); $template->replaceParams(); $this->setData('personalMessage', $template->getBody()); } }
/** * @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()]); $submissionUrl = $dispatcher->url($request, ROUTE_PAGE, null, 'authorDashboard', 'submission', $submission->getId()); $email->assignParams(array('authorName' => $submission->getAuthorString(), 'editorialContactSignature' => $user->getContactSignature(), 'submissionUrl' => "<a href=\"{$submissionUrl}\">{$submissionUrl}</a>")); $email->replaceParams(); // 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(), 'actionLabel' => $actionLabels[$this->getDecision()]); foreach ($data as $key => $value) { $this->setData($key, $value); } return parent::initData($args, $request); }
/** * 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); }
/** * 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; }