Files
crm.twinpol.com/include/ECM/EcmGoogleServices/EcmGoogleService.php
2025-05-12 15:44:39 +00:00

218 lines
7.8 KiB
PHP
Executable File

<?php
class EcmGoogleService
{
private $client;
private $cal;
private $oauth;
public $userinfo;
function __construct ($module, $id, $adress)
{
global $sugar_config;
if ($sugar_config['googleClientId'] != '' &&
$sugar_config['googleRedirectUri'] != '' &&
$sugar_config['googleScopes'] != '' &&
$sugar_config['googleClientSecret'] != '') {
session_start();
require_once ('include/ECM/EcmGoogleServices/src/Google/autoload.php');
$this->client = new Google_Client();
$this->client->setClientId($sugar_config['googleClientId']);
$this->client->setClientSecret($sugar_config['googleClientSecret']);
$this->client->setRedirectUri($sugar_config['googleRedirectUri']);
$this->client->setScopes($sugar_config['googleScopes']); // Calender
// Scope
$this->cal = new Google_Service_Calendar($this->client);
$this->oauth = new Google_Service_Oauth2($this->client);
} else {
return false;
}
}
function getUserInfo()
{
$this->userinfo = $this->oauth->userinfo;
$this->userinfo = $this->userinfo->get();
return $this->userinfo;
}
function checkLogin()
{
if ($_SESSION['access_token'] != '') {
$this->client->setAccessToken($_SESSION['access_token']);
if ($this->client->isAccessTokenExpired()) {
if($this->client->getAccessToken()==''){
return false;
} else {
$refresh_code=$this->client->getRefreshToken();
if($refresh_code!=''){
$NewAccessToken = json_decode($this->client->getAccessToken());
$NewAccessToken->refresh_token=$refresh_code;
$this->client->refreshToken($NewAccessToken->refresh_token);
return true;
} else {
return false;
}
}
} else {
$token = $this->client->getAccessToken();
$_SESSION['access_token'] = $token;
return true;
}
} else {
return false;
}
}
function generateUrl()
{
return $this->client->createAuthUrl();
}
function logIn($code)
{
$accessToken = $this->client->authenticate($code);
if($accessToken!=''){
$this->client->setAccessToken($accessToken);
$token = $this->client->getAccessToken();
$_SESSION['access_token'] = $token;
return true;
} else {
return false;
}
}
function DataIT2DB($datapega) {
if ($datapega) {
$data = explode('/', $datapega);
if (count($data) > 1) {
$datacerta = $data[2] . '-' . $data[1] . '-' . $data[0];
} else {
$datacerta = $datapega;
}
} else {
$datacerta = $datapega;
}
return $datacerta;
}
function geratime($DateStart, $TimeStart) {
$dataHora = $DateStart . 'T' . $TimeStart . ':00.000+02:00'; //Fuso Rome
return $dataHora;
}
function deleteEvent($id)
{
$createdEvent = $this->cal->events->delete('primary', $id);
}
function addEvent($title,$description,$DateStart,$TimeStart,$DateEnd,$TimeEnd,$DateReminder)
{
$event = new Google_Service_Calendar_Event();
$event->setDescription($description);
if($title!=''){
$event->setSummary($title);
}
$event->setLocation('Poland');
//$event->sendNotifications('TRUE');
$start = new Google_Service_Calendar_EventDateTime();
$start->setDateTime($this->geratime($this->DataIT2DB(date('Y-m-d',strtotime($DateStart))), date('H:i',strtotime($TimeStart))));
$event->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
if($DateEnd!=''){
$end->setDateTime($this->geratime($this->DataIT2DB(date('Y-m-d',strtotime($DateEnd))), date('H:i',strtotime($TimeEnd))));
$event->setEnd($end);
} else {
$end->setDateTime($this->geratime($this->DataIT2DB(date('Y-m-d',strtotime($DateStart))), date('H:i',strtotime($TimeStart))));
$event->setEnd($end);
}
$event->setHangoutLink(null);
if($DateReminder==''){
$reminderI = new Google_Service_Calendar_EventReminder();
$reminderI->setMethod('popup');
$reminderI->setMinutes('5');
} else {
$datetime1 = date_create($DateStart);
$datetime2 = date_create($DateReminder);
echo $DateReminder;
$interval = date_diff($datetime1, $datetime2);
// echo $interval->format('%i');
$reminderI = new Google_Service_Calendar_EventReminder();
$reminderI->setMethod('popup');
$hours = $interval->format('%h');
$minutes = $interval->format('%i');
$reminderI->setMinutes(($hours * 60 + $minutes));
}
$reminder = new Google_Service_Calendar_EventReminders();
$reminder->setUseDefault('false');
$reminder->setOverrides(array($reminderI));
$event->setReminders($reminder);
$createdEvent = $this->cal->events->insert('primary', $event);
return $createdEvent->getId();
//Create Calender Event
}
function updateEvent($id,$title,$description,$DateStart,$TimeStart,$DateEnd,$TimeEnd,$DateReminder)
{
$event = new Google_Service_Calendar_Event();
$event->setDescription($description);
if($title!=''){
$event->setSummary($title);
}
$event->setLocation('Poland');
//$event->sendNotifications('TRUE');
$start = new Google_Service_Calendar_EventDateTime();
$start->setDateTime($this->geratime($this->DataIT2DB(date('Y-m-d',strtotime($DateStart))), date('H:i',strtotime($TimeStart))));
$event->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
if($DateEnd!=''){
$end->setDateTime($this->geratime($this->DataIT2DB(date('Y-m-d',strtotime($DateEnd))), date('H:i',strtotime($TimeEnd))));
$event->setEnd($end);
} else {
$end->setDateTime($this->geratime($this->DataIT2DB(date('Y-m-d',strtotime($DateStart))), date('H:i',strtotime($TimeStart))));
$event->setEnd($end);
}
$event->setHangoutLink(null);
if($DateReminder==''){
$reminderI = new Google_Service_Calendar_EventReminder();
$reminderI->setMethod('popup');
$reminderI->setMinutes('5');
} else {
$datetime1 = date_create($DateStart);
$datetime2 = date_create($DateReminder);
echo $DateReminder;
$interval = date_diff($datetime1, $datetime2);
// echo $interval->format('%i');
$reminderI = new Google_Service_Calendar_EventReminder();
$reminderI->setMethod('popup');
$hours = $interval->format('%h');
$minutes = $interval->format('%i');
$reminderI->setMinutes(($hours * 60 + $minutes));
}
$reminder = new Google_Service_Calendar_EventReminders();
$reminder->setUseDefault('false');
$reminder->setOverrides(array($reminderI));
$event->setReminders($reminder);
$createdEvent = $this->cal->events->update('primary',$id, $event);
return $createdEvent->getId();
//Create Calender Event
}
}
?>