00001 <?php
00002
00016
00017 import('classes.workflow.EditorDecisionActionsManager');
00018 import('classes.submission.common.Action');
00019
00020 class ReviewerAction extends Action {
00021
00025 function ReviewerAction() {
00026 parent::Action();
00027 }
00028
00029
00030
00031
00038 function confirmReview($request, $reviewerSubmission, $decline, $send) {
00039 $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO');
00040 $userDao =& DAORegistry::getDAO('UserDAO');
00041
00042 $reviewId = $reviewerSubmission->getReviewId();
00043
00044 $reviewAssignment =& $reviewAssignmentDao->getById($reviewId);
00045 $reviewer =& $userDao->getById($reviewAssignment->getReviewerId());
00046 if (!isset($reviewer)) return true;
00047
00048
00049
00050 if ($reviewAssignment->getDateConfirmed() == null) {
00051 import('classes.mail.MonographMailTemplate');
00052 $email = new MonographMailTemplate($reviewerSubmission, $decline?'REVIEW_DECLINE':'REVIEW_CONFIRM');
00053
00054
00055 $email->setFrom($reviewer->getEmail(), $reviewer->getFullName());
00056 if (!$email->isEnabled() || ($send && !$email->hasErrors())) {
00057 HookRegistry::call('ReviewerAction::confirmReview', array(&$request, &$reviewerSubmission, &$email, $decline));
00058 if ($email->isEnabled()) {
00059 $email->setEventType($decline?MONOGRAPH_EMAIL_REVIEW_DECLINE:MONOGRAPH_EMAIL_REVIEW_CONFIRM);
00060 $email->send($request);
00061 }
00062
00063 $reviewAssignment->setDeclined($decline);
00064 $reviewAssignment->setDateConfirmed(Core::getCurrentDate());
00065 $reviewAssignment->stampModified();
00066 $reviewAssignmentDao->updateObject($reviewAssignment);
00067
00068
00069 import('classes.log.MonographLog');
00070 import('classes.log.MonographEventLogEntry');
00071
00072 $entry = new MonographEventLogEntry();
00073 $entry->setMonographId($reviewAssignment->getSubmissionId());
00074 $entry->setUserId($reviewer->getId());
00075 $entry->setDateLogged(Core::getCurrentDate());
00076 $entry->setEventType($decline?MONOGRAPH_LOG_REVIEW_DECLINE:MONOGRAPH_LOG_REVIEW_ACCEPT);
00077
00078 MonographLog::logEvent(
00079 $request,
00080 $reviewerSubmission,
00081 $decline?MONOGRAPH_LOG_REVIEW_DECLINE:MONOGRAPH_LOG_REVIEW_ACCEPT,
00082 $decline?'log.review.reviewDeclined':'log.review.reviewAccepted',
00083 array(
00084 'reviewerName' => $reviewer->getFullName(),
00085 'monographId' => $reviewAssignment->getSubmissionId(),
00086 'round' => $reviewAssignment->getRound()
00087 )
00088 );
00089
00090 return true;
00091 } else {
00092 if (!$request->getUserVar('continued')) {
00093 $assignedEditors = $email->ccAssignedEditors($reviewerSubmission->getId());
00094 $reviewingSeriesEditors = $email->toAssignedReviewingSeriesEditors($reviewerSubmission->getId());
00095 if (empty($assignedEditors) && empty($reviewingSeriesEditors)) {
00096 $press =& $request->getPress();
00097 $email->addRecipient($press->getSetting('contactEmail'), $press->getSetting('contactName'));
00098 $editorialContactName = $press->getSetting('contactName');
00099 } else {
00100 if (!empty($reviewingSeriesEditors)) $editorialContact = array_shift($reviewingSeriesEditors);
00101 else $editorialContact = array_shift($assignedEditors);
00102 $editorialContactName = $editorialContact->getEditorFullName();
00103 }
00104
00105
00106 $reviewDueDate = strtotime($reviewAssignment->getDateDue());
00107 $dateFormatShort = Config::getVar('general', 'date_format_short');
00108 if ($reviewDueDate == -1) $reviewDueDate = $dateFormatShort;
00109 else $reviewDueDate = strftime($dateFormatShort, $reviewDueDate);
00110
00111 $email->assignParams(array(
00112 'editorialContactName' => $editorialContactName,
00113 'reviewerName' => $reviewer->getFullName(),
00114 'reviewDueDate' => $reviewDueDate
00115 ));
00116 }
00117 $paramArray = array('reviewId' => $reviewId);
00118 if ($decline) $paramArray['declineReview'] = 1;
00119 $email->displayEditForm($request->url(null, 'reviewer', 'confirmReview'), $paramArray);
00120 return false;
00121 }
00122 }
00123 return true;
00124 }
00125 }
00126
00127 ?>