/** * Display an RT search context * @param $args array * @param $request Request */ function context($args, &$request) { $router =& $request->getRouter(); $this->setupTemplate(); $paperId = isset($args[0]) ? $args[0] : 0; $galleyId = isset($args[1]) ? (int) $args[1] : 0; $contextId = isset($args[2]) ? (int) $args[2] : 0; $this->validate($request, $paperId, $galleyId); $conference =& $router->getContext($request, CONTEXT_CONFERENCE); $paper =& $this->paper; $rtDao =& DAORegistry::getDAO('RTDAO'); $conferenceRt =& $rtDao->getConferenceRTByConference($conference); $context =& $rtDao->getContext($contextId); if ($context) { $version =& $rtDao->getVersion($context->getVersionId(), $conference->getId()); } if (!$context || !$version || !$conferenceRt || $conferenceRt->getVersion() == null || $conferenceRt->getVersion() != $context->getVersionId()) { $request->redirect(null, null, 'paper', 'view', array($paperId, $galleyId)); } // Deal with the post and URL parameters for each search // so that the client browser can properly submit the forms // with a minimum of client-side processing. $searches = array(); // Some searches use parameters other than the "default" for // the search (i.e. keywords, author name, etc). If additional // parameters are used, they should be displayed as part of the // form for ALL searches in that context. $searchParams = array(); foreach ($context->getSearches() as $search) { $params = array(); $searchParams += RTHandler::getParameterNames($search->getSearchUrl()); if ($search->getSearchPost()) { $searchParams += RTHandler::getParameterNames($search->getSearchPost()); $postParams = explode('&', $search->getSearchPost()); foreach ($postParams as $param) { // Split name and value from each parameter $nameValue = explode('=', $param); if (!isset($nameValue[0])) { break; } $name = trim($nameValue[0]); $value = trim(isset($nameValue[1]) ? $nameValue[1] : ''); if (!empty($name)) { $params[] = array('name' => $name, 'value' => $value); } } } $search->postParams = $params; $searches[] = $search; } // Remove duplicate extra form elements and get their values $searchParams = array_unique($searchParams); $searchValues = array(); foreach ($searchParams as $key => $param) { switch ($param) { case 'author': $searchValues[$param] = $paper->getAuthorString(); break; case 'coverageGeo': $searchValues[$param] = $paper->getLocalizedCoverageGeo(); break; case 'title': $searchValues[$param] = $paper->getLocalizedTitle(); break; default: // UNKNOWN parameter! Remove it from the list. unset($searchParams[$key]); break; } } $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('paperId', $paperId); $templateMgr->assign('galleyId', $galleyId); $templateMgr->assign_by_ref('paper', $paper); $templateMgr->assign_by_ref('version', $version); $templateMgr->assign_by_ref('context', $context); $templateMgr->assign_by_ref('searches', $searches); $templateMgr->assign('searchParams', $searchParams); $templateMgr->assign('searchValues', $searchValues); $templateMgr->assign('defineTerm', $request->getUserVar('defineTerm')); $templateMgr->assign('keywords', explode(';', $paper->getLocalizedSubject())); $templateMgr->assign('coverageGeo', $paper->getLocalizedCoverageGeo()); $templateMgr->assign_by_ref('conferenceSettings', $conference->getSettings()); $templateMgr->display('rt/context.tpl'); }
/** * Display the "finding references" search engine list */ function findingReferences($args) { $articleId = isset($args[0]) ? $args[0] : 0; $galleyId = isset($args[1]) ? (int) $args[1] : 0; list($journal, $issue, $article) = RTHandler::validate($articleId, $galleyId); $rtDao =& DAORegistry::getDAO('RTDAO'); $journalRt =& $rtDao->getJournalRTByJournal($journal); if (!$journalRt || !$journalRt->getFindingReferences()) { Request::redirect(null, Request::getRequestedPage()); } $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('articleId', $articleId); $templateMgr->assign('galleyId', $galleyId); $templateMgr->assign_by_ref('journalRt', $journalRt); $templateMgr->assign_by_ref('article', $article); $templateMgr->display('rt/findingReferences.tpl'); }