Moodle 4.5
Release date: 7 October 2024
Here is the full list of fixed issues in 4.5.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 4.1.2 or later.
- PHP version: minimum PHP 8.1.0 Note: minimum PHP version has increased since Moodle 4.3. PHP 8.3.x is supported too. See PHP for details.
- PHP extension sodium is required. See Environment - PHP extension sodium.
- PHP setting max_input_vars must be >= 5000. For further details, see Environment - max input vars.
- PHP variants: Only 64-bit versions of PHP are supported. Note: Changed since 4.1.
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 | 13 (increased since Moodle 4.1) | Latest |
| MySQL | 8.0 (increased since Moodle 4.1) | Latest |
| MariaDB | 10.6.7 (increased since Moodle 4.1) | Latest |
| Microsoft SQL Server | 2017 | Latest |
| Oracle Database | 19c (increased since Moodle 4.3) | Latest |
Since Moodle 4.3, the maximum length for the database prefix ($CFG->prefix) is 10 characters. Installation or upgrade won't be possible with longer prefixes.
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
Mobile:
- MobileSafari
- Google Chrome
For the best experience and optimum security, we recommend that you keep your browser up to date.
Major UX improvements
Course hierarchy improvements
- MDL-82385 - Course hierarchy support for the mobile app
- MDL-81767 - Add a mod_subsection button to the add activity button
- MDL-81771 - Display delegated sections in course Activity report
- MDL-81765 - Add mod_subsection to core
- MDL-81766 - Display mod_subsection activity card like a subsection in the course page
- MDL-81769 - Allow mod_subsection to override the activity actions dropdown
- MDL-82495 - Display sections in user Outline report and Complete report
- MDL-82376 - Implement an alternative to the move icon in the course index
- MDL-81648 - Allow the delegate plugin to add new breadcrumb nodes
- MDL-81681 - Make section page header reactive
- MDL-82357 - Prevent subsection from being moved into another subsection
- MDL-82324 - Show dropzones into the section page when the section is empty
- MDL-82146 - Display delegated sections in Logs report
- MDL-80191 - Enable delegate plugins to include delegated sections in the backup
- MDL-82478 - Add "Delete" option to subsection page
- MDL-82480 - Add "Move" option to subsection action menu
- MDL-81683 - Add subsections to the move activity modal
- MDL-81725 - Display subsections in the course index
- MDL-81798 - Prevent the course to try creating mod_subsection instances once the section limit is reached
- MDL-82510 - Add new action menu for subsections
Assignment improvements - phase 1
Assignment settings
- MDL-80741 - Remove redundant "Never" option from "Additional attempts" in assignment settings
- MDL-80743 - New option in "Additional Attempts" setting to enable unconditional automatic attempts in assignment
Assignment submissions page
- MDL-80747 - Revamp the submission status filter on the assignment submissions page
- MDL-80750 - Implement a "sticky" footer on the assignment submissions page
- MDL-82195 - Add a link to the submissions page in the assignment's secondary navigation
- MDL-80748 - Make the table header "sticky" on the assignment submissions page
- MDL-82681 - Enhance the "marker" and "active participants" filters on the assignment submissions page
- MDL-80746 - Revamp the initials filter on the assignment submissions page
- MDL-82295 - Introduce new contextual menus for the editing options on the submissions page
- MDL-80744 - Implement user search filter on the assignment submissions page
- MDL-82508 - Revamp the workflow filter on the assignment submissions page
- MDL-80745 - Revamp the group selector on the assignment submissions page
Other major features
Add AI subsystem to LMS
- MDL-82627 - AI subsystem MVP
- MDL-80891 - AI placement: Text Editor (image and text)
- MDL-80890 - AI placement: Course Assistance
- MDL-80894 - AI provider plugin: Open AI
- MDL-82411 - AI provider plugin: Azure AI
- MDL-82609 - AI provider action settings
Add SMS subsystem and gateway plugin type
- MDL-81924 - SMS subsystem MVP
- MDL-80960 - Create SMS API skeleton and gateway plugin type
- MDL-80961 - Implement AWS SMS gateway plugin and hook SMS MFA into SMS API
- MDL-81732 - Create UI for SMS gateway instance management
Implement Open Badges 3.0
- MDL-43938 - Allow duplicate badge names
- MDL-82057 - Import/Copy badges into other courses
- MDL-82503 - Merge "Manage badges" and "Course badges" reports
- MDL-82168 - Improve badges workflow: Move enable badge action to a modal
- MDL-72354 - Show always issuer details when creating/editing badges
Notification Improvements - phase 2
- MDL-79716 - New notification: Upcoming Assignment Due
- MDL-79718 - New notification: Upcoming Quiz Open
- MDL-79733 - New notification: Assignment overdue
- MDL-79734 - New notification: Assignments due in 7 days
Enhance icons utilising Font Awesome 6
- MDL-82500 - Enhance the call to action on the My Courses page
- MDL-82211 - Update icon_map with the latest icons from Font Awesome 6 (plugins)
- MDL-82212 - Provide a mechanism to deprecate and detect deprecated icons
- MDL-82497 - Update icon_map with the latest icons from Font Awesome 6 (core)
- MDL-82498 - Update pix/s emoticons with the emojis from the emoji-data library
- MDL-82938 - Consistent table sorting icons in report builder editor
- MDL-80562 - Reports converted to use report builder should use an ellipsis for the actions menu
- MDL-82210 - Add support to Font Awesome families
- MDL-82476 - Remove non-SVG icons
- MDL-81589 - Use Font Awesome icons in global search
BigBlueButton
- MDL-82520 - Create New Setting to Show/Hide Presentation File on Activity Page
- MDL-82872 - Extend meeting_events with subplugins
- MDL-82854 - Log for analytics callback should store the raw data
- MDL-82447 - Remove mobile plugin from BigBlueButton plugin
Quiz and questions
- MDL-72397 - Improve question category management UI
- MDL-76665 - Allow admins to deactivate Safe Exam Browser templates even if used in existing quizzes
- MDL-78662 - Allow filtered content in answers for Drag-and-drop questions
- MDL-79546 - Enable regrading for selected questions in quiz
- MDL-80489 - Help text for "Choices" section during Drag-and-drop into text question creation
- MDL-82659 - New Safe Exam Browser quiz setting capabilities for controlling manual config and SEB client config
- MDL-81075 - Provide an option to disable "sticky" defaults when creating questions
- MDL-82587 - Log changes to the version of questions used in quiz
Report builder
- MDL-52046 - Provide option to bulk delete cohorts
- MDL-76889 - Create "Competencies" custom report source
- MDL-81330 - Add Cohort condition and filter to Course Participants source
- MDL-79496 - Convert manage tokens report to system report
- MDL-80123 - Convert/improve the admin presets listing page
- MDL-82331 - Support custom report date filter by minute
- MDL-82529 - Allow to filter by custom fields within the Cohort report page
- MDL-81433 - Return custom report tags in external methods for retrieving reports
- MDL-81399 - Custom user reporting by timezone and language
- MDL-82466 - Format the output of the "Days taking course" report completion columns
- MDL-81168 - Ensure all filters that accept numeric data also handle localised floats
- MDL-82175 - Get rid of the task log popup window and make it a normal page
- MDL-82114 - Add plugin/area filters to Files custom report source
- MDL-82512 - Add "Author" report filter to the files report entity/source
- MDL-76392 - System reports should be allowed to define aggregation to allow re-use of entities
- MDL-81754 - Consistent comparison field labels in report filters
- MDL-82463 - Improve column types for numeric columns that don't produce numeric output
TinyMCE 6
- MDL-81212 - Tiny/RecordRTC: Add Screen-recorder button
- MDL-81111 - Tiny/RecordRTC: TinyMCE conversion - add "Pause" button for recording A/V
Content bank and H5P
- MDL-74590 - Add Custom Fields to Content Bank
- MDL-76242 - Hide/show unlisted content on contentbank and filepicker
Usability improvements
- MDL-26675 - Unable to return to the RSS block settings after adding a new RSS feed
- MDL-82339 - User tours setup: text input boxes should be big enough so typical content is not truncated
- MDL-81250 - Display the full names instead of the short names for the course dropdown filter in the calendar
- MDL-81872 - Course reset: Improve form wording and remove advanced elements
- MDL-81866 - Course reset: Move Reset button to sticky and improve the workflow
- MDL-81742 - Improve feedback activity "Edit questions" navigation
- MDL-81743 - Improve feedback activity "Edit questions" questions UI
- MDL-81503 - Improve the section error page when the ID is not correct
- MDL-77661 - Use danger button for the Reset actions in Database activity
- MDL-73232 - Inform teacher about maxsections setting to understand why they cannot add more topics/weeks
- MDL-54105 - Ability to set default grade options for assignments
- MDL-60957 - Show assignment extension date in calendar
Other Highlights
Functional changes
- MDL-63753 - Show stealth activity links to non-editing teachers
- MDL-81506 - Allow teacher to edit manual course welcome message
- MDL-63015 - Lock the feedback form when previewing
- MDL-80858 - Add numeric field type for course custom fields
- MDL-81741 - Create a new feedback activity "Questions" secondary menu item
- MDL-77195 - Support multilang for the shibboleth login button
- MDL-81321 - Remove "View templates" link from the sticky footer in the Database fields page
- MDL-72424 - Remove non-functional role switch check in Feedback module
For administrators
- MDL-80967 - Login page: Give the option to hide the login form with only a configuration
- MDL-77544 - Include start and end dates with External database course creation
- MDL-81533 - Availability restriction info default change
- MDL-82066 - Allow plugins to hook into/extend site default homepage options
- MDL-81942 - Respect defaulthomepage setting for guests
- MDL-82532 - Capability to allow/prevent view of profile images
Performance
- MDL-66151 - Allow session stores to fully manage the session
- MDL-78030 - Make tablelib and reports faster by combining count query into main query
- MDL-64325 - Improve final grade calculation performance for grade items and categories
Security improvements
- MDL-58353 - Empower users to be able to log out other sessions during password reset
- MDL-75850 - Add the ability to configure automatic EXIF data removal from uploaded images
- MDL-82231 - Public path checker should check for new UPGRADING.md files
- MDL-81940 - Replace the RC4 encryption methods with a standard library
- MDL-82585 - Final removal of long since unused proxy scripts in Feedback
For developers
- MDL-81125 - Introduce tooling for upgrade note management
- MDL-80797 - Add support for local plugins to add or reorder secondary navigation menu items in course navigation using hooks API
- MDL-81807 - Implement automatic download and update of GeoIP database via scheduled task
- MDL-81816 - Refactor theme-color-level() function renamed in Bootstrap 5
- MDL-75671 - Refactor utility classes for layout and spacing renamed in Bootstrap 5
Web service modernisation
- MDL-81031 - Initial implementation of the Routing system
- MDL-81903 - Add new exception API
- MDL-80275 - Allow ABORT_AFTER_CONFIG to include autoload tooling
- MDL-82778 - Refactor core/fetch
Break apart core monolith *lib.php files
- MDL-81919 - Break apart lib/setuplib.php
- MDL-82156 - Add check to \core_component for some key autoloadable classes
- MDL-82183 - Break apart lib/output*
- MDL-81960 - Break apart lib/weblib.php
- MDL-82158 - Break apart cache/lib.php classes
- MDL-82191 - Deprecate unused libs (lib/soaplib.php, lib/tokeniserlib.php)
- MDL-82427 - Split filterlib.php
- MDL-82287 - Trim lib/deprecatedlib.php
- MDL-81920 - Split out the emoticon/lang string classes from moodlelib
Web service additions and updates
- MDL-70854 - New API to allow adhoc tasks to communicate a progress bar / status back to the calling page
- MDL-82105 - New web service to retrieve information about a badge (core_badges_get_badge)
- MDL-78293 - New web service to allow managing private files
- MDL-74050 - New web service to allow removing submissions
- MDL-81699 - Web service core_course_get_courses_by_field should support a new parameter (sectionid) to be able to retrieve the course that has the indicated section
- MDL-82234 - Update the tool_mobile_get_public_config web service to return the new option to hide the login form
Deprecations
- MDL-82935 - Remove $straction from filter/manage.php
- MDL-82223 - Final deprecation of availability restrictions renderer
- MDL-72353 - Final deprecation of save_selected_report()
- MDL-76690 - Final deprecation of Report builder methods deprecated in 4.1
- MDL-74939 - Final deprecation of "local/views" namespace used for navigation
- MDL-74484 - Final deprecation of print_error()
- MDL-71748 - Final deprecation of reset_caches
- MDL-72620 - Final deprecation of repository_skydrive importing feature
- MDL-74843 - Final deprecation of \core\task\manager::ensure_adhoc_task_qos
- MDL-73956 - Final deprecation of function "forum_update_subscriptions_button"
- MDL-75022 - Final deprecation of core_backup\copy
- MDL-71326 - Final deprecation of plagiarism functions (4.4)
- MDL-73284 - Final deprecation of MESSAGE_DEFAULT_LOGGEDOFF / MESSAGE_DEFAULT_LOGGEDIN
- MDL-73976 - Final deprecation of print_course_request_buttons
- MDL-75025 - Final deprecation of base_controller::set_copy/get_copy
- MDL-73165 - Final deprecation of should_display_main_logo() in renderer.php
- MDL-77167 - Remove deprecation layer for MDL-70990 (YUI Events)
- MDL-81914 - Remove deprecated "\core_competency\invalid_persistent_exception"
- MDL-82301 - Remove legacy tabs.php file from Feedback module
- MDL-82547 - Remove usage of, and deprecation layer for, inplace editable jQuery events
- MDL-78776 - Expunge MyISAM code, strings, docs
Component API updates
- core
- core_admin
- core_availability
- core_backup
- core_badges
- core_cache
- core_communication
- core_completion
- core_course
- core_courseformat
- core_customfield
- core_external
- core_files
- core_filters
- core_form
- core_grades
- core_message
- core_question
- core_report
- core_reportbuilder
- core_role
- core_sms
- core_table
- core_user
- availability
- customfield_number
- customfield_select
- editor_tiny
- factor_sms
- gradereport_grader
- gradereport_singleview
- gradereport_user
- mod
- mod_assign
- mod_bigbluebuttonbn
- mod_data
- mod_feedback
- mod_quiz
- qbank_managecategories
- report_eventlist
- report_log
- repository_onedrive
- theme
- theme_boost
- tool
- tool_behat
- tool_oauth2