Moodle 4.1
Unsupported Moodle Version
This version of Moodle is no longer supported for general bug fixes.
You are encouraged to upgrade to a supported version of Moodle.
You are encouraged to upgrade to a supported version of Moodle.
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.
| Database | Minimum version | Recommended |
|---|---|---|
| PostgreSQL | 12 (increased since Moodle 4.0) | Latest |
| MySQL | 5.7 | Latest |
| MariaDB | 10.4 (increased since Moodle 4.0) | Latest |
| Microsoft SQL Server | 2017 (increased since Moodle 3.10) | Latest |
| Oracle Database | 19 (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
- admin/tool/dataprivacy/upgrade.txt
- admin/tool/mobile/upgrade.txt
- admin/upgrade.txt
- backup/upgrade.txt
- cache/upgrade.txt
- calendar/upgrade.txt
- course/format/upgrade.txt
- course/upgrade.txt
- grade/upgrade.txt
- lib/editor/atto/upgrade.txt
- lib/upgrade.txt
- mod/assign/upgrade.txt
- mod/bigbluebuttonbn/upgrade.txt
- mod/data/upgrade.txt
- mod/forum/upgrade.txt
- mod/h5pactivity/upgrade.txt
- mod/lti/service/gradebookservices/upgrade.txt
- mod/lti/source/upgrade.txt
- mod/lti/upgrade.txt
- mod/quiz/upgrade.txt
- mod/upgrade.txt
- question/bank/upgrade.txt
- question/type/upgrade.txt
- question/upgrade.txt
- reportbuilder/upgrade.txt
- theme/upgrade.txt
- user/upgrade.txt
- webservice/upgrade.txt