Skip to main content

Moodle 4.1

Release date: 28 November 2022

Here is the full list of fixed issues in 4.1.0.

If you are upgrading from a previous version, please see Upgrading in the user docs.

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.9 or later.
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x and 8.1.x are supported too. See PHP for details.
  • PHP extension sodium is recommended. It will be required in Moodle 4.2. For further details, see Environment - PHP extension sodium.
  • PHP extension exif is recommended.
  • PHP setting max_input_vars is recommended to be >= 5000 for PHP 7.x installations. It's a requirement for PHP 8.x installations. For further details, see Environment - max input vars.

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
PostgreSQL12 (increased since Moodle 4.0)Latest
MySQL5.7Latest
MariaDB10.4 (increased since Moodle 4.0)Latest
Microsoft SQL Server2017 (increased since Moodle 3.10)Latest
Oracle Database19 (increased since Moodle 4.0)Latest

Client requirements

Browser support

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

Desktop:

  • Chrome
  • Firefox
  • Safari
  • Edge

Note: Moodle 4.1 does NOT support Internet Explorer 11.

Mobile:

  • MobileSafari
  • Google Chrome

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

Major UX improvements

Gradebook

  • MDL-75513 - Implement "User report" functionality
  • MDL-75423 - Implement "Singleview report" functionality
  • MDL-75837 - Replace the modals with dropdowns in the search widgets in the grade reports
  • MDL-75156 - Create a new "Grades summary" report in gradebook
  • MDL-75155 - Update import/export pages within the gradebook
  • MDL-75362 - Implement gradebook zero states for user & singleview reports
  • MDL-75157 - Improve the styling of the tertiary navigation on the gradebook pages
  • MDL-75214 - Secondary navigation bar changes
  • MDL-69275 - User can open external tool submission from the gradebook

Database activity

  • MDL-75276 - Update default layouts for the new database templates
  • MDL-75252 - Improve Image gallery preset templates
  • MDL-75335 - Zero state on fields and templates when there is no field created on the Database
  • MDL-75492 - Improve mapping workflow when using a preset
  • MDL-76006 - Improve zero state images for database activity
  • MDL-75410 - Reset all templates in one go
  • MDL-75188 - Move "Import" preset form to a modal
  • MDL-75289 - Improve navigation in database activity
  • MDL-75401 - Add sticky footer to the mod_data pages
  • MDL-75412 - Create a new preset for "Journal"
  • MDL-75149 - Create a new preview page for Database activity Presets
  • MDL-75275 - Create new dropdown kebab menu tag with all the actions for the "List view" and "Single view" templates
  • MDL-75142 - Add description to Database activity presets
  • MDL-75234 - Use default templates in mod_data if the templates are not created
  • MDL-75140 - Skip fields mappings form if there are not fields created
  • MDL-75146 - Create a new ##id## tag to use in Database activity templates
  • MDL-75148 - Improve Presets management list page for Database activity
  • MDL-75137 - Redesign the zero state page for Database activity module
  • MDL-75187 - Move "Delete" preset confirmation to a modal
  • MDL-75411 - Create a new preset for "Proposals"
  • MDL-75413 - Create a new preset for "Resources"

Other usability and user experience improvements

  • MDL-74716 - Add a link to Request a course to My courses page
  • MDL-61401 - Workshop: add "initials bars" UI to make it easier to find students in large groups
  • MDL-72531 - The Label resource should have an easier to understand name (Text and media area)
  • MDL-74608 - Allow the teacher to force the language for an activity, as well as at course level
  • MDL-74327 - Make location field in calendar event clickable if it is a URL
  • MDL-75713 - Calendar page to sort courses alphabetically by name
  • MDL-74314 - Grade Letters - Support additional letters
  • MDL-74635 - Add select All/None functionality to Manage tags page
  • MDL-69905 - Improve order of activities in the Recent Activity block
  • MDL-74513 - The "Timeline" and "Recently accessed items" blocks should display objects the same way

Other Major features

TinyMCE 6 editor integration

  • MDL-75966 - Initial TinyMCE 6 integration
  • MDL-75331 - Configure available headings and formatting options
  • MDL-75258 - Create Media plugin with Image editing
  • MDL-75328 - Create Video insertion/editing functionality in the tiny_media plugin
  • MDL-75260 - Create Media manager functionality in the tiny_media plugin
  • MDL-75261 - Create H5P plugin
  • MDL-75262 - Create Accessibility checker
  • MDL-75269 - Create Equation editor plugin
  • MDL-75263 - Create Draft save/restore integration
  • MDL-75940 - Allow Tiny branding to be disabled by admin

BigBlueButton

  • MDL-74638 - Provide a way for teachers to invite external participants (guests)
  • MDL-74545 - Add a parameter to set the polling value for the live session/wait for moderator
  • MDL-75383 - Recordings synchronisation: warn user when cron is disabled or not working
  • MDL-74669 - Pick BBB UI language from Moodle user profile language instead of preferred browser language
  • MDL-73228 - Close meetings when removing BBB activity

Quiz, question bank and questions

  • MDL-72509 - Move the participants filter UI from within core_user to a re-usable API
  • MDL-72957 - Question bank: add a new "Modified by" column
  • MDL-74035 - In-place edit of the question name in the qbank view
  • MDL-75306 - Question bank: add a last-used column
  • MDL-74041 - Question bank view - page size should be 100
  • MDL-72188 - Add JavaScript API in Safe Exam Browser (SEB) integration to query the keys (BEK/CK)
  • MDL-74996 - Add a warning if quiz is being submitted with unanswered questions
  • MDL-75818 - Qtype_multichoice: Add a new site-wide default for "Show standard instruction"
  • MDL-73481 - True/False questions: remove Standard Instructions (or allow users to hide them)
  • MDL-74495 - Show correct answer and feedback when overriding grade

Assignment

  • MDL-71468 - Convert the "Prepare submissions for annotation" scheduled task into adhoc tasks
  • MDL-75295 - Produce all mod_assign editpdf images from pages in a single shell call instead of per page
  • MDL-64231 - Improve Group assignment submission exporting
  • MDL-74234 - Implement "treset" parameter on the assignment grading page

Report builder

New reports

  • MDL-73141 - Convert cohort listing reports to Report builder
  • MDL-75349 - Create "Groups" custom report source
  • MDL-75352 - Create "Comments" custom report source
  • MDL-73988 - Create "Badges" custom report source
  • MDL-75166 - Create "Blogs" custom report source
  • MDL-75165 - Create "Notes" custom report source
  • MDL-75535 - Create "Files" custom report source
  • MDL-75245 - Create "Tags" custom report source
  • MDL-75191 - Create "Task logs" custom report source

Other report builder improvements

  • MDL-74364 - Custom report source for course participants
  • MDL-75525 - Allow to easily specify default sortorder in report builder datasources
  • MDL-75639 - Add "In the future" and "In the past" options to date filter
  • MDL-75235 - Make it easier for reports to provide custom filter form implementations
  • MDL-75135 - Add "Course category with link" column to course category entity
  • MDL-74720 - Add an option to allow admins to limit the number of report builder custom reports
  • MDL-74453 - Add authentication method filter to user entity
  • MDL-73047 - Add "Account creation date" user report builder field
  • MDL-73916 - Allow to set default condition values on datasources
  • MDL-73726 - Improve dataformat API
  • MDL-74165 - Provide easier method for generating multiple alias/params quickly
  • MDL-75333 - Custom report audience for site administrators

Other Highlights

Functional changes

  • MDL-22570 - Export groups/grouping to excel/ods/text files
  • MDL-58266 - "Student must view this activity to complete it" should be written to database
  • MDL-56567 - Add option to allow a competency rating to be overwritten by activity completion
  • MDL-74061 - Reports - Course completion report - Adding time in completion progress details
  • MDL-72283 - Allow customisation of Redis session handler errors
  • MDL-74967 - Use Group API in calendar to fetch users' groups/overrides so changes are reflected
  • MDL-73236 - Allow myprofile block to display user ID number
  • MDL-12643 - Capability moodle/course:bulkmessaging should only control bulk messaging and not other bulk actions
  • MDL-74785 - Include SCORM content package in global search index

For administrators

  • MDL-61921 - Support XOAUTH2 for outgoing/incoming mail
  • MDL-66453 - Bulk assign roles in course categories when using Upload users
  • MDL-74643 - Contact site support - More granular control over access
  • MDL-65061 - Implement suspend on external unenrol option for ims enterprise enrolment method
  • MDL-72458 - Allow "timezone" to be displayed on a users profile
  • MDL-75751 - Upgrade: Improve upgrade/install performance logging
  • MDL-74592 - Add ability to match users by email when upload users from csv file
  • MDL-74171 - In the "Manage question bank plugins" site administration page, add the ability to sort alphabetically
  • MDL-74862 - Allow to disable QR login IP restriction checks
  • MDL-74435 - Admin user search should also search without whitespace
  • MDL-75014 - New callback / hook "xxx_before_session_start"
  • MDL-74991 - Implement a script to delete courses via CLI
  • MDL-73122 - Auth: Add test settings for OAuth2
  • MDL-73767 - OAuth2 - Add Clever SSO as an SSO provider

Mobile

  • MDL-75099 - Add new "Disabled feature" within Mobile app settings for the new "Contact site support" feature introduced in app v4.1

Performance

  • MDL-67648 - Cron task manager quality of service (version 3)
  • MDL-72948 - Reduce data fetched by message_search_users
  • MDL-72723 - Change backup_cron_automated_helper::course_is_modified so it finds one course modification instead of counting them all
  • MDL-73727 - Improve get_conversions_for_file query performance on large sites
  • MDL-70368 - Improve performance of get_imageinfo

Security improvements

  • MDL-72486 - Add developer options to warn when making unsafe unproxied requests
  • MDL-72592 - Add lastlogin date to myprofile-block

For developers

  • MDL-75218 - Add a Favicon setting
  • MDL-74733 - Navigation customisation within plugins should use "navigation" namespace
  • MDL-75256 - Move get_name from scheduled tasks up to tasks so adhoc tasks have a name too
  • MDL-74596 - Add a new option to hide search bar in admin pages
  • MDL-74697 - Support additional metadata in thirdpartylibs.xml
  • MDL-75100 - Migrate away from use of strftime and friends
  • MDL-72184 - Create DML method "cast int to char"
  • MDL-73933 - Course editor: Migrate hide, show and make available course tools to the new reactive actions
  • MDL-55580 - Process for deprecating a capability

XMLRPC removal

  • MDL-76052 - Remove webservice_xmlrpc from core
  • MDL-76055 - Replace xmlrpc extension in MNet by php library

Web service additions and updates

  • MDL-74956 - New Web Service core_reportbuilder_retrieve_report
  • MDL-74955 - New Web Service core_reportbuilder_reports_list
  • MDL-74957 - New Web Service core_reportbuilder_reports_view

Deprecations

  • MDL-63594 - Final deprecation of cron_run_single_task() function
  • MDL-68011 - Final deprecation of get_module_metadata + get_shortcuts
  • MDL-68868 - Final deprecation of participants unified filter
  • MDL-69655 - Final deprecation of admin_setting_managelicenses
  • MDL-75456 - Final deprecation of get_node_type() and get_field() in behat_field_manager
  • MDL-71062 - Deprecation of print_error()
  • MDL-67347 - Remove strings deprecated in 3.9

Component API updates