public function __construct(EventEntity $event, array $languages, array $talkTypes, array $tracks) { $this->timezone = $event->getFullTimezone(); $tz = new \DateTimeZone($this->timezone); $this->startDate = new \DateTimeImmutable($event->getStartDate(), $tz); $this->endDate = new \DateTimeImmutable($event->getEndDate(), $tz); $this->languages = $languages; $this->talkTypes = $talkTypes; $this->tracks = $tracks; }
public function save(EventEntity $event) { $data = array("url_friendly_name" => $event->getUrlFriendlyName(), "uri" => $event->getUri(), "stub" => $event->getStub(), "verbose_uri" => $event->getVerboseUri(), "name" => $event->getName()); $this->cache->save($this->keyName, $data, 'uri', $event->getUri()); $this->cache->save($this->keyName, $data, 'url_friendly_name', $event->getUrlFriendlyName()); $this->cache->save($this->keyName, $data, 'stub', $event->getStub()); }
/** * @param array $slugs * @param EventEntity $event */ private function getTalkSlugsFromApi(EventEntity $event) { $talkApi = $this->getTalkApi(); // Fetch talks from the API $talks = $talkApi->getCollection($event->getTalksUri(), array('resultsperpage' => 100)); /** @var \Talk\TalkEntity $talk */ foreach ($talks['talks'] as $talk) { $slugs[$talk->getApiUri()] = $talk->getUrlFriendlyTalkTitle(); } return $slugs; }
public function unattend(EventEntity $event) { list($status, $result) = $this->apiDelete($event->getApiUriToMarkAsAttending()); if ($status == 200) { return true; } throw new \Exception("Failed to unmark you as attending: " . $result); }
/** * Returns a response array containing an 'events' and 'pagination' element. * Each event in this response is also stored in the cache so that a relation * can be made between the API URLs and Event entities. * * @param string $url API Url to query for one or more events. Either a * listing can be retrieved or a single event. * @param array $queryParams * * @return array */ public function getCollection($uri, array $queryParams = array()) { $events = (array) json_decode($this->apiGet($uri, $queryParams)); $meta = array_pop($events); $collectionData = array(); foreach ($events['events'] as $item) { $event = new EventEntity($item); foreach ($event->getHosts() as $hostsInfo) { if (isset($hostsInfo->host_uri)) { $hostsInfo->username = $this->userApi->getUsername($hostsInfo->host_uri); } } $collectionData['events'][] = $event; // save the URL so we can look up by it $this->eventDb->save($event); } $collectionData['pagination'] = $meta; return $collectionData; }
public function testNonExistentTestDataDoesntBreak() { $event = new EventEntity(new stdClass()); $event->getName(); $event->getIcon(); $event->getStartDate(); $event->getEndDate(); $event->getLocation(); $event->getDescription(); $event->getTags(); $event->getLatitude(); $event->getLongitude(); $event->getWebsiteAddress(); $event->getAttendeeCount(); $event->getCommentsCount(); $event->getCommentsUri(); $event->getApiUriToMarkAsAttending(); $event->getTalksUri(); $event->getUri(); $event->getVerboseUri(); $event->isAttending(); $event->getUrlFriendlyName(); $event->getStub(); $event->getAllTalkCommentsUri(); $this->assertEquals(false, $event->areCommentsEnabled()); }
/** * Builds schedule data into an array structure * for schedule view * * @param EventEntity $event * @return array */ public function getScheduleData(EventEntity $event) { $talks = $this->getTalks($event->getTalksUri() . '?start=0&resultsperpage=1000'); $eventDays = $this->getEventDays($talks); return $eventDays; }