Open Journal Systems  3.3.0
AnnouncementHandler.inc.php
1 <?php
2 
16 import('classes.handler.Handler');
17 
19 
20  //
21  // Implement methods from Handler.
22  //
26  function authorize($request, &$args, $roleAssignments) {
27  import('lib.pkp.classes.security.authorization.ContextRequiredPolicy');
28  $this->addPolicy(new ContextRequiredPolicy($request));
29 
30  return parent::authorize($request, $args, $roleAssignments);
31  }
32 
33 
34  //
35  // Public handler methods.
36  //
43  function index($args, $request) {
44  if (!$request->getContext()->getData('enableAnnouncements')) {
45  $request->getDispatcher()->handle404();
46  }
47 
48  $this->setupTemplate($request);
49 
50  $context = $request->getContext();
51  $announcementsIntro = $context->getLocalizedData('announcementsIntroduction');
52 
53  $templateMgr = TemplateManager::getManager($request);
54  $templateMgr->assign('announcementsIntroduction', $announcementsIntro);
55 
56 
57  $announcementDao = DAORegistry::getDAO('AnnouncementDAO'); /* @var $announcementDao AnnouncementDAO */
58  // TODO the announcements list should support pagination
59  import('lib.pkp.classes.db.DBResultRange');
60  $rangeInfo = new DBResultRange(50, -1);
61  $announcements = $announcementDao->getAnnouncementsNotExpiredByAssocId($context->getAssocType(), $context->getId(), $rangeInfo);
62  $templateMgr->assign('announcements', $announcements->toArray());
63 
64  $templateMgr->display('frontend/pages/announcements.tpl');
65  }
66 
72  function view($args, $request) {
73  if (!$request->getContext()->getData('enableAnnouncements')) {
74  $request->getDispatcher()->handle404();
75  }
76  $this->validate();
77  $this->setupTemplate($request);
78 
79  $context = $request->getContext();
80  $announcementId = (int) array_shift($args);
81  $announcementDao = DAORegistry::getDAO('AnnouncementDAO'); /* @var $announcementDao AnnouncementDAO */
82  $announcement = $announcementDao->getById($announcementId);
83  if ($announcement && $announcement->getAssocType() == Application::getContextAssocType() && $announcement->getAssocId() == $context->getId() && ($announcement->getDateExpire() == null || strtotime($announcement->getDateExpire()) > time())) {
84  $templateMgr = TemplateManager::getManager($request);
85  $templateMgr->assign('announcement', $announcement);
86  $templateMgr->assign('announcementTitle', $announcement->getLocalizedTitleFull());
87  return $templateMgr->display('frontend/pages/announcement.tpl');
88  }
89  $request->redirect(null, 'announcement');
90  }
91 }
92 
93 
DBResultRange
Container class for range information when retrieving a result set.
Definition: DBResultRange.inc.php:17
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
Application\getContextAssocType
static getContextAssocType()
Definition: Application.inc.php:199
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
AnnouncementHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: AnnouncementHandler.inc.php:26
PKPHandler\validate
validate($requiredContexts=null, $request=null)
Definition: PKPHandler.inc.php:351
PKPHandler\setupTemplate
setupTemplate($request)
Definition: PKPHandler.inc.php:466
AnnouncementHandler
Definition: AnnouncementHandler.inc.php:18
AnnouncementHandler\index
index($args, $request)
Definition: AnnouncementHandler.inc.php:43
AnnouncementHandler\view
view($args, $request)
Definition: AnnouncementHandler.inc.php:72
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
Handler
Base request handler application class.
Definition: Handler.inc.php:18
ContextRequiredPolicy
Policy to deny access if a context cannot be found in the request.
Definition: ContextRequiredPolicy.inc.php:17