Skip to main content

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.

DatabaseMinimum versionRecommended
PostgreSQL13 (increased since Moodle 4.1)Latest
MySQL8.0 (increased since Moodle 4.1)Latest
MariaDB10.6.7 (increased since Moodle 4.1)Latest
Microsoft SQL Server2017Latest
Oracle Database19c (increased since Moodle 4.3)Latest
Database prefixes

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

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