• Main Page
  • Modules
  • Classes
  • Files
  • File List

classes/submission/reviewer/ReviewerAction.inc.php

00001 <?php
00002 
00016 // Access decision actions constants.
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    // Actions.
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       // Only confirm the review for the reviewer if
00049       // he has not previously done so.
00050       if ($reviewAssignment->getDateConfirmed() == null) {
00051          import('classes.mail.MonographMailTemplate');
00052          $email = new MonographMailTemplate($reviewerSubmission, $decline?'REVIEW_DECLINE':'REVIEW_CONFIRM');
00053          // Must explicitly set sender because we may be here on an access
00054          // key, in which case the user is not technically logged in
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             // Add log
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                // Format the review due date
00106                $reviewDueDate = strtotime($reviewAssignment->getDateDue());
00107                $dateFormatShort = Config::getVar('general', 'date_format_short');
00108                if ($reviewDueDate == -1) $reviewDueDate = $dateFormatShort; // Default to something human-readable if no date specified
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 ?>

Generated on Mon Sep 17 2012 13:58:55 for Open Monograph Press by  doxygen 1.7.1