Firstly I would like to wish you a Merry Christmas and Happy New Year and also apologise for intruding on your holiday. You are receiving this email as you have a current subscription on the purplebeanie.com web site.
As you would no doubt be aware Joomla 2.5 official reaches Joomla end of support at the end of this year. You can check out the official Joomla development status page here
So like many of you I am currently in the process of migrating the purplebeanie.com site from Joomla 2.5 to Joomla 3.3.
As part of the migration I will be changing the domain name that I use for open source development. As of January 1 2015 the new web site will be hotchillisoftware.com. To match I will also be renaming PBBooking to Online Service Booking.
Your subscription status will remain active on the new site and over the next week you will receive an email with your user details and login / subscription details to the new site. Please don’t try to login until you receive details as the account will not be created until you receive an email.
The purplebeanie.com site will remain active for 3 months to make sure everything has migrated across correctly.
Thank you very, very much for your support over 2014. It means a great deal to me. I enjoy Joomla component development and this year I aim to make this a sustainable full time job. Your purchase of a subscription allows me to do this and helps me to continue to develop Online Service Booking.
Recently I discovered that Google had deprecated the v2 API for connecting to Google’s services. Unfortunately at the same time I discovered that the Zend Gdata Library was using v2 of the Google API and wasn’t going to be updated to v3 in time to meet the cut off for when Google was turning off the Calendar API.
The last two days have been spent busily re-coding the Syncer class for PBBooking to use v3 of the API instead of the now deprecated v2. This was something I had intended to do across the Christmas break for a 3.1.0 release early in the New Year.
Unfortunately the v3 API removes the option to use client login. Instead ALL logins now need to be done using OAuth2. This means that upgrading is not going to be seamless and will require you to make some changes.
So let’s step through what needs to be done to enable Google Calendar on the new PBBooking 3.1.0.
Firstly, as with previous versions click on the resource you wish to link to Google calendar and click edit. Then go down to
Enable Google Calendar Integration and ensure that this is set to
Calendar Id field enter the google calendar ID for the calendar you wish to link. If this is your primary calendar it will typically be your email address. If that is another calendar than your primary calendar, or a calendar that someone else has shared with you it will be a longer string.
You will notice that that Google Calendar Username and Google Calendar Password fields have been removed. These are no longer stored by PBBooking, instead OAauth is used to authorise PBBooking to access your calendar information.
Previously if you wished to access Google calendars from different accounts you could put different credentials for each calendar. The change to v3 of the API and OAuth2 means that the calendar user will need to share their Google Calendar with you form their account. You will then be able to link to this account.
Once you have enabled Google Calendar integration for the Calendar / Resource it is now time to link your PBbooking Installation to Google Calendar using OAuth2.
Save & Close to apply your Calendar changes then go back to the
Dashboard click configuration and go to the
Google Calendar Settings tab. Under this tab ensure that:
Enable Google Calendar Integrationis set to Yes
Sync Forward Eventsis set to
One Monthor greater
Sync Google Events to PBbookingis set to
Yesif you wish to sync events entered into Google Calendar back to PBBooking
Google Cal Sync Secretis set to your preferred sync secret.
Google Query Max Resultsis set to a value appropriate for your site. Anywhere between 100 and 250 - 300 works well for most sites.
Auth Code can be left blank. We will get this from Google.
Link Calendar button and this will open a Google authorisation prompt in a new window or tab.
From the list of accounts, choose which account you would like to grant PBBooking access to. Only one account’s credentials are stored, so if you need to access calendars from more than one account you need to share these from within Google Calendar.
If you are not currently logged in to your account Google will ask you for your password to login. Just enter your password as normal.
Google will now display a landing page advising that Purplebeanie Online Booking for Joomla would like to Manage Your Calendars. Just click
From the next page copy the code in the text box to your clipboard. The code may be longer than the text box so ensure that you have copied all of it.
Once copied, close the window to return to your PBBooking configuration and enter the code you just copied into the
Auth Code box. Then click
Save & Close.
Congratulations, you are all done. PBBooking is now configured to access your Google Calendar installation using OAuth2 and the new (v3) API.
What Can Go Wrong?
As with all things in life there are things that can go wrong. So let’s look at some of the things that can go wrong with the new v3 API.
Firstly, Google has now introduced daily quotes to many of their services. These quotas are based on the developer API key and for Google Calendar a maximum of 500,000 queries per day can be issued.
By default PBBooking 3.1.0 will use the main PBBooking Subscriber key so that installation is as simple as possible. This means you will be sharing 500,000 queries per day with all other users. If you are a high traffic site I would strongly encourage you to grab your own API key. Raise a support ticket for details.
Secondly, OAuth2 uses refresh tokens that allows PBBooking to sync with Google Calendar off a scheduled task or cron job. Each Google account is allowed a maximum of 25 refresh tokens at any given time. Each time you grant an application offline access using OAuth2 a new refresh token is created.
When you exceed 25 refresh tokens the creation of the 26th token will invalidate the first token. If the PBBooking refresh token is invalidated the sync process will stop. You will receive an email notifying you and will need to re-link the installation.
Where to Get the 3.1.0 Update?
Login to your purplebeanie.com account and go to the
Downloads page. The direct link is here http://purplebeanie.com/downloads/pbbooking–245-series/pbbooking–245-series–3–0–0.
This update is only available to subscribers.
Today (18th November 2014) I became aware of problems users were having synching and / or connecting to Google. Typically the following error code is being returned:
0 Expected response code 200, got 403 <HTML> <HEAD> <TITLE>Forbidden</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> <H1>Forbidden</H1> <H2>Error 403</H2> </BODY> </HTML>
This is being generated after Google shutdown v2 of the Google Calendar API. This was done on the 17th November. You can see the notice on the API docs here.
Initially I had thought this was not being switched off until April 2015 and I had planned to work on migrating to v3 of the API over the Christmas break. However, it has happened earlier than I expected.
I am working on an emergency update
3.0.5 3.1.0 to address this issue and upgrade from using Zend Gdata and v2 of the Calendar API to using v3.
In the meantime sites using PBBooking >= 3.0 will continue working, however the Google Calendar Sync will not be occurring. This will mean PBBooking events will not be written to Google Calendar and Google Calendar events will not be written to PBBooking.
For sites using PBBooking <= 126.96.36.199a13 if you have Google Calendar Sync enabled you will be getting the error shown above on both your front end and back end PBBooking pages. A temporary work around is to disable Google Calendar integration on your site which will return to normal function.
3.0.5 3.1.0 update will provide a fix for this issue. For Joomla 2.5 users update 2.6 will fix this.
Update 19th November - I have authentication / authorization working with the new API and now only need to update the syncher class for a release.
Update 19th November @ 3:34pm - Fetch events, creation of events and deletion along with authentication and authorisation now working using V3 api. Just some final testing and then I will be releasing.
Update 19th November @ 5:36pm - 3.1.0 released for Joomla 3.3 changes Google API to v3 and fixes broken sync problems. See blog post here. Next up a 2.5 update.
Update 20th November @ 11:46am - 2.6 release for Joomla 2.5 is well underway. Authentication and Authorization for OAuth2 has been done and now just need to reconnect the CRUD methods
Update 20th November @ 3:44pm - Final coding has been done just testing package prior to release.
Update 20th November @ 4:45pm - Testing has been done and package has been released. The Joomla 2.5 version can be downloaded from here
Hot on the heels of the 3.0.0 release of PBbooking, I am really excited to say that front end management of diaries is now available!
The ability to manage diaries from the front end has been one of the most frequent feature requests. There were certain architectural changes that needed to be implemented to make this a reality.
With the new Front End Manage Diaries users can now embed a module into an article to provide the full manage diaries experience in the front end.
Events can be:
- edited through an edit dialog allowing changes to custom fields, service, calendar and start / end times
- dragged / dropped to move the event
- resized to extend the event
- and of course created.
This module has the following system requirements.
- Joomla version >= 3.3
- PHP >= 5.3
- Purplebeanie Online Booking >= 3.0
This module is not compatible with versions of PBBooking less than 3.0. A script at installation time will run to determine whether your system is compatible.
I’ve been working away getting the PBBooking Version 3.0.0 release ready, and I’m really excited to say it’s finally available for download.
PBBooking 3.0.0 is almost a complete re-write of much of the code. Most of the focus has been on speed. If you have used some of the later versions you may have come across speed problems, particularly with Google Calendar.
This update changes all that! In testing on a cpanel based CentOS host a site with 4 calendars and 1000 (for the current month & next month only) page renders were (exclude JS, CSS & image load) < 1 second.
Speed improvements have come from:
- Optimization of the event lookup code and free / busy calculations and database queries
- Changing Google cal integration to a regularly updated scheduled job
Version 3.0.0 has also seen a number of other improvements including:
- Redesigned and rebuilt multi language control centre for a single location to define all multi language strings
- Proper use of the Joomla media dir to allow all scripts and CSS to be overridden
- Upgrade to the latest version of jQuery Full Calendar
Please note that Version 3.0.0 is almost a complete re-write from previous versions and any template overrides will need changes.
To download, log in to your purplebeanie.com account and head to the downloads page or click here