Drupal - Moodle Integration
I'm the current owner of a pair of Drupal modules which help integrate the Drupal content management framework with the Moodle learning management system. Drupal and Moodle are among the best open-source packages in their respective spaces, and are likewise both very popular.
The two Moodle modules are named moodle and moodlesso. Recently, I committed a new branch to the moodle module tagged 6.x-2.0. This branch is the start of a new direction I want to take with both modules.
Previous versions of the moodle module provided an iframe within which the Moodle site was displayed, and also allowed a form of Single Sign On (SSO). SSO was provided by using an HTTP GET request with the username and password loaded into the request parameters and configuring Moodle to use database authentication and giving Moodle access to the Drupal's users table in its database. This method was kind of hackish and also a security risk.
With the new moodle module branch, I am changing the focus of this module to be strictly data integration features. In fact, there is essentially nothing from the previous versions in the new version as far as code goes, and only the ability to have a menu link which takes a person to the Moodle site remains as a common feature.
The moodlesso module will become the focal point for any SSO capabilities. As originally coded, it used some unsupported session token capabilities. My plan is to try to add several different SSO methods to this module to allow the admin to choose the one which works best in his or her environment. Currently this module has no new code or releases, but I am hoping to have something useful here in the next few months.
To allow data integration, the moodle module requires a plugin in the Moodle side. Because the existing methods for accessing Moodle as a web service had a number of shortcomings and complexities I didn't want to work with, I wrote a new web service interface for my Drupal module to query. It uses a RESTful model for services, and for lack of a better name, it's called the Quick API. The code can be obtained from the Google code repository for the moment. Hopefully, the whole thing can be hosted in a better arrangement in the future.