Metadata
Moodle provides a variety of metadata which is used internally by Moodle, but which may also be useful in some developer tooling and integrations.
Plugin types and subsystems
The name and location on disk of every plugin type, and subsystem is described in lib/components.json
.
Excerpt from lib/components.json
{
"plugintypes": {
"antivirus": "lib/antivirus",
"availability": "availability/condition",
"qtype": "question/type",
"mod": "mod",
// ...
},
"subsystems": {
"access": null,
"admin": "admin",
// ...
}
}
Subplugins
Any plugin which implements a subplugin must describe its subplugins by name and path in that plugins db/subplugins.json
location.
Example of a db/subplugins.json
{
"plugintypes": {
"quiz": "mod/quiz/report",
"quizaccess": "mod/quiz/accessrule"
}
}
APIs
As described in the Namespacing section of the coding style, all Level 2 namespaces must be a Core API, or the word local
.
Only those APIs meeting the following criterion are supported for this purpose:
- defined in
/lib/apis.json
; and - having the
allowedlevel2
flag set; and - either:
- having the same
component
as the API; or - having the
allowedspread
flag set.
- having the same
Excerpt from lib/apis.json
{
"access": {
"component": "core_access",
"allowedlevel2": true,
"allowedspread": false
},
"admin": {
"component": "core_admin",
"allowedlevel2": false,
"allowedspread": false
},
"adminpresets": {
"component": "core_adminpresets",
"allowedlevel2": true,
"allowedspread": false
},
"analytics": {
"component": "core_analytics",
"allowedlevel2": true,
"allowedspread": true
},
// ...
}
A JSON schema for this file can be found at /lib/apis.schema.json
.
Standard Plugins
A list of the plugins which are shipped a standard Moodle installation, as well as the plugins which have recently been removed from this list is available in lib/plugins.json
.
This list is in categorised under the categories standard
, and deleted
, and then by the plugin type, and finally the plugin name.
Excerpt from lib/plugins.json
{
"standard": {
"antivirus": [
"clamav"
],
"assignfeedback": [
"comments",
"editpdf",
"file",
"offline"
],
"assignsubmission": [
"comments",
"file",
"onlinetext"
],
// ...
},
"deleted": {
"assignment": [
"offline",
"online",
"upload",
"uploadsingle"
],
"auth": [
"fc",
"imap",
"nntp",
"pam",
"pop3",
"radius"
],
// ...
}
}
A JSON schema for this file can be found at /lib/plugins.schema.json
.