コード例 #1
0
ファイル: PaperHandler.inc.php プロジェクト: artkuo/ocs
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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');
 }
コード例 #3
0
ファイル: SearchHandler.inc.php プロジェクト: artkuo/ocs
 /**
  * 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');
 }