Skip to main content

Moodle 2.4

Unsupported Moodle Version
This version of Moodle is no longer supported and will not receive fixes for security risks.
You are encouraged to upgrade to a supported version of Moodle.

Release date: 3 December 2012

Here is the full list of fixed issues in 2.4.

Many thanks to everyone that worked on the new features in this release

A special thanks to our incredible Integration Team from Moodle HQ who worked tirelessly with all developers to review, test and help finish code for inclusion in Moodle core:

  • Eloy Lafuente
  • Sam Hemelryk
  • Dan Poltawski
  • Aparup Bannerjee

Finally, thanks to all our testers both within Moodle HQ and from the whole community, who have contributed to producing our most exciting and stable release yet!


  • Recommended minimum browser: Firefox 4, Internet Explorer 8 (IE 10 required for drag and drop of files from outside the browser into Moodle), Safari 5, Google Chrome 11
  • Moodle upgrade: Moodle 2.2 or later (if upgrading from earlier versions, you must upgrade to 2.2 as a first step)
  • Minimum DB versions: PostgreSQL 8.3, MySQL 5.1.33 (MDL-33984), MSSQL 2005 or Oracle 10.2
  • Minimum PHP version: PHP 5.3.2

NOTE: We will drop support for IE8 after Moodle 2.5 (June 2013). This means IE8 will probably still work for 2.6, but developers will not be required to test their new code on that browser. Moodle, like most of the world's web sites and browser producers, encourages you to keep your browsers current to improve security and functionality while saving us valuable time. (For example see what Google is doing)

Major new features

Performance improvements

A variety of improvements have been made under the hood to improve performance in a number of ways. Some require configuration by the admin to take advantage of them but used properly they can allow you to make better use of your hardware for faster speed and more students.

  • MDL-33018 - New context index to substantially improve system performance on large PostgreSQL installations.
  • MDL-30643 - Improved daily statistics performance.
  • MDL-33017 - Significant size reduction of navigation widget.
  • MDL-25290 - MUC Stage 1: Implement some core caching architecture (MUC).
  • MDL-34343 - Database meta information caching.
  • MDL-34399 - Question related caching.
  • MDL-36211 - Performance improvement by not locking guests and not-logged-in users sessions

These results show out-of-the-box improvements without tuning or adding special MUC-supported backends (which would improve things even more).

Database usage (-19.2%)Time used (-4.1%)Files included (-4.5%)
KiloBytes downloaded (-15.2%)Session size (+5.1%)getstring() calls (-12.5%)
24release_kilobytes_downloaded.png+0.91KB per user24release_getstring_calls.png

Plugin updating from within Moodle

Course format plugins

Moodle has always supported pluggable course formats, but now we've given developers even more flexibility than before. Course formats can now provide their own settings for courses and sections, and they can also have a lot more control of all the pages in a course.

We're looking forward to seeing some exciting course formats from the community in future. (Note that in 2.4 the standard course formats have not been changed).


The default icons used for activities and editing actions have been updated for the first time since Moodle 1.0. Not only are they a little bigger and more colourful but they are SVG format and support full scaling on all devices, so they always look good. (Developers, see Moodle icons 2.4)


  • MDL-34299 - All pages are now served with HTML5 doctype by default. This allows us to improve usability, add new features, developers can use reliable iframe tag instead of broken object embedding, data attributes may simplify JavaScript code, etc.
  • MDL-36487, MDL-36481 - Improved compatibility with Internet Explorer 8-10.
  • MDL-34915 - SimpleYUI enables similar coding style to JQuery, it is intended especially for theme designers.
  • Multiple RTL fixes and improvements.
  • MDL-36544 - Remove special border-radius on course/site description block, standard theme
  • MDL-34257, MDL-31365 - New 'secure' page layout type, for use with the quiz's 'Full screen pop-up with some JavaScript security' setting. If you don't update your theme, it seems you might get problems:

Improved TinyMCE editor integration

The integration of TinyMCE editor was significantly improved:

  • MDL-33041 - Support for fully configurable add-on plugins extending standard TinyMCE.
  • MDL-35172 - New TinyMCE editor settings allowing an admin to customise the toolbar, enable/disable icons such as insert equation and insert emoticon.
  • MDL-35955 - Support for built-in browser spell checking.
  • MDL-34875 - Other minor fixes and improvements.

(Developers, see TinyMCE plugins)

  • MDL-31437 - Cohorts can now be synchronised to course groups!
  • MDL-35071 - Completely reworked support for enrolment restore, fully implemented in manual, self, cohort and database plugins.
  • MDL-35064 - Option to move users to manual enrolment method when uninstalling other enrolment plugins.
  • MDL-35062, MDL-35063 - New configurable expiration action in self and manual enrolment plugins.
  • MDL-28980, MDL-35843 - Pending expiration notification in self and manual enrolment plugins.
  • MDL-23875 - Self enrolment can be restricted to cohort members.
  • MDL-35061 - More custom fields into enrol table.
  • MDL-34696 - Other minor enrolment fixes and improvements.

Integration of external calendars

The most-voted feature request in the tracker has been completed!

Full support for Unicode file names in Zip archives

  • MDL-33710 - Moodle creates valid Zip archives with Unicode file names.
  • MDL-33753 - Moodle now extracts most Zip archives with Unicode file names.

Please note that the built-in Windows zip/unzip is not Unicode compatible. It is possible to extract the windows zips if you set the same language in Moodle and in Windows. Windows can not extract any valid Zip archives with Unicode file names, please use other tools such as 7-Zip, WinZip or WinRar.

Assignment enhancements

A number of significant - and very welcome - enhancements to the assignment module have been made:

  • MDL-31284 - Group assignments - It will now be possible to set an assignment which a group can work on collaboratively -and receive a common (or individual) grade.
  • MDL-31291 - Blind marking i.e. not knowing the identity of students when grading. Students' names will be replaced by randomly generated Participant numbers.
  • MDL-31295 - Submission date extensions - Teachers can set a cut-off date (and time) beyond which submissions will no longer be accepted. They can also grant extensions for those who miss the deadline.
  • MDL-31288 - Submission statement - It will be possible to set a submission statement so students have to check a box promising their work is original before submitting it.
  • MDL-31276 - Offline marking - Teachers can download all assignments plus the grading sheet, view, grade and give feedback offline and then upload back to Moodle and have the grades/files/comments transferred into Moodle's gradebook.

Other highlights

Workshop module enhancements

  • MDL-36135 Full support for alternative grading evaluation methods.
  • MDL-26349 Final grades are displayed to workshop participants when the activity is closed.
  • MDL-35421 Ability to define a conclusion text to be displayed to workshop participants when the activity is closed.
  • MDL-36209 Teachers can assess submissions in the grading evaluation phase without the need to switch to the assessment phase.


Security issues

All security issues that were fixed in 2.3.x and 2.2.x were also fixed in 2.4.

For developers: API changes

Abbreviated descriptions of API changes are always kept up to date in the "upgrade.txt" within each plugin area. We do this so that the information is always exactly right for the version of Moodle you are using. Changes in this release:

Core API changes

  • MDL-36145 - Latest YUI 3.7.3 imported, includes full IE 10 compatibility.
  • MDL-34741 - Custom integration of YUI2 was replaced by 2in3. All legacy code needs to be updated to use new YUI3 modules, 2in3 dependency or SimpleYUI.
  • MDL-31973 - Component field in group_members table. Group membership can be linked to other plugins.
  • MDL-8249 - Improved API for role translation and customisations. See
  • MDL-34960 - Dropped support for Google Maps V2 API, use V3 instead.
  • MDL-35218 - Improved course-related functions.
  • MDL-35506 - PostgreSQL rolls back transactions on errors
  • MDL-34648 - A new capability has been added to control moving a section in a course
  • MDL-31926 - The function obfuscate_mailto allows a link to include a subject
  • Latest versions of 3rd party libraries - ADOdb 5.17, Flowplayer 3.2.14, phpMailer 5.2.1, TCPDF 5.9.181.

Plugin API changes

Unit tests

Unit tests are now required in most pull requests.

  • MDL-36701 - Composer dependency manager support.
  • MDL-33180 - SimpleTest support was removed, use PHPUnit instead.
  • MDL-35479 - New debugging support in PHPUnit tests - simplified testing of code that uses debugging().
  • MDL-36031 - Message redirection in PHPUnit tests - simplified testing of code that sends messages.
  • MDL-36703 - Basic enrolment support in data generator.
  • More unit tests for cohorts, enrolments and other areas.

Authentication plugins

  • MDL-34685 Auth plugins may provide custom user signup forms.


See also