Ejemplo n.º 1
0
 function selectReviewer($args, $request)
 {
     $paperId = (int) array_shift($args);
     $reviewerId = (int) array_shift($args);
     $this->validate($request, $paperId, TRACK_DIRECTOR_ACCESS_REVIEW);
     $conference =& $request->getConference();
     $schedConf =& $request->getSchedConf();
     $submission =& $this->submission;
     Locale::requireComponents(array(LOCALE_COMPONENT_PKP_MANAGER));
     // manager.people.noneEnrolled FIXME?
     $sort = $request->getUserVar('sort');
     $sort = isset($sort) ? $sort : 'name';
     $sortDirection = $request->getUserVar('sortDirection');
     $trackDirectorSubmissionDao =& DAORegistry::getDAO('TrackDirectorSubmissionDAO');
     if ($reviewerId) {
         // Assign reviewer to paper
         TrackDirectorAction::addReviewer($submission, $reviewerId, $submission->getCurrentRound());
         $request->redirect(null, null, null, 'submissionReview', $paperId);
         // FIXME: Prompt for due date.
     } else {
         $this->setupTemplate($request, true, $paperId, 'review');
         $trackDirectorSubmissionDao =& DAORegistry::getDAO('TrackDirectorSubmissionDAO');
         $searchType = null;
         $searchMatch = null;
         $search = $searchQuery = $request->getUserVar('search');
         $searchInitial = $request->getUserVar('searchInitial');
         if (!empty($search)) {
             $searchType = $request->getUserVar('searchField');
             $searchMatch = $request->getUserVar('searchMatch');
         } elseif (!empty($searchInitial)) {
             $searchInitial = String::strtoupper($searchInitial);
             $searchType = USER_FIELD_INITIAL;
             $search = $searchInitial;
         }
         $rangeInfo =& Handler::getRangeInfo('reviewers', array($submission->getCurrentRound(), (string) $searchType, (string) $search, (string) $searchMatch));
         // Paper ID intentionally omitted
         while (true) {
             $reviewers = $trackDirectorSubmissionDao->getReviewersForPaper($schedConf->getId(), $paperId, $submission->getCurrentRound(), $searchType, $search, $searchMatch, $rangeInfo, $sort, $sortDirection);
             if ($reviewers->isInBounds()) {
                 break;
             }
             unset($rangeInfo);
             $rangeInfo =& $reviewers->getLastPageRangeInfo();
             unset($reviewers);
         }
         $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO');
         $templateMgr =& TemplateManager::getManager();
         $templateMgr->assign('searchField', $searchType);
         $templateMgr->assign('searchMatch', $searchMatch);
         $templateMgr->assign('search', $searchQuery);
         $templateMgr->assign('searchInitial', $request->getUserVar('searchInitial'));
         $templateMgr->assign_by_ref('reviewers', $reviewers);
         $templateMgr->assign('paperId', $paperId);
         $templateMgr->assign('reviewerStatistics', $trackDirectorSubmissionDao->getReviewerStatistics($schedConf->getId()));
         $templateMgr->assign('fieldOptions', array(USER_FIELD_INTERESTS => 'user.interests', USER_FIELD_FIRSTNAME => 'user.firstName', USER_FIELD_LASTNAME => 'user.lastName', USER_FIELD_USERNAME => 'user.username', USER_FIELD_EMAIL => 'user.email'));
         $templateMgr->assign('completedReviewCounts', $reviewAssignmentDao->getCompletedReviewCounts($schedConf->getId()));
         $templateMgr->assign('rateReviewerOnQuality', $schedConf->getSetting('rateReviewerOnQuality'));
         $templateMgr->assign('averageQualityRatings', $reviewAssignmentDao->getAverageQualityRatings($schedConf->getId()));
         $templateMgr->assign('helpTopicId', 'conference.roles.reviewers');
         $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList')));
         $templateMgr->assign('sort', $sort);
         $templateMgr->assign('sortDirection', $sortDirection);
         $templateMgr->display('trackDirector/selectReviewer.tpl');
     }
 }
Ejemplo n.º 2
0
 /**
  * After a decision has been recorded, bumps the paper to the next stage.
  * If the submission requires completion, it's sent back to the author.
  * If not, review is complete, and the paper can be released.
  * @param $schedConf object
  * @param $trackDirectorSubmission object
  * @param $decision int
  */
 function completeReview($trackDirectorSubmission)
 {
     $schedConf =& Request::getSchedConf();
     if ($trackDirectorSubmission->getReviewMode() == REVIEW_MODE_BOTH_SEQUENTIAL) {
         // two-stage submission; paper required
         // The submission is incomplete, and needs the author to submit
         // more materials (potentially for another stage of reviews)
         if ($trackDirectorSubmission->getCurrentStage() == REVIEW_STAGE_ABSTRACT) {
             // We've just completed reviewing the abstract. Prepare for presentation
             // review process.
             $trackDirectorSubmission->setCurrentStage(REVIEW_STAGE_PRESENTATION);
             // The paper itself needs to be collected. Flag it so the author
             // may complete it.
             $trackDirectorSubmission->setSubmissionProgress(2);
             // TODO: notify the author the submission must be completed.
             // Q: should the director be given this option explicitly?
             // Now, reassign all reviewers that submitted a review for the last
             // stage of reviews.
             foreach ($trackDirectorSubmission->getReviewAssignments(REVIEW_STAGE_ABSTRACT) as $reviewAssignment) {
                 if ($reviewAssignment->getRecommendation() !== null && $reviewAssignment->getRecommendation() !== '') {
                     // This reviewer submitted a review; reassign them
                     TrackDirectorAction::addReviewer($trackDirectorSubmission, $reviewAssignment->getReviewerId(), REVIEW_STAGE_PRESENTATION);
                 }
             }
         }
     }
     $trackDirectorSubmissionDao =& DAORegistry::getDao('TrackDirectorSubmissionDAO');
     $trackDirectorSubmissionDao->updateTrackDirectorSubmission($trackDirectorSubmission);
     $trackDirectorSubmission->stampStatusModified();
     // Commit the paper changes
     $paperDao =& DAORegistry::getDao('PaperDAO');
     $paperDao->updatePaper($trackDirectorSubmission);
 }