Esempio n. 1
0
 /**
  * Display director submission queue pages.
  */
 function submissions($args)
 {
     $this->validate();
     $this->setupTemplate(DIRECTOR_TRACK_SUBMISSIONS);
     $schedConf =& Request::getSchedConf();
     $schedConfId = $schedConf->getId();
     $user =& Request::getUser();
     $directorSubmissionDao =& DAORegistry::getDAO('DirectorSubmissionDAO');
     $trackDao =& DAORegistry::getDAO('TrackDAO');
     $page = isset($args[0]) ? $args[0] : '';
     $tracks =& $trackDao->getTrackTitles($schedConfId);
     $filterDirectorOptions = array(FILTER_DIRECTOR_ALL => Locale::Translate('director.allDirectors'), FILTER_DIRECTOR_ME => Locale::Translate('director.me'));
     $filterTrackOptions = array(FILTER_TRACK_ALL => Locale::Translate('director.allTracks')) + $tracks;
     // Get the user's search conditions, if any
     $searchField = Request::getUserVar('searchField');
     $searchMatch = Request::getUserVar('searchMatch');
     $search = Request::getUserVar('search');
     $sort = Request::getUserVar('sort');
     $sort = isset($sort) ? $sort : 'id';
     $sortDirection = Request::getUserVar('sortDirection');
     switch ($page) {
         case 'submissionsUnassigned':
             $functionName = 'getDirectorSubmissionsUnassigned';
             $helpTopicId = 'editorial.directorsRole.submissions.unassigned';
             break;
         case 'submissionsAccepted':
             $functionName = 'getDirectorSubmissionsAccepted';
             $helpTopicId = 'editorial.directorsRole.submissions.presentations';
             break;
         case 'submissionsArchives':
             $functionName = 'getDirectorSubmissionsArchives';
             $helpTopicId = 'editorial.directorsRole.submissions.archives';
             break;
         default:
             $page = 'submissionsInReview';
             $functionName = 'getDirectorSubmissionsInReview';
             $helpTopicId = 'editorial.directorsRole.submissions.inReview';
     }
     $filterDirector = Request::getUserVar('filterDirector');
     if ($filterDirector != '' && array_key_exists($filterDirector, $filterDirectorOptions)) {
         $user->updateSetting('filterDirector', $filterDirector, 'int', $schedConfId);
     } else {
         $filterDirector = $user->getSetting('filterDirector', $schedConfId);
         if ($filterDirector == null) {
             $filterDirector = FILTER_DIRECTOR_ALL;
             $user->updateSetting('filterDirector', $filterDirector, 'int', $schedConfId);
         }
     }
     if ($filterDirector == FILTER_DIRECTOR_ME) {
         $directorId = $user->getId();
     } else {
         $directorId = FILTER_DIRECTOR_ALL;
     }
     $filterTrack = Request::getUserVar('filterTrack');
     if ($filterTrack != '' && array_key_exists($filterTrack, $filterTrackOptions)) {
         $user->updateSetting('filterTrack', $filterTrack, 'int', $schedConfId);
     } else {
         $filterTrack = $user->getSetting('filterTrack', $schedConfId);
         if ($filterTrack == null) {
             $filterTrack = FILTER_TRACK_ALL;
             $user->updateSetting('filterTrack', $filterTrack, 'int', $schedConfId);
         }
     }
     $rangeInfo =& Handler::getRangeInfo('submissions', array($functionName, (string) $searchField, (string) $searchMatch, (string) $search));
     while (true) {
         $submissions =& $directorSubmissionDao->{$functionName}($schedConfId, $filterTrack, $directorId, $searchField, $searchMatch, $search, null, null, null, $rangeInfo, $sort, $sortDirection);
         if ($submissions->isInBounds()) {
             break;
         }
         unset($rangeInfo);
         $rangeInfo =& $submissions->getLastPageRangeInfo();
         unset($submissions);
     }
     if ($sort == 'status') {
         // Sort all submissions by status, which is too complex to do in the DB
         $submissionsArray = $submissions->toArray();
         $compare = create_function('$s1, $s2', 'return strcmp($s1->getSubmissionStatus(), $s2->getSubmissionStatus());');
         usort($submissionsArray, $compare);
         if ($sortDirection == 'DESC') {
             $submissionsArray = array_reverse($submissionsArray);
         }
         // Convert submission array back to an ItemIterator class
         import('core.ArrayItemIterator');
         $submissions =& ArrayItemIterator::fromRangeInfo($submissionsArray, $rangeInfo);
     }
     $templateMgr =& TemplateManager::getManager();
     $templateMgr->assign('pageToDisplay', $page);
     $templateMgr->assign('director', $user->getFullName());
     $templateMgr->assign('directorOptions', $filterDirectorOptions);
     $templateMgr->assign('trackOptions', $filterTrackOptions);
     $templateMgr->assign_by_ref('submissions', $submissions);
     $templateMgr->assign('filterDirector', $filterDirector);
     $templateMgr->assign('filterTrack', $filterTrack);
     $templateMgr->assign('yearOffsetFuture', SCHED_CONF_DATE_YEAR_OFFSET_FUTURE);
     $templateMgr->assign('durationOptions', TrackDirectorHandler::getDurationOptions());
     // Set search parameters
     $duplicateParameters = array('searchField', 'searchMatch', 'search');
     foreach ($duplicateParameters as $param) {
         $templateMgr->assign($param, Request::getUserVar($param));
     }
     $templateMgr->assign('reviewType', array(REVIEW_STAGE_ABSTRACT => Locale::translate('submission.abstract'), REVIEW_STAGE_PRESENTATION => Locale::translate('submission.paper')));
     $templateMgr->assign('fieldOptions', array(SUBMISSION_FIELD_TITLE => 'paper.title', SUBMISSION_FIELD_AUTHOR => 'user.role.author', SUBMISSION_FIELD_DIRECTOR => 'user.role.director', SUBMISSION_FIELD_REVIEWER => 'user.role.reviewer'));
     $templateMgr->assign('helpTopicId', $helpTopicId);
     $templateMgr->assign('sort', $sort);
     $templateMgr->assign('sortDirection', $sortDirection);
     $templateMgr->display('director/submissions.tpl');
 }