client = new Google_Client(); $this->client->setApplicationName('GmeetPOC App'); $this->client->setScopes(Google_Service_Calendar::CALENDAR_EVENTS); $this->client->setAuthConfig($_SERVER['DOCUMENT_ROOT'].'/env/pdgenie_credentials.json'); // $this->client->setDeveloperKey('AIzaSyBFuekMZZFvQFdA4I1GLTMgYUg1vMqRR0Q'); $this->client->setAccessType('offline'); // $this->client->setPrompt('select_account consent'); // Load previously authorized token from a file, if it exists. // The file token.json stores the user's access and refresh tokens, and is // created automatically when the authorization flow completes for the first // time. $tokenPath = $_SERVER['DOCUMENT_ROOT'].'/env/pdgenie_token.json'; if (file_exists($tokenPath)) { $accessToken = json_decode(file_get_contents($tokenPath), true); $this->client->setAccessToken($accessToken); } // If there is no previous token or it's expired. if ($this->client->isAccessTokenExpired()) { // Refresh the token if possible, else fetch a new one. if ($this->client->getRefreshToken()) { $this->client->fetchAccessTokenWithRefreshToken($this->client->getRefreshToken()); } else { // Request authorization from the user. $authUrl = $this->client->createAuthUrl(); echo "Open the following link in your browser:\n%s\n", $authUrl; print 'Enter verification code: '; $authCode = trim(fgets(STDIN)); // Exchange authorization code for an access token. $accessToken = $this->client->fetchAccessTokenWithAuthCode($authCode); $this->client->setAccessToken($accessToken); // Check to see if there was an error. if (array_key_exists('error', $accessToken)) { throw new Exception(join(', ', $accessToken)); } } // Save the token to a file. if (!file_exists(dirname($tokenPath))) { mkdir(dirname($tokenPath), 0700, true); } file_put_contents($tokenPath, json_encode($this->client->getAccessToken())); } // return //$this->client; //create new calender service $this->calender = new Google_Service_Calendar($this->client); $this->drive = new Google_Service_Drive($this->client); } public function getEventListFromGoogleCalender() { $optParams = array( 'maxResults' => 25, 'orderBy' => 'startTime', 'singleEvents' => true, // 'timeMin' => $timeMin, // 'timeMax' => $timeMax, //'timeZone' => 'Asia/Kolkata', ); $events_list = $this->calender->events->listEvents('primary', $optParams); $result = []; if(count($events_list)) { foreach ($events_list as $key => $event) { $result[($key+1)]['id'] = $event->getId(); $result[($key+1)]['summary'] = $event->getSummary(); $result[($key+1)]['description'] = $event->getDescription(); // $result[($key+1)]['creator'] = $event->getCreator(); // $result[($key+1)]['start'] = $event->getStart()->dateTime; // $result[($key+1)]['end'] = $event->getEnd()->dateTime; $result[($key+1)]['gmeetlink'] = $event->getHangoutLink(); // $result[($key+1)]['link'] = $event->getHtmlLink(); } return $result; } else { return $result; } } public function getGoogleCalenderEvent($eventId) { try { $event = $events_list = $this->calender->events->get('primary', $eventId); return $event; } catch(Exception $e) { //echo 'Message: ' .$e->getMessage(); return []; } } public function addGoogleCalenterEvent($eventdata) { // $eventObj = new Event();//cast('A',$b); // $eventTimeObj = new EventDateTime();//cast('A',$b); // $eventTimeObj->setDateTime('2022-05-21T00:00:00'); // $eventTimeObj->setTimeZone('Asia/Kolkata'); // $eventObj->setSummary($eventdata['summary']); // $eventObj->setStart($eventTimeObj); // $eventObj->setEnd($eventTimeObj); $event = new Google_Service_Calendar_Event(array( 'summary' => $eventdata['summary'], 'location' => 'Online', 'description' => '', 'start' => array( 'dateTime' => $eventdata['start'], 'timeZone' => 'Asia/Kolkata', ), 'end' => array( 'dateTime' => $eventdata['end'], 'timeZone' => 'Asia/Kolkata', ),"conferenceData" => [ "createRequest"=> [ "requestId" => $eventdata['pdid'].'_'.$eventdata['start'].'-'.rand()]] )); try { $event = $this->calender->events->insert('primary',$event,['conferenceDataVersion' => 1]); return $event; } catch(Exception $e) { echo 'Message: ' .$e->getMessage(); return []; } } public function deleteGoogleCalenderEvent($eventId) { try { $event = $events_list = $this->calender->events->delete('primary', $eventId); return $event; } catch(Exception $e) { //echo 'Message: ' .$e->getMessage(); return []; } } public function getDriveFilesList($gmeet_code) { $filter = ['q' => "mimeType='video/mp4' and name contains '".$gmeet_code."'"]; try { $files = $this->drive->files->listFiles($filter); if(count($files->getFiles())) { // echo count($files->getFiles()); $res = []; foreach($files->getFiles() as $key => $file) { $res[($key+1)]['id'] = $file->getId(); $res[($key+1)]['name'] = $file->getName(); $res[($key+1)]['type'] = $file->getMimeType(); } return $res; } return []; } catch(Exception $e) { //echo 'Message: ' .$e->getMessage(); return []; } } public function downloadDriveFile($fileID) { $files = $this->drive->files->get($fileID,['alt' => 'media']); if($files->getStatusCode() == 200) { return $files->getBody(); } return false; // echo $files->getStatusCode(); // echo $files->getContentType(); // $files = file_put_contents(__DIR__.'/temp',$files->getBody()); } public function deleteDriveFile($fileID) { $files = $this->drive->files->delete($fileID); return true; // echo $files->getStatusCode(); // echo $files->getContentType(); // $files = file_put_contents(__DIR__.'/temp',$files->getBody()); } } ?>