function recordDecision($args, $request)
 {
     $paperId = (int) $request->getUserVar('paperId');
     $decision = (int) $request->getUserVar('decision');
     $round = (int) array_shift($args);
     $this->validate($request, $paperId, TRACK_DIRECTOR_ACCESS_REVIEW);
     $conference =& $request->getConference();
     $schedConf =& $request->getSchedConf();
     $submission =& $this->submission;
     // If the director changes the decision on the first round,
     // roll back to the abstract review round.
     if ($submission->getCurrentRound() == REVIEW_ROUND_PRESENTATION && $round == REVIEW_ROUND_ABSTRACT) {
         $submission->setCurrentRound(REVIEW_ROUND_ABSTRACT);
         // Now, unassign all reviewers from the paper review
         foreach ($submission->getReviewAssignments(REVIEW_ROUND_PRESENTATION) as $reviewAssignment) {
             if ($reviewAssignment->getRecommendation() !== null && $reviewAssignment->getRecommendation() !== '') {
                 TrackDirectorAction::clearReview($submission, $reviewAssignment->getId());
             }
         }
         TrackDirectorAction::recordDecision($submission, $decision, $round);
     } else {
         switch ($decision) {
             case SUBMISSION_DIRECTOR_DECISION_ACCEPT:
             case SUBMISSION_DIRECTOR_DECISION_INVITE:
             case SUBMISSION_DIRECTOR_DECISION_PENDING_REVISIONS:
             case SUBMISSION_DIRECTOR_DECISION_DECLINE:
                 TrackDirectorAction::recordDecision($submission, $decision, $round);
                 break;
         }
     }
     $request->redirect(null, null, null, 'submissionReview', array($paperId, $round));
 }
 function recordDecision($args)
 {
     $paperId = (int) Request::getUserVar('paperId');
     $decision = (int) Request::getUserVar('decision');
     $stage = (int) array_shift($args);
     $this->validate($paperId, TRACK_DIRECTOR_ACCESS_REVIEW);
     $conference =& Request::getConference();
     $schedConf =& Request::getSchedConf();
     $submission =& $this->submission;
     // If the director changes the decision on the first round,
     // roll back to the abstract review stage.
     if ($submission->getCurrentStage() == REVIEW_STAGE_PRESENTATION && $stage == REVIEW_STAGE_ABSTRACT) {
         $submission->setCurrentStage(REVIEW_STAGE_ABSTRACT);
         // Now, unassign all reviewers from the paper review
         foreach ($submission->getReviewAssignments(REVIEW_STAGE_PRESENTATION) as $reviewAssignment) {
             if ($reviewAssignment->getRecommendation() !== null && $reviewAssignment->getRecommendation() !== '') {
                 TrackDirectorAction::clearReview($submission, $reviewAssignment->getId());
             }
         }
         TrackDirectorAction::recordDecision($submission, $decision, $stage);
     } else {
         switch ($decision) {
             case SUBMISSION_DIRECTOR_DECISION_ACCEPT:
             case SUBMISSION_DIRECTOR_DECISION_INVITE:
             case SUBMISSION_DIRECTOR_DECISION_PENDING_REVISIONS:
             case SUBMISSION_DIRECTOR_DECISION_DECLINE:
                 TrackDirectorAction::recordDecision($submission, $decision, $stage);
                 if ($decision === SUBMISSION_DIRECTOR_DECISION_ACCEPT) {
                     $this->completePaperWithoutRedirect($args, "complete");
                 } else {
                     $this->completePaperWithoutRedirect($args, "remove");
                 }
                 if ($decision === SUBMISSION_DIRECTOR_DECISION_DECLINE) {
                     $this->unsuitableSubmissionNoRedirect($args);
                 } else {
                     //$this->restoreToQueueNoRedirect($args);
                 }
                 break;
         }
     }
     //Request::redirect(null, null, null, 'submissionReview', array($paperId, $stage));
     Request::redirect(null, null, 'director', 'emailDirectorDecisionComment', null, array('paperId' => $submission->getPaperId()));
 }