Ejemplo n.º 1
0
 /**
  * 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();
     }
 }
Ejemplo n.º 3
0
 /**
  * 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());
 }
Ejemplo n.º 4
0
 /**
  * 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);
 }
Ejemplo n.º 9
0
 /**
  * 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'));
 }