Skip to content

aididalam/CodeIgniter-Google-Calendar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Google calendar Library for CodeIgniter

Manage google calendar events.

Features


  • Read Events
  • Update Event
  • Delete Event
  • Create Event

Setup


Setup credentials to communicate with Google Calendar

  • The first step is to obtain credentials to access Google's API. I'm going to assume you already have a Google account and are logged in. Select a project in the Google API console clicking "Select a project."

  • Click on ENABLE APIS AND SERVICES

  • Search for calendar

  • Chose GOOGLE calendar API

  • Enable Api

  • Go back to dashboard and Click on Credentials

  • Click On Create Crendentials and chose Service Account

  • Fill up details

  • Finish the setup by clicking on done

  • Click on newly Create Service Account Note the email for nex step. You have to use this email to manage calendar

  • Click on keys

  • Click on Add new key

  • Chose Json and Download the key


Create google calendar and give access to service account:

  • Go to Google calendar and Create a new calendar or chose a calendar.

  • Scroll down to Share with specific people

  • Click on add people and Add the Service account email ID which you copied or get it from the JSON File

  • Finally Note Down calendar ID


Setup Library


  • Install Google App Client via composer: composer require google/apiclient:^2.11
  • Download this library by clicking here
  • Extract the library to your project folder.
  • Open Application/config/gcalendar.php file
  • Add calendar ID and Json File Location (which you downloaded when you were generating Service account in the first step) . (I recomend you to put the JSON file in calendarData Folder)
$config['calendarId'] = "CALENDAR_ID";
$config['calendar_json_path'] = "SERVICE_ACCOUNT_JSON_FILE";//eg calendarData/calendarAPI.json

Usage


First Call The Library in Controller

$this->load->library("googlecalendar");

  • Load Events
$this->googlecalendar->getAll();
  • Load Specific Event
$this->googlecalendar->find("event_id");
  • Query Event
$this->googlecalendar->where("key1","value1")->where("key2","value2")->get();
  • Update Event
$this->googlecalendar->find("event_id");
$event->setSummary('Appointment at Somewhere');
$event->setLocation('Bangladesh');
$this->googlecalendar->update($event);
  • Delete Event
$this->googlecalendar->delete("event_id");
  • Create Event
$data = array(
            'summary' => 'Google I/O 2015',
            'location' => '800 Howard St., San Francisco, CA 94103',
            'description' => 'A chance to hear more about Google\'s developer products.',
            'start' => array(
                'dateTime' => '2015-05-28T09:00:00-07:00',
                'timeZone' => 'America/Los_Angeles',
            ),
            'end' => array(
                'dateTime' => '2015-05-28T17:00:00-07:00',
                'timeZone' => 'America/Los_Angeles',
            ),
            'recurrence' => array(
                'RRULE:FREQ=DAILY;COUNT=2'
            ),
            'attendees' => array(
                array('email' => 'lpage@example.com'),
                array('email' => 'sbrin@example.com'),
            ),
            'reminders' => array(
                'useDefault' => FALSE,
                'overrides' => array(
                    array('method' => 'email', 'minutes' => 24 * 60),
                    array('method' => 'popup', 'minutes' => 10),
                ),
            ),
        );

	$this->googlecalendar->insert($data);
  • You can also set some option parameters:
$this->googlecalendar->singleEvents(true)->showDeleted(false)->showHiddenInvitations(false)
            ->orderBy("startTime")->timeMin(mktime($hour, $minute, $second, $month, $day, $year))
            ->timeMax(mktime($hour, $minute, $second, $month, $day, $year))
            ->updatedMin(mktime($hour, $minute, $second, $month, $day, $year))
            ->maxResults(10)
            ->getAll();

Some tips:

This command will bring all the gogle services in your vendor folder and creates a lot of unnecessary files. composer require google/apiclient:^2.11

So if you only need some specific services and don't need files for other services like addmob,drive,youtube you can put this in composer and run composer update

"require": {
		"php": ">=5.3.7",
		"google/apiclient": "2.11"
	},
"scripts": {
		"post-update-cmd": "Google\\Task\\Composer::cleanup"
	},
	"extra": {
		"google/apiclient-services": [
			"Calendar"
		]
	},

and run composer update

This will remove unnecessary service's files

For more details please checkout Google Calendar Php Docs