예제 #1
0
 /**
  * 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');
 }