function sendReminder($reviewAssignment, $paper, $conference, $schedConf) { $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); $userDao = DAORegistry::getDAO('UserDAO'); $reviewId = $reviewAssignment->getId(); $reviewer =& $userDao->getById($reviewAssignment->getReviewerId()); if (!isset($reviewer)) { return false; } import('classes.mail.PaperMailTemplate'); $reviewerAccessKeysEnabled = $schedConf->getSetting('reviewerAccessKeysEnabled'); $email = new PaperMailTemplate($paper, $reviewerAccessKeysEnabled ? 'REVIEW_REMIND_AUTO_ONECLICK' : 'REVIEW_REMIND_AUTO', $conference->getPrimaryLocale(), false, $conference, $schedConf); $email->setConference($conference); $email->setSchedConf($schedConf); $contactEmail = $schedConf->getSetting('contactEmail') ? $schedConf->getSetting('contactEmail') : $conference->getSetting('contactEmail'); $contactName = $schedConf->getSetting('contactName') ? $schedConf->getSetting('contactName') : $conference->getSetting('contactName'); $email->setFrom($contactEmail, $contactName); $email->addRecipient($reviewer->getEmail(), $reviewer->getFullName()); $email->setAssoc(PAPER_EMAIL_REVIEW_REMIND, PAPER_EMAIL_TYPE_REVIEW, $reviewId); $email->setSubject($email->getSubject($conference->getPrimaryLocale())); $email->setBody($email->getBody($conference->getPrimaryLocale())); $urlParams = array(); if ($reviewerAccessKeysEnabled) { import('lib.pkp.classes.security.AccessKeyManager'); $accessKeyManager = new AccessKeyManager(); // Key lifetime is the typical review period plus four weeks if ($schedConf->getSetting('reviewDeadlineType') == REVIEW_DEADLINE_TYPE_ABSOLUTE) { // Get number of days from now until review deadline date $reviewDeadlineDate = $schedConf->getSetting('numWeeksPerReviewAbsolute'); $daysDiff = ($reviewDeadlineDate - strtotime(date("Y-m-d"))) / (60 * 60 * 24); $keyLifetime = (round($daysDiff / 7) + 4) * 7; } elseif ($schedConf->getSetting('reviewDeadlineType') == REVIEW_DEADLINE_TYPE_RELATIVE) { $keyLifetime = ((int) $schedConf->getSetting('numWeeksPerReviewRelative') + 4) * 7; } $urlParams['key'] = $accessKeyManager->createKey('ReviewerContext', $reviewer->getId(), $reviewId, $keyLifetime); } $submissionReviewUrl = Request::url($conference->getPath(), $schedConf->getPath(), 'reviewer', 'submission', $reviewId, $urlParams); // Format the review due date $reviewDueDate = strtotime($reviewAssignment->getDateDue()); $dateFormatShort = Config::getVar('general', 'date_format_short'); if ($reviewDueDate === -1 || $reviewDueDate === false) { // Use something human-readable if unspecified. $reviewDueDate = '_____'; } else { $reviewDueDate = strftime($dateFormatShort, $reviewDueDate); } $paramArray = array('reviewerName' => $reviewer->getFullName(), 'reviewerUsername' => $reviewer->getUsername(), 'conferenceUrl' => Request::url($conference->getPath()), 'schedConfUrl' => Request::url($conference->getPath(), $schedConf->getPath()), 'reviewerPassword' => $reviewer->getPassword(), 'reviewDueDate' => $reviewDueDate, 'weekLaterDate' => strftime(Config::getVar('general', 'date_format_short'), strtotime('+1 week')), 'editorialContactSignature' => $contactName . "\n" . $schedConf->getLocalizedName(), 'passwordResetUrl' => Request::url($conference->getPath(), $schedConf->getPath(), 'login', 'resetPassword', $reviewer->getUsername(), array('confirm' => Validation::generatePasswordResetHash($reviewer->getId()))), 'submissionReviewUrl' => $submissionReviewUrl); $email->assignParams($paramArray); $email->send(); $reviewAssignment->setDateReminded(Core::getCurrentDate()); $reviewAssignment->setReminderWasAutomatic(1); $reviewAssignmentDao->updateObject($reviewAssignment); }
/** * Email director decision comment. * @param $authorSubmission object * @param $send boolean */ function emailDirectorDecisionComment($authorSubmission, $send) { $userDao =& DAORegistry::getDAO('UserDAO'); $conference =& Request::getConference(); $schedConf =& Request::getSchedConf(); $user =& Request::getUser(); import('mail.PaperMailTemplate'); $email = new PaperMailTemplate($authorSubmission); $editAssignments = $authorSubmission->getEditAssignments(); $directors = array(); foreach ($editAssignments as $editAssignment) { array_push($directors, $userDao->getUser($editAssignment->getDirectorId())); } if ($send && !$email->hasErrors()) { HookRegistry::call('AuthorAction::emailDirectorDecisionComment', array(&$authorSubmission, &$email)); $email->send(); $paperCommentDao =& DAORegistry::getDAO('PaperCommentDAO'); $paperComment = new PaperComment(); $paperComment->setCommentType(COMMENT_TYPE_DIRECTOR_DECISION); $paperComment->setRoleId(ROLE_ID_AUTHOR); $paperComment->setPaperId($authorSubmission->getPaperId()); $paperComment->setAuthorId($authorSubmission->getUserId()); $paperComment->setCommentTitle($email->getSubject()); $paperComment->setComments($email->getBody()); $paperComment->setDatePosted(Core::getCurrentDate()); $paperComment->setViewable(true); $paperComment->setAssocId($authorSubmission->getPaperId()); $paperCommentDao->insertPaperComment($paperComment); return true; } else { if (!Request::getUserVar('continued')) { $email->setSubject($authorSubmission->getLocalizedTitle()); if (!empty($directors)) { foreach ($directors as $director) { $email->addRecipient($director->getEmail(), $director->getFullName()); } } else { $email->addRecipient($schedConf->getSetting('contactEmail'), $schedConf->getSetting('contactName')); } } $email->displayEditForm(Request::url(null, null, null, 'emailDirectorDecisionComment', 'send'), array('paperId' => $authorSubmission->getPaperId()), 'submission/comment/directorDecisionEmail.tpl'); return false; } }
/** * Email the comment. * @param $recipients array of recipients (email address => name) */ function email($recipients) { import('mail.PaperMailTemplate'); $email = new PaperMailTemplate($this->paper, 'SUBMISSION_COMMENT'); foreach ($recipients as $emailAddress => $name) { $email->addRecipient($emailAddress, $name); $email->setSubject(strip_tags($this->paper->getLocalizedTitle())); $paramArray = array('name' => $name, 'commentName' => $this->user->getFullName(), 'comments' => String::html2text($this->getData('comments'))); $email->assignParams($paramArray); $email->send(); $email->clearRecipients(); } }
/** * Email director decision comment. * @param $authorSubmission object * @param $send boolean */ function emailDirector($authorSubmission, $send, $director) { $userDao =& DAORegistry::getDAO('UserDAO'); $conference =& Request::getConference(); $schedConf =& Request::getSchedConf(); $user =& Request::getUser(); import('mail.PaperMailTemplate'); $templateName = 'AUTHOR_EMAIL_DIRECTOR'; $email = new PaperMailTemplate($authorSubmission, $templateName); $editAssignments = $authorSubmission->getEditAssignments(); $directors = array($director); if ($send && !$email->hasErrors()) { HookRegistry::call('AuthorAction::emailDirector', array(&$authorSubmission, &$email)); $email->send(); $paperCommentDao =& DAORegistry::getDAO('PaperCommentDAO'); $paperComment = new PaperComment(); $paperComment->setCommentType(COMMENT_TYPE_DIRECTOR_DECISION); $paperComment->setRoleId(ROLE_ID_AUTHOR); $paperComment->setPaperId($authorSubmission->getPaperId()); $paperComment->setAuthorId($authorSubmission->getUserId()); $paperComment->setCommentTitle($email->getSubject()); $paperComment->setComments($email->getBody()); $paperComment->setDatePosted(Core::getCurrentDate()); $paperComment->setViewable(true); $paperComment->setAssocId($authorSubmission->getPaperId()); $paperCommentDao->insertPaperComment($paperComment); return true; } else { if (!Request::getUserVar('continued')) { //$subject = $authorSubmission->getLocalizedTitle(); $subject = $email->getSubject(); //$subject = "[" . $schedConf->getLocalizedAcronym() . "] " . $subject; $email->setSubject($subject); if (!empty($directors)) { foreach ($directors as $director) { $email->addRecipient($director->getEmail(), $director->getFullName()); } } else { $email->addRecipient($schedConf->getSetting('contactEmail'), $schedConf->getSetting('contactName')); } //-------------------------- $authorUser =& $userDao->getUser($authorSubmission->getUserId()); //$submissionUrl = $submissionUrl . '?u=' . $authorUser->getUserId(); $authorEmail = $authorUser->getEmail(); $email->addRecipient($authorEmail, $authorUser->getFullName()); if ($schedConf->getSetting('notifyAllAuthorsOnDecision')) { foreach ($authorSubmission->getAuthors() as $author) { if ($author->getEmail() != $authorEmail) { $email->addCc($author->getEmail(), $author->getFullName()); } } } $submissionUrl = Request::url(null, null, 'director', 'submissionReview', $authorSubmission->getPaperId()); $email->assignParams(array('contactName' => $director->getFullName(), 'conferenceDate' => strftime(Config::getVar('general', 'date_format_short'), $schedConf->getSetting('startDate')), 'authorName' => $authorUser->getFullName(), 'conferenceTitle' => $conference->getConferenceTitle(), 'editorialContactSignature' => $user->getContactSignature(), 'locationCity' => $schedConf->getSetting('locationCity'), 'paperTitle' => $authorSubmission->getLocalizedTitle(), 'submissionUrl' => $submissionUrl)); // --------------------------- } $email->displayEditForm(Request::url(null, null, null, 'emailDirectorDecisionComment', 'send'), array('paperId' => $authorSubmission->getPaperId()), 'submission/comment/directorDecisionEmail.tpl', array('isADirector' => false, 'templateName' => $templateName)); return false; } }