pages/rt/RTHandler.inc.php

Go to the documentation of this file.
00001 <?php
00002 
00016 // $Id$
00017 
00018 
00019 import('rt.RT');
00020 
00021 import('rt.ocs.RTDAO');
00022 import('rt.ocs.ConferenceRT');
00023 
00024 import('paper.PaperHandler');
00025 
00026 class RTHandler extends PaperHandler {
00031    function RTHandler(&$request) {
00032       parent::PaperHandler($request);
00033    }
00034 
00040    function bio($args, &$request) {
00041       $router =& $request->getRouter();
00042       $this->setupTemplate();
00043       $paperId = isset($args[0]) ? $args[0] : 0;
00044       $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00045 
00046       $this->validate($request, $paperId, $galleyId);
00047       $conference =& $router->getContext($request, CONTEXT_CONFERENCE);
00048       $paper =& $this->paper;
00049 
00050       $rtDao =& DAORegistry::getDAO('RTDAO');
00051       $conferenceRt =& $rtDao->getConferenceRTByConference($conference);
00052 
00053       if (!$conferenceRt || !$conferenceRt->getAuthorBio()) {
00054          $request->redirect(null, null, $router->getRequestedPage($request));
00055       }
00056 
00057       $templateMgr =& TemplateManager::getManager();
00058       $templateMgr->assign('paperId', $paperId);
00059       $templateMgr->assign_by_ref('paper', $paper);
00060       $templateMgr->assign('galleyId', $galleyId);
00061       $templateMgr->display('rt/bio.tpl');
00062    }
00063 
00069    function metadata($args, &$request) {
00070       $router =& $request->getRouter();
00071       $this->setupTemplate();
00072       $paperId = isset($args[0]) ? $args[0] : 0;
00073       $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00074       $this->validate($request, $paperId, $galleyId);
00075       $conference =& $router->getContext($request, CONTEXT_CONFERENCE);
00076       $schedConf =& $router->getContext($request, CONTEXT_SCHED_CONF);
00077       $paper =& $this->paper;
00078 
00079 
00080       $rtDao =& DAORegistry::getDAO('RTDAO');
00081       $conferenceRt =& $rtDao->getConferenceRTByConference($conference);
00082 
00083       if (!$conferenceRt || !$conferenceRt->getViewMetadata()) {
00084          $request->redirect(null, null, $router->getRequestedPage($request));
00085       }
00086 
00087       $trackDao =& DAORegistry::getDAO('TrackDAO');
00088       $track =& $trackDao->getTrack($paper->getTrackId());
00089 
00090       $templateMgr =& TemplateManager::getManager();
00091       $templateMgr->assign('paperId', $paperId);
00092       $templateMgr->assign('galleyId', $galleyId);
00093       $templateMgr->assign_by_ref('conferenceRt', $conferenceRt);
00094       $templateMgr->assign_by_ref('paper', $paper);
00095       $templateMgr->assign_by_ref('schedConf', $schedConf);
00096       $templateMgr->assign_by_ref('track', $track);
00097       if($schedConf)
00098          $templateMgr->assign_by_ref('conferenceSettings', $schedConf->getSettings());
00099       else
00100          $templateMgr->assign_by_ref('conferenceSettings', $conference->getSettings());
00101       $templateMgr->display('rt/metadata.tpl');
00102    }
00103 
00109    function context($args, &$request) {
00110       $router =& $request->getRouter();
00111       $this->setupTemplate();
00112       $paperId = isset($args[0]) ? $args[0] : 0;
00113       $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00114       $contextId = Isset($args[2]) ? (int) $args[2] : 0;
00115 
00116       $this->validate($request, $paperId, $galleyId);
00117       $conference =& $router->getContext($request, CONTEXT_CONFERENCE);
00118       $paper =& $this->paper;
00119 
00120       $rtDao =& DAORegistry::getDAO('RTDAO');
00121       $conferenceRt =& $rtDao->getConferenceRTByConference($conference);
00122 
00123       $context =& $rtDao->getContext($contextId);
00124       if ($context) $version =& $rtDao->getVersion($context->getVersionId(), $conference->getId());
00125 
00126       if (!$context || !$version || !$conferenceRt || $conferenceRt->getVersion()==null || $conferenceRt->getVersion() != $context->getVersionId()) {
00127          $request->redirect(null, null, 'paper', 'view', array($paperId, $galleyId));
00128       }
00129 
00130       // Deal with the post and URL parameters for each search
00131       // so that the client browser can properly submit the forms
00132       // with a minimum of client-side processing.
00133       $searches = array();
00134       // Some searches use parameters other than the "default" for
00135       // the search (i.e. keywords, author name, etc). If additional
00136       // parameters are used, they should be displayed as part of the
00137       // form for ALL searches in that context.
00138       $searchParams = array();
00139       foreach ($context->getSearches() as $search) {
00140          $params = array();
00141          $searchParams += RTHandler::getParameterNames($search->getSearchUrl());
00142          if ($search->getSearchPost()) {
00143             $searchParams += RTHandler::getParameterNames($search->getSearchPost());
00144             $postParams = explode('&', $search->getSearchPost());
00145             foreach ($postParams as $param) {
00146                // Split name and value from each parameter
00147                $nameValue = explode('=', $param);
00148                if (!isset($nameValue[0])) break;
00149 
00150                $name = trim($nameValue[0]);
00151                $value = trim(isset($nameValue[1])?$nameValue[1]:'');
00152                if (!empty($name)) $params[] = array('name' => $name, 'value' => $value);
00153             }
00154          }
00155 
00156          $search->postParams = $params;
00157          $searches[] = $search;
00158       }
00159 
00160       // Remove duplicate extra form elements and get their values
00161       $searchParams = array_unique($searchParams);
00162       $searchValues = array();
00163 
00164       foreach ($searchParams as $key => $param) switch ($param) {
00165          case 'author':
00166             $searchValues[$param] = $paper->getAuthorString();
00167             break;
00168          case 'coverageGeo':
00169             $searchValues[$param] = $paper->getLocalizedCoverageGeo();
00170             break;
00171          case 'title':
00172             $searchValues[$param] = $paper->getLocalizedTitle();
00173             break;
00174          default:
00175             // UNKNOWN parameter! Remove it from the list.
00176             unset($searchParams[$key]);
00177             break;
00178       }
00179 
00180       $templateMgr =& TemplateManager::getManager();
00181       $templateMgr->assign('paperId', $paperId);
00182       $templateMgr->assign('galleyId', $galleyId);
00183       $templateMgr->assign_by_ref('paper', $paper);
00184       $templateMgr->assign_by_ref('version', $version);
00185       $templateMgr->assign_by_ref('context', $context);
00186       $templateMgr->assign_by_ref('searches', $searches);
00187       $templateMgr->assign('searchParams', $searchParams);
00188       $templateMgr->assign('searchValues', $searchValues);
00189       $templateMgr->assign('defineTerm', $request->getUserVar('defineTerm'));
00190       $templateMgr->assign('keywords', explode(';', $paper->getLocalizedSubject()));
00191       $templateMgr->assign('coverageGeo', $paper->getLocalizedCoverageGeo());
00192       $templateMgr->assign_by_ref('conferenceSettings', $conference->getSettings());
00193       $templateMgr->display('rt/context.tpl');
00194    }
00195 
00201    function captureCite($args, &$request) {
00202       $router =& $request->getRouter();
00203       $this->setupTemplate();
00204       $paperId = isset($args[0]) ? $args[0] : 0;
00205       $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00206       $citeType = isset($args[2]) ? $args[2] : null;
00207 
00208       $this->validate($request, $paperId, $galleyId);
00209       $conference =& $router->getContext($request, CONTEXT_CONFERENCE);
00210       $schedConf =& $router->getContext($request, CONTEXT_SCHED_CONF);
00211       $paper =& $this->paper;
00212 
00213       $rtDao =& DAORegistry::getDAO('RTDAO');
00214       $conferenceRt =& $rtDao->getConferenceRTByConference($conference);
00215 
00216       if (!$conferenceRt || !$conferenceRt->getCaptureCite()) {
00217          $request->redirect(null, null, $router->getRequestedPage($request));
00218       }
00219 
00220       $templateMgr =& TemplateManager::getManager();
00221       $templateMgr->assign('paperId', $paperId);
00222       $templateMgr->assign('galleyId', $galleyId);
00223 
00224       $citationPlugins =& PluginRegistry::loadCategory('citationFormats');
00225       uasort($citationPlugins, create_function('$a, $b', 'return strcmp($a->getDisplayName(), $b->getDisplayName());'));
00226       $templateMgr->assign_by_ref('citationPlugins', $citationPlugins);
00227       if (isset($citationPlugins[$citeType])) {
00228          // A citation type has been selected; display citation.
00229          $citationPlugin =& $citationPlugins[$citeType];
00230       } else {
00231          // No citation type chosen; choose a default off the top of the list.
00232          $citationPlugin = $citationPlugins[array_shift(array_keys($citationPlugins))];
00233       }
00234       $citationPlugin->displayCitation($paper, $conference, $schedConf);
00235    }
00236 
00242    function printerFriendly($args, &$request) {
00243       $router =& $request->getRouter();
00244       $this->setupTemplate();
00245       $paperId = isset($args[0]) ? $args[0] : 0;
00246       $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00247       $this->validate($request, $paperId, $galleyId);
00248       $conference =& $router->getContext($request, CONTEXT_CONFERENCE);
00249       $schedConf =& $router->getContext($request, CONTEXT_SCHED_CONF);
00250       $paper =& $this->paper;
00251 
00252       $rtDao =& DAORegistry::getDAO('RTDAO');
00253       $conferenceRt =& $rtDao->getConferenceRTByConference($conference);
00254 
00255       if (!$conferenceRt || !$conferenceRt->getPrinterFriendly()) {
00256          $request->redirect(null, null, $router->getRequestedPage($request));
00257       }
00258 
00259       $paperGalleyDao =& DAORegistry::getDAO('PaperGalleyDAO');
00260       $galley =& $paperGalleyDao->getGalley($galleyId, $paper->getId());
00261 
00262       $trackDao =& DAORegistry::getDAO('TrackDAO');
00263       $track =& $trackDao->getTrack($paper->getTrackId());
00264 
00265       $templateMgr =& TemplateManager::getManager();
00266       $templateMgr->assign_by_ref('galley', $galley);
00267       $templateMgr->assign_by_ref('paper', $paper);
00268       $templateMgr->assign_by_ref('track', $track);
00269       $templateMgr->assign_by_ref('schedConf', $schedConf);
00270       $templateMgr->assign_by_ref('conference', $conference);
00271       $templateMgr->assign('paperId', $paperId);
00272       $templateMgr->assign('galleyId', $galleyId);
00273       $templateMgr->display('rt/printerFriendly.tpl');
00274    }
00275 
00281    function emailColleague($args, &$request) {
00282       $router =& $request->getRouter();
00283       $this->setupTemplate();
00284       $paperId = isset($args[0]) ? $args[0] : 0;
00285       $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00286 
00287       $this->validate($request, $paperId, $galleyId);
00288       $conference =& $router->getContext($request, CONTEXT_CONFERENCE);
00289       $schedConf =& $router->getContext($request, CONTEXT_SCHED_CONF);
00290       $paper =& $this->paper;
00291 
00292       $rtDao =& DAORegistry::getDAO('RTDAO');
00293       $conferenceRt =& $rtDao->getConferenceRTByConference($conference);
00294       $user =& $request->getUser();
00295 
00296       if (!$conferenceRt || !$conferenceRt->getEmailOthers() || !$user) {
00297          $request->redirect(null, null, $router->getRequestedPage($request));
00298       }
00299 
00300       import('mail.MailTemplate');
00301       $email = new MailTemplate('EMAIL_LINK');
00302 
00303       if ($request->getUserVar('send') && !$email->hasErrors()) {
00304          $email->send();
00305 
00306          $templateMgr =& TemplateManager::getManager();
00307          $templateMgr->display('rt/sent.tpl');
00308       } else {
00309          if (!$request->getUserVar('continued')) {
00310             $primaryAuthor = $paper->getAuthors();
00311             $primaryAuthor = $primaryAuthor[0];
00312 
00313             $email->setSubject('[' . $schedConf->getLocalizedSetting('acronym') . '] ' . strip_tags($paper->getLocalizedTitle()));
00314             $email->assignParams(array(
00315                'paperTitle' => strip_tags($paper->getLocalizedTitle()),
00316                'schedConf' => $schedConf->getSchedConfTitle(),
00317                'authorName' => $primaryAuthor->getFullName(),
00318                'paperUrl' => $router->url($request, null, null, 'paper', 'view', array($paper->getBestPaperId()))
00319             ));
00320          }
00321          $email->displayEditForm($router->url($request, null, null, null, 'emailColleague', array($paperId, $galleyId)), null, 'rt/email.tpl', array('op' => 'emailColleague'));
00322       }
00323    }
00324 
00330    function emailAuthor($args, &$request) {
00331       $router =& $request->getRouter();
00332       $this->setupTemplate();
00333       $paperId = isset($args[0]) ? $args[0] : 0;
00334       $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00335 
00336       $this->validate($request, $paperId, $galleyId);
00337       $conference =& $router->getContext($request, CONTEXT_CONFERENCE);
00338       $schedConf =& $router->getContext($request, CONTEXT_SCHED_CONF);
00339       $paper =& $this->paper;
00340 
00341       $rtDao =& DAORegistry::getDAO('RTDAO');
00342       $conferenceRt =& $rtDao->getConferenceRTByConference($conference);
00343       $user =& $request->getUser();
00344 
00345       if (!$conferenceRt || !$conferenceRt->getEmailAuthor() || !$user) {
00346          $request->redirect(null, null, $router->getRequestedPage($request));
00347       }
00348 
00349       import('mail.MailTemplate');
00350       $email = new MailTemplate();
00351 
00352       if ($request->getUserVar('send') && !$email->hasErrors()) {
00353          $email->send();
00354 
00355          $templateMgr =& TemplateManager::getManager();
00356          $templateMgr->display('rt/sent.tpl');
00357       } else {
00358          if (!$request->getUserVar('continued')) {
00359             $email->setSubject('[' . $schedConf->getLocalizedSetting('acronym') . '] ' . strip_tags($paper->getLocalizedTitle()));
00360             $authors =& $paper->getAuthors();
00361             $author =& $authors[0];
00362             $email->addRecipient($author->getEmail(), $author->getFullName());
00363          }
00364          $email->displayEditForm($router->url($request, null, null, null, 'emailAuthor', array($paperId, $galleyId)), null, 'rt/email.tpl', array('op' => 'emailAuthor'));
00365       }
00366    }
00367 
00373    function suppFiles($args, &$request) {
00374       $router =& $request->getRouter();
00375       $this->setupTemplate();
00376       $paperId = isset($args[0]) ? $args[0] : 0;
00377       $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00378 
00379       $this->validate($request, $paperId, $galleyId);
00380       $conference =& $router->getContext($request, CONTEXT_CONFERENCE);
00381       $paper =& $this->paper;
00382 
00383       $rtDao =& DAORegistry::getDAO('RTDAO');
00384       $conferenceRt =& $rtDao->getConferenceRTByConference($conference);
00385 
00386       if (!$conferenceRt || !$conferenceRt->getSupplementaryFiles()) {
00387          $request->redirect(null, null, $router->getRequestedPage($request));
00388       }
00389 
00390       $templateMgr =& TemplateManager::getManager();
00391       $templateMgr->assign('paperId', $paperId);
00392       $templateMgr->assign('galleyId', $galleyId);
00393       $templateMgr->assign_by_ref('conferenceRt', $conferenceRt);
00394       $templateMgr->assign_by_ref('paper', $paper);
00395       $templateMgr->assign_by_ref('conferenceSettings', $conference->getSettings());
00396       $templateMgr->display('rt/suppFiles.tpl');
00397    }
00398 
00404    function suppFileMetadata($args, &$request) {
00405       $router =& $request->getRouter();
00406       $this->setupTemplate();
00407       $paperId = isset($args[0]) ? $args[0] : 0;
00408       $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00409       $suppFileId = isset($args[2]) ? (int) $args[2] : 0;
00410       $this->validate($request, $paperId, $galleyId);
00411       AppLocale::requireComponents(array(LOCALE_COMPONENT_OCS_AUTHOR));
00412       $conference =& $router->getContext($request, CONTEXT_CONFERENCE);
00413       $paper =& $this->paper;
00414 
00415       $rtDao =& DAORegistry::getDAO('RTDAO');
00416       $conferenceRt =& $rtDao->getConferenceRTByConference($conference);
00417 
00418       $suppFileDao =& DAORegistry::getDAO('SuppFileDAO');
00419       $suppFile = $suppFileDao->getSuppFile($suppFileId, $paper->getId());
00420 
00421       if (!$conferenceRt || !$conferenceRt->getSupplementaryFiles() || !$suppFile) {
00422          $request->redirect(null, null, $router->getRequestedPage($request));
00423       }
00424 
00425       $templateMgr =& TemplateManager::getManager();
00426       $templateMgr->assign('paperId', $paperId);
00427       $templateMgr->assign('galleyId', $galleyId);
00428       $templateMgr->assign_by_ref('suppFile', $suppFile);
00429       $templateMgr->assign_by_ref('conferenceRt', $conferenceRt);
00430       $templateMgr->assign_by_ref('paper', $paper);
00431       $templateMgr->assign_by_ref('conferenceSettings', $conference->getSettings());
00432       $templateMgr->display('rt/suppFileView.tpl');
00433    }
00434 
00440    function findingReferences($args, &$request) {
00441       $router =& $request->getRouter();
00442       $this->setupTemplate();
00443       $paperId = isset($args[0]) ? $args[0] : 0;
00444       $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00445       $this->validate($request, $paperId, $galleyId);
00446       $conference =& $router->getContext($request, CONTEXT_CONFERENCE);
00447       $paper =& $this->paper;
00448 
00449       $rtDao =& DAORegistry::getDAO('RTDAO');
00450       $conferenceRt =& $rtDao->getConferenceRTByConference($conference);
00451 
00452       if (!$conferenceRt || !$conferenceRt->getFindingReferences()) {
00453          $request->redirect(null, null, $router->getRequestedPage($request));
00454       }
00455 
00456       $templateMgr =& TemplateManager::getManager();
00457       $templateMgr->assign('paperId', $paperId);
00458       $templateMgr->assign('galleyId', $galleyId);
00459       $templateMgr->assign_by_ref('conferenceRt', $conferenceRt);
00460       $templateMgr->assign_by_ref('paper', $paper);
00461       $templateMgr->display('rt/findingReferences.tpl');
00462    }
00463 
00467    function getParameterNames($value) {
00468       $matches = null;
00469       String::regexp_match_all('/\{\$([a-zA-Z0-9]+)\}/', $value, $matches);
00470       // Remove the entire string from the matches list
00471       return $matches[1];
00472    }
00473 }
00474 
00475 ?>

Generated on 25 Jul 2013 for Open Conference Systems by  doxygen 1.4.7