public function testModelMutation()
 {
     $htmlLink = 'https://www.google.com/calendar/event?' . 'eid=NWdpMmFjNDkzbm5yZzh2N2poZXNhZmdldDggaWFuLmJhcmJlckBt';
     $data = json_decode('{
        "kind": "calendar#event",
        "etag": "\\"-kteSF26GsdKQ5bfmcd4H3_-u3g/MTE0NTUyNTAxOTk0MjAwMA\\"",
        "id": "1234566",
        "status": "confirmed",
        "htmlLink": "' . $htmlLink . '",
        "created": "2006-04-13T14:22:08.000Z",
        "updated": "2006-04-20T09:23:39.942Z",
        "summary": "Evening Jolt Q3 CTFL",
        "description": "6.30 - Adminning\\n9.30 - Game",
        "creator": {
          "email": "*****@*****.**",
          "displayName": "Ian Test",
          "self": true
        },
        "organizer": {
          "email": "*****@*****.**",
          "displayName": "Ian Test",
          "self": true
        },
        "start": {
          "date": "2006-04-23"
        },
        "end": {
          "date": "2006-04-24"
        },
        "iCalUID": "*****@*****.**",
        "sequence": 0,
        "reminders": {
          "useDefault": false
        }
      }', true);
     $event = new Google_Service_Calendar_Event($data);
     $date = new Google_Service_Calendar_EventDateTime();
     date_default_timezone_set('UTC');
     $dateString = Date("c");
     $summary = "hello";
     $date->setDate($dateString);
     $event->setStart($date);
     $event->setEnd($date);
     $event->setSummary($summary);
     $simpleEvent = $event->toSimpleObject();
     $this->assertEquals($dateString, $simpleEvent->start->date);
     $this->assertEquals($dateString, $simpleEvent->end->date);
     $this->assertEquals($summary, $simpleEvent->summary);
     $event2 = new Google_Service_Calendar_Event();
     $this->assertNull($event2->getStart());
 }
Beispiel #2
0
 /**
  * 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;
 }
 public function testModelMutation()
 {
     $data = json_decode($this->calendarData, true);
     $event = new Google_Service_Calendar_Event($data);
     $date = new Google_Service_Calendar_EventDateTime();
     date_default_timezone_set('UTC');
     $dateString = Date("c");
     $summary = "hello";
     $date->setDate($dateString);
     $event->setStart($date);
     $event->setEnd($date);
     $event->setSummary($summary);
     $simpleEvent = $event->toSimpleObject();
     $this->assertEquals($dateString, $simpleEvent->start->date);
     $this->assertEquals($dateString, $simpleEvent->end->date);
     $this->assertEquals($summary, $simpleEvent->summary);
     $event2 = new Google_Service_Calendar_Event();
     $this->assertNull($event2->getStart());
 }
Beispiel #4
0
 /**
  * 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;
 }
 private function processOneEvent(\Google_Service_Calendar_Event $googleServiceCalendarEvent, Calendar $calendar)
 {
     $allDay = false;
     if ($googleServiceCalendarEvent->getStart()->getDateTime()) {
         $startTime = new \DateTime($googleServiceCalendarEvent->getStart()->getDateTime());
         $endTime = new \DateTime($googleServiceCalendarEvent->getEnd()->getDateTime());
     } else {
         $startTime = new \DateTime($googleServiceCalendarEvent->getStart()->getDate());
         $endTime = new \DateTime($googleServiceCalendarEvent->getEnd()->getDate());
         $allDay = true;
     }
     $uid = $googleServiceCalendarEvent->getId();
     $this->comment('Event found - ' . $googleServiceCalendarEvent->getSummary() . ' - on ' . $startTime->format('Y-m-d H:i') . ' - ' . $googleServiceCalendarEvent->getId());
     try {
         $event = Event::where('event_id', $googleServiceCalendarEvent->getId())->firstOrFail();
     } catch (ModelNotFoundException $e) {
         if ($googleServiceCalendarEvent->getStatus() == 'cancelled') {
             return;
         }
         $this->comment('New Event!');
         $event = new Event();
     }
     if ($googleServiceCalendarEvent->getStatus() == 'cancelled') {
         $event->delete();
         return;
     }
     $event->calendar = $calendar->id;
     $event->event_id = $uid;
     $event->ical_uid = $googleServiceCalendarEvent->getICalUID();
     $event->start_date = $startTime;
     $event->all_day_event = $allDay;
     $event->end_date = $endTime;
     $event->summary = (string) $googleServiceCalendarEvent->getSummary();
     $event->description = (string) $googleServiceCalendarEvent->getDescription();
     $event->location = (string) $googleServiceCalendarEvent->getLocation();
     if (!$event->image) {
         $this->attemptToAddImageToEvent($event, $calendar);
     }
     $event->save();
 }