/** * Converts a Google Calendar Event into a standard Event object. * * @param \Google_Service_Calendar_Event $googleEvent * * @return Event */ private function createEventObject(\Google_Service_Calendar_Event $googleEvent) { /* * If dateTime property is set on the google object, * then the event is not all day */ if ($googleEvent->getStart()->dateTime) { $allDay = false; $start = $googleEvent->getStart()->dateTime; $end = $googleEvent->getEnd()->dateTime; } else { $allDay = true; $start = $googleEvent->getStart()->date; $end = $googleEvent->getEnd()->date; } /* * Create the new event object */ $event = new Event(['calendar_id' => $this->calendarId, 'id' => $googleEvent->getId(), 'parent_id' => $googleEvent->getRecurringEventId(), 'title' => $googleEvent->getSummary(), 'description' => $googleEvent->getDescription(), 'location' => $googleEvent->getLocation(), 'status' => $googleEvent->getStatus(), 'start' => $start, 'end' => $end, 'all_day' => $allDay, 'rrule' => $googleEvent->getRecurrence() ? $googleEvent->getRecurrence()[0] : null, 'isRecurrence' => $googleEvent->recurringEventId ? true : false]); /* * Assign the api object */ $event->apiObject = $googleEvent; $attendees = []; /* * Assign each attendee their own object */ if (count($googleEvent->getAttendees()) > 0) { foreach ($googleEvent->getAttendees() as $attendee) { $attendees[] = $this->createAttendeeObject($attendee, $event); } } /* * Assign the event attendees */ $event->attendees = $attendees; return $event; }
/** * Insert the google data into the model * * @param \Google_Service_Calendar_Event $eventItem * @param \KevinDitscheid\KdCalendar\Domain\Model\Event $event * * @return \KevinDitscheid\KdCalendar\Domain\Model\Event */ public static function convert($eventItem, $event = NULL) { if ($event === NULL) { $event = new \KevinDitscheid\KdCalendar\Domain\Model\Event(); } $event->setId($eventItem->getId()); $event->setDescription($eventItem->getDescription()); $event->setSummary($eventItem->getSummary()); $event->setColorId($eventItem->getColorId()); $event->setStatus($eventItem->getStatus()); $event->setVisibility($eventItem->getVisibility()); $event->setEndTimeUnspecified($eventItem->getEndTimeUnspecified()); $event->setAnyoneCanAddSelf($eventItem->getAnyoneCanAddSelf()); $event->setHtmlLink($eventItem->getHtmlLink()); $event->setICalUID($eventItem->getICalUID()); $event->setAttendeesOmitted($eventItem->getAttendeesOmitted()); //$event->setExtendedProperties($eventItem->getExtendedProperties()); $event->setGuestsCanInviteOthers($eventItem->getGuestsCanInviteOthers()); $event->setGuestsCanSeeOtherGuests($eventItem->getGuestsCanSeeOtherGuests()); $event->setHangoutLink($eventItem->getHangoutLink()); $event->setLocation($eventItem->getLocation()); $event->setLocked($eventItem->getLocked()); $event->setPrivateCopy($eventItem->getPrivateCopy()); $event->setRecurrence($eventItem->getRecurrence()); $event->setRecurringEventId($eventItem->getRecurringEventId()); $event->setSequence($eventItem->getSequence()); $event->setAttachments(new \TYPO3\CMS\Extbase\Persistence\ObjectStorage()); foreach ($eventItem->getAttachments() as $attachment) { $event->addAttachment(\KevinDitscheid\KdCalendar\Domain\Model\Attachment::convert($attachment)); } $event->setAttendees(new \TYPO3\CMS\Extbase\Persistence\ObjectStorage()); foreach ($eventItem->getAttendees() as $attendee) { $event->addAttendee(\KevinDitscheid\KdCalendar\Domain\Model\Attendees::convert($attendee)); } if ($eventItem->getCreator()) { $event->setCreator(\KevinDitscheid\KdCalendar\Domain\Model\Creator::convert($eventItem->getCreator(), $event->getCreator())); } else { $event->setCreator(NULL); } if ($eventItem->getGadget()) { $event->setGadget(\KevinDitscheid\KdCalendar\Domain\Model\Gadget::convert($eventItem->getGadget(), $event->getGadget())); } else { $event->setGadget(NULL); } if ($eventItem->getStart()) { $event->setStart(\KevinDitscheid\KdCalendar\Domain\Model\Time::convert($eventItem->getStart(), $event->getStart())); } else { $event->setStart(NULL); } if ($eventItem->getEnd()) { $event->setEnd(\KevinDitscheid\KdCalendar\Domain\Model\Time::convert($eventItem->getEnd(), $event->getEnd())); } else { $event->setEnd(NULL); } if ($eventItem->getOriginalStartTime()) { $event->setOriginalStartTime(\KevinDitscheid\KdCalendar\Domain\Model\Time::convert($eventItem->getOriginalStartTime(), $event->getOriginalStartTime())); } else { $event->setOriginalStartTime(NULL); } if ($eventItem->getOrganizer()) { $event->setOrganizer(\KevinDitscheid\KdCalendar\Domain\Model\Organizer::convert($eventItem->getOrganizer(), $event->getOrganizer())); } else { $event->setOrganizer(NULL); } $event->setReminders(new \TYPO3\CMS\Extbase\Persistence\ObjectStorage()); $reminders = $eventItem->getReminders(); if ($reminders) { $event->setUseDefaultReminder($reminders->getUseDefault()); foreach ($reminders->getOverrides() as $reminder) { $event->addReminder(\KevinDitscheid\KdCalendar\Domain\Model\Reminder::convert($reminder)); } } $source = $eventItem->getSource(); $event->setSourceTitle($source['title']); $event->setSourceUrl($source['url']); return $event; }