# Moodle Developer Resources > Nurturing Moodle Developers This file contains links to documentation sections following the llmstxt.org standard. ## Table of Contents - [Amd Dir](https://moodledev.io/docs/apis/_files/amd-dir): {/* */} - [Backup Dir](https://moodledev.io/docs/apis/_files/backup-dir): {/* */} - [Changes](https://moodledev.io/docs/apis/_files/changes): {/* */} - [Classes Dir](https://moodledev.io/docs/apis/_files/classes-dir): {/* */} - [Cli Dir](https://moodledev.io/docs/apis/_files/cli-dir): {/* */} - [Composer Json](https://moodledev.io/docs/apis/_files/composer-json): {/* */} - [Db Access Php](https://moodledev.io/docs/apis/_files/db-access-php): {/* */} - [Db Events Php](https://moodledev.io/docs/apis/_files/db-events-php): {/* */} - [Db Install Php](https://moodledev.io/docs/apis/_files/db-install-php): {/* */} - [Db Install Xml](https://moodledev.io/docs/apis/_files/db-install-xml): {/* */} - [Db Legacyclasses Php](https://moodledev.io/docs/apis/_files/db-legacyclasses-php): {/* */} - [Db Messages Php](https://moodledev.io/docs/apis/_files/db-messages-php): {/* */} - [Db Mobile Php](https://moodledev.io/docs/apis/_files/db-mobile-php): {/* */} - [Db Renamedclasses Php](https://moodledev.io/docs/apis/_files/db-renamedclasses-php): {/* */} - [Db Services Php](https://moodledev.io/docs/apis/_files/db-services-php): {/* */} - [Db Tasks Php](https://moodledev.io/docs/apis/_files/db-tasks-php): {/* */} - [Db Uninstall Php](https://moodledev.io/docs/apis/_files/db-uninstall-php): {/* */} - [Db Upgrade Php](https://moodledev.io/docs/apis/_files/db-upgrade-php): {/* */} - [Environment Xml](https://moodledev.io/docs/apis/_files/environment-xml): {/* */} - [Lang Extra](https://moodledev.io/docs/apis/_files/lang-extra): {/* */} - [Lang](https://moodledev.io/docs/apis/_files/lang): {/* */} - [Lib](https://moodledev.io/docs/apis/_files/lib): {/* */} - [Locallib](https://moodledev.io/docs/apis/_files/locallib): {/* */} - [Pix Dir](https://moodledev.io/docs/apis/_files/pix-dir): {/* */} - [Readme](https://moodledev.io/docs/apis/_files/readme): {/* */} - [Readme_moodle Txt](https://moodledev.io/docs/apis/_files/readme_moodle-txt): {/* */} - [Settings Php](https://moodledev.io/docs/apis/_files/settings-php): {/* */} - [Styles Css](https://moodledev.io/docs/apis/_files/styles-css): {/* */} - [Thirdpartylibs Xml](https://moodledev.io/docs/apis/_files/thirdpartylibs-xml): {/* */} - [Upgrade Php](https://moodledev.io/docs/apis/_files/upgrade-php): {/* */} - [Upgrade Txt](https://moodledev.io/docs/apis/_files/upgrade-txt): {/* */} - [Version Php](https://moodledev.io/docs/apis/_files/version-php): {/* */} - [Yui Dir](https://moodledev.io/docs/apis/_files/yui-dir): {/* */} - [db/tasks.php](https://moodledev.io/docs/4.5/apis/commonfiles/db-tasks.php): A description of the plugin scheduled task configuration file - [Common files](https://moodledev.io/docs/4.5/apis/commonfiles): import { - [tag.php](https://moodledev.io/docs/4.5/apis/commonfiles/tag.php): A description of the library tag.php file, describing what plugins have tags where their callbacks are located. - [version.php](https://moodledev.io/docs/4.5/apis/commonfiles/version.php): A description of the plugin version.php file, describing the various features - [Activity completion API](https://moodledev.io/docs/4.5/apis/core/activitycompletion): :::note - [Calendar API](https://moodledev.io/docs/4.5/apis/core/calendar): This page documents the Calendar API as it is in Moodle 3.3 and later. For the API in older versions of Moodle, see [Calendar API old](https://docs... - [Clock](https://moodledev.io/docs/4.5/apis/core/clock): Fetching the current time - [Comment API](https://moodledev.io/docs/5.1/apis/core/comment): The Comment API provides a standardized way to manage comments within Moodle. It allows developers to create, retrieve, update, and delete comments... - [Conditional activities API](https://moodledev.io/docs/4.5/apis/core/conditionalactivities): The Conditional Activities API allowsyou to specify whether to hide, or show, an activity when a series of conditions associated with it are met. - [Custom fields API](https://moodledev.io/docs/4.5/apis/core/customfields): - [Deprecation API](https://moodledev.io/docs/4.5/apis/core/deprecation): {/* */} - [Dependency Injection](https://moodledev.io/docs/4.5/apis/core/di): The use of PSR-11 compatible Dependency Injection in Moodle - [Database schema](https://moodledev.io/docs/4.5/apis/core/dml/database-schema): {/* */} - [Data definition API](https://moodledev.io/docs/4.5/apis/core/dml/ddl): - [Transactions](https://moodledev.io/docs/4.5/apis/core/dml/delegated-transactions): Moodle allows data manipulation to take place within a database transaction, known as a *Delegated transaction*. This allows you to perform CRUD[^1... - [DML drivers](https://moodledev.io/docs/4.5/apis/core/dml/drivers): A number of native drivers are included with Moodle, including those with support for: - [DML exceptions](https://moodledev.io/docs/4.5/apis/core/dml/exceptions): The [DML](./index.md) API uses a selection of exceptions to indicate errors. - [Data manipulation API](https://moodledev.io/docs/4.5/apis/core/dml): This page describes the functions available to access data in the Moodle database. You should **exclusively** use these functions in order to retri... - [Advanced grading API](https://moodledev.io/docs/4.5/apis/core/grading): Advanced grading was introduced in Moodle 2.2 for grading of assignments. It is intended to be used for grading of other types of activities in the... - [Hooks API](https://moodledev.io/docs/4.5/apis/core/hooks): - [HTML Writer API](https://moodledev.io/docs/4.5/apis/core/htmlwriter): Moodle has a class called _HTML writer_ which allows you to output basic HTML tags. This is typically used within renderer functions, for example `... - [Core APIs](https://moodledev.io/docs/4.5/apis/core): Moodle provides a series of Core APIs which can be used by any part of Moodle. - [Lock API](https://moodledev.io/docs/4.5/apis/core/lock): Locking is required whenever you need to prevent two, or more, processes accessing the same resource at the same time. The prime candidate for lock... - [Message API](https://moodledev.io/docs/4.5/apis/core/message): This document describes how to make use of the Moodle Messaging API to send messages to Moodle users. - [Navigation API](https://moodledev.io/docs/4.5/apis/core/navigation): The Navigation API allows for the manipulation of the navigation system used in Moodle. - [Preference API](https://moodledev.io/docs/4.5/apis/core/preference): The Preference API is used for the storage and retrieval of user preferences. These preferences are stored in the database for users with an accoun... - [Setting default conditions](https://moodledev.io/docs/4.5/apis/core/reportbuilder/filtering): When setting up a `datasource` it is possible to define the default condition values for it using the `get_default_condition_values()` method. - [Report builder API](https://moodledev.io/docs/4.5/apis/core/reportbuilder): The report builder API is a way of providing reporting data, with paging, filtering, exporting standardized across them in both system and custom r... - [User-related APIs](https://moodledev.io/docs/4.5/apis/core/user): This is a collection of miscellaneous APIs that can help with doing things with lists of users. - [AI Plugins](https://moodledev.io/docs/4.5/apis/plugintypes/ai): The [AI subsystem](/apis/subsystems/ai/index.md) provides a way for developers to integrate external AI services into Moodle LMS. - [Placements](https://moodledev.io/docs/4.5/apis/plugintypes/ai/placement): Placements provide a consistent UX and UI for users when they use AI backed functionality (e.g. generating an image). - [Providers](https://moodledev.io/docs/4.5/apis/plugintypes/ai/provider): Providers are the interface between the [AI subsystem](/apis/subsystems/ai/index.md) and external AI. - [Scanner Php](https://moodledev.io/docs/apis/plugintypes/antivirus/_files/scanner-php): {/* */} - [Antivirus plugins](https://moodledev.io/docs/4.5/apis/plugintypes/antivirus): Integrate your preferred Antivirus tool to with Moodle to automatically check new file uploads. - [Assign feedback plugins](https://moodledev.io/docs/4.5/apis/plugintypes/assign/feedback): Assign feedback plugins allow you to define different ways that a teacher can provide feedback to their students. - [Assignment sub-plugins](https://moodledev.io/docs/4.5/apis/plugintypes/assign): The `mod_assign` activity can be extended using two sub-plugin types, namely: - [Assign submission plugins](https://moodledev.io/docs/4.5/apis/plugintypes/assign/submission): Assign submission plugins allow you to define different ways for a student to submit their work - [Button](https://moodledev.io/docs/apis/plugintypes/atto/_examples/button): {/* */} - [Lib](https://moodledev.io/docs/apis/plugintypes/atto/_examples/lib): {/* */} - [Atto](https://moodledev.io/docs/4.5/apis/plugintypes/atto): - [Lang](https://moodledev.io/docs/apis/plugintypes/availability/_examples/lang): {/* */} - [Availability conditions](https://moodledev.io/docs/4.5/apis/plugintypes/availability): Availability conditions allow teachers to restrict an activity or section so that only certain users can access it. These are accessed using the [A... - [Block plugins](https://moodledev.io/docs/4.5/apis/plugintypes/blocks): import { - [Communication plugin](https://moodledev.io/docs/4.5/apis/plugintypes/communication): Communication plugin allows you to create a communication provider plugin, which can be added as a part of course or any other instances. - [Custom fields](https://moodledev.io/docs/4.5/apis/plugintypes/customfield): Custom fields allow you to create field types to be used for custom fields. Instances of these field types can be added to the respective areas tha... - [Enrolment plugins](https://moodledev.io/docs/4.5/apis/plugintypes/enrol): {/* */} - [Converter](https://moodledev.io/docs/apis/plugintypes/fileconverter/_files/converter): {/* */} - [File Converters](https://moodledev.io/docs/4.5/apis/plugintypes/fileconverter): File converters are an important tool to support other plugins with file conversion supported between a wide range of file formats. File converters... - [Filter plugins](https://moodledev.io/docs/4.5/apis/plugintypes/filter): {/* */} - [Course format](https://moodledev.io/docs/4.5/apis/plugintypes/format): {/* */} - [Migrating 3.11 formats](https://moodledev.io/docs/4.5/apis/plugintypes/format/migration): {/* */} - [Plugin types](https://moodledev.io/docs/4.5/apis/plugintypes): Moodle is a powerful, and very extensible, Learning Management System. One of its core tenets is its extensibility, and this is primarily achieved ... - [Local plugins](https://moodledev.io/docs/4.5/apis/plugintypes/local): import { - [Logstore plugins](https://moodledev.io/docs/4.5/apis/plugintypes/logstore): Moodle supports the ability to define a custom log storage system using the `logstore` plugin type. This hasn't been documented yet - perhaps you a... - [Machine learning backends](https://moodledev.io/docs/4.5/apis/plugintypes/mlbackend): {/* */} - [Access_description](https://moodledev.io/docs/apis/plugintypes/mod/_files/access_description): {/* */} - [Index Php](https://moodledev.io/docs/apis/plugintypes/mod/_files/index-php): {/* */} - [Install_description](https://moodledev.io/docs/apis/plugintypes/mod/_files/install_description): {/* */} - [Lib_description](https://moodledev.io/docs/apis/plugintypes/mod/_files/lib_description): {/* */} - [Mod_form Php](https://moodledev.io/docs/apis/plugintypes/mod/_files/mod_form-php): {/* */} - [View Php](https://moodledev.io/docs/apis/plugintypes/mod/_files/view-php): {/* */} - [Activity chooser](https://moodledev.io/docs/4.5/apis/plugintypes/mod/activitymodule): :::caution - [Course overview integration](https://moodledev.io/docs/5.0/apis/plugintypes/mod/courseoverview): - [Activity modules](https://moodledev.io/docs/4.5/apis/plugintypes/mod): import { - [Module visibility and display](https://moodledev.io/docs/4.5/apis/plugintypes/mod/visibility): A new API allows you to customise how your module displays on the main course page: - [Book activity sub-plugins](https://moodledev.io/docs/4.5/apis/plugintypes/mod_book): The `mod_book` activity can be extended using the tool sub-plugin type. This hasn't been documented yet - perhaps you are able to help us. - [Database fields](https://moodledev.io/docs/4.5/apis/plugintypes/mod_data/fields): The [Database activity](https://docs.moodle.org/en/Database_module) included with Moodle includes support for several predefined [field types](./fi... - [Database activity sub-plugins](https://moodledev.io/docs/4.5/apis/plugintypes/mod_data): The `mod_data` activity can be extended using two sub-plugin types, namely: - [Database presets](https://moodledev.io/docs/4.5/apis/plugintypes/mod_data/presets): {/* */} - [Forum activity sub-plugins](https://moodledev.io/docs/4.5/apis/plugintypes/mod_forum): The `mod_forum` activity can be extended using the `forumreport` sub-plugin type. This hasn't been documented yet - perhaps you are able to help us. - [Question bank filters](https://moodledev.io/docs/4.5/apis/plugintypes/qbank/filters): Question bank plugins allow you to define new filters for the question bank view and random question sets. - [Question bank plugins](https://moodledev.io/docs/4.5/apis/plugintypes/qbank): Question bank plugins allow you to extend the functionality of the Moodle Question bank. - [Question type plugins](https://moodledev.io/docs/4.5/apis/plugintypes/qtype): Question type plugins implement the different types of question that the core Question subsystem can handle. - [Defaults for new questions](https://moodledev.io/docs/4.5/apis/plugintypes/qtype/newquestiondefaults): A way for question types to remember a user's preferred settings for creating questions of a given type. - [Question type plugin restore code](https://moodledev.io/docs/5.0/apis/plugintypes/qtype/restore): Question type plugins must implement special restore code to avoid duplicated questions - [Rule](https://moodledev.io/docs/apis/plugintypes/quizaccess/_examples/rule): {/* */} - [Rule_overridable](https://moodledev.io/docs/apis/plugintypes/quizaccess/_examples/rule_overridable): {/* */} - [Quiz access rule sub-plugins](https://moodledev.io/docs/5.0/apis/plugintypes/quizaccess): import { ComponentFileSummary } from '../../../_utils'; - [Repository plugins](https://moodledev.io/docs/4.5/apis/plugintypes/repository): import { - [SMS gateway](https://moodledev.io/docs/4.5/apis/plugintypes/sms): - [Lang](https://moodledev.io/docs/apis/plugintypes/theme/_examples/lang): {/* */} - [Fonts](https://moodledev.io/docs/4.5/apis/plugintypes/theme/fonts): - [Images and icons in themes](https://moodledev.io/docs/4.5/apis/plugintypes/theme/images): One of the theme features is the ability to override any of the standard images within Moodle when your theme is in use. At this point, let's explo... - [Theme plugins](https://moodledev.io/docs/4.5/apis/plugintypes/theme): A Moodle theme allows users to customize the appearance and functionality of their Moodle site, from overall design to specific activities. Users c... - [Layout](https://moodledev.io/docs/4.5/apis/plugintypes/theme/layout): All themes are required to define the layouts they wish to be responsible for as well as create; however, many layout files are required by those l... - [Styles](https://moodledev.io/docs/4.5/apis/plugintypes/theme/styles): Let's begin by exploring the various locations within Moodle from which CSS can be included: - [TinyMCE Editor Plugins](https://moodledev.io/docs/4.5/apis/plugintypes/tiny): Moodle includes the TinyMCE text editor as standard from Moodle 4.1, and it can be installed from the plugins database for Moodle versions 3.11, an... - [Testing](https://moodledev.io/docs/4.5/apis/plugintypes/tiny/testing): Testing is an important part of development and we strongly encourage you to write appropriate tests for your plugins. - [Access API](https://moodledev.io/docs/4.5/apis/subsystems/access): {/* */} - [Admin settings](https://moodledev.io/docs/4.5/apis/subsystems/admin): {/* */} - [AI Subsystem](https://moodledev.io/docs/4.5/apis/subsystems/ai): - [Analytics API](https://moodledev.io/docs/4.5/apis/subsystems/analytics): The Analytics API allows managers to use predictions to detect trends and predict student behaviour - [Availability API](https://moodledev.io/docs/4.5/apis/subsystems/availability): The availability API controls access to activities and sections. For example, a teacher could restrict access so that an activity cannot be accesse... - [Backup API](https://moodledev.io/docs/4.5/apis/subsystems/backup): The Backup API provides a way to include your plugin's in the course backup. See [Restore API](./restore.md) for the part that takes care of restor... - [Restore API](https://moodledev.io/docs/4.5/apis/subsystems/backup/restore): The Restore API provides a way to restore your plugin's data from a backup file created in Moodle 2.0 or later. For the information on how backup f... - [Badges API](https://moodledev.io/docs/5.2/apis/subsystems/badges): {/* */} - [Check API](https://moodledev.io/docs/4.5/apis/subsystems/check): A _Check_ is a runtime test to make sure that something is working well. You can think of Checks as similar and complimentary to the [PHPUnit](/gen... - [Communication API](https://moodledev.io/docs/4.5/apis/subsystems/communication): Communication API provides access to the messaging system and other communication providers (such as Matrix). - [Editor API](https://moodledev.io/docs/4.5/apis/subsystems/editor): The editor API lets you control Moodle text editors. It can be found in `lib/editorlib.php`. - [Enrolment API](https://moodledev.io/docs/4.5/apis/subsystems/enrol): {/* */} - [Service creation](https://moodledev.io/docs/4.5/apis/subsystems/external/advanced/custom-services): Moodle comes with two built-in services that your functions can be attached to. - [Function Declarations](https://moodledev.io/docs/4.5/apis/subsystems/external/description): Before they can be used, all functions must be _declared_ to Moodle, and their inputs and outputs must be _defined_. - [File handling](https://moodledev.io/docs/4.5/apis/subsystems/external/files): Moodle provides two ways to fetch and upload files: - [Function Definitions](https://moodledev.io/docs/4.5/apis/subsystems/external/functions): An External function _definition_ is the class, and collection of functions, used to define: - [External Services](https://moodledev.io/docs/4.5/apis/subsystems/external): Moodle has a full-featured Web Service framework, allowing you to use and create web services for use in external systems. - [Security](https://moodledev.io/docs/4.5/apis/subsystems/external/security): Before operating on any data in an external function, you must ensure that the user: - [Unit Testing](https://moodledev.io/docs/4.5/apis/subsystems/external/testing): Unit tests are the best way of checking the behaviour of your external services and can help you to: - [Writing a new service](https://moodledev.io/docs/4.5/apis/subsystems/external/writing-a-service): This documentation covers the creation of a new external service for use in a web service of a fictional local plugin, `local_groupmanager`. - [Favourites API](https://moodledev.io/docs/4.5/apis/subsystems/favourites): The favourites API allows you to mark items as favourites for a given user. Marking an item as a favourite is akin to adding a web page to your bro... - [File Browser API](https://moodledev.io/docs/4.5/apis/subsystems/files/browsing): The File Browser API is a supplemental API which can be used to fetch information relating to Files stored in the [Moodle File API](./index.md). - [File Converters](https://moodledev.io/docs/4.5/apis/subsystems/files/converter): Users are able to submit a wide range of files, and it is a common requirement to convert these to alternative formats. - [File API](https://moodledev.io/docs/4.5/apis/subsystems/files): {/* */} - [File API internals](https://moodledev.io/docs/4.5/apis/subsystems/files/internals): The goals of the File API are to: - [Advanced elements](https://moodledev.io/docs/4.5/apis/subsystems/form/advanced/advanced-elements): Form elements can be marked as 'advanced'. This has the effect that they are hidden initially. - [Checkbox controller](https://moodledev.io/docs/4.5/apis/subsystems/form/advanced/checkbox-controller): The checkbox controller allows developers to group checkboxes together and add a link or button to check, or uncheck, all of the checkboxes at once. - [No submit button](https://moodledev.io/docs/4.5/apis/subsystems/form/advanced/no-submit-button): The moodleform 'no_submit_button_pressed()' method allows you to detect if a button on your form has been pressed that is a submit button but that ... - [Repeat elements](https://moodledev.io/docs/4.5/apis/subsystems/form/advanced/repeat-elements): The Form API includes the ability to repeat a group of form elements. This is useful where you need to have an unknown quantity of item data, for e... - [Choice Dropdown](https://moodledev.io/docs/4.5/apis/subsystems/form/fields/choicedropdown): The `choicedropdown` form field creates a dropdown list with multiple options. It is different from a standard select dropdown in that each option ... - [Forms API](https://moodledev.io/docs/4.5/apis/subsystems/form): Form are created using the Form API. The Form API supports most standard HTML elements, including checkboxes, radio buttons, text boxes, and so on,... - [Files in Forms](https://moodledev.io/docs/4.5/apis/subsystems/form/usage/files): Files and their metadata are stored within the [File API](../../files/index.md). Each file within the API is associated with: - [Form Usage](https://moodledev.io/docs/4.5/apis/subsystems/form/usage): Moodle's Form API is an extension of the Pear HTML_QuickForm API, which is no longer supported. Some documentation for the upstream library is [ava... - [Groups API](https://moodledev.io/docs/4.5/apis/subsystems/group): Moodle [Groups](https://docs.moodle.org/en/Groups) are a way of expressing collections of users within a course. They may be defined by the teacher... - [Cache API](https://moodledev.io/docs/4.5/apis/subsystems/muc): This document provides an in-depth overview of the Cache API, also known as MUC (Moodle Universal Cache), a fundamental caching system within Moodle. - [Date and Time Output Classes](https://moodledev.io/docs/5.0/apis/subsystems/output/humandate): - [Output API](https://moodledev.io/docs/4.5/apis/subsystems/output): {/* */} - [Inplace editable](https://moodledev.io/docs/4.5/apis/subsystems/output/inplace): The `inplace_editable` element is a mini-API which allows developers to easily support editing of a value on any page. The interface is used in pla... - [Plagiarism API](https://moodledev.io/docs/4.5/apis/subsystems/plagiarism): The Plagiarism API is a core set of functions that all Moodle code can use to send user submitted content to Plagiarism Prevention systems - [FAQs](https://moodledev.io/docs/4.5/apis/subsystems/privacy/faq): No - messages and notifications do not need to be declared or exported. - [Privacy API](https://moodledev.io/docs/4.5/apis/subsystems/privacy): The [General Data Protection Regulation](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (GDPR) is an EU directive that provides ... - [Utilities](https://moodledev.io/docs/4.5/apis/subsystems/privacy/utils): While implementing the privacy API into your plugin, there are CLI scripts that can help you to test things on the fly. - [Questions API](https://moodledev.io/docs/4.5/apis/subsystems/question): The question subsystem in Moodle manages the creation, editing and management of interactive questions, and then enables those questions to be pres... - [Roles API](https://moodledev.io/docs/4.5/apis/subsystems/roles): The Roles API is an extension of the [Access API](./access.md) and defines a set of actions - [Routing](https://moodledev.io/docs/4.5/apis/subsystems/routing): - [Parameters](https://moodledev.io/docs/4.5/apis/subsystems/routing/parameters): The Routing subsystem supports three types of parameter to a request: - [Responses](https://moodledev.io/docs/4.5/apis/subsystems/routing/responses): When creating a Route you will need to return some data. This can be achieved in a number of ways, depending on the purpose of the route and data t... - [Shortlinks](https://moodledev.io/docs/5.1/apis/subsystems/routing/shortlinks): {/* */} - [Unit Testing](https://moodledev.io/docs/4.5/apis/subsystems/routing/testing): One of the benefits of using routes is how easy they are to unit test. It is also possible to test [parameters](./parameters.md) for validation, wh... - [SMS API](https://moodledev.io/docs/4.5/apis/subsystems/sms): - [Tag API](https://moodledev.io/docs/4.5/apis/subsystems/tag): The Tag API allows you to assign labels to information in Moodle. This makes finding this information easier and also facilitates the grouping of s... - [Adhoc tasks](https://moodledev.io/docs/4.5/apis/subsystems/task/adhoc): Adhoc tasks are typically used when you need to queue something to run in the background either immediately, where they would be executed as soon a... - [Task API](https://moodledev.io/docs/4.5/apis/subsystems/task): The Moodle Tasks API is a comprehensive API to support the scheduling and running of tasks. Tasks are individual activities which are to be perform... - [Scheduled tasks](https://moodledev.io/docs/4.5/apis/subsystems/task/scheduled): Scheduled tasks are tasks that will run on a regular schedule. A default schedule can be set, but administrators have the ability to change the def... - [Time API](https://moodledev.io/docs/4.5/apis/subsystems/time): Internally Moodle always stores all times in unixtime format, which is a format independent of timezones. - [xAPI (Experience API)](https://moodledev.io/docs/4.5/apis/subsystems/xapi): This document contains a technical explanation on how the xAPI Moodle integration library works. - [Open Telemetry](https://moodledev.io/docs/5.2/apis/telemetry): - [API Guides](https://moodledev.io/docs/4.5/apis): Moodle has a number of core APIs that provide tools for Moodle scripts. - [Moodle 5.3 developer update](https://moodledev.io/docs/4.5/devupdate): {/* */} - [Technical requirements](https://moodledev.io/docs/4.5/gettingstarted/requirements): Moodle is a PHP Application, which is backed by a relational database. - [Bootstrap 5 migration](https://moodledev.io/docs/4.5/guides/bs5migration): {/* */} - [Composer support for plugins](https://moodledev.io/docs/5.2/guides/composer): How to make your Moodle plugin available via Composer, and developer tips for working with Composer-based Moodle sites. - [Frontend Development](https://moodledev.io/docs/5.2/guides/frontend): Moodle now supports modern frontend development using **ECMAScript modules (ESM)**, **React**, and **TypeScript**. - [Git for developers](https://moodledev.io/docs/4.5/guides/git): {/* */} - [AJAX](https://moodledev.io/docs/4.5/guides/javascript/ajax): The preferred way to write new ajax interactions in Moodle is to use the JavaScript module `core/ajax` which directly calls web service functions b... - [Example usages](https://moodledev.io/docs/4.5/guides/javascript/comboboxsearch/examples): Several grade report modules have been migrated to use the new core search dropdown component. This migration provides a more consistent user exper... - [Combobox searching](https://moodledev.io/docs/4.5/guides/javascript/comboboxsearch): - [Deprecation of JavaScript](https://moodledev.io/docs/5.2/guides/javascript/deprecation): The deprecation of JavaScript follows the same general principle as the deprecation of other Moodle code. That is: - [JavaScript](https://moodledev.io/docs/4.5/guides/javascript): Moodle makes heavy use of JavaScript to improve the experience for its users. - [jQuery](https://moodledev.io/docs/4.5/guides/javascript/jquery): A description of how and when to use jQuery in Moodle - [Modal Dialogues](https://moodledev.io/docs/4.5/guides/javascript/modal): - [Modules](https://moodledev.io/docs/4.5/guides/javascript/modules): A JavaScript module is a package of code that can be reliably used and shared with other code in a reusable format. - [Build tools](https://moodledev.io/docs/5.2/guides/javascript/react/buildtools): Overview of Moodle's React developer documentation and what each page covers. - [Aliasing and Import Maps](https://moodledev.io/docs/5.2/guides/javascript/react/importmap): How Moodle uses native browser import maps to resolve bare module specifiers to real URLs at runtime, including built-in specifiers, custom entries... - [React](https://moodledev.io/docs/5.2/guides/javascript/react): Overview of Moodle's React developer documentation and what each page covers. - [React Profiler](https://moodledev.io/docs/5.2/guides/javascript/react/profiler): How to use Moodle's React profiling and dev-mode bundle infrastructure, including programmatic mounting and the Profiler HOC. - [Mustache Helper and Autoinit](https://moodledev.io/docs/5.2/guides/javascript/react/reactautoinit): How Moodle's Mustache React helper and react_autoinit work together to render, mount, and manage React components. - [JavaScript unit testing](https://moodledev.io/docs/5.3/guides/javascript/react/testing): How to write and run Jest unit tests for React and ESM TypeScript components in Moodle. - [Theming Components](https://moodledev.io/docs/5.3/guides/javascript/react/theming): How to theme React Components - [Creating a reactive UI](https://moodledev.io/docs/4.5/guides/javascript/reactive): {/* */} - [YUI](https://moodledev.io/docs/4.5/guides/javascript/yui): - [YUI Modules](https://moodledev.io/docs/4.5/guides/javascript/yui/modules): - [YUI Namespacing](https://moodledev.io/docs/4.5/guides/javascript/yui/namespacing): - [Profiling PHP](https://moodledev.io/docs/4.5/guides/profiling): PHP has two types of profiler: - [Code Restructure](https://moodledev.io/docs/5.1/guides/restructure): - [Templates](https://moodledev.io/docs/4.5/guides/templates): A guide to the features and use of Mustache templating in Moodle. - [Writing PHPUnit tests](https://moodledev.io/docs/5.1/guides/testing): Moodle PHPUnit integration is designed to allow easy creation of new tests. - [Plugin Upgrades](https://moodledev.io/docs/4.5/guides/upgrade): The Upgrade API is a core API which allows your plugin to manage features of its own installation, and upgrade. Every plugin includes a [version](.... - [Developer guides](https://moodledev.io/docs/4.5/guides): Getting started guides to Moodle features - [Introduction](https://moodledev.io/docs/intro): Developer documentation for Moodle 5.3.