/**
  * The charge method prepares data for Stripe_Charge::create and attempts a
  * transaction.
  *
  * @param array	$data Must contain 'amount' and 'stripeToken'.
  * @return array $charge if success, string $error if failure.
  * @throws CakeException
  * @throws CakeException
  */
 public function addEvent($data)
 {
     $client = new Google_Client();
     $client->setApplicationName("Plat");
     $key = file_get_contents($this->googleApiKeyFile);
     // separate additional scopes with a comma
     $scopes = "https://www.googleapis.com/auth/calendar";
     //$client->setScopes(array($scopes));
     $cred = new Google_Auth_AssertionCredentials($this->googleEmailAddress, array($scopes), $key);
     $client->setAssertionCredentials($cred);
     if ($client->getAuth()->isAccessTokenExpired()) {
         $client->getAuth()->refreshTokenWithAssertion($cred);
     }
     $service = new Google_Service_Calendar($client);
     $event = new Google_Service_Calendar_Event();
     $event->setId($data['eventId']);
     $event->setSummary($data['eventSummary']);
     $event->setDescription($data['eventDescription']);
     $event->setLocation($data['eventLocation']);
     $start = new Google_Service_Calendar_EventDateTime();
     $start->setDateTime($data['eventStartDate']);
     $start->setTimeZone($data['eventTimeZone']);
     $event->setStart($start);
     $end = new Google_Service_Calendar_EventDateTime();
     $end->setDateTime($data['eventEndDate']);
     $end->setTimeZone($data['eventTimeZone']);
     $event->setEnd($end);
     $attendee1 = new Google_Service_Calendar_EventAttendee();
     $attendee1->setEmail(Configure::read("ADMIN_ORDER_EVENT_EMAIL"));
     $attendees = array($attendee1);
     $event->attendees = $attendees;
     $calendar_id = Configure::read("GOOGLE_CALENDAR_ID");
     $new_event = null;
     try {
         $new_event = $service->events->insert($calendar_id, $event);
         //
         $new_event_status = $new_event->getStatus();
         return $new_event_status;
     } catch (Google_Service_Exception $e) {
         syslog(LOG_ERR, $e->getMessage());
         return $e->getMessage();
     }
 }
 /**
  * @param User $user
  * @param      $time
  * @param      $summary
  * @param      $description
  *
  * @return bool
  */
 public function schedule(User $user, $time, $summary, $description)
 {
     $client = $this->getAuthenticateClient($user);
     $service = new \Google_Service_Calendar($client);
     /**
      * @var \Google_Service_Calendar_Event[] $events
      */
     $events = [];
     $total = $time;
     $step = $time > 10 ? 10 : $time;
     $count = 0;
     $id = rand(11111111, 99999999);
     while ($total > 0 && $step > 1) {
         $start = $this->getNextAvaliableSchedule($client, $step);
         if (is_null($start)) {
             $step--;
             continue;
         }
         $event = new \Google_Service_Calendar_Event();
         $eventStart = new \Google_Service_Calendar_EventDateTime();
         $eventStart->setDateTime($start->format(\DateTime::RFC3339));
         $event->setStart($eventStart);
         $eventEnd = new \Google_Service_Calendar_EventDateTime();
         $end = new \DateTime('@' . $start->getTimestamp());
         $end->modify('+' . $step * 60 . ' minute');
         $eventEnd->setDateTime($end->format(\DateTime::RFC3339));
         $event->setEnd($eventEnd);
         $event->setId($id . $count++);
         $event->setSummary($summary);
         $event->setDescription($description);
         $events[] = $event;
         $total -= $step;
         $step = $step < $total ? $step : $total;
         $service->events->insert('primary', $event);
     }
     if ($total > 0) {
         foreach ($events as $event) {
             $service->events->delete('primary', $event->getId());
         }
         return false;
     }
     return $events;
 }
Beispiel #3
0
 /**
  * Tarsform  Vtiger Records to Google Records
  * @param <array> $vtEvents 
  * @return <array> tranformed vtiger Records
  */
 public function transformToTargetRecord($vtEvents)
 {
     $records = array();
     foreach ($vtEvents as $vtEvent) {
         $newEvent = new Google_Service_Calendar_Event();
         if ($vtEvent->getMode() == WSAPP_SyncRecordModel::WSAPP_DELETE_MODE) {
             $newEvent->setId($vtEvent->get('_id'));
         } elseif ($vtEvent->getMode() == WSAPP_SyncRecordModel::WSAPP_UPDATE_MODE && $vtEvent->get('_id')) {
             if ($this->apiConnection->isTokenExpired()) {
                 $this->apiConnection->refreshToken();
                 $this->client->setAccessToken($this->apiConnection->getAccessToken());
                 $this->service = new Google_Service_Calendar($this->client);
             }
             $newEvent = $this->service->events->get('primary', $vtEvent->get('_id'));
         }
         $newEvent->setSummary($vtEvent->get('subject'));
         $newEvent->setLocation($vtEvent->get('location'));
         $newEvent->setDescription($vtEvent->get('description'));
         $newEvent->setVisibility(strtolower($vtEvent->get('visibility')));
         $startDate = $vtEvent->get('date_start');
         $startTime = $vtEvent->get('time_start');
         $endDate = $vtEvent->get('due_date');
         $endTime = $vtEvent->get('time_end');
         if (empty($endTime)) {
             $endTime = "00:00";
         }
         $start = new Google_Service_Calendar_EventDateTime();
         $start->setDateTime($this->googleFormat($startDate . ' ' . $startTime));
         $newEvent->setStart($start);
         $end = new Google_Service_Calendar_EventDateTime();
         $end->setDateTime($this->googleFormat($endDate . ' ' . $endTime));
         $newEvent->setEnd($end);
         $recordModel = Google_Calendar_Model::getInstanceFromValues(array('entity' => $newEvent));
         $recordModel->setType($this->getSynchronizeController()->getSourceType())->setMode($vtEvent->getMode())->setSyncIdentificationKey($vtEvent->get('_syncidentificationkey'));
         $recordModel = $this->performBasicTransformations($vtEvent, $recordModel);
         $recordModel = $this->performBasicTransformationsToTargetRecords($recordModel, $vtEvent);
         $records[] = $recordModel;
     }
     return $records;
 }