A little background information.
I work for a small company and one of our product areas happens to be hosting Moodle sites for schools.
Moodle is an Open Source Learning Management System. Basically, it is for On-Line teaching/learning.
A few of our customers have an older, "Moodle Plugin" installed that allows them to synchronize their Moodle users with Google Apps.
I am working with some Google Apps Integration code, that was originally written by a company called Moodle Rooms. Moodle as well as the Google Apps plugin is almost entirely written in PHP; This plugin also uses the Zend GData package.
The Google App plugin does a number things.
The specific features for the Google Apps plugin are:
- Moodle users are automatically created in Google Apps (Google Docs, Calendar, and Gmail).
- When you log in to Moodle, you are automatically logged in to Google Apps.
- A Gmail block in Moodle displays your latest Gmail messages when you login to the Moodle Front Page.
- A Google Apps block on the Moodle Front Page displays links to your Google Start Page, Google Docs, Google Calendar and Gmail.
- A Google Widget that shows a link to Moodle on the Google side.
The plugin does all that it was intended to do.
However, a specific school that we host would like the functionality to add Moodle Users to a group in Google apps.
Users will be organized into groups in order to control permissions. A likely scenario might be; students in a school, that are Moodle users, have access to all of the Google Apps functionality (Gmail, Documents, Calender...etc). A district wants to restrict what functionality students in a grade-range have. For example, grades K-5 should be able to use the Google Documents, but not Gmail or Google Calender.
My questions are:
- Can I add a group attribute to a user when they are synchronized/added to Google?
- If I can pragmatically add a user to group, then can I also restrict what features that user has access to?
- If either or both of these ideas are possible/plausible with Google's API how might I go about do so?
- Has anyone else attempted something of this nature before?
I am aware that this functionality is already present for an administrative to control on the front end with Google's dashboard for groups.
I am unsure if I can do these things in their entirety. Any advice or link to documentation would be greatly appreciated.
I have been reading on the documentation here, but I thought I would look for a little more insight. I talked with an Engineer at Google, who is working on the GData API, and he said that Google's API supports the specific features that I need. However, these features are only for .NET, Python, and Java. He also said that they should be possible in with PHP, but that Zend has not implemented the new GData API.
Does anyone have advice? or things that I should consider?