Example #1
0
 /**
  * Records a director's submission decision.
  * @param $trackDirectorSubmission object
  * @param $decision int
  * @param $stage int
  */
 function recordDecision($trackDirectorSubmission, $decision, $stage)
 {
     $editAssignments =& $trackDirectorSubmission->getEditAssignments();
     if (empty($editAssignments)) {
         return;
     }
     $trackDirectorSubmissionDao =& DAORegistry::getDAO('TrackDirectorSubmissionDAO');
     $user =& Request::getUser();
     $directorDecision = array('editDecisionId' => null, 'directorId' => $user->getId(), 'decision' => $decision, 'dateDecided' => date(Core::getCurrentDate()));
     if (!HookRegistry::call('TrackDirectorAction::recordDecision', array(&$trackDirectorSubmission, $directorDecision))) {
         if ($decision == SUBMISSION_DIRECTOR_DECISION_DECLINE) {
             $trackDirectorSubmission->setStatus(STATUS_DECLINED);
             $trackDirectorSubmission->stampStatusModified();
         } else {
             $trackDirectorSubmission->setStatus(STATUS_QUEUED);
             $trackDirectorSubmission->stampStatusModified();
         }
         $trackDirectorSubmission->addDecision($directorDecision, $stage);
         $decisions = TrackDirectorSubmission::getDirectorDecisionOptions();
         // Add log
         import('paper.log.PaperLog');
         import('paper.log.PaperEventLogEntry');
         Locale::requireComponents(array(LOCALE_COMPONENT_APPLICATION_COMMON, LOCALE_COMPONENT_OCS_DIRECTOR));
         PaperLog::logEvent($trackDirectorSubmission->getPaperId(), PAPER_LOG_DIRECTOR_DECISION, LOG_TYPE_DIRECTOR, $user->getId(), 'log.director.decision', array('directorName' => $user->getFullName(), 'paperId' => $trackDirectorSubmission->getPaperId(), 'decision' => Locale::translate($decisions[$decision]), 'round' => $stage == REVIEW_STAGE_ABSTRACT ? 'submission.abstractReview' : 'submission.paperReview'));
     }
     if ($decision == SUBMISSION_DIRECTOR_DECISION_ACCEPT || $decision == SUBMISSION_DIRECTOR_DECISION_INVITE) {
         // completeReview will take care of updating the
         // submission with the new decision.
         TrackDirectorAction::completeReview($trackDirectorSubmission);
     } else {
         // Insert the new decision.
         $trackDirectorSubmissionDao->updateTrackDirectorSubmission($trackDirectorSubmission);
     }
 }