Skip to main content

Moodle 3.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: 13 November 2017

Here is the full list of fixed issues in 3.4.

See our New Features page for a more user-friendly introduction to Moodle 3.4 with screenshots.

If you are upgrading from previous version, make sure you read the Upgrading documentation.

Server requirements

These are just the minimum supported versions. We recommend keeping all of your software and operating systems up-to-date.

  • Moodle upgrade: Moodle 3.0 or later (if upgrading from earlier versions, you must upgrade to 3.0.10 as a first step)
  • PHP version: minimum PHP 7.0.0 Note: minimum PHP version has increased since Moodle 3.3. PHP 7.1.x and 7.2.x are supported too. PHP 7.x could have some engine limitations.
  • PHP extension intl is now required in Moodle 3.4 (it was recommended in 2.0 onwards)

Database requirements

Moodle supports the following database servers. Again, version numbers are just the minimum supported version. We recommend running the latest stable version of any software.

DatabaseMinimum versionRecommended
Microsoft SQL Server2008Latest
Oracle Database10.2Latest

Client requirements

Browser support

Moodle is compatible with any standards compliant web browser. We regularly test Moodle with the following browsers:


  • Chrome
  • Firefox
  • Safari
  • Edge
  • Internet Explorer


  • MobileSafari
  • Google Chrome

For the best experience and optimum security, we recommend that you keep your browser up to date.

Note: Legacy browsers with known compatibility issues with Moodle 3.4:

  • Internet Explorer 10 and below
  • Safari 7 and below

Major features

Calendar improvements

  • MDL-59333 - Calendar Improvements
  • MDL-1322 - Calendar entries in monthly view should include course shortname
  • MDL-59382 - Create calendar event quick-add
  • MDL-59390 - Add navigation of all calendar views without page reload
  • MDL-59394 - Add support for drag and drop of calendar events
  • MDL-59386 - Add support for creation and update of calendar events using a modal dialogue
  • MDL-59890 - Add support for calendar events at the category level

Management of course participants

  • MDL-59290 - Merge Course Participants and Enrolled Users pages
  • MDL-59564 - Add bulk editing of enrolment status/dates for users in the course participants page
  • MDL-59364 - Remove the "Brief / User Details" functionality from the participants page
  • MDL-59365 - Enrol Users button on participants page
  • MDL-59366 - Add filter controls to the participants page to allow custom filtering
  • MDL-59367 - Add a roles column to participants page
  • MDL-59368 - Add a groups column to the participants page
  • MDL-59369 - Add a status column to the participants page
  • MDL-59436 - Remove the columns from the participants page that are not in showuseridentity
  • MDL-59821 - Add "Proceed to course content" to participants page

Other highlights

  • MDL-57791 - Implement analytics engine in Moodle
  • MDL-59313 - Add links and a drop down to navigate between activities
  • MDL-37361 - Allow teachers to mark activities as completed

Backup, restore and import

  • MDL-35429 - Correct the permissions required to download and restore course automated backups
  • MDL-9367 - Restore with roll forward changes dates for user data
  • MDL-59518 - Restore date should not roll for user created data - Core components
  • MDL-55356 - Index contents of the restored courses
  • MDL-59523 - Course reset doesn't always shift dates
  • MDL-58957 - Global search: Make it possible to search blocks
  • MDL-59039 - Global search: Allow partial indexing (in scheduled task)


  • MDL-30634 - Assign arbitrary system roles via LDAP sync
  • MDL-58544 - Add option to trust email of an OAuth provider
  • MDL-59844 - Enable OAuth 2 token-based authentication for requests in webdav_client
  • MDL-59459 - Global Search: Increase file indexing coverage
  • MDL-59913 - Global search: Allow search of non-enrolled courses

Functional changes

  • MDL-55358 - LIS Group Variables support in LTI
  • MDL-36501 - Should have checkbox for extra credit when you add a grade item
  • MDL-28574 - Web services: Manage tokens page should show tokens for all users
  • MDL-26976 - Display space used in My Private Files
  • MDL-35668 - Performance improvement in Server files repository
  • MDL-49398 - Performance improvement due to Role definition caching & accesslib refactoring
  • MDL-60002 - Assignment grading: Adding back "Save and show next"
  • MDL-58889 - Make section titles and course titles more accessible in Boost
  • MDL-57455 - Allow to tag database entries
  • MDL-36985 - Assignment: automatically remove embedded files that are no longer linked from submission text. Reduce the size of "Download all submissions"
  • MDL-59702 - Lesson overview report does not respect value of showuseridentity setting
  • MDL-59460 - Forum: make Subscription mode setting configurable

For administrators

Please read carefully: Possible issues that may affect you in Moodle 3.4

  • MDL-42834 - Deprecate loginhttps. Sites that used to use this setting will now be served via https always
  • MDL-46269 - Tool to convert http embedded content to https where available
  • MDL-58388 - Let the admin control if the course end date form field in course settings is enabled by default
  • MDL-60211 - New filters for User Tours
  • MDL-59123 - Compile SCSS files on the command-line
  • MDL-58567 - Upgrade: Show upgrade times
  • MDL-55652 - Missing index on (timemodified) in grade_items_history table and several other grade history tables. This will increase performance of various reports but may also slow down Moodle upgrade
  • MDL-60094 - Add CLI script to kill all sessions
  • MDL-59495 - Register and publish courses with only, remove support for alternative hubs
  • MDL-59206 - Trigger an event in add_to_config_log function
  • MDL-57115 - Move "Messages" block out from the standard Moodle distribution
  • MDL-57734 - SEO - Create admin setting to be able to enable or disable search engine indexing for sites with forcelogin
  • MDL-60309 - Boost: Add a setting for background image
  • MDL-56751 - Create new security setting to configure the expiration time of tokens created via login/token.php or tool/mobile/launch.php

Security issues

  • MSA-17-0021 Students can find out email addresses of other students in the same course

This list only includes security issues fixed after 3.3.2 release. Refer to other release notes for security issues fixed in earlier releases.

For developers

  • MDL-60611 - Upgrade PHPUnit to 6.4 to ensure compatibility with PHP 7.2 - may require changes in unittests.
  • MDL-58948 - Compatibility with chrome mink driver
  • MDL-53169 - Provide a way to retrieve all courses a user can potentially access.
  • MDL-59459 - Global Search: Increase file indexing coverage
  • MDL-58957 - Global search: Make it possible to search blocks. See the new \core_search\base_block class.
  • MDL-53240 - Form element and admin setting type to choose file types and type groups
  • MDL-53848 - Formslib - add function to $mform that makes it possible to hide form elements dependent on selected values
  • MDL-60234 - Add possibility to disable admin warning if a development libs directory exists
  • MDL-57886 - Plagiarism: onlinetext submission should pass raw submissiontext to plagiarism get_links()

Upgrading plugins

1. Check for changes in core APIs

Read lib/upgrade.txt to check for the deprecations and core API changes, make sure you applied them to your plugin. Note that entries there are not sorted by priority but rather by integration time. Below is the list of upgrade.txt files that contain information about upgrading from Moodle 3.3 to Moodle 3.4 (note that if you upgrade from earlier versions there may be more files):

2. Check for changes in the API of your plugin type

Below is the list of plugin types that had API changes between Moodle 3.3 and 3.4:

3. Check for changes in the depended plugins

If your plugin depends on another plugin or calls methods from another plugin, read upgrade.txt in this plugin directory (if it exists). Below is the list of standard plugins that had changes between Moodle 3.3 and 3.4:

4. Do a smoke test of your plugin with developer debugging mode

5. Run all behat and phpunit tests