Tracking Accomplishments with PHP, Google Calendar and Zend Framework

Originally published: 07/2007 by J Wynia

A couple of months ago, I pointed out the utility of keeping track of the things you accomplish on a daily basis. I've been keeping mine in just a notebook. However, making something that can be used to extract reporting information for the eventual inclusion in resume's, status reports, etc.

It struck me that keeping track of that stuff on Google Calendar would be a reasonably good way to centralize it and make it accessibly from any of the computers that I work on (Windows, Linux, Mac, etc.) without depending on software. So, I took a quick look at the PHP API for using GCal's information.

It requires the Zend Framework, so this was an opportunity to install that as well. The instructions on installing the Zend Framework were a bit vague. What it boils down to is this. The "Zend" directory inside the "library" needs to be on your "include_path" for PHP. On my Ubuntu development boxes, that means putting that Zend directory as "/usr/share/php/Zend" and the existing configuration picked it up.

I then grabbed the Calendar.php sample file. There's lots of stuff in there I'll (and you'll) want to change in it for ongoing use (like lots of the defaults). However, it works well to get up and running. I stripped all of the stuff at the end of the file (the stuff that wasn't inside a function), thus turning the Calendar.php file into more of a library to be included.

After including that file in my "createaccomplishment.php", I set up a really basic form for creating an entry.

Add Accomplishments Code: (View Highlighted Code)

I made a couple of changes to what would be a normal calendar entry.

  • I hard-coded the times. After I dig through the library and API a bit more, I'll probably switch these to all day events.
  • I added "ACC--" to the title of the appointments (ACC for accomplishment). This way, they'll be easy to search for specifically.
  • I used the "where" part of an appointment as my entry for which project the accomplishment was for.

Now, at first blush, I can't see how to specify a given calendar (and neither can lots of other people looking for it online). That would be better than a specific subject. Then, you could just search through your "Accomplishments" calendar, which would have nothing else on it. But, this will do to serve as a starting point.

Then, just to give a quick example, you can search for all appointments that contain our marker in them anywhere. It's crude, but it gets the job done.

Show Accomplishments Code:

Aside from the couple of things I'm looking for in the API, it looks like Zend's implementation of the API is relatively easy to work with and would make other kinds of tracking easy as well.

Once integrated into browser bookmarks or desktop widgets, commandline scripts or other places, it could make quickly noting down accomplishments really easy. Once they're stored, they can be retrieved by the variety of criteria that make sense:

  • All accomplishments for a given week, month, year.
  • All accomplishments for a given project (which is stored in the location, like I said)
  • With additional microformatted data in the content, you could store and retrieve all sorts of other useful bits

Of course, what I *really* want is a system that lets me keep track of projects according to who I was employed by while working on it, what technologies were used, duration, who the client was, who the managers were, etc. That would make the various forms of resume's, skills inventories, chronologies, etc. that recruiters and other consulting firms are constantly looking for. Then, the fact that they all seem to ask for slightly different formats won't be a problem.

I could just export it by project, listed chronologically according to employer for one and by employer, listed chronologically by project for another, while turning "Target Corporation" into "retailer" and "Wells Fargo" into "financial institution" for still another. Similarly, I could query such a system for the actual number of months using XSLT, C#, Reporting Services or whatever else I've worked on instead of trying to do those calculations and adjust them constantly.

Being in the effective business of "wholesale" consulting, I tend to make more use of resumes and such project details than more "retail" consulting/freelancing consultants.

Does that exist out there somewhere?

Comments » Jim Wynia’s Blog: Tracking Accomplishments with PHP, Google Calendar and Zend Framework on 7/24/2007
[...] he got the Zend Framework installed, he installed the PHP adapter. He talks about the configuration changes he had to make to the Calendar.php file and gives an example of it in [...] on 1/15/2008
Great article thanks ! I'll be happy to get more code cheers ! ron
PHPGeek » PHP, Google Calendar and the Zend Framework on 7/22/2007
[...] on my personal site, I wrote up a simple set of scripts to get started with Google’s API for the calendar by using the Zend Framework with PHP. I’m using it to track my daily accomplishments for [...]
Fran on 3/21/2008
I tried to make it work, but was not lucky. I copied and pasted the accomplishments code in a file called createaccomplishment.php . I changed and PASSWORD with my login information. I also added this line at the beginning (just after
Jay on 4/15/2008
Hi J, Thanks for explaining a bit about google calendar api and how to make it work. I understood most of the part. But I am stuck at one thing. We have 3 calendars for our domain. One is default "Jay" and other two are "Booking" and "To do List". I want to add Events to only Bookings calendar. How do I do it. If I add Events it only adds to default calendar. Any help will be appreciated. Thanks Jay
noname on 3/18/2009
both codes: The requested URL /samplecode/GCalShowAccomplishments.html was not found on this server.
blog comments powered by Disqus
Or, browse the archives.
© 2003- 2015 J Wynia. Very Few Rights Reserved. This article is licensed under the terms of the Creative Commons Attribution License. Quoted content or content included from others is not subject to that license and defaults to normal copyright.