/**
  * Permet de supprimer un évènement google
  * @param $calendarId
  * @param \Google_Service_Calendar_Event $event
  * @param bool $sendNotification
  * @return bool
  */
 public function deleteEventFromGoogle($calendarId, \Google_Service_Calendar_Event $event, $sendNotification = false)
 {
     $service = new \Google_Service_Calendar($this->client);
     try {
         $service->events->delete($calendarId, $event->getId(), array('sendNotifications' => $sendNotification));
     } catch (Exception $e) {
         return false;
     }
     return true;
 }
Beispiel #2
0
 /**
  * Update event
  *
  * @param AB_Appointment $appointment
  * @return bool
  */
 public function updateEvent(AB_Appointment $appointment)
 {
     try {
         if (in_array($this->getCalendarAccess(), array('writer', 'owner'))) {
             $this->event = $this->service->events->get($this->getCalendarID(), $appointment->get('google_event_id'));
             $this->handleEventData($appointment);
             $this->service->events->update($this->getCalendarID(), $this->event->getId(), $this->event);
             return true;
         }
     } catch (Exception $e) {
         $this->errors[] = $e->getMessage();
     }
     return false;
 }
Beispiel #3
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;
 }
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();
 }