/** * Validation * @see lib/pkp/classes/handler/PKPHandler#validate() * @param $request Request * @param $paperId integer * @param $galleyId integer */ function validate(&$request, $paperId, $galleyId = null) { $router =& $request->getRouter(); parent::validate(null, $request); $conference =& $router->getContext($request, CONTEXT_CONFERENCE); $schedConf =& $router->getContext($request, CONTEXT_SCHED_CONF); $conferenceId = $conference->getId(); $publishedPaperDao = DAORegistry::getDAO('PublishedPaperDAO'); if ($schedConf->getSetting('enablePublicPaperId')) { $paper =& $publishedPaperDao->getPublishedPaperByBestPaperId($schedConf->getId(), $paperId, $schedConf->getSetting('previewAbstracts') ? true : false); } else { $paper =& $publishedPaperDao->getPublishedPaperByPaperId((int) $paperId, $schedConf->getId(), $schedConf->getSetting('previewAbstracts') ? true : false); } // if paper does not exist, is not published, or is not part of // the right conference & sched conf, redirect to index. if (isset($schedConf) && isset($paper) && isset($conference) && $paper->getSchedConfId() == $schedConf->getId() && $schedConf->getConferenceId() == $conference->getId()) { // Check if login is required for viewing. if (!Validation::isLoggedIn() && $schedConf->getSetting('restrictPaperAccess')) { Validation::redirectLogin(); } import('classes.schedConf.SchedConfAction'); $mayViewPaper = SchedConfAction::mayViewPapers($schedConf, $conference); if (isset($galleyId) && $galleyId != 0 && !$mayViewPaper || (!isset($galleyId) || $galleyId == 0) && !SchedConfAction::mayViewProceedings($schedConf)) { $this->setupTemplate($request); $templateMgr =& TemplateManager::getManager($request); $templateMgr->assign_by_ref('paper', $paper); $templateMgr->assign_by_ref('schedConf', $schedConf); $templateMgr->assign_by_ref('conference', $conference); $templateMgr->display('paper/accessDenied.tpl'); exit; } } else { $request->redirect(null, null, 'index'); } $this->paper =& $paper; return true; }
/** * Display the presentations */ function presentations() { $this->validate(); $conference =& Request::getConference(); $schedConf =& Request::getSchedConf(); import('schedConf.SchedConfAction'); $mayViewProceedings = SchedConfAction::mayViewProceedings($schedConf); $mayViewPapers = SchedConfAction::mayViewPapers($schedConf, $conference); $templateMgr =& TemplateManager::getManager(); SchedConfHandler::setupTemplate($conference, $schedConf); AppLocale::requireComponents(array(LOCALE_COMPONENT_OCS_DIRECTOR)); // FIXME: director.allTracks $templateMgr->assign('pageHierarchy', array(array(Request::url(null, 'index', 'index'), $conference->getConferenceTitle(), true), array(Request::url(null, null, 'index'), $schedConf->getSchedConfTitle(), true))); $templateMgr->assign('helpTopicId', 'editorial.trackDirectorsRole.presentations'); $templateMgr->assign_by_ref('schedConf', $schedConf); $templateMgr->assign('mayViewProceedings', $mayViewProceedings); $templateMgr->assign('mayViewPapers', $mayViewPapers); if ($mayViewProceedings) { $publishedPaperDao =& DAORegistry::getDAO('PublishedPaperDAO'); $trackDao =& DAORegistry::getDAO('TrackDAO'); $tracks =& $trackDao->getTrackTitles($schedConf->getId()); // Get the user's search conditions, if any $searchField = Request::getUserVar('searchField'); $searchMatch = Request::getUserVar('searchMatch'); $search = Request::getUserVar('search'); $searchInitial = Request::getUserVar('searchInitial'); if (!empty($searchInitial)) { $searchField = SUBMISSION_FIELD_AUTHOR; $searchMatch = 'initial'; $search = $searchInitial; } $templateMgr->assign('fieldOptions', array(SUBMISSION_FIELD_TITLE => 'paper.title', SUBMISSION_FIELD_AUTHOR => 'user.role.author')); $previewAbstracts = $schedConf->getSetting('reviewMode') == REVIEW_MODE_BOTH_SEQUENTIAL && $schedConf->getSetting('previewAbstracts'); $publishedPapers =& $publishedPaperDao->getPublishedPapersInTracks($schedConf->getId(), Request::getUserVar('track'), $searchField, $searchMatch, $search, $previewAbstracts); // Set search parameters $duplicateParameters = array('searchField', 'searchMatch', 'search', 'searchInitial', 'track'); foreach ($duplicateParameters as $param) { $templateMgr->assign($param, Request::getUserVar($param)); } $templateMgr->assign('alphaList', explode(' ', __('common.alphaList'))); $templateMgr->assign('trackOptions', array(0 => AppLocale::Translate('director.allTracks')) + $tracks); $templateMgr->assign_by_ref('publishedPapers', $publishedPapers); } $templateMgr->display('schedConf/papers.tpl'); }
/** * Show index of published papers by title. * @param $args array * @param $request PKPRequest */ function titles($args, &$request) { parent::validate(); $this->setupTemplate($request, true); $conference =& $request->getConference(); $schedConf =& $request->getSchedConf(); import('classes.schedConf.SchedConfAction'); $publishedPaperDao = DAORegistry::getDAO('PublishedPaperDAO'); $schedConfDao = DAORegistry::getDAO('SchedConfDAO'); $rangeInfo = $this->getRangeInfo($request, 'search'); $allPaperIds =& $publishedPaperDao->getPublishedPaperIdsAlphabetizedByTitle($conference ? $conference->getId() : null, $schedConf ? $schedConf->getId() : null, $rangeInfo); // FIXME: this is horribly inefficient. $paperIds = array(); $schedConfAbstractPermissions = array(); $schedConfPaperPermissions = array(); foreach ($allPaperIds as $paperId) { $publishedPaper =& $publishedPaperDao->getPublishedPaperByPaperId($paperId); if (!$publishedPaper) { continue; } // Bonehead check (e.g. cached IDs) $schedConfId = $publishedPaper->getSchedConfId(); if (!isset($schedConfAbstractPermissions[$schedConfId])) { unset($schedConf); $schedConf = $schedConfDao->getById($schedConfId); $schedConfAbstractPermissions[$schedConfId] = SchedConfAction::mayViewProceedings($schedConf); $schedConfPaperPermissions[$schedConfId] = SchedConfAction::mayViewPapers($schedConf, $conference); } if ($schedConfAbstractPermissions[$schedConfId]) { $paperIds[] = $paperId; } } $totalResults = count($paperIds); $paperIds = array_slice($paperIds, $rangeInfo->getCount() * ($rangeInfo->getPage() - 1), $rangeInfo->getCount()); import('lib.pkp.classes.core.VirtualArrayIterator'); $results = new VirtualArrayIterator(PaperSearch::formatResults($paperIds), $totalResults, $rangeInfo->getPage(), $rangeInfo->getCount()); $templateMgr =& TemplateManager::getManager($request); $templateMgr->assign_by_ref('results', $results); $templateMgr->display('search/titleIndex.tpl'); }