Exemplo n.º 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);
     }
 }
Exemplo n.º 2
0
 function submissionReview($args, $request)
 {
     $paperId = (int) array_shift($args);
     $this->validate($request, $paperId, TRACK_DIRECTOR_ACCESS_REVIEW);
     $conference =& $request->getConference();
     $schedConf =& $request->getSchedConf();
     $submission =& $this->submission;
     $round = (int) array_shift($args);
     $reviewMode = $submission->getReviewMode();
     switch ($reviewMode) {
         case REVIEW_MODE_ABSTRACTS_ALONE:
             $round = REVIEW_ROUND_ABSTRACT;
             break;
         case REVIEW_MODE_BOTH_SIMULTANEOUS:
         case REVIEW_MODE_PRESENTATIONS_ALONE:
             $round = REVIEW_ROUND_PRESENTATION;
             break;
         case REVIEW_MODE_BOTH_SEQUENTIAL:
             if ($round != REVIEW_ROUND_ABSTRACT && $round != REVIEW_ROUND_PRESENTATION) {
                 $round = $submission->getCurrentRound();
             }
             break;
     }
     $this->setupTemplate($request, true, $paperId);
     $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO');
     $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
     $trackDao =& DAORegistry::getDAO('TrackDAO');
     $tracks =& $trackDao->getSchedConfTracks($schedConf->getId());
     $directorDecisions = $submission->getDecisions($round);
     $lastDecision = count($directorDecisions) >= 1 ? $directorDecisions[count($directorDecisions) - 1]['decision'] : null;
     $editAssignments =& $submission->getEditAssignments();
     $isCurrent = $round == $submission->getCurrentRound();
     $showPeerReviewOptions = $isCurrent && $submission->getReviewFile() != null ? true : false;
     $allowRecommendation = ($isCurrent || $round == REVIEW_ROUND_ABSTRACT && $reviewMode == REVIEW_MODE_BOTH_SEQUENTIAL) && !empty($editAssignments);
     $reviewingAbstractOnly = $reviewMode == REVIEW_MODE_BOTH_SEQUENTIAL && $round == REVIEW_ROUND_ABSTRACT || $reviewMode == REVIEW_MODE_ABSTRACTS_ALONE;
     // Prepare an array to store the 'Notify Reviewer' email logs
     $notifyReviewerLogs = array();
     if ($submission->getReviewAssignments($round)) {
         foreach ($submission->getReviewAssignments($round) as $reviewAssignment) {
             $notifyReviewerLogs[$reviewAssignment->getId()] = array();
         }
     }
     // Parse the list of email logs and populate the array.
     import('classes.paper.log.PaperLog');
     $emailLogEntries =& PaperLog::getEmailLogEntries($paperId);
     foreach ($emailLogEntries->toArray() as $emailLog) {
         if ($emailLog->getEventType() == PAPER_EMAIL_REVIEW_NOTIFY_REVIEWER) {
             if (isset($notifyReviewerLogs[$emailLog->getAssocId()]) && is_array($notifyReviewerLogs[$emailLog->getAssocId()])) {
                 array_push($notifyReviewerLogs[$emailLog->getAssocId()], $emailLog);
             }
         }
     }
     // get conference published review form titles
     $reviewFormTitles =& $reviewFormDao->getTitlesByAssocId(ASSOC_TYPE_CONFERENCE, $conference->getId(), 1);
     $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO');
     $reviewFormResponses = array();
     $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
     $reviewFormTitles = array();
     if ($submission->getReviewAssignments($round)) {
         foreach ($submission->getReviewAssignments($round) as $reviewAssignment) {
             $reviewForm =& $reviewFormDao->getReviewForm($reviewAssignment->getReviewFormId());
             if ($reviewForm) {
                 $reviewFormTitles[$reviewForm->getId()] = $reviewForm->getLocalizedTitle();
             }
             unset($reviewForm);
             $reviewFormResponses[$reviewAssignment->getId()] = $reviewFormResponseDao->reviewFormResponseExists($reviewAssignment->getId());
         }
     }
     $templateMgr =& TemplateManager::getManager();
     $templateMgr->assign_by_ref('submission', $submission);
     $templateMgr->assign_by_ref('reviewIndexes', $reviewAssignmentDao->getReviewIndexesForRound($paperId, $round));
     $templateMgr->assign('round', $round);
     $templateMgr->assign_by_ref('reviewAssignments', $submission->getReviewAssignments($round));
     $templateMgr->assign('reviewFormResponses', $reviewFormResponses);
     $templateMgr->assign('reviewFormTitles', $reviewFormTitles);
     $templateMgr->assign_by_ref('notifyReviewerLogs', $notifyReviewerLogs);
     $templateMgr->assign_by_ref('submissionFile', $submission->getSubmissionFile());
     $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles());
     $templateMgr->assign_by_ref('reviewFile', $submission->getReviewFile());
     $templateMgr->assign_by_ref('revisedFile', $submission->getRevisedFile());
     $templateMgr->assign_by_ref('directorFile', $submission->getDirectorFile());
     $templateMgr->assign('rateReviewerOnQuality', $schedConf->getSetting('rateReviewerOnQuality'));
     $templateMgr->assign('showPeerReviewOptions', $showPeerReviewOptions);
     $templateMgr->assign_by_ref('tracks', $tracks->toArray());
     $templateMgr->assign_by_ref('directorDecisionOptions', TrackDirectorSubmission::getDirectorDecisionOptions());
     $templateMgr->assign_by_ref('lastDecision', $lastDecision);
     $templateMgr->assign_by_ref('directorDecisions', $directorDecisions);
     if ($reviewMode != REVIEW_MODE_BOTH_SEQUENTIAL || $round == REVIEW_ROUND_PRESENTATION) {
         $templateMgr->assign('isFinalReview', true);
     }
     import('classes.submission.reviewAssignment.ReviewAssignment');
     $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions());
     $templateMgr->assign_by_ref('reviewerRatingOptions', ReviewAssignment::getReviewerRatingOptions());
     $templateMgr->assign('isCurrent', $isCurrent);
     $templateMgr->assign('allowRecommendation', $allowRecommendation);
     $templateMgr->assign('reviewingAbstractOnly', $reviewingAbstractOnly);
     $templateMgr->assign('helpTopicId', 'editorial.trackDirectorsRole.review');
     $controlledVocabDao =& DAORegistry::getDAO('ControlledVocabDAO');
     $templateMgr->assign('sessionTypes', $controlledVocabDao->enumerateBySymbolic('sessionTypes', ASSOC_TYPE_SCHED_CONF, $schedConf->getId()));
     $templateMgr->display('trackDirector/submissionReview.tpl');
 }
Exemplo n.º 3
0
 /**
  * Constructor.
  */
 function DirectorSubmission()
 {
     parent::TrackDirectorSubmission();
 }