/** * 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; }
/** * 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; }