00001 <?php
00002
00016
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
00131
00132
00133 $searches = array();
00134
00135
00136
00137
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
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
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
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
00229 $citationPlugin =& $citationPlugins[$citeType];
00230 } else {
00231
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
00471 return $matches[1];
00472 }
00473 }
00474
00475 ?>