ExpressionEngine 2.4.0 is now available for download. This release provides a broad array of changes, including stability and security improvements, a faster control panel, the addition of popular feature requests and new libraries and hooks for third party developers.
This release offers improved stability and performance with over 80 bug fixes, including an obscure but theoretically possible MySQL injection exploit. The control panel is noticeably faster in most environments, with much snappier rendering of filterable tables. And an expanded approach to ‘Remember me’ functionality that’s optimized for multiple sites and/or devices results in a nicer frontend user experience. In addition to improvements to general functionality, both users and developers will find lots of goodies as we continue to develop existing features and set the groundwork for upcoming additions.
File management continues to improve in this release, with a number of nice additions. The browser has been beefed up to allow sorting and filtering by keywords, greatly improving the ease with which you can find a particular file. The browser has also been added to the category editor, for use when populating the category image field. File access via the browser has also been seen increased security checks, limiting access through the browser to the CP.
File ‘credit’ and ‘location’ metadata can now be added through the file modal, and file fields can display all data associated with a given file through frontend tags. It’s now easy to show any of your image options with native tags. The ability to watermark an image without requiring resizing has also been added.
Improvements designed to make updating and/or moving ExpressionEngine sites were also a focus of this release. File upload paths can now be overridden via a hidden configuration variable, making updates after a move or syncing a developer site and a production site easier. A third_party_path configuration variable was also added, allowing you to keep your third party add-ons folder outside of the system folder.
A number of smaller feature requests were also addressed in this release, including the addition of an ‘active’ status indicator to the Channel Categories tag; the ability of the Channel Categories and Category Archive tags to accept multiple channels in the channel parameter; the addition of a url_title parameter to the Channel Next and Previous tags; the expansion of improved control over pagination output to search pagination; the ability to choose a specific channel from the main control panel dropdown menu when editing and a lot more. Check the Changelog for a full list of what’s new!
Developers will also find a number of significant additions in this release. Two new constants, URL_THEMES_THIRD and PATH_THEMES_THIRD, have been added with the goal of allowing users to fully customize the location of third party folders. These two constants point to the URL and the path of the themes/third_party/ directory. We’d like you to start using these right away and have your add-ons using them by our next major release because we’ll be introducing two new config variables that allow users to override these settings. In conjunction with the new third_party_path config variable, users will then be able to keep third_party folders completely out of the system/ and themes/ directory, making upgrading easier.
It’s also not too soon to start paying attention to our new Developer Log. This feature records deprecated functions that are called during normal operation of a site. This allows ExpressionEngine to send a warning that functions or behaviors currently in use on a site will be removed at some point in the future, thus giving third party developers time to future proof their code.
A new File field library should also be of particular interest to third party developers. The library makes it easy for developers to use the native browser for their own needs. For a look at the library in action, just take a peek at how it was used to enable file browsing for the Category Image field in the control panel.
EE’s Pagination library has also seen significant improvement, reducing the amount of code needed to implement pagination parsing and providing a method for handling pagination_links as a tag pair. All developers are encouraged to make use of the library for parsing of pagination tags. Hooks also received their share of love in this release, with new hooks available when deleting members, modifying template data, defining template types, and pulling in rows for the content edit page.