client = new Google_Client();
$this->client->setApplicationName(SystemConfiguration::$google_product_name);
$this->client->setClientId(SystemConfiguration::$google_client_id);
$this->client->setClientSecret(SystemConfiguration::$google_client_secret);
$this->client->setDeveloperKey(SystemConfiguration::$google_api_key);
$this->client->setRedirectUri('http://localhost/oauth_callback');
$this->service = new Google_CalendarService($this->client);
}
/**
* Validate the Google API access token of a provider.
*
* In order to manage a Google user's data, one need a valid access token.
* This token is provided when the user grants the permission to a system
* to access his Google account data. So before making any action we need
* to make sure that the available token is still valid.
*
* IMPORTANT! Always use this method before anything else
* in order to make sure that the token is being set and still valid.
*
* @param string $access_token This token is normally stored in the database.
* @return bool Returns the validation result.
*/
public function validate_token($access_token) {
$this->client->setAccessToken($access_token);
return $this->client->isAccessTokenExpired();
}
/**
* Add an appointment record to its providers Google Calendar account.
*
* This method checks whether the appointment's provider has enabled the Google
* Sync utility of Easy!Appointments and the stored access token is still valid.
* If yes, the selected appointment record is going to be added to the Google
* Calendar account.
*
* IMPORTANT! If the access token is not valid anymore the
* appointment cannot be added to the Google Calendar. A notification warning
* must be sent to the provider in order to authorize the E!A again, and store
* the new access token to the database.
*
* @param int $appointment_id The record id of the appointment that is going to
* be added to the database.
* @return Google_Event Returns the Google_Event class object.
*/
public function add_appointment($appointment_id) {
$CI =& get_instance();
$CI->load->model('Appointments_Model');
$CI->load->model('Service_Model');
$CI->load->model('Provider_Model');
$CI->load->model('Customers_Model');
$CI->load->model('Settings_Model');
$appointment_data = $CI->Appointments_Model->get_row($appointment_id);
$provider_data = $CI->Providers_Model->get_row($appointment_data['id_users_provider']);
$customer_data = $CI->Customers_Model->get_row($appointment_data['id_users_customer']);
$service_data = $CI->Services_Model->get_row($appointment_data['id_services']);
$company_name = $CI->Settings_Model->get_setting('company_name');
$CI->load->helper('general');
$event = new Google_Event();
$event->setSummary($service_data['name']);
$event->setLocation($company_name);
$start = new Google_EventDateTime();
$start->setDateTime(date3339(strtotime($appointment_data['start_datetime'])));
$event->setStart($start);
$end = new Google_EventDateTime();
$end->setDateTime(date3339(strtotime($appointment_data['end_datetime'])));
$event->setEnd($end);
$eventProvider = new Google_EventAttendee();
$eventProvider->setDisplayName($provider_data['first_name'] . ' '
. $provider_data['last_name']);
$eventProvider->setEmail($provider_data['email']);
$eventCustomer = new Google_EventAttendee();
$eventCustomer->setDisplayName($customer_data['first_name'] . ' '
. $customer_data['last_name']);
$eventCustomer->setEmail($customer_data['email']);
$event->attendees = array(
$eventProvider,
$eventCustomer
);
// Add the new event to the "primary" calendar.
$created_event = $this->service->events->insert('primary', $event);
return $created_event;
}
/**
* Update an existing appointment that is already synced with Google Calendar.
*
* @param int $appointment_id
*/
public function update_appointment($appointment_id) {
}
/**
* Delete an existing appointment from Google Calendar.
*
* @param type $appointment_id
*/
public function delete_appointment($appointment_id) {
}
}
/* End of file google_sync.php */
/* Location: ./application/libraries/google_sync.php */