The 3.3 release of the Joomla! CMS is close, and included in it are some great improvements to enable users to Do More. Some of the most obvious changes are highlighted in the great marketing materials, but there are also a couple of hidden gems that site administrators and developers may also enjoy.
Do More… Joomla! Framework
Some great work has gone into the Joomla! Framework over the last year and now some of that work has made its way back into the CMS. In this release, improvements from the Application package have been made available for developers writing command line (CLI) scripts and the entire JRegistry family of classes has been replaced with the Framework’s Registry package. For developers, both of these changes are actually quite transparent to existing implementations; there are zero breaks between the current Joomla! CMS 3.2.3 release and the upcoming Joomla! CMS 3.3 release with these changes. However — these changes do introduce some new functionality in these areas.
For CLI scripts, the Joomla! Framework’s Application package was enhanced with an output processing interface. This allows developers to enhance the output of their CLI scripts with additional properties. The Framework code ported into the CMS adds in the base interfaces for these processors as well as a ColorProcessor class which allows developers to have their output in color based on ANSI standards. For more information on how to use this new feature, you can review the README file for the Application package on GitHub.
The JRegistry classes have all been replaced with their Framework counterparts, but again, this is done in a transparent manner and no breaks in the API come with this change. However, a couple of new features come with using this updated code. First,
Joomla\Registry\Registry (as it’s known in the Framework, JRegistry for you CMS minded folks) implements PHP’s
ArrayAccess interface, meaning that JRegistry objects can now be accessed as an array. So, instead of calling
$registry->set('foo', 'bar');, you can use
$registry['foo'] = 'bar'; to accomplish the same thing. So places in your code that are expecting an array could now also work with a JRegistry object.
Secondly, a new output format is supported with the updated Registry package. Registry objects can now be output in YAML format, and to accomplish this, the Registry package uses the YAML Component from Symfony. For more information on the updated Registry package, you can review the README file for the Registry package on GitHub.
Do More… User Management
A small improvement in website security, the Joomla! CMS 3.3 release enables site administrators to require users to reset their password on their next login. Administrators can flag user accounts via the User Manager to require a password reset, and when flagged, a note is displayed with the user account. When the user logs in, they are immediately directed to the user profile editor where they will be required to change their password.
Developers could also potentially use this feature in a dynamic format. For example, developers could write a system plugin which automatically requires a reset after 90 days. To change this property in the code base, the following example could be used:
$user = JUser::getInstance(42);
$user->requireReset = 1;
A full sample CLI script demonstrating this feature and using the Framework's output processing interface described above can be found at https://gist.github.com/mbabker/9965838.
Joomla! CMS 3.3 Is Coming!
The 3.3 release of the Joomla! CMS is coming; in 3 weeks, the latest and greatest enhancements to the CMS will be available to our user base. In the meantime, you can take a sneak peak at what’s to come in this release with the below resources.