/** * Display director submission queue pages. */ function submissions($args, $request) { $this->validate($request); $this->setupTemplate($request, 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'); $sortDirection = $request->getUserVar('sortDirection'); switch ($page) { case 'submissionsUnassigned': $functionName = 'getDirectorSubmissionsUnassigned'; $helpTopicId = 'editorial.directorsRole.submissions.unassigned'; $sort = isset($sort) ? $sort : 'id'; break; case 'submissionsAccepted': $functionName = 'getDirectorSubmissionsAccepted'; $helpTopicId = 'editorial.directorsRole.submissions.presentations'; $sort = isset($sort) ? $sort : 'seq'; break; case 'submissionsArchives': $functionName = 'getDirectorSubmissionsArchives'; $helpTopicId = 'editorial.directorsRole.submissions.archives'; $sort = isset($sort) ? $sort : 'id'; break; default: $page = 'submissionsInReview'; $functionName = 'getDirectorSubmissionsInReview'; $helpTopicId = 'editorial.directorsRole.submissions.inReview'; $sort = isset($sort) ? $sort : 'id'; } $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, $sort == 'status' ? 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(); unset($submissions); $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('lib.pkp.classes.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_ROUND_ABSTRACT => Locale::translate('submission.abstract'), REVIEW_ROUND_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'); }