Over the past couple of months, I've been working with Joomla. Its been an interesting experience, because I've run the gamut of many extensions to the core:
More specifically, I primarily worked on two Joomla installations, one where I ran the gamut interfacing with Joomla's core, and the other where I built a payment gateway plugin for a third-party Joomla component: Event Registration Pro.
The Joomla component I built powers a search engine backed by MySQL. I enjoyed building it, and am planning to work on it some more to refactor the code and leverage more built-in Joomla helper functions.
For instance, I'd like to make sure all the SQL queries use the Joomla query string cleaning and escaping functions, like so:
$mycleanvar = $db->getEscaped($myvar, true);
The module I wrote acts as the front-end interface to the search engine, and its dynamic as it pulls information from the database and request parameters to make on-the-fly adjustments. I also enjoyed writing that module.
The plugin I wrote hooks into the Joomla registration and authentication processes so that certain hooks are triggered depending upon on information submitted along with user registration, like bookmarking search results and registering for a newsletter.
This was an interesting task because the Event Registration Pro payment plugin API is apparently not documented. Still, I was able to build one, and thanks to the Payment_Process PEAR library, it can connect to several different payment gateways, including Authorize.net and LinkPoint (aka YourPay, aka FirstData).
I'm interested in digging into Drupal. I've heard many testaments that it rocks.