/** * Events list controller * * @param array $params */ public function eventsList($params) { if (empty($params['list'])) { throw new Redirect404Exception(); } if (!OW::getUser()->isAuthorized('event', 'view_event')) { $status = BOL_AuthorizationService::getInstance()->getActionStatus('event', 'view_event'); throw new AuthorizationException($status['msg']); } $configs = $this->eventService->getConfigs(); $page = empty($_GET['page']) || (int) $_GET['page'] < 0 ? 1 : (int) $_GET['page']; $language = OW::getLanguage(); $toolbarList = array(); switch (trim($params['list'])) { case 'created': if (!OW::getUser()->isAuthenticated()) { throw new Redirect403Exception(); } $this->setPageHeading($language->text('event', 'event_created_by_me_page_heading')); $this->setPageTitle($language->text('event', 'event_created_by_me_page_title')); $this->setPageHeadingIconClass('ow_ic_calendar'); $events = $this->eventService->findUserEvents(OW::getUser()->getId(), $page, null, true); $eventsCount = $this->eventService->findLatestEventsCount(); break; case 'joined': if (!OW::getUser()->isAuthenticated()) { throw new Redirect403Exception(); } $contentMenu = EVENT_BOL_EventService::getInstance()->getContentMenu(); $this->addComponent('contentMenu', $contentMenu); $this->setPageHeading($language->text('event', 'event_joined_by_me_page_heading')); $this->setPageTitle($language->text('event', 'event_joined_by_me_page_title')); $this->setPageHeadingIconClass('ow_ic_calendar'); $events = $this->eventService->findUserParticipatedEvents(OW::getUser()->getId(), $page, null, true); $eventsCount = $this->eventService->findUserParticipatedEventsCount(OW::getUser()->getId(), true); break; case 'latest': $contentMenu = EVENT_BOL_EventService::getInstance()->getContentMenu(); $contentMenu->getElement('latest')->setActive(true); $this->addComponent('contentMenu', $contentMenu); $this->setPageHeading($language->text('event', 'latest_events_page_heading')); $this->setPageTitle($language->text('event', 'latest_events_page_title')); $this->setPageHeadingIconClass('ow_ic_calendar'); OW::getDocument()->setDescription($language->text('event', 'latest_events_page_desc')); $events = $this->eventService->findPublicEvents($page); $eventsCount = $this->eventService->findPublicEventsCount(); break; case 'user-participated-events': if (empty($_GET['userId'])) { throw new Redirect404Exception(); } $user = BOL_UserService::getInstance()->findUserById($_GET['userId']); if ($user === null) { throw new Redirect404Exception(); } $eventParams = array('action' => 'event_view_attend_events', 'ownerId' => $user->getId(), 'viewerId' => OW::getUser()->getId()); OW::getEventManager()->getInstance()->call('privacy_check_permission', $eventParams); $displayName = BOL_UserService::getInstance()->getDisplayName($user->getId()); $this->setPageHeading($language->text('event', 'user_participated_events_page_heading', array('display_name' => $displayName))); $this->setPageTitle($language->text('event', 'user_participated_events_page_title', array('display_name' => $displayName))); OW::getDocument()->setDescription($language->text('event', 'user_participated_events_page_desc', array('display_name' => $displayName))); $this->setPageHeadingIconClass('ow_ic_calendar'); $events = $this->eventService->findUserParticipatedPublicEvents($user->getId(), $page); $eventsCount = $this->eventService->findUserParticipatedPublicEventsCount($user->getId()); break; case 'past': $contentMenu = EVENT_BOL_EventService::getInstance()->getContentMenu(); $this->addComponent('contentMenu', $contentMenu); $this->setPageHeading($language->text('event', 'past_events_page_heading')); $this->setPageTitle($language->text('event', 'past_events_page_title')); $this->setPageHeadingIconClass('ow_ic_calendar'); OW::getDocument()->setDescription($language->text('event', 'past_events_page_desc')); $events = $this->eventService->findPublicEvents($page, null, true); $eventsCount = $this->eventService->findPublicEventsCount(true); break; case 'invited': if (!OW::getUser()->isAuthenticated()) { throw new Redirect403Exception(); } $this->eventService->hideInvitationByUserId(OW::getUser()->getId()); $contentMenu = EVENT_BOL_EventService::getInstance()->getContentMenu(); $this->addComponent('contentMenu', $contentMenu); $this->setPageHeading($language->text('event', 'invited_events_page_heading')); $this->setPageTitle($language->text('event', 'invited_events_page_title')); $this->setPageHeadingIconClass('ow_ic_calendar'); $events = $this->eventService->findUserInvitedEvents(OW::getUser()->getId(), $page); $eventsCount = $this->eventService->findUserInvitedEventsCount(OW::getUser()->getId()); foreach ($events as $event) { $toolbarList[$event->getId()] = array(); $paramsList = array('eventId' => $event->getId(), 'page' => $page, 'list' => trim($params['list'])); $acceptUrl = OW::getRequest()->buildUrlQueryString(OW::getRouter()->urlForRoute('event.invite_accept', $paramsList), array('page' => $page)); $ignoreUrl = OW::getRequest()->buildUrlQueryString(OW::getRouter()->urlForRoute('event.invite_decline', $paramsList), array('page' => $page)); $toolbarList[$event->getId()][] = array('label' => $language->text('event', 'accept_request'), 'href' => $acceptUrl); $toolbarList[$event->getId()][] = array('label' => $language->text('event', 'ignore_request'), 'href' => $ignoreUrl); } break; default: throw new Redirect404Exception(); } $this->addComponent('paging', new BASE_CMP_Paging($page, ceil($eventsCount / $configs[EVENT_BOL_EventService::CONF_EVENTS_COUNT_ON_PAGE]), 5)); $addUrl = OW::getRouter()->urlForRoute('event.add'); $script = '$("input.add_event_button").click(function() { window.location=' . json_encode($addUrl) . '; });'; if (!OW::getUser()->isAuthorized('event', 'add_event')) { $status = BOL_AuthorizationService::getInstance()->getActionStatus('event', 'add_event'); if ($status['status'] == BOL_AuthorizationService::STATUS_PROMOTED) { $script = '$("input.add_event_button").click(function() { OW.authorizationLimitedFloatbox(' . json_encode($status['msg']) . '); });'; } else { if ($status['status'] == BOL_AuthorizationService::STATUS_DISABLED) { $this->assign('noButton', true); } } } OW::getDocument()->addOnloadScript($script); if (empty($events)) { $this->assign('no_events', true); } $this->assign('listType', trim($params['list'])); $this->assign('page', $page); $this->assign('events', $this->eventService->getListingDataWithToolbar($events, $toolbarList)); $this->assign('toolbarList', $toolbarList); $this->assign('add_new_url', OW::getRouter()->urlForRoute('event.add')); OW::getNavigation()->activateMenuItem(OW_Navigation::MAIN, 'event', 'main_menu_item'); }