Revisting this for Drupal 8
Much of the work underway for Drupal 8 makes a module like this one easier to implement because of:
- Improved Entity API
- A new plugin system
- Proper namespaced code allows external libraries to be included with ease
- Google now provides a base php implementation of their APIs
- Guzzle could be an efficient mechanism for importing Calendar objects
All of these developments will allow the original vision of this module to be implemented. It's been awhile since I've worked on this maybe I should reiterate what that vision is:
I want to allow users to create an event/appointment/some kind of date based content on their Drupal site and have that event automatically sync with their Google Calendar. I want that user to create an event on their Google Calendar and have that event created on their Drupal site.
Understanding how to accomplish this has taken many forms. I've looked into
- Extending the Event module (remember that?)
- Implementing a Feed importer
- Implementing a client for the Service module
But I never really liked any of these options since I wanted to implement this logic as an action that is triggered whenever the node_save event occurs. With Drupal 8's EventDispatcher and Observer pattern. This will be easier to implement.
The Current Plan
- Provide a system-wide login for Google API services
- Provide a mechanism for mass-importing calendar appointments that create generate non-fieldable, unmanaged entities that Drupal can query.
- Provide an edit form for each Google Calendar entity that includes proper data validation
- Provide a listener that sends API calls to Google Calendar whenever a Google Calendar entity is modified
- Provide a system that checks if a Google Calendar entity is out-of-sync
- Implement a proper caching strategy for unmanaged Google Calendar entities
For now, the scope of this module is implement a system-wide calendar that is bound to Google Calendar, but is native to Drupal's APIs. You know, for fun.
Previous description of project:
This project extends the Event module to implement Google's Calendar API. With the module you will be able to:
1. Add and event to a drupal site and a Google Calendar at the same time.
2. Synchronize events between a drupal site and a Google Calendar
3. Full control of events no matter if you primarily use Drupal's events or Google Calendar.
0.0 Establish module shell, enforce dependency, implement AuthSub
0.1 Import an event from a GCalendar into Drupal (using AuthSub)<--
0.2 Retrieve list of calendars, import events from selected calendar
0.3 Export event from drupal to a GCalendar
0.4 Sync events to and from Google Calendar
0.5 Release Dev Version, Collect Feedback
0.6 Polish Based on Feedback
0.7 Implement Batch Operations
0.8 Implement access to multiple calendars
0.9 Bug fix known bugs, last chance for feedback
1.0 Bug fix ready for release