public function getCurrentEvents($currentTime = null) { if (is_null($currentTime)) { $currentTime = time(); } $start = new DateTime(date('Y-m-d H:i:s', $currentTime), Kurogo::siteTimezone()); $end = clone $start; $this->setStartDate($start); $this->setEndDate($end); $calendar = $this->getCalendar(); $startTimestamp = $this->startTimestamp() ? $this->startTimestamp() : CalendarDataModel::START_TIME_LIMIT; $endTimestamp = $this->endTimestamp() ? $this->endTimestamp() : CalendarDataModel::END_TIME_LIMIT; $range = new TimeRange($startTimestamp, $endTimestamp); $events = $calendar->getEventsInRange($range); return $events; }
protected function initialize() { $this->timezone = Kurogo::siteTimezone(); }
public function initializeForCommand() { $this->timezone = Kurogo::siteTimezone(); $this->fieldConfig = $this->getAPIConfigData('detail'); switch ($this->command) { case 'index': case 'groups': $response = $this->getFeedsByType(); $this->setResponse($response); $this->setResponseVersion(1); break; case 'events': $type = $this->getArg('type', 'static'); // the calendar argument needs to be urlencoded $calendar = $this->getArg('calendar', $this->getDefaultFeed($type)); // default to the full day that includes current time $current = $this->getArg('time', time()); $start = $this->getStartArg($current); $end = $this->getEndArg($start->getTimestamp()); $feed = $this->getFeed($calendar, $type); $feed->setStartDate($start); $feed->setEndDate($end); $iCalEvents = $feed->items(); $events = array(); $count = 0; foreach ($iCalEvents as $iCalEvent) { $events[] = $this->apiArrayFromEvent($iCalEvent); $count++; } $response = array('total' => $count, 'returned' => $count, 'displayField' => 'title', 'results' => $events); $this->setResponse($response); $this->setResponseVersion(1); break; case 'detail': $eventID = $this->getArg('id', null); if (!$eventID) { $error = new KurogoError(5, 'Invalid Request', 'Invalid id parameter supplied'); $this->throwError($error); } // default to the full day that includes current time $current = $this->getArg('time', time()); $start = $this->getStartArg($current); $end = $this->getEndArg($start->getTimestamp()); $type = $this->getArg('type', 'static'); $calendar = $this->getArg('calendar', $this->getDefaultFeed($type)); $feed = $this->getFeed($calendar, $type); $feed->setStartDate($start); $feed->setEndDate($end); if ($filter = $this->getArg('q')) { $feed->addFilter('search', $filter); } if ($catid = $this->getArg('catid')) { $feed->addFilter('category', $catid); } if ($event = $feed->getEvent($this->getArg('id'))) { $eventArray = $this->apiArrayFromEvent($event); $this->setResponse($eventArray); $this->setResponseVersion(1); } else { $error = new KurogoError(self::ERROR_NO_SUCH_EVENT, 'Invalid Request', "The event {$eventID} cannot be found"); $this->throwError($error); } break; case 'search': $filter = $this->getArg('q', null); if ($filter) { $searchTerms = trim($filter); $current = $this->getArg('time', time()); $start = $this->getStartArg($current); $end = $this->getEndArg($start->getTimestamp()); $type = $this->getArg('type', 'static'); $calendar = $this->getArg('calendar', $this->getDefaultFeed($type)); $feed = $this->getFeed($calendar, $type); $feed->setStartDate($start); $feed->setEndDate($end); $feed->addFilter('search', $searchTerms); $iCalEvents = $feed->items(); $events = array(); $count = 0; foreach ($iCalEvents as $iCalEvent) { $events[] = $this->apiArrayFromEvent($iCalEvent); $count++; } $titleField = 'summary'; if (isset($this->fieldConfig['summary'], $this->fieldConfig['summary']['label'])) { $titleField = $this->fieldConfig['summary']['label']; } $response = array('total' => $count, 'returned' => $count, 'displayField' => $titleField, 'results' => $events); $this->setResponse($response); $this->setResponseVersion(1); } else { $error = new KurogoError(5, 'Invalid Request', 'Invalid search parameter'); $this->throwError($error); } break; case 'calendars': $group = $this->getArg('group'); $response = array(); foreach ($this->getFeeds($group) as $feedID => $feedData) { $response[] = array('id' => $feedID, 'title' => $feedData['TITLE']); } $this->setResponse($response); $this->setResponseVersion(1); break; case 'resources': //break; //break; case 'user': //break; //break; case 'categories': //break; //break; case 'category': //break; //break; default: $this->invalidCommand(); break; } }
protected function parseEntry($entry) { static $eventNum; $eventNum++; $event = new CSTVAthleticEvent(); if ($id = $entry->getAttrib('ID')) { $event->setID($id); } else { $event->setID($eventNum); } $event->setSport($entry->getProperty('SPORT')); $event->setSportName($entry->getProperty('SPORT_FULLNAME')); $event->setSchool($entry->getProperty('SCHOOL')); $event->setOpponent($entry->getProperty('OPPONENT')); $event->setHomeAway($entry->getProperty('HOME_VISITOR')); $event->setLocation($entry->getProperty('LOCATION')); $event->setScore($entry->getProperty('OUTCOME_SCORE')); $event->setLink($entry->getProperty('RECAP')); //set the gender if ($sportName = $entry->getProperty('SPORT')) { $prefix = strtoupper(substr($sportName, 0, 1)); if ($prefix == 'W' || $prefix == 'M') { $event->setGender($prefix); } } //convert the sport datetime $sportDate = $entry->getProperty('EVENT_DATE'); $time = $entry->getProperty('TIME'); $curtimeZone = $entry->getProperty('TIME_ZONE'); if ($sportDate) { //format the time data switch ($time) { case 'All Day': $event->setAllDay(true); $time = ''; break; case 'TBA': $event->setNoTime(true); $time = ''; break; } $strDate = $time ? $sportDate . ' ' . $time : $sportDate; if ($timeZoneData = $this->transformTimeZone($curtimeZone)) { $timeZone = new DateTimeZone($timeZoneData); } else { $timeZone = Kurogo::siteTimezone(); } //save the event time to datetime object $event->setStartDate(new DateTime($strDate, $timeZone)); } return $event; }
public function initializeForCommand() { $this->timezone = Kurogo::siteTimezone(); $this->fieldConfig = $this->getAPIConfigData('detail'); $responseVersion = $this->requestedVersion < 2 ? 1 : 2; switch ($this->command) { case 'index': case 'groups': $response = $this->getFeedsByType(); $this->setResponse($response); $this->setResponseVersion($responseVersion); break; case 'category': if (!$this->getArg('catid', false)) { $error = new KurogoError(5, 'Invalid Request', 'Invalid catid parameter'); $this->throwError($error); } // very similar to events, fallthrough to share code // very similar to events, fallthrough to share code case 'events': $catid = $this->getArg('catid', ''); $type = $this->getArg('type', 'static'); // the calendar argument needs to be urlencoded $calendar = $this->getArg('calendar', $this->getDefaultFeed($type)); // default to the full day that includes current time $current = $this->getArg('time', time()); $start = $this->getStartArg($current); $feed = $this->getFeed($calendar, $type); $feed->setStartDate($start); if ($limit = $this->getArg('limit')) { if (!$this->legacyController) { $feed->setLimit($limit); } } else { $end = $this->getEndArg($start->format('U')); $feed->setEndDate($end); } if ($limit && $this->legacyController) { if ($catid) { $feed->addFilter('category', $catid); } $iCalEvents = $feed->items(0, $limit); } else { if ($catid) { $iCalEvents = $feed->getEventsByCategory($catid); } else { $iCalEvents = $feed->items(); } } $events = array(); $count = 0; foreach ($iCalEvents as $iCalEvent) { $events[] = $this->apiArrayFromEvent($iCalEvent, $responseVersion); $count++; } $response = array('total' => $count, 'returned' => $count, 'displayField' => 'title', 'results' => $events); $this->setResponse($response); $this->setResponseVersion($responseVersion); break; case 'detail': $eventID = $this->getArg('id', null); if (!$eventID) { $error = new KurogoError(5, 'Invalid Request', 'Invalid id parameter supplied'); $this->throwError($error); } // default to the full day that includes current time $current = $this->getArg('time', time()); $start = $this->getStartArg($current); $end = $this->getEndArg($start->format('U')); $type = $this->getArg('type', 'static'); $calendar = $this->getArg('calendar', $this->getDefaultFeed($type)); $feed = $this->getFeed($calendar, $type); $feed->setStartDate($start); if (!($limit = $this->getArg('limit'))) { $feed->setEndDate($end); } if ($filter = $this->getArg('q')) { $feed->addFilter('search', $filter); } if ($catid = $this->getArg('catid')) { $feed->addFilter('category', $catid); } if ($event = $feed->getEvent($this->getArg('id'))) { $eventArray = $this->apiArrayFromEvent($event, $responseVersion); $this->setResponse($eventArray); $this->setResponseVersion($responseVersion); } else { $error = new KurogoError(self::ERROR_NO_SUCH_EVENT, 'Invalid Request', "The event {$eventID} cannot be found"); $this->throwError($error); } break; case 'search': $filter = $this->getArg('q', null); if ($filter) { $searchTerms = trim($filter); $current = $this->getArg('time', time()); $start = $this->getStartArg($current); $end = $this->getEndArg($start->format('U')); $type = $this->getArg('type', 'static'); $calendar = $this->getArg('calendar', $this->getDefaultFeed($type)); $feed = $this->getFeed($calendar, $type); $feed->setStartDate($start); $feed->setEndDate($end); if ($this->legacyController) { $feed->addFilter('search', $searchTerms); $iCalEvents = $feed->items(); } else { $iCalEvents = $feed->search($searchTerms); } $events = array(); $count = 0; foreach ($iCalEvents as $iCalEvent) { $events[] = $this->apiArrayFromEvent($iCalEvent, $responseVersion); $count++; } $titleField = 'summary'; if (isset($this->fieldConfig['summary'], $this->fieldConfig['summary']['label'])) { $titleField = $this->fieldConfig['summary']['label']; } $response = array('total' => $count, 'returned' => $count, 'displayField' => $titleField, 'results' => $events); $this->setResponse($response); $this->setResponseVersion($responseVersion); } else { $error = new KurogoError(5, 'Invalid Request', 'Invalid search parameter'); $this->throwError($error); } break; case 'calendars': $group = $this->getArg('group'); $response = array(); $groups = $this->getAPIConfigData('groups'); foreach ($groups as $groupData) { if ($groupData['id'] == $group) { $response = $this->getCalendarsForGroup($groupData); break; } } $this->setResponse($response); $this->setResponseVersion($responseVersion); break; case 'categories': $categories = array(); if ($this->getOptionalModuleVar('SHOW_CATEGORIES', false, 'categories')) { $type = $this->getArg('type', 'static'); $calendar = $this->getArg('calendar', $this->getDefaultFeed($type)); $limit = $this->getArg('limit', $this->getOptionalModuleVar('SHOW_POPULAR_CATEGORIES', null, 'categories')); $feed = $this->getFeed($calendar, $type); $categories = $feed->getEventCategories($limit); } $response = $this->apiArrayFromCategories($categories); $this->setResponse($response); $this->setResponseVersion($responseVersion); break; case 'resources': //break; //break; case 'user': //break; //break; default: $this->invalidCommand(); break; } }
protected function initialize() { $this->timezone = Kurogo::siteTimezone(); $this->feeds = $this->getModuleSections('feeds'); $this->SHOW_HOURS_STATUS = $this->getOptionalModuleVar('SHOW_HOURS_STATUS', true); $this->SHOW_EVENT_DETAILS = $this->getOptionalModuleVar('SHOW_EVENT_DETAILS', true); }