/** * 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); } }