<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cameron1729</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cameron1729"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Cameron1729"/>
	<updated>2026-07-29T10:15:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Deprecation&amp;diff=61236</id>
		<title>Deprecation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Deprecation&amp;diff=61236"/>
		<updated>2021-09-08T06:16:53Z</updated>

		<summary type="html">&lt;p&gt;Cameron1729: Added a point about moving/renaming classes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is deprecation? ==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Deprecation Deprecation], in its programming sense, is the process of taking older code and marking it as no longer being useful within the codebase, usually because it has been superseded by newer code. The deprecated code is not immediately removed from the codebase because doing so may cause regression errors.&lt;br /&gt;
== Why is deprecation needed? ==&lt;br /&gt;
In an open source project, the end use of the codebase varies. People may have customisations and plugins that depend on a function that has been targeted for deprecation. Rather than simply removing a function, we must gracefully deprecate the function over a period covered by a number of released versions.&lt;br /&gt;
== What is Moodle&#039;s deprecation policy? ==&lt;br /&gt;
* Deprecations should only be on master, not on stables (exceptions may be made for some external service integrations)&lt;br /&gt;
* Deprecations apply to all public APIs, classes, and files.&lt;br /&gt;
* Removal of a function, class, or file may only be considered after a minimum of 4 major releases since the deprecation. Example: anything deprecated in 3.2 means that it will be removed in 3.6&lt;br /&gt;
* All deprecations should emit debugging notices where possible&lt;br /&gt;
* All deprecations should be noted in the relevant upgrade.txt&lt;br /&gt;
== Moodle Core deprecation process ==&lt;br /&gt;
Once it is decided that a function should be deprecated, a two-step process should be followed.&lt;br /&gt;
&lt;br /&gt;
Note that both steps should always happen as earlier as possible in the 6-months period between major releases, so all developers will have time to adjust their code and ensure it will work in the next release. Obviously, no changes will be allowed after code freeze (the APIs must remain 100% unmodified after it).&lt;br /&gt;
=== Step 1. Immediate action ===&lt;br /&gt;
Deprecation affects only the current master version, in other words, the deprecation only becomes effective after the next [[Releases|major release]].&lt;br /&gt;
* If the function is not a member of a class (in other words, it is an independent function), it should be moved, with its PHPDoc and all comments, to &#039;&#039;lib/deprecatedlib.php&#039;&#039;, which is included everywhere. If the function is a class member, it will need to be deprecated in its current location.&lt;br /&gt;
** Deprecated behat step definitions should be moved to lib/tests/behat/behat_deprecated.php, including a call to behat_deprecated::deprecated_message() proposing an alternative to the deprecated method.&lt;br /&gt;
* If an entire class is being moved (for example, moving multiple class definitions from a monolithic file in to individual files), follow the process for [[Plugin files#db.2Frenamedclasses.php|renaming classes]].&lt;br /&gt;
* A debugging message should be added to the function so that, when [[:en:Debugging|developer debugging mode]] is on, attention is drawn to the deprecation. The message should state that the function being called has been deprecated. The message should help a developer whose code currently calls the function that has gone. Tell them what they should do instead.&lt;br /&gt;
 debugging(&#039;foobar() is deprecated. Please use foobar::blah() instead.&#039;, DEBUG_DEVELOPER);&lt;br /&gt;
* If the deprecated function has been replaced with a new function, ideally the new function should be called from the deprecated function, so that the new functionality is used. This will make maintenance easier moving forward.&lt;br /&gt;
* A &amp;lt;tt&amp;gt;@deprecated&amp;lt;/tt&amp;gt; tag should be added to the PHPDoc for the function description so that IDEs describing the function will note that it is deprecated, documenting which version it was deprecated in and the MDL issue associated with it. See the guidelines in [[Coding_style#.40deprecated_.28and_.40todo.29]].&lt;br /&gt;
* If the function is an external function, then an additional deprecation-specific method needs to be created and set to return true. See the docs on that process here: https://docs.moodle.org/dev/Adding_a_web_service_to_a_plugin#Deprecation. You should continue to add the &amp;lt;tt&amp;gt;@deprecated since x.x&amp;lt;/tt&amp;gt; tag to the docs of all three of the relevant external methods (parameters, main method, returns) to make it clear to IDEs that the function is deprecated.&lt;br /&gt;
* There will need to be an issue associated with the initial part of the deprecation. A second issue needs to be created to finish the job. The first issue will be linked to second issue. The second issue needs to be a sub-task of an appropriate [https://tracker.moodle.org/issues/?jql=%28summary%20~%20%22meta%22%20or%20type%20%3D%20Epic%29%20AND%20summary%20~%20%22together%20deprecated%22%20order%20by%20created&amp;amp;runQuery=true&amp;amp;clear=true deprecation META]. For example, if the current version is 3.1.2, the function will be marked as deprecated in 3.2 and should normally be removed for 3.6, so the second issue should be an issue in a deprecation epic for the 3.6 version (MDL-54740). This second issue should include instructions on how to remove the function so that when it comes time to do so, the task is trivial for any developer.&lt;br /&gt;
* A &amp;lt;tt&amp;gt;@todo&amp;lt;/tt&amp;gt; tag can be added linking to the issues created for further action. (optional)&lt;br /&gt;
* A &amp;lt;tt&amp;gt;@see&amp;lt;/tt&amp;gt; tag can be added to point to the new apis that can be used. (optional)&lt;br /&gt;
* Check the body of the function being deprecated and look for additional function calls which have no other non-deprecated uses and may also be considered for deprecation. If they belong to the same code area they can be deprecated in the same issue.&lt;br /&gt;
* Last but not least, every deprecation should be documented in the corresponding upgrade.txt files &#039;&#039;&#039;at least&#039;&#039;&#039; once but, &#039;&#039;&#039;ideally&#039;&#039;&#039;, both on this initial/immediate deprecation and also on the final deprecation/removal.&lt;br /&gt;
Longer deprecation periods can be considered for functions that are widely used.&lt;br /&gt;
=== Step 2. Final deprecation ===&lt;br /&gt;
* If a function has been marked as deprecated for 3.x (eg. 3.1) and set for removal at 3.x+4 (eg. 3.5), soon after the release of 3.x+3.1 (eg. 3.4.1), the 3.x+4 deprecation META will be processed. This means that the deprecated function will undergo final deprecation before 3.x+4, but only in the master version. This allows any potential regressions caused by the final deprecation of the function to be exposed as soon as possible.&lt;br /&gt;
* When a function undergoes final deprecation, all content of the function should be removed. In the skeleton that remains, an error statement should be included that indicates that the function cannot be used anymore. You can also direct developers to the new function(s) in this message.&lt;br /&gt;
 throw new coding_exception(&#039;check_potential_filename() can not be used any more, please use new file API&#039;);&lt;br /&gt;
* All function parameters should be removed&lt;br /&gt;
* The content of the PHPDoc should be removed, leaving only the &amp;lt;tt&amp;gt;@deprecated&amp;lt;/tt&amp;gt; tag with the notice and, optionally, the replacement information. This includes all &amp;lt;tt&amp;gt;@param&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;@return&amp;lt;/tt&amp;gt;, and other tags, as well as the description.&lt;br /&gt;
* External functions deprecation process is different from the standard deprecation and functions should be completely removed.&lt;br /&gt;
* Last but not least, every deprecation should be documented in the corresponding upgrade.txt files &#039;&#039;&#039;at least&#039;&#039;&#039; once but, &#039;&#039;&#039;ideally&#039;&#039;&#039;, both on the initial/immediate deprecation and also on this final deprecation/removal.&lt;br /&gt;
== See also... ==&lt;br /&gt;
* [[String deprecation]]&lt;br /&gt;
* [[Process]]&lt;br /&gt;
* [[Release process]]&lt;br /&gt;
[[Category:Processes]]&lt;br /&gt;
[[Category:Core development]]&lt;/div&gt;</summary>
		<author><name>Cameron1729</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File_System_API&amp;diff=52788</id>
		<title>File System API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File_System_API&amp;diff=52788"/>
		<updated>2017-08-01T03:34:34Z</updated>

		<summary type="html">&lt;p&gt;Cameron1729: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.3}}&lt;br /&gt;
As standard Moodle uses the locally available file system for all files.&lt;br /&gt;
Since Moodle 3.3 it is possible to extend the file system component of the File Storage API to support alternative File Systems.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Moodle ships with a file system API which enables the internal Moodle File Storage system to set, and retrieve files, and file content.&lt;br /&gt;
The standard file system implementation uses the Moodle filedir, which is a locally available directory on disk, and which can be shared between clustered servers via network file systems such as NFS.&lt;br /&gt;
&lt;br /&gt;
Since Moodle 3.3 it is possible to use alternative file systems, including remote file systems. These are easy to setup and configure, and allow for greater scalability which does not depends so heavily upon traditional network file systems. See config-dist.php for more details. &lt;br /&gt;
&lt;br /&gt;
Please note that the file *must* exist remotely and a local file is *optional*. The remote file is seen as canonical and this system is *not* designed to be used to cater to a split brain solution where some files are present in one place, and some files are present in another.&lt;br /&gt;
&lt;br /&gt;
All files accessed via the standard File Storage API is processed using this API, however the existing tempdir, cachedir, and localcachedir parameters remain separate.&lt;br /&gt;
&lt;br /&gt;
== Defining a new filesystem ==&lt;br /&gt;
&lt;br /&gt;
All file system implementations must extend the &amp;lt;code&amp;gt;file_system&amp;lt;/code&amp;gt; class, and define the required abstract functions.&lt;br /&gt;
&lt;br /&gt;
It is entirely up to the individual implementation how it handles storage, saving, and retrieval of files from it&#039;s file system, however certain key concepts apply.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Moodle File API ====&lt;br /&gt;
&lt;br /&gt;
The Moodle File API is broken into different components, each having a related but fundamentally separate purpose.&lt;br /&gt;
&lt;br /&gt;
===== File Storage API =====&lt;br /&gt;
&lt;br /&gt;
The File Storage API is responsible for all interactions with the rest of Moodle.&lt;br /&gt;
&lt;br /&gt;
Files can be accessed using this API.&lt;br /&gt;
&lt;br /&gt;
===== Stored File =====&lt;br /&gt;
&lt;br /&gt;
Any file stored in Moodle&#039;s File Storage can be represented as a &amp;lt;code&amp;gt;stored_file&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;stored_file&amp;lt;/code&amp;gt; class holds various metadata about the files in the repository.&lt;br /&gt;
&lt;br /&gt;
==== Content Hash ====&lt;br /&gt;
&lt;br /&gt;
The Moodle File Storage API performs de-duplication by generating a &#039;&#039;&#039;checksum&#039;&#039;&#039; of the content of the file.&lt;br /&gt;
The checksum can be generated using the &#039;&#039;&#039;file_storage::hash_from_path&#039;&#039;&#039; and &#039;&#039;&#039;file_storage::hash_from_string&#039;&#039;&#039; functions.&lt;br /&gt;
&lt;br /&gt;
This checksum, referred to as a &#039;&#039;&#039;Content Hash&#039;&#039;&#039; (typically &amp;lt;code&amp;gt;$contenthash&amp;lt;/code&amp;gt;) is stored for each file in the Moodle File Storage Database tables.&lt;br /&gt;
&lt;br /&gt;
Files are always referred to using this content hash, and can be both stored and fetched using it.&lt;br /&gt;
&lt;br /&gt;
Helper functions allow conversion of &amp;lt;code&amp;gt;stored_file&amp;lt;/code&amp;gt; objects into a content hash.&lt;br /&gt;
&lt;br /&gt;
==== Distinction between local and remote file paths ====&lt;br /&gt;
&lt;br /&gt;
The file system API makes the distinction between a &#039;&#039;&#039;local&#039;&#039;&#039;, and a &#039;&#039;&#039;remote&#039;&#039;&#039; file path.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Local&#039;&#039; file paths &#039;&#039;&#039;&#039;&#039;must&#039;&#039;&#039;&#039;&#039; be capable of existing on disk.&lt;br /&gt;
&#039;&#039;Remote&#039;&#039; file paths may be either the valid local path, or a [http://au1.php.net/manual/en/wrappers.php:Supported Protocol].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; Several functions offer a &amp;lt;code&amp;gt;$fetchifnotfound&amp;lt;/code&amp;gt;&lt;br /&gt;
option.&lt;br /&gt;
This is particularly useful when dealing with remote file systems which do not keep a local copy of the file on disk.&lt;br /&gt;
These functions should only be called with a truthful value &#039;&#039;&#039;if the file is required locally&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
It is also advisable when dealing with remote file systems to initially store the file on disk in this path as there is a strong possibility that subsequent actions will attempt to read the file further - for example, in order to generate an image thumbnail.&lt;br /&gt;
&lt;br /&gt;
===== Local file paths =====&lt;br /&gt;
&lt;br /&gt;
Local file paths &#039;&#039;&#039;&#039;&#039;must&#039;&#039;&#039;&#039;&#039; be formatted as a standard local file path. They &#039;&#039;&#039;&#039;&#039;must not&#039;&#039;&#039;&#039;&#039; be a streamable URL.&lt;br /&gt;
This is because some PHP functions are unable to work with seekable, or streamable resources and can &#039;&#039;&#039;only&#039;&#039;&#039; work with local files.&lt;br /&gt;
These include, but are not limited to:&lt;br /&gt;
* The &amp;lt;code&amp;gt;ZipArchive&amp;lt;/code&amp;gt; used in the &amp;lt;code&amp;gt;zip_packer&amp;lt;/code&amp;gt;; and&lt;br /&gt;
* &amp;lt;code&amp;gt;curl_file_create&amp;lt;/code&amp;gt;, used to add files to a curl request; and&lt;br /&gt;
* &amp;lt;code&amp;gt;finfo&amp;lt;/code&amp;gt;, used to determine mime information about files.&lt;br /&gt;
&lt;br /&gt;
Additionally there are some cases which may suffer performance issues when dealing with streamable files. This includes:&lt;br /&gt;
* &amp;lt;code&amp;gt;getimagesize()&amp;lt;/code&amp;gt; which must fetch the entire image first in order to determine size.&lt;br /&gt;
===== Remote file paths =====&lt;br /&gt;
&lt;br /&gt;
Remote file paths &#039;&#039;&#039;may&#039;&#039;&#039; be formatted as a standard local file path. They &#039;&#039;&#039;may&#039;&#039;&#039; be a streamable URL.&lt;br /&gt;
&lt;br /&gt;
See the PHP documentation on [http://au1.php.net/manual/en/wrappers.php:Supported Protocols] for more information on the accepted formats.&lt;br /&gt;
&lt;br /&gt;
Remote files may be passed into PHP functions such as:&lt;br /&gt;
* &amp;lt;code&amp;gt;file_get_contents&amp;lt;/code&amp;gt;; and&lt;br /&gt;
* &amp;lt;code&amp;gt;readfile&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Explanation of required functions ===&lt;br /&gt;
&lt;br /&gt;
==== setup_instance ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;setup_instance()&amp;lt;/code&amp;gt; function is called during instantiation and allows you to setup any required configuration for your file system implementation.&lt;br /&gt;
&lt;br /&gt;
An example implementation might look like:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
protected function setup_instance() {&lt;br /&gt;
    // Setup the client.&lt;br /&gt;
    self::$client = new Awesome\Remote\File\Storage\System();&lt;br /&gt;
&lt;br /&gt;
    // Create a directory for use during the current request.&lt;br /&gt;
    // This directory will be automatically removed at the end of the request.&lt;br /&gt;
    self::$filedir = make_request_directory();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== get_local_filepath_from_hash ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_local_filepath_from_hash&amp;lt;/code&amp;gt; function is responsible for returning the correct path to the file in disk.&lt;br /&gt;
&lt;br /&gt;
This path must be consistent for each contenthash.&lt;br /&gt;
&lt;br /&gt;
The file &#039;&#039;&#039;does not&#039;&#039;&#039; need to exist on disk unless the &amp;lt;code&amp;gt;$fetchifnotfound&amp;lt;/code&amp;gt; parameter is truthy.&lt;br /&gt;
&lt;br /&gt;
An example implementation might look like:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
protected function get_local_path_from_hash($contenthash, $fetchifnotfound = false) {&lt;br /&gt;
    $path = self::$filedir . DIRECTORY_SEPARATOR . $contenthash;&lt;br /&gt;
&lt;br /&gt;
    if ($fetchifnotfound &amp;amp;&amp;amp; !is_readable($path)) {&lt;br /&gt;
        $this-&amp;gt;fetch_local_copy($contenthash, $path);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return $path;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== get_remote_filepath_from_hash =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_remote_filepath_from_hash($contenthash)&amp;lt;/code&amp;gt; function is responsible for returning the correct path to the file.&lt;br /&gt;
&lt;br /&gt;
The returned path must be in either:&lt;br /&gt;
* a local file format; or&lt;br /&gt;
* a remote file path as per the [http://au1.php.net/manual/en/wrappers.php:Supported Protocol] documentation.&lt;br /&gt;
&lt;br /&gt;
Remote paths should not be passed outside of the File System implementation.&lt;br /&gt;
&lt;br /&gt;
An example implementation might look like:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
protected function get_remote_path_from_hash($contenthash, $fetchifnotfound = false) {&lt;br /&gt;
    return $this-&amp;gt;get_presigned_url($contenthash, &#039;+6 hours&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note&#039;&#039;: If using a one-time/pre-signed URL, please ensure that the lifetime of the URL is sufficient for larger files.&lt;br /&gt;
&lt;br /&gt;
==== add_file_to_pool ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;add_file_to_pool&amp;lt;/code&amp;gt; function is responsible for storing the provided local file on disk into your file system.&lt;br /&gt;
&lt;br /&gt;
It is your responsibility to:&lt;br /&gt;
* generate the file&#039;s contenthash (if it is not provided);&lt;br /&gt;
* check whether an existing file with the same contenthash exists in the file system;&lt;br /&gt;
* ensure that the contenthash matches if there is a matching file; and&lt;br /&gt;
* copy the file to your file system; and&lt;br /&gt;
* ensure that file permissions are correct.&lt;br /&gt;
&lt;br /&gt;
==== add_string_to_pool ====&lt;br /&gt;
&lt;br /&gt;
Similar to &amp;lt;code&amp;gt;add_file_to_pool&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;add_string_to_pool&amp;lt;/code&amp;gt; function is responsible for storing the provided string content into your file system.&lt;br /&gt;
&lt;br /&gt;
==== copy_content_from_storedfile ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;copy_content_from_storedfile&amp;lt;/code&amp;gt; function is responsible for copying an existing file in the file system to a new local file.&lt;br /&gt;
&lt;br /&gt;
If you are using a local file system, you will likely just copy the file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
public function copy_content_from_storedfile(stored_file $file, $target) {&lt;br /&gt;
    return copy($this-&amp;gt;get_local_filepath_from_storedfile($file), $target);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, if you are implementing a remote file system, you can likely make certain performance improvements by downloading the file straight to the intended target:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
public function copy_content_from_storedfile(stored_file $file, $target) {&lt;br /&gt;
    if ($this-&amp;gt;is_readable_locally_from_storedfile($file, false)) {&lt;br /&gt;
        return copy($this-&amp;gt;get_local_filepath_from_storedfile($file), $target);&lt;br /&gt;
    } else {&lt;br /&gt;
        return $this-&amp;gt;fetch_local_copy($file-&amp;gt;get_contenthash(), $target);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== remove_file ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;remove_file&amp;lt;/code&amp;gt; function is responsible for removing a file.&lt;br /&gt;
A file system &#039;&#039;&#039;may&#039;&#039;&#039; choose to implement it&#039;s own trash mechanism, as in the case of &amp;lt;code&amp;gt;filesystem_filedir&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cameron1729</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Output_functions&amp;diff=51182</id>
		<title>Output functions</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Output_functions&amp;diff=51182"/>
		<updated>2016-11-28T08:33:30Z</updated>

		<summary type="html">&lt;p&gt;Cameron1729: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tries to explain a bit how dynamic data should be sent from Moodle to the browser in an organised and standard way. Obviously it&#039;s possible to have your own output methods but, thinking that you are going to share your code (yep, this is an OpenSource project!) and in the collaborative way we try to build and maintain the system every day, it would be really better to follow the basic guidelines explained below.&lt;br /&gt;
&lt;br /&gt;
By using them you will be helping to have better, more secure and readable code. Spend some minutes trying to understand them, please!&lt;br /&gt;
&lt;br /&gt;
Of course, these functions can be discussed, modified and new functions can arrive if there are some good reasons for it. Just discuss it in the [http://moodle.org/mod/forum/view.php?id=55 General developer forum] at [http://moodle.org moodle.org].&lt;br /&gt;
&lt;br /&gt;
For each of the functions below we&#039;ll try to explain when they should be used, explaining the most important parameters supported and their meaning. Let&#039;s review them!&lt;br /&gt;
&lt;br /&gt;
=== p() and s() ===&lt;br /&gt;
&lt;br /&gt;
 function s($var, $strip=false)&lt;br /&gt;
 function p($var, $strip=false)&lt;br /&gt;
&lt;br /&gt;
These functions share the same code so they will be explained together. The only difference is that s() returns the string while p() prints it directly.&lt;br /&gt;
&lt;br /&gt;
These functions should be used to:&lt;br /&gt;
&lt;br /&gt;
* print all the &#039;&#039;&#039;values of form fields&#039;&#039;&#039; like &amp;lt;nowiki&amp;gt;&amp;lt;input&amp;gt;&amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt; tags.&lt;br /&gt;
* to &#039;&#039;&#039;show plain (non html) text&#039;&#039;&#039; that has been introduced by the user (search string, quiz responses...).&lt;br /&gt;
* in general, all the &#039;&#039;&#039;dynamic data, not being html&#039;&#039;&#039;, that doesn&#039;t need to be cleaned nor processed by filters&lt;br /&gt;
&lt;br /&gt;
It is important not to use these functions for strings that contain html markup.&lt;br /&gt;
&lt;br /&gt;
The functions replace certain characters that would have special meaning in html ( &amp;lt;, &amp;gt;, &amp;quot;, &#039;, and &amp;amp;) by html entities so that they are displayed as intended. Note that even though the value of form fields printed with p() will have these characters converted to html entities, the submitted values will contain the original characters again.&lt;br /&gt;
&lt;br /&gt;
The key parameter for this function is:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;strip&#039;&#039;&#039;: it decides if we want to strip slashes from the string or no. By default it&#039;s &#039;false&#039; so no strip will be performed. We should set such parameter to &#039;true&#039; only when data to be processed isn&#039;t coming from database but from http requests (forms, links...).&lt;br /&gt;
&lt;br /&gt;
=== format_text() ===&lt;br /&gt;
&lt;br /&gt;
 function format_text($text, $format = FORMAT_MOODLE, $options = null, $courseid_do_not_use = null) &lt;br /&gt;
&lt;br /&gt;
This function should be used to:&lt;br /&gt;
&lt;br /&gt;
* print &#039;&#039;&#039;any html/plain/markdown/moodle text&#039;&#039;&#039;, needing any of the features below. Mainly used for long strings like posts, answers, glossary items...&lt;br /&gt;
&lt;br /&gt;
Note that this function is really &#039;&#039;&#039;heavy&#039;&#039;&#039; because it supports &#039;&#039;&#039;cleaning&#039;&#039;&#039; of dangerous contents, delegates processing to enabled &#039;&#039;&#039;content filter&#039;&#039;&#039;s, supports different &#039;&#039;&#039;formats&#039;&#039;&#039; of text (HTML, PLAIN, MARKDOWN, MOODLE) and performs a lot of &#039;&#039;&#039;automatic conversions&#039;&#039;&#039; like adding smilies, build links. Also, it includes a strong &#039;&#039;&#039;cache mechanism&#039;&#039;&#039; (DB based) that will alleviate the server from a lot of work processing the same texts time and again.&lt;br /&gt;
&lt;br /&gt;
Some interesting parameters for this function are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;format&#039;&#039;&#039;: To tell the function about how the data has been entered. It defaults to FORMAT_MOODLE that is a cool format to process plain text because it features automatic link conversion, smilies and good conversion to html output. Other formats are FORMAT_HTML, FORMAT_PLAIN, FORMAT_MARKDOWN. See [[Formatting options]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;options&#039;&#039;&#039;: Here we can specify how we want the process to be performed. You only need to define them if they are different from the default value assumed. Main options are:&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;noclean&#039;&#039;&#039;: To decide if we want to skip the clean-up of text, &#039;&#039;&#039;un-protecting us&#039;&#039;&#039; from attacks and other security flaws (defaults to false, so protection is enabled. You &#039;&#039;&#039;shouldn&#039;t set it to true ever&#039;&#039;&#039; unless you are 200% sure that only controlled users can edit it (mainly admins). &#039;&#039;&#039;Never use it for general text places&#039;&#039;&#039; (posts...) or you will be, sooner or later, attacked! Note that this option is ignored for FORMAT_PLAIN, the text is never cleaned.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;trusted&#039;&#039;&#039;: Indicates that this content is trusted and does not need clean-up (but only if $CFG-&amp;gt;enabletrusttext is true). This argument is ignored if &#039;noclean&#039; is specified.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;filter&#039;&#039;&#039;: To decide if you want to allow filters to process the text (defaults to true). This is ignored by FORMAT_PLAIN for which filters are never applied.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;context&#039;&#039;&#039;: If text is filtered (and this happens by default), it is very important to specify context (id or object) for applying filters. If context is not specified it will be taken from $PAGE-&amp;gt;context and may potentially result in displaying the same text differently on different pages. For example all module-related information should have module context even when it appears in course-level reports, all course-related information such as name and description should have course context even when they are displayed on front page or system pages.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;para&#039;&#039;&#039;: To decide if you want every paragraph automatically enclosed between html paragraph tags (&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;...&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;) (defaults to true). This option only applies to FORMAT_MOODLE.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;newlines&#039;&#039;&#039;: To decide if linefeeds in text should be converted to html newlines (&amp;lt;nowiki&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/nowiki&amp;gt;) (defaults to true). This option only applies to FORMAT_MOODLE.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;nocache&#039;&#039;&#039;: If true the string will not be cached and will be formatted every call. Default false.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;overflowdiv &#039;&#039;&#039;: If set to true the formatted text will be encased in a div with the class no-overflow before being returned. Default false.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;allowid&#039;&#039;&#039; : If true then id attributes will not be removed, even when using htmlpurifier. Default false.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;blanktarget&#039;&#039;&#039; : If true all &amp;lt;a&amp;gt; tags will have target=&amp;quot;_blank&amp;quot; added unless target is explicitly specified. Default false.&lt;br /&gt;
* &#039;&#039;&#039;courseid_do_not_use&#039;&#039;&#039;: This parameter was earlier used to help applying filters but now is replaced with more precise $options-&amp;gt;context, see above&lt;br /&gt;
&lt;br /&gt;
=== format_string() ===&lt;br /&gt;
&lt;br /&gt;
 function format_string ($string, $striplinks = true, $options = null )&lt;br /&gt;
&lt;br /&gt;
This function should be used to:&lt;br /&gt;
&lt;br /&gt;
* print &#039;&#039;&#039;short strings (non html) that need filter processing&#039;&#039;&#039; (activity titles, post subjects, glossary concepts...).&lt;br /&gt;
&lt;br /&gt;
All enabled &#039;&#039;&#039;heading filters&#039;&#039;&#039; will be applied to the string.&lt;br /&gt;
&lt;br /&gt;
Please note that this function is basically one stripped version of the full format_text() function detailed above and &#039;&#039;&#039;it doesn&#039;t offer any of its options or protections&#039;&#039;&#039;. It simply filters the strings and returns the result, so we must ensure that text being processed has been properly cleaned at input time, using the proper xxx_param() functions.&lt;br /&gt;
&lt;br /&gt;
Some interesting parameters for this function are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;striplinks&#039;&#039;&#039;: To decide if, after the text has been processed by filters, we must delete any link from the result text. Used when we want to show the text inside menus, page titles... (defaults to true).&lt;br /&gt;
* &#039;&#039;&#039;options&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;context&#039;&#039;&#039;: Context (id or object) for applying filters. If context is not specified it will be taken from $PAGE-&amp;gt;context and may potentially result in displaying the same text differently on different pages. For example all module-related information should have module context even when it appears in course-level reports, all course-related informatin such as name and description should have course context even when they are displayed on front page or system pages.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;escape&#039;&#039;&#039;: To decide if you want to escape HTML entities. True by default.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;filter&#039;&#039;&#039;: To decide if you want to allow filters to process the text (defaults to true). This is ignored by FORMAT_PLAIN for which filters are never applied.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: in earlier versions of Moodle the third argument was integer $courseid. It is still supported for legacy - if the third argument is an integer instead of array or object it is considered to be course id and is this course&#039;s context is passed to the filters being applied.&lt;br /&gt;
&lt;br /&gt;
=== print_textarea() ===&lt;br /&gt;
&lt;br /&gt;
 function print_textarea($usehtmleditor, $rows, $cols, $width, &lt;br /&gt;
                        $height, $name, $value=&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;, $courseid=0, $return=false)&lt;br /&gt;
&lt;br /&gt;
This function should be used to:&lt;br /&gt;
&lt;br /&gt;
* display &amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt; fields when we want to allow users (based in their preferences and browser capabilities) &#039;&#039;&#039;to use the visual HTML editor&#039;&#039;&#039; instead of one standard &#039;plain&#039; area.&lt;br /&gt;
&lt;br /&gt;
Some interesting parameters for this function are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;usehtmleditor&#039;&#039;&#039;: to decide if the HTML editor must be showed. The value of this parameter must be calculated by the can_use_html_editor() function.&lt;br /&gt;
* &#039;&#039;&#039;rows, cols&#039;&#039;&#039;: to be applied if the standard textarea is showed.&lt;br /&gt;
* &#039;&#039;&#039;width, height&#039;&#039;&#039;: to be applied if the HTML editor is used.&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039;: the name of the field that will contain the text once the form is submitted.&lt;br /&gt;
* &#039;&#039;&#039;value&#039;&#039;&#039;: the initial value of the textarea.&lt;br /&gt;
* &#039;&#039;&#039;courseid&#039;&#039;&#039;: This parameter should be passed always to help the editor to know where it is working. This parameter will become less and less important Moodle was 100% of the current course using some session or global variable (it&#039;s one work in progress just now) but, for now, it&#039;s recommended to set it always in the function call.&lt;br /&gt;
* &#039;&#039;&#039;return&#039;&#039;&#039;: to decide if the generated html code must be returned to the caller (true) or printed directly (false). Defaults to false.&lt;/div&gt;</summary>
		<author><name>Cameron1729</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Output_functions&amp;diff=51181</id>
		<title>Output functions</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Output_functions&amp;diff=51181"/>
		<updated>2016-11-28T08:28:56Z</updated>

		<summary type="html">&lt;p&gt;Cameron1729: Add new options element.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tries to explain a bit how dynamic data should be sent from Moodle to the browser in an organised and standard way. Obviously it&#039;s possible to have your own output methods but, thinking that you are going to share your code (yep, this is an OpenSource project!) and in the collaborative way we try to build and maintain the system every day, it would be really better to follow the basic guidelines explained below.&lt;br /&gt;
&lt;br /&gt;
By using them you will be helping to have better, more secure and readable code. Spend some minutes trying to understand them, please!&lt;br /&gt;
&lt;br /&gt;
Of course, these functions can be discussed, modified and new functions can arrive if there are some good reasons for it. Just discuss it in the [http://moodle.org/mod/forum/view.php?id=55 General developer forum] at [http://moodle.org moodle.org].&lt;br /&gt;
&lt;br /&gt;
For each of the functions below we&#039;ll try to explain when they should be used, explaining the most important parameters supported and their meaning. Let&#039;s review them!&lt;br /&gt;
&lt;br /&gt;
=== p() and s() ===&lt;br /&gt;
&lt;br /&gt;
 function s($var, $strip=false)&lt;br /&gt;
 function p($var, $strip=false)&lt;br /&gt;
&lt;br /&gt;
These functions share the same code so they will be explained together. The only difference is that s() returns the string while p() prints it directly.&lt;br /&gt;
&lt;br /&gt;
These functions should be used to:&lt;br /&gt;
&lt;br /&gt;
* print all the &#039;&#039;&#039;values of form fields&#039;&#039;&#039; like &amp;lt;nowiki&amp;gt;&amp;lt;input&amp;gt;&amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt; tags.&lt;br /&gt;
* to &#039;&#039;&#039;show plain (non html) text&#039;&#039;&#039; that has been introduced by the user (search string, quiz responses...).&lt;br /&gt;
* in general, all the &#039;&#039;&#039;dynamic data, not being html&#039;&#039;&#039;, that doesn&#039;t need to be cleaned nor processed by filters&lt;br /&gt;
&lt;br /&gt;
It is important not to use these functions for strings that contain html markup.&lt;br /&gt;
&lt;br /&gt;
The functions replace certain characters that would have special meaning in html ( &amp;lt;, &amp;gt;, &amp;quot;, &#039;, and &amp;amp;) by html entities so that they are displayed as intended. Note that even though the value of form fields printed with p() will have these characters converted to html entities, the submitted values will contain the original characters again.&lt;br /&gt;
&lt;br /&gt;
The key parameter for this function is:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;strip&#039;&#039;&#039;: it decides if we want to strip slashes from the string or no. By default it&#039;s &#039;false&#039; so no strip will be performed. We should set such parameter to &#039;true&#039; only when data to be processed isn&#039;t coming from database but from http requests (forms, links...).&lt;br /&gt;
&lt;br /&gt;
=== format_text() ===&lt;br /&gt;
&lt;br /&gt;
 function format_text($text, $format = FORMAT_MOODLE, $options = null, $courseid_do_not_use = null) &lt;br /&gt;
&lt;br /&gt;
This function should be used to:&lt;br /&gt;
&lt;br /&gt;
* print &#039;&#039;&#039;any html/plain/markdown/moodle text&#039;&#039;&#039;, needing any of the features below. Mainly used for long strings like posts, answers, glossary items...&lt;br /&gt;
&lt;br /&gt;
Note that this function is really &#039;&#039;&#039;heavy&#039;&#039;&#039; because it supports &#039;&#039;&#039;cleaning&#039;&#039;&#039; of dangerous contents, delegates processing to enabled &#039;&#039;&#039;content filter&#039;&#039;&#039;s, supports different &#039;&#039;&#039;formats&#039;&#039;&#039; of text (HTML, PLAIN, MARKDOWN, MOODLE) and performs a lot of &#039;&#039;&#039;automatic conversions&#039;&#039;&#039; like adding smilies, build links. Also, it includes a strong &#039;&#039;&#039;cache mechanism&#039;&#039;&#039; (DB based) that will alleviate the server from a lot of work processing the same texts time and again.&lt;br /&gt;
&lt;br /&gt;
Some interesting parameters for this function are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;format&#039;&#039;&#039;: To tell the function about how the data has been entered. It defaults to FORMAT_MOODLE that is a cool format to process plain text because it features automatic link conversion, smilies and good conversion to html output. Other formats are FORMAT_HTML, FORMAT_PLAIN, FORMAT_MARKDOWN. See [[Formatting options]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;options&#039;&#039;&#039;: Here we can specify how we want the process to be performed. You only need to define them if they are different from the default value assumed. Main options are:&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;noclean&#039;&#039;&#039;: To decide if we want to skip the clean-up of text, &#039;&#039;&#039;un-protecting us&#039;&#039;&#039; from attacks and other security flaws (defaults to false, so protection is enabled. You &#039;&#039;&#039;shouldn&#039;t set it to true ever&#039;&#039;&#039; unless you are 200% sure that only controlled users can edit it (mainly admins). &#039;&#039;&#039;Never use it for general text places&#039;&#039;&#039; (posts...) or you will be, sooner or later, attacked! Note that this option is ignored for FORMAT_PLAIN, the text is never cleaned.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;trusted&#039;&#039;&#039;: Indicates that this content is trusted and does not need clean-up (but only if $CFG-&amp;gt;enabletrusttext is true). This argument is ignored if &#039;noclean&#039; is specified.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;filter&#039;&#039;&#039;: To decide if you want to allow filters to process the text (defaults to true). This is ignored by FORMAT_PLAIN for which filters are never applied.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;context&#039;&#039;&#039;: If text is filtered (and this happens by default), it is very important to specify context (id or object) for applying filters. If context is not specified it will be taken from $PAGE-&amp;gt;context and may potentially result in displaying the same text differently on different pages. For example all module-related information should have module context even when it appears in course-level reports, all course-related information such as name and description should have course context even when they are displayed on front page or system pages.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;para&#039;&#039;&#039;: To decide if you want every paragraph automatically enclosed between html paragraph tags (&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;...&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;) (defaults to true). This option only applies to FORMAT_MOODLE.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;newlines&#039;&#039;&#039;: To decide if linefeeds in text should be converted to html newlines (&amp;lt;nowiki&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/nowiki&amp;gt;) (defaults to true). This option only applies to FORMAT_MOODLE.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;nocache&#039;&#039;&#039;: If true the string will not be cached and will be formatted every call. Default false.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;overflowdiv &#039;&#039;&#039;: If set to true the formatted text will be encased in a div with the class no-overflow before being returned. Default false.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;allowid&#039;&#039;&#039; : If true then id attributes will not be removed, even when using htmlpurifier. Default false.&lt;br /&gt;
* &#039;&#039;&#039;courseid_do_not_use&#039;&#039;&#039;: This parameter was earlier used to help applying filters but now is replaced with more precise $options-&amp;gt;context, see above&lt;br /&gt;
&lt;br /&gt;
=== format_string() ===&lt;br /&gt;
&lt;br /&gt;
 function format_string ($string, $striplinks = true, $options = null )&lt;br /&gt;
&lt;br /&gt;
This function should be used to:&lt;br /&gt;
&lt;br /&gt;
* print &#039;&#039;&#039;short strings (non html) that need filter processing&#039;&#039;&#039; (activity titles, post subjects, glossary concepts...).&lt;br /&gt;
&lt;br /&gt;
All enabled &#039;&#039;&#039;heading filters&#039;&#039;&#039; will be applied to the string.&lt;br /&gt;
&lt;br /&gt;
Please note that this function is basically one stripped version of the full format_text() function detailed above and &#039;&#039;&#039;it doesn&#039;t offer any of its options or protections&#039;&#039;&#039;. It simply filters the strings and returns the result, so we must ensure that text being processed has been properly cleaned at input time, using the proper xxx_param() functions.&lt;br /&gt;
&lt;br /&gt;
Some interesting parameters for this function are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;striplinks&#039;&#039;&#039;: To decide if, after the text has been processed by filters, we must delete any link from the result text. Used when we want to show the text inside menus, page titles... (defaults to true).&lt;br /&gt;
* &#039;&#039;&#039;options&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;context&#039;&#039;&#039;: Context (id or object) for applying filters. If context is not specified it will be taken from $PAGE-&amp;gt;context and may potentially result in displaying the same text differently on different pages. For example all module-related information should have module context even when it appears in course-level reports, all course-related informatin such as name and description should have course context even when they are displayed on front page or system pages.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;escape&#039;&#039;&#039;: To decide if you want to escape HTML entities. True by default.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;filter&#039;&#039;&#039;: To decide if you want to allow filters to process the text (defaults to true). This is ignored by FORMAT_PLAIN for which filters are never applied.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: in earlier versions of Moodle the third argument was integer $courseid. It is still supported for legacy - if the third argument is an integer instead of array or object it is considered to be course id and is this course&#039;s context is passed to the filters being applied.&lt;br /&gt;
&lt;br /&gt;
=== print_textarea() ===&lt;br /&gt;
&lt;br /&gt;
 function print_textarea($usehtmleditor, $rows, $cols, $width, &lt;br /&gt;
                        $height, $name, $value=&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;, $courseid=0, $return=false)&lt;br /&gt;
&lt;br /&gt;
This function should be used to:&lt;br /&gt;
&lt;br /&gt;
* display &amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt; fields when we want to allow users (based in their preferences and browser capabilities) &#039;&#039;&#039;to use the visual HTML editor&#039;&#039;&#039; instead of one standard &#039;plain&#039; area.&lt;br /&gt;
&lt;br /&gt;
Some interesting parameters for this function are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;usehtmleditor&#039;&#039;&#039;: to decide if the HTML editor must be showed. The value of this parameter must be calculated by the can_use_html_editor() function.&lt;br /&gt;
* &#039;&#039;&#039;rows, cols&#039;&#039;&#039;: to be applied if the standard textarea is showed.&lt;br /&gt;
* &#039;&#039;&#039;width, height&#039;&#039;&#039;: to be applied if the HTML editor is used.&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039;: the name of the field that will contain the text once the form is submitted.&lt;br /&gt;
* &#039;&#039;&#039;value&#039;&#039;&#039;: the initial value of the textarea.&lt;br /&gt;
* &#039;&#039;&#039;courseid&#039;&#039;&#039;: This parameter should be passed always to help the editor to know where it is working. This parameter will become less and less important Moodle was 100% of the current course using some session or global variable (it&#039;s one work in progress just now) but, for now, it&#039;s recommended to set it always in the function call.&lt;br /&gt;
* &#039;&#039;&#039;return&#039;&#039;&#039;: to decide if the generated html code must be returned to the caller (true) or printed directly (false). Defaults to false.&lt;/div&gt;</summary>
		<author><name>Cameron1729</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Output_functions&amp;diff=50595</id>
		<title>Output functions</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Output_functions&amp;diff=50595"/>
		<updated>2016-07-06T09:24:10Z</updated>

		<summary type="html">&lt;p&gt;Cameron1729: /* format_string() */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tries to explain a bit how dynamic data should be sent from Moodle to the browser in an organised and standard way. Obviously it&#039;s possible to have your own output methods but, thinking that you are going to share your code (yep, this is an OpenSource project!) and in the collaborative way we try to build and maintain the system every day, it would be really better to follow the basic guidelines explained below.&lt;br /&gt;
&lt;br /&gt;
By using them you will be helping to have better, more secure and readable code. Spend some minutes trying to understand them, please!&lt;br /&gt;
&lt;br /&gt;
Of course, these functions can be discussed, modified and new functions can arrive if there are some good reasons for it. Just discuss it in the [http://moodle.org/mod/forum/view.php?id=55 General developer forum] at [http://moodle.org moodle.org].&lt;br /&gt;
&lt;br /&gt;
For each of the functions below we&#039;ll try to explain when they should be used, explaining the most important parameters supported and their meaning. Let&#039;s review them!&lt;br /&gt;
&lt;br /&gt;
=== p() and s() ===&lt;br /&gt;
&lt;br /&gt;
 function s($var, $strip=false)&lt;br /&gt;
 function p($var, $strip=false)&lt;br /&gt;
&lt;br /&gt;
These functions share the same code so they will be explained together. The only difference is that s() returns the string while p() prints it directly.&lt;br /&gt;
&lt;br /&gt;
These functions should be used to:&lt;br /&gt;
&lt;br /&gt;
* print all the &#039;&#039;&#039;values of form fields&#039;&#039;&#039; like &amp;lt;nowiki&amp;gt;&amp;lt;input&amp;gt;&amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt; tags.&lt;br /&gt;
* to &#039;&#039;&#039;show plain (non html) text&#039;&#039;&#039; that has been introduced by the user (search string, quiz responses...).&lt;br /&gt;
* in general, all the &#039;&#039;&#039;dynamic data, not being html&#039;&#039;&#039;, that doesn&#039;t need to be cleaned nor processed by filters&lt;br /&gt;
&lt;br /&gt;
It is important not to use these functions for strings that contain html markup.&lt;br /&gt;
&lt;br /&gt;
The functions replace certain characters that would have special meaning in html ( &amp;lt;, &amp;gt;, &amp;quot;, &#039;, and &amp;amp;) by html entities so that they are displayed as intended. Note that even though the value of form fields printed with p() will have these characters converted to html entities, the submitted values will contain the original characters again.&lt;br /&gt;
&lt;br /&gt;
The key parameter for this function is:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;strip&#039;&#039;&#039;: it decides if we want to strip slashes from the string or no. By default it&#039;s &#039;false&#039; so no strip will be performed. We should set such parameter to &#039;true&#039; only when data to be processed isn&#039;t coming from database but from http requests (forms, links...).&lt;br /&gt;
&lt;br /&gt;
=== format_text() ===&lt;br /&gt;
&lt;br /&gt;
 function format_text($text, $format = FORMAT_MOODLE, $options = null, $courseid_do_not_use = null) &lt;br /&gt;
&lt;br /&gt;
This function should be used to:&lt;br /&gt;
&lt;br /&gt;
* print &#039;&#039;&#039;any html/plain/markdown/moodle text&#039;&#039;&#039;, needing any of the features below. Mainly used for long strings like posts, answers, glossary items...&lt;br /&gt;
&lt;br /&gt;
Note that this function is really &#039;&#039;&#039;heavy&#039;&#039;&#039; because it supports &#039;&#039;&#039;cleaning&#039;&#039;&#039; of dangerous contents, delegates processing to enabled &#039;&#039;&#039;content filter&#039;&#039;&#039;s, supports different &#039;&#039;&#039;formats&#039;&#039;&#039; of text (HTML, PLAIN, MARKDOWN, MOODLE) and performs a lot of &#039;&#039;&#039;automatic conversions&#039;&#039;&#039; like adding smilies, build links. Also, it includes a strong &#039;&#039;&#039;cache mechanism&#039;&#039;&#039; (DB based) that will alleviate the server from a lot of work processing the same texts time and again.&lt;br /&gt;
&lt;br /&gt;
Some interesting parameters for this function are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;format&#039;&#039;&#039;: To tell the function about how the data has been entered. It defaults to FORMAT_MOODLE that is a cool format to process plain text because it features automatic link conversion, smilies and good conversion to html output. Other formats are FORMAT_HTML, FORMAT_PLAIN, FORMAT_MARKDOWN. See [[Formatting options]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;options&#039;&#039;&#039;: Here we can specify how we want the process to be performed. You only need to define them if they are different from the default value assumed. Main options are:&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;noclean&#039;&#039;&#039;: To decide if we want to skip the clean-up of text, &#039;&#039;&#039;un-protecting us&#039;&#039;&#039; from attacks and other security flaws (defaults to false, so protection is enabled. You &#039;&#039;&#039;shouldn&#039;t set it to true ever&#039;&#039;&#039; unless you are 200% sure that only controlled users can edit it (mainly admins). &#039;&#039;&#039;Never use it for general text places&#039;&#039;&#039; (posts...) or you will be, sooner or later, attacked! Note that this option is ignored for FORMAT_PLAIN, the text is never cleaned.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;trusted&#039;&#039;&#039;: Indicates that this content is trusted and does not need clean-up (but only if $CFG-&amp;gt;enabletrusttext is true). This argument is ignored if &#039;noclean&#039; is specified.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;filter&#039;&#039;&#039;: To decide if you want to allow filters to process the text (defaults to true). This is ignored by FORMAT_PLAIN for which filters are never applied.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;context&#039;&#039;&#039;: If text is filtered (and this happens by default), it is very important to specify context (id or object) for applying filters. If context is not specified it will be taken from $PAGE-&amp;gt;context and may potentially result in displaying the same text differently on different pages. For example all module-related information should have module context even when it appears in course-level reports, all course-related information such as name and description should have course context even when they are displayed on front page or system pages.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;para&#039;&#039;&#039;: To decide if you want every paragraph automatically enclosed between html paragraph tags (&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;...&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;) (defaults to true). This option only applies to FORMAT_MOODLE.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;newlines&#039;&#039;&#039;: To decide if linefeeds in text should be converted to html newlines (&amp;lt;nowiki&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/nowiki&amp;gt;) (defaults to true). This option only applies to FORMAT_MOODLE.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;nocache&#039;&#039;&#039;: If true the string will not be cached and will be formatted every call. Default false.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;overflowdiv &#039;&#039;&#039;: If set to true the formatted text will be encased in a div with the class no-overflow before being returned. Default false.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;allowid&#039;&#039;&#039; : If true then id attributes will not be removed, even when using htmlpurifier. Default false.&lt;br /&gt;
* &#039;&#039;&#039;courseid_do_not_use&#039;&#039;&#039;: This parameter was earlier used to help applying filters but now is replaced with more precise $options-&amp;gt;context, see above&lt;br /&gt;
&lt;br /&gt;
=== format_string() ===&lt;br /&gt;
&lt;br /&gt;
 function format_string ($string, $striplinks = true, $options = null )&lt;br /&gt;
&lt;br /&gt;
This function should be used to:&lt;br /&gt;
&lt;br /&gt;
* print &#039;&#039;&#039;short strings (non html) that need filter processing&#039;&#039;&#039; (activity titles, post subjects, glossary concepts...).&lt;br /&gt;
&lt;br /&gt;
All enabled &#039;&#039;&#039;heading filters&#039;&#039;&#039; will be applied to the string.&lt;br /&gt;
&lt;br /&gt;
Please note that this function is basically one stripped version of the full format_text() function detailed above and &#039;&#039;&#039;it doesn&#039;t offer any of its options or protections&#039;&#039;&#039;. It simply filters the strings and returns the result, so we must ensure that text being processed has been properly cleaned at input time, using the proper xxx_param() functions.&lt;br /&gt;
&lt;br /&gt;
Some interesting parameters for this function are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;striplinks&#039;&#039;&#039;: To decide if, after the text has been processed by filters, we must delete any link from the result text. Used when we want to show the text inside menus, page titles... (defaults to true).&lt;br /&gt;
* &#039;&#039;&#039;options&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;context&#039;&#039;&#039;: Context (id or object) for applying filters. If context is not specified it will be taken from $PAGE-&amp;gt;context and may potentially result in displaying the same text differently on different pages. For example all module-related information should have module context even when it appears in course-level reports, all course-related informatin such as name and description should have course context even when they are displayed on front page or system pages.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;filter&#039;&#039;&#039;: To decide if you want to allow filters to process the text (defaults to true). This is ignored by FORMAT_PLAIN for which filters are never applied.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: in earlier versions of Moodle the third argument was integer $courseid. It is still supported for legacy - if the third argument is an integer instead of array or object it is considered to be course id and is this course&#039;s context is passed to the filters being applied.&lt;br /&gt;
&lt;br /&gt;
=== print_textarea() ===&lt;br /&gt;
&lt;br /&gt;
 function print_textarea($usehtmleditor, $rows, $cols, $width, &lt;br /&gt;
                        $height, $name, $value=&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;, $courseid=0, $return=false)&lt;br /&gt;
&lt;br /&gt;
This function should be used to:&lt;br /&gt;
&lt;br /&gt;
* display &amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt; fields when we want to allow users (based in their preferences and browser capabilities) &#039;&#039;&#039;to use the visual HTML editor&#039;&#039;&#039; instead of one standard &#039;plain&#039; area.&lt;br /&gt;
&lt;br /&gt;
Some interesting parameters for this function are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;usehtmleditor&#039;&#039;&#039;: to decide if the HTML editor must be showed. The value of this parameter must be calculated by the can_use_html_editor() function.&lt;br /&gt;
* &#039;&#039;&#039;rows, cols&#039;&#039;&#039;: to be applied if the standard textarea is showed.&lt;br /&gt;
* &#039;&#039;&#039;width, height&#039;&#039;&#039;: to be applied if the HTML editor is used.&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039;: the name of the field that will contain the text once the form is submitted.&lt;br /&gt;
* &#039;&#039;&#039;value&#039;&#039;&#039;: the initial value of the textarea.&lt;br /&gt;
* &#039;&#039;&#039;courseid&#039;&#039;&#039;: This parameter should be passed always to help the editor to know where it is working. This parameter will become less and less important Moodle was 100% of the current course using some session or global variable (it&#039;s one work in progress just now) but, for now, it&#039;s recommended to set it always in the function call.&lt;br /&gt;
* &#039;&#039;&#039;return&#039;&#039;&#039;: to decide if the generated html code must be returned to the caller (true) or printed directly (false). Defaults to false.&lt;/div&gt;</summary>
		<author><name>Cameron1729</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Output_functions&amp;diff=50594</id>
		<title>Output functions</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Output_functions&amp;diff=50594"/>
		<updated>2016-07-06T09:23:46Z</updated>

		<summary type="html">&lt;p&gt;Cameron1729: /* format_string() */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tries to explain a bit how dynamic data should be sent from Moodle to the browser in an organised and standard way. Obviously it&#039;s possible to have your own output methods but, thinking that you are going to share your code (yep, this is an OpenSource project!) and in the collaborative way we try to build and maintain the system every day, it would be really better to follow the basic guidelines explained below.&lt;br /&gt;
&lt;br /&gt;
By using them you will be helping to have better, more secure and readable code. Spend some minutes trying to understand them, please!&lt;br /&gt;
&lt;br /&gt;
Of course, these functions can be discussed, modified and new functions can arrive if there are some good reasons for it. Just discuss it in the [http://moodle.org/mod/forum/view.php?id=55 General developer forum] at [http://moodle.org moodle.org].&lt;br /&gt;
&lt;br /&gt;
For each of the functions below we&#039;ll try to explain when they should be used, explaining the most important parameters supported and their meaning. Let&#039;s review them!&lt;br /&gt;
&lt;br /&gt;
=== p() and s() ===&lt;br /&gt;
&lt;br /&gt;
 function s($var, $strip=false)&lt;br /&gt;
 function p($var, $strip=false)&lt;br /&gt;
&lt;br /&gt;
These functions share the same code so they will be explained together. The only difference is that s() returns the string while p() prints it directly.&lt;br /&gt;
&lt;br /&gt;
These functions should be used to:&lt;br /&gt;
&lt;br /&gt;
* print all the &#039;&#039;&#039;values of form fields&#039;&#039;&#039; like &amp;lt;nowiki&amp;gt;&amp;lt;input&amp;gt;&amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt; tags.&lt;br /&gt;
* to &#039;&#039;&#039;show plain (non html) text&#039;&#039;&#039; that has been introduced by the user (search string, quiz responses...).&lt;br /&gt;
* in general, all the &#039;&#039;&#039;dynamic data, not being html&#039;&#039;&#039;, that doesn&#039;t need to be cleaned nor processed by filters&lt;br /&gt;
&lt;br /&gt;
It is important not to use these functions for strings that contain html markup.&lt;br /&gt;
&lt;br /&gt;
The functions replace certain characters that would have special meaning in html ( &amp;lt;, &amp;gt;, &amp;quot;, &#039;, and &amp;amp;) by html entities so that they are displayed as intended. Note that even though the value of form fields printed with p() will have these characters converted to html entities, the submitted values will contain the original characters again.&lt;br /&gt;
&lt;br /&gt;
The key parameter for this function is:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;strip&#039;&#039;&#039;: it decides if we want to strip slashes from the string or no. By default it&#039;s &#039;false&#039; so no strip will be performed. We should set such parameter to &#039;true&#039; only when data to be processed isn&#039;t coming from database but from http requests (forms, links...).&lt;br /&gt;
&lt;br /&gt;
=== format_text() ===&lt;br /&gt;
&lt;br /&gt;
 function format_text($text, $format = FORMAT_MOODLE, $options = null, $courseid_do_not_use = null) &lt;br /&gt;
&lt;br /&gt;
This function should be used to:&lt;br /&gt;
&lt;br /&gt;
* print &#039;&#039;&#039;any html/plain/markdown/moodle text&#039;&#039;&#039;, needing any of the features below. Mainly used for long strings like posts, answers, glossary items...&lt;br /&gt;
&lt;br /&gt;
Note that this function is really &#039;&#039;&#039;heavy&#039;&#039;&#039; because it supports &#039;&#039;&#039;cleaning&#039;&#039;&#039; of dangerous contents, delegates processing to enabled &#039;&#039;&#039;content filter&#039;&#039;&#039;s, supports different &#039;&#039;&#039;formats&#039;&#039;&#039; of text (HTML, PLAIN, MARKDOWN, MOODLE) and performs a lot of &#039;&#039;&#039;automatic conversions&#039;&#039;&#039; like adding smilies, build links. Also, it includes a strong &#039;&#039;&#039;cache mechanism&#039;&#039;&#039; (DB based) that will alleviate the server from a lot of work processing the same texts time and again.&lt;br /&gt;
&lt;br /&gt;
Some interesting parameters for this function are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;format&#039;&#039;&#039;: To tell the function about how the data has been entered. It defaults to FORMAT_MOODLE that is a cool format to process plain text because it features automatic link conversion, smilies and good conversion to html output. Other formats are FORMAT_HTML, FORMAT_PLAIN, FORMAT_MARKDOWN. See [[Formatting options]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;options&#039;&#039;&#039;: Here we can specify how we want the process to be performed. You only need to define them if they are different from the default value assumed. Main options are:&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;noclean&#039;&#039;&#039;: To decide if we want to skip the clean-up of text, &#039;&#039;&#039;un-protecting us&#039;&#039;&#039; from attacks and other security flaws (defaults to false, so protection is enabled. You &#039;&#039;&#039;shouldn&#039;t set it to true ever&#039;&#039;&#039; unless you are 200% sure that only controlled users can edit it (mainly admins). &#039;&#039;&#039;Never use it for general text places&#039;&#039;&#039; (posts...) or you will be, sooner or later, attacked! Note that this option is ignored for FORMAT_PLAIN, the text is never cleaned.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;trusted&#039;&#039;&#039;: Indicates that this content is trusted and does not need clean-up (but only if $CFG-&amp;gt;enabletrusttext is true). This argument is ignored if &#039;noclean&#039; is specified.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;filter&#039;&#039;&#039;: To decide if you want to allow filters to process the text (defaults to true). This is ignored by FORMAT_PLAIN for which filters are never applied.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;context&#039;&#039;&#039;: If text is filtered (and this happens by default), it is very important to specify context (id or object) for applying filters. If context is not specified it will be taken from $PAGE-&amp;gt;context and may potentially result in displaying the same text differently on different pages. For example all module-related information should have module context even when it appears in course-level reports, all course-related information such as name and description should have course context even when they are displayed on front page or system pages.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;para&#039;&#039;&#039;: To decide if you want every paragraph automatically enclosed between html paragraph tags (&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;...&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;) (defaults to true). This option only applies to FORMAT_MOODLE.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;newlines&#039;&#039;&#039;: To decide if linefeeds in text should be converted to html newlines (&amp;lt;nowiki&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/nowiki&amp;gt;) (defaults to true). This option only applies to FORMAT_MOODLE.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;nocache&#039;&#039;&#039;: If true the string will not be cached and will be formatted every call. Default false.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;overflowdiv &#039;&#039;&#039;: If set to true the formatted text will be encased in a div with the class no-overflow before being returned. Default false.&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;allowid&#039;&#039;&#039; : If true then id attributes will not be removed, even when using htmlpurifier. Default false.&lt;br /&gt;
* &#039;&#039;&#039;courseid_do_not_use&#039;&#039;&#039;: This parameter was earlier used to help applying filters but now is replaced with more precise $options-&amp;gt;context, see above&lt;br /&gt;
&lt;br /&gt;
=== format_string() ===&lt;br /&gt;
&lt;br /&gt;
 function format_string ($string, $striplinks = true, $options = null )&lt;br /&gt;
&lt;br /&gt;
This function should be used to:&lt;br /&gt;
&lt;br /&gt;
* print &#039;&#039;&#039;short strings (non html) that need filter processing&#039;&#039;&#039; (activity titles, post subjects, glossary concepts...).&lt;br /&gt;
&lt;br /&gt;
All enabled &#039;&#039;&#039;heading filters&#039;&#039;&#039; will be applied to the string.&lt;br /&gt;
&lt;br /&gt;
Please note that this function is basically one stripped version of the full format_text() function detailed above and &#039;&#039;&#039;it doesn&#039;t offer any of its options or protections&#039;&#039;&#039;. It simply filters the strings and returns the result, so we must ensure that text being processed has been properly cleaned at input time, using the proper xxx_param() functions.&lt;br /&gt;
&lt;br /&gt;
Some interesting parameters for this function are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;striplinks&#039;&#039;&#039;: To decide if, after the text has been processed by filters, we must delete any link from the result text. Used when we want to show the text inside menus, page titles... (defaults to true).&lt;br /&gt;
* &#039;&#039;&#039;options&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;options-&amp;gt;context&#039;&#039;&#039;: Context (id or object) for applying filters. If context is not specified it will be taken from $PAGE-&amp;gt;context and may potentially result in displaying the same text differently on different pages. For example all module-related information should have module context even when it appears in course-level reports, all course-related informatin such as name and description should have course context even when they are displayed on front page or system pages.&lt;br /&gt;
**&#039;&#039;options-&amp;gt;filter&#039;&#039;: To decide if you want to allow filters to process the text (defaults to true). This is ignored by FORMAT_PLAIN for which filters are never applied.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: in earlier versions of Moodle the third argument was integer $courseid. It is still supported for legacy - if the third argument is an integer instead of array or object it is considered to be course id and is this course&#039;s context is passed to the filters being applied.&lt;br /&gt;
&lt;br /&gt;
=== print_textarea() ===&lt;br /&gt;
&lt;br /&gt;
 function print_textarea($usehtmleditor, $rows, $cols, $width, &lt;br /&gt;
                        $height, $name, $value=&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;, $courseid=0, $return=false)&lt;br /&gt;
&lt;br /&gt;
This function should be used to:&lt;br /&gt;
&lt;br /&gt;
* display &amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt; fields when we want to allow users (based in their preferences and browser capabilities) &#039;&#039;&#039;to use the visual HTML editor&#039;&#039;&#039; instead of one standard &#039;plain&#039; area.&lt;br /&gt;
&lt;br /&gt;
Some interesting parameters for this function are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;usehtmleditor&#039;&#039;&#039;: to decide if the HTML editor must be showed. The value of this parameter must be calculated by the can_use_html_editor() function.&lt;br /&gt;
* &#039;&#039;&#039;rows, cols&#039;&#039;&#039;: to be applied if the standard textarea is showed.&lt;br /&gt;
* &#039;&#039;&#039;width, height&#039;&#039;&#039;: to be applied if the HTML editor is used.&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039;: the name of the field that will contain the text once the form is submitted.&lt;br /&gt;
* &#039;&#039;&#039;value&#039;&#039;&#039;: the initial value of the textarea.&lt;br /&gt;
* &#039;&#039;&#039;courseid&#039;&#039;&#039;: This parameter should be passed always to help the editor to know where it is working. This parameter will become less and less important Moodle was 100% of the current course using some session or global variable (it&#039;s one work in progress just now) but, for now, it&#039;s recommended to set it always in the function call.&lt;br /&gt;
* &#039;&#039;&#039;return&#039;&#039;&#039;: to decide if the generated html code must be returned to the caller (true) or printed directly (false). Defaults to false.&lt;/div&gt;</summary>
		<author><name>Cameron1729</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Web_service_API_functions&amp;diff=50138</id>
		<title>Web service API functions</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Web_service_API_functions&amp;diff=50138"/>
		<updated>2016-05-19T06:50:45Z</updated>

		<summary type="html">&lt;p&gt;Cameron1729: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle_2.0}}&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Color meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot;  | Implemented&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffdead;&amp;quot;  | Must be implemented&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffdfcd;&amp;quot;  | Suggested&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Web service protocols==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name !! Moodle Ver. !!  class=&amp;quot;unsortable&amp;quot; |Description !!  class=&amp;quot;unsortable&amp;quot; |CORS  !! |Issue&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot;  | REST (returning XML) || style=&amp;quot;background:#D4FFDF;&amp;quot;  | 2.0 || style=&amp;quot;background:#D4FFDF;&amp;quot;  | XML data accessed through a REST API (not restful) || Supported (3.0 and onwards) || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot;  | REST (returning JSON) || style=&amp;quot;background:#D4FFDF;&amp;quot;  | 2.2 || style=&amp;quot;background:#D4FFDF;&amp;quot;  | JSON data accessed through a REST API (not restful) || Supported (3.0 and onwards)|| MDL-29242&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffdfcd;&amp;quot;  | REST (returning JSONP) || style=&amp;quot;background:#ffdfcd;&amp;quot;  | 2.X || style=&amp;quot;background:#ffdfcd;&amp;quot;  | Would be very useful for client-side JavaScript ||  Not supported || MDL-29913&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffdfcd;&amp;quot;  |  JSON || style=&amp;quot;background:#ffdfcd;&amp;quot;  | 2.X || style=&amp;quot;background:#ffdfcd;&amp;quot;  | JSON server receives a JSON encoded params and return JSON encoded values. ||  Not supported || MDL-21341&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffdead;&amp;quot;  | SOAP|| style=&amp;quot;background:#ffdead;&amp;quot;  | 2.0 || style=&amp;quot;background:#ffdead;&amp;quot;  | Very important for interoperating with Java and .Net applications. There was a partial implementation JAVA/.Net in Moodle 2.0, but it does not work for anything but the most trivial functions.  It is fully working with PHP clients.||  Not supported || MDL-20804, MDL-28988, MDL-28989&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot;  | XMLRPC|| style=&amp;quot;background:#D4FFDF;&amp;quot;  | 2.0 || style=&amp;quot;background:#D4FFDF;&amp;quot;  | XML remote-procedure call. ||  Not supported || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Web service functions==&lt;br /&gt;
&lt;br /&gt;
=== Naming convention ===&lt;br /&gt;
&lt;br /&gt;
We updated (regularised) the naming convention in Moodle 2.2.  See MDL-29106 for those details.&lt;br /&gt;
&lt;br /&gt;
All functions should be named as follows:&lt;br /&gt;
&lt;br /&gt;
* wsfunction = fullcomponent_methodname  &lt;br /&gt;
* fullcomponent = [https://docs.moodle.org/dev/Frankenstyle frankenstyle] (eg core_xxxx or mod_xxx etc)&lt;br /&gt;
* methodname = verb_noun(s)&lt;br /&gt;
* verb = get|create|delete|update&lt;br /&gt;
* noun = moodle objects, usually plural (eg posts, discussions, users, courses etc)&lt;br /&gt;
&lt;br /&gt;
=== Core web service functions ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Area!! Moodle 2.2 name !! Moodle 2.0/2.1 name !! Introduced in !!  class=&amp;quot;unsortable&amp;quot; |Description !!  class=&amp;quot;unsortable&amp;quot; | Issue&lt;br /&gt;
|-&lt;br /&gt;
|  core&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_fetch_notifications  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return a list of notifications for the current session  || &lt;br /&gt;
|-&lt;br /&gt;
|  core&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_get_component_strings()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return all raw strings (with {$a-&amp;gt;xxx}) for a specific component - similar to core get_component_strings() call  ||  MDL-35997&lt;br /&gt;
|-&lt;br /&gt;
|  core&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_get_fragment  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return a fragment for inclusion, such as a JavaScript page.  || &lt;br /&gt;
|-&lt;br /&gt;
|  core&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_get_string()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return a translated string - similar to core get_string() call  ||  MDL-35997&lt;br /&gt;
|-&lt;br /&gt;
|  core&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_get_strings()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return some translated strings - like several core get_string() calls  ||  MDL-35997&lt;br /&gt;
|-&lt;br /&gt;
|  core&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_update_inplace_editable  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Generic service to update title  || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  core_badges&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_badges_get_user_badges  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns the list of badges awarded to a user.  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_calendar&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_calendar_create_calendar_events()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create calendar events  ||  MDL-37101&lt;br /&gt;
|-&lt;br /&gt;
|  core_calendar&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_calendar_delete_calendar_events()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Delete calendar events  ||  MDL-37077&lt;br /&gt;
|-&lt;br /&gt;
|  core_calendar&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_calendar_get_calendar_events()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get calendar events  ||  MDL-37100&lt;br /&gt;
|-&lt;br /&gt;
|  core_cohort&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_cohort_add_cohort_members()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Add members to cohort  ||  MDL-29472&lt;br /&gt;
|-&lt;br /&gt;
|  core_cohort&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_cohort_create_cohorts()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Create cohorts  ||  MDL-29472&lt;br /&gt;
|-&lt;br /&gt;
|  core_cohort&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_cohort_delete_cohort_members()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Delete members from cohort  ||  MDL-29472&lt;br /&gt;
|-&lt;br /&gt;
|  core_cohort&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_cohort_delete_cohorts()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Delete cohorts  ||  MDL-29472&lt;br /&gt;
|-&lt;br /&gt;
|  core_cohort&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_cohort_get_cohort_members()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Get cohort members  ||  MDL-29472&lt;br /&gt;
|-&lt;br /&gt;
|  core_cohort&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_cohort_get_cohorts()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Get cohorts  ||  MDL-29472&lt;br /&gt;
|-&lt;br /&gt;
|  core_cohort&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_cohort_update_cohorts()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Update cohorts  ||  MDL-29472&lt;br /&gt;
|-&lt;br /&gt;
|  core_comment&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_comment_get_comments()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Return all the comments for an specific component, context.  ||  MDL-49203 &lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_add_competency_to_course  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Add competency to a course  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_add_competency_to_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Add a competency to a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_add_competency_to_template  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Add competency to a template  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_add_related_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create a relationship between competencies  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_approve_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Approve a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_competency_framework_viewed  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Notify a competency framework as being viewed  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_competency_viewed  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Report a competency as being viewed  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_complete_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Complete a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_count_competencies  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Count the competencies  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_count_competencies_in_course  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Count competencies in a course  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_count_competencies_in_template  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Count the competencies in a template  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_count_competency_frameworks  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Count the competency frameworks  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_count_courses_using_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Count courses using a competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_count_templates  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Count templates  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_count_templates_using_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Count templates using a competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_create_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create a competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_create_competency_framework  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create a competency framework  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_create_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_create_template  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create a template  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_create_user_evidence_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Link an evidence of prior learning with a user&#039;s competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_delete_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Delete a competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_delete_competency_framework  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Delete a competency framework  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_delete_evidence  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Delete an evidence  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_delete_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Delete a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_delete_template  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Delete a template  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_delete_user_evidence  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Delete an evidence of prior learning  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_delete_user_evidence_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Remove a link between an evidence of prior learning and a user&#039;s competency   ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_duplicate_competency_framework  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Duplicate a competency framework  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_duplicate_template  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Duplicate a template  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_get_scale_values  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get the values for a scale  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_grade_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Rate a user&#039;s competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_grade_competency_in_course  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Rate a user&#039;s competency in a course  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_grade_competency_in_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Rate a user&#039;s competency in a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_list_competencies  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  List competencies  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_list_competencies_in_template  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  List the competencies of a template  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_list_competency_frameworks  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  List the competency frameworks  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_list_course_competencies  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  List the competencies in a course  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_list_plan_competencies  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  List a learning plan&#039;s competencies  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_list_templates  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  List templates  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_list_templates_using_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  List templates using a competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_list_user_plans  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  List a user&#039;s learning plans  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_move_down_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Move a competency down in its branch  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_move_up_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Move a competency up in its branch  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_plan_cancel_review_request  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Cancel the review request of a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_plan_request_review  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Request the review of a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_plan_start_review  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Start the review of a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_plan_stop_review  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Stop the review of a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_read_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Fetch a competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_read_competency_framework  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Fetch a competency framework  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_read_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Fetch a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_read_template  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Fetch a template  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_read_user_evidence  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Fetch an evidence of prior learning  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_remove_competency_from_course  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Remove competency from a course  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_remove_competency_from_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Remove a competency from a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_remove_competency_from_template  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Remove competency from template  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_remove_related_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Remove a relationship between competencies  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_reopen_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Reopen a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_reorder_course_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Reorder competencies in a course  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_reorder_plan_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Reopen a competency in a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_reorder_template_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Reorder competencies in a template  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_request_review_of_user_evidence_linked_competencies  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Request the review of the user&#039;s competencies linked to an evidence of prior learning  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_search_competencies  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Search for competencies  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_set_course_competency_ruleoutcome  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Set the rule of course competencies  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_set_parent_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Relocate a competency to another parent  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_template_has_related_data  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Check whether a template has related data  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_template_viewed  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Report a template as being viewed  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_unapprove_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Unapprove a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_unlink_plan_from_template  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Unlink a learning plan from a template  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_update_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update a competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_update_competency_framework  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update a competency framework  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_update_course_competency_settings  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update the course competency settings  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_update_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_update_template  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update a template  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_user_competency_cancel_review_request  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Cancel the review request of a user&#039;s competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_user_competency_plan_viewed  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Report the archive of user&#039;s competency as being viewed   ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_user_competency_request_review  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Request the review of a user&#039;s competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_user_competency_start_review  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Start the review of a user&#039;s competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_user_competency_stop_review  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Stop the review of a user&#039;s competency  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_user_competency_viewed  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Report a user&#039;s competency as being viewed  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_user_competency_viewed_in_course  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Report a user&#039;s competency as being viewed from a course  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_competency_user_competency_viewed_in_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Report a user&#039;s competency as being viewed from a learning plan  ||  MDL-49458&lt;br /&gt;
|-&lt;br /&gt;
|  core_completion&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_completion_get_activities_completion_status()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Return the activities completion status for a user in a course.  ||  MDL-49314 &lt;br /&gt;
|-&lt;br /&gt;
|  core_completion&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_completion_get_course_completion_status()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Returns course completion status.  ||  MDL-49313 &lt;br /&gt;
|-&lt;br /&gt;
|  core_completion&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_completion_mark_course_self_completed  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update the course completion status for the current user (if course self-completion is enabled).  ||  MDL-50930 &lt;br /&gt;
|-&lt;br /&gt;
|  core_completion&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_completion_update_activity_completion_status_manually()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Update completion status for the current user in an activity, only for activities with manual tracking.  ||  MDL-49444&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_create_categories()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  create categories  ||  MDL-32941&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_create_courses()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_course_create_courses()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create new courses  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_delete_categories()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  delete categories  ||  MDL-32941&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_delete_courses()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  delete courses  ||  MDL-13130&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_delete_modules()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Deletes all specified module instances  ||  MDL-30098 &lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_duplicate_course()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  duplicate a course  ||  MDL-32233&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_get_categories()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  get categories  ||  MDL-32941&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_get_contents()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.2  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  get course content (modules + web service file urls)  ||  MDL-28646&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_get_course_module  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return information about a course module.  ||  MDL-51371&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_get_course_module_by_instance  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return information about a given module name and instance id.  ||  MDL-51579&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_get_courses()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_course_get_courses()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return course details  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_import_course()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Import course data from a course into another course. Does not include any user data.  ||  MDL-32919&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_search_courses  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Search courses by (name, module, block, tag).  ||  MDL-49942&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_update_categories()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  update categories  ||  MDL-32941&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_update_courses()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update courses.  ||  MDL-30062&lt;br /&gt;
|-&lt;br /&gt;
|  core_course&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_course_view_course()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Log that the course was viewed  ||  MDL-49453 &lt;br /&gt;
|-&lt;br /&gt;
| core_enrol&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | core_enrol_get_course_enrolment_methods || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Get the list of course enrolment methods ||&lt;br /&gt;
|-&lt;br /&gt;
|  core_enrol&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_enrol_get_enrolled_users()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_user_get_users_by_courseid()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get enrolled users by course id  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_enrol&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_enrol_get_enrolled_users_with_capability()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  For each course and capability specified, return a list of the users that are enrolled in the course and have that capability  ||  MDL-31859&lt;br /&gt;
|-&lt;br /&gt;
|  core_enrol&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_enrol_get_users_courses()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_enrol_get_users_courses()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  get list of course ids that a user is enrolled in (if you are allowed to see that)  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_files&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_files_get_files()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_file_get_files()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  browse moodle files  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_grade&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_grade_get_grades()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.7  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns student course total grade and grades for activities. This function does not return category or manual items. This function is suitable for managers or teachers not students. ||  MDL-30085&lt;br /&gt;
|-&lt;br /&gt;
|  core_grade&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_grade_update_grades()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.7  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update a grade item and associated student grades. ||  MDL-30085&lt;br /&gt;
|-&lt;br /&gt;
|  core_grading&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_grading_get_definitions()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns grading definitions for the course module ids and areaname provided as parameters. An optionall activeonly parameter can be provided so that only the active grading method is returned. ||  MDL-31890&lt;br /&gt;
|-&lt;br /&gt;
|  core_grading&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_grading_get_gradingform_instances()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns the instances and fillings for the requested definition id. An optional since parameter allows the number of records returned to be reduced so that only those with a timemodified value &amp;gt;= since are returned ||  MDL-31890&lt;br /&gt;
|-&lt;br /&gt;
|  core_grading&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_grading_save_definitions()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.8  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Accepts an array of areas as a parameter. The areas contain grading definitions with criteria for inserting and updating ||  MDL-31861&lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_add_group_members()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_group_add_groupmembers()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Adds group members  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_assign_grouping()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  assign groups from groupings  ||  MDL-32662&lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_create_groupings()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  create groupings  ||  MDL-32662&lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_create_groups()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_group_create_groups()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Creates new groups  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_delete_group_members()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_group_delete_groupmembers()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Deletes group members  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_delete_groupings()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  delete groupings  ||  MDL-32662&lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_delete_groups()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_group_delete_groups()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Deletes all specified groups  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_get_activity_allowed_groups  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Gets a list of groups that the user is allowed to access within the specified activity.  ||  MDL-50966&lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_get_activity_groupmode  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns effective groupmode used in a given activity.  ||  MDL-50964&lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_get_course_groupings()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  get all groupings in specified course  ||  MDL-32662&lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_get_course_groups()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_group_get_course_groups()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns all groups in specified course  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_get_course_user_groups()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Returns all groups in specified course for the specified user.  ||  MDL-48730 &lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_get_group_members()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_group_get_groupmembers()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns group members  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_get_groupings()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  get groupings  ||  MDL-32662&lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_get_groups()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_group_get_groups()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns group details.  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_unassign_grouping()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  unassign groups from groupings  ||  MDL-32662&lt;br /&gt;
|-&lt;br /&gt;
|  core_group&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_group_update_groupings()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.3  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  update groupings  ||  MDL-32662&lt;br /&gt;
|-&lt;br /&gt;
|  core_message&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_message_block_contacts()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Block contacts  ||  MDL-30070&lt;br /&gt;
|-&lt;br /&gt;
|  core_message&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_message_create_contacts()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Add contacts to the contact list  ||  MDL-30070&lt;br /&gt;
|-&lt;br /&gt;
|  core_message&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_message_delete_contacts()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Remove contacts from the contact list  ||  MDL-30070&lt;br /&gt;
|-&lt;br /&gt;
|  core_message&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_message_delete_message  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Deletes a message.  ||  &lt;br /&gt;
|-&lt;br /&gt;
|  core_message&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_message_get_blocked_users()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Retrieve a list of users blocked  ||  MDL-48719 &lt;br /&gt;
|-&lt;br /&gt;
|  core_message&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_message_get_contacts()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Retrieve the contact list  ||  MDL-30070&lt;br /&gt;
|-&lt;br /&gt;
|  core_message&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_message_get_messages()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.8  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Retrieve a list of messages sent and received by a user (conversations, notifications or both)  ||  MDL-45374 &lt;br /&gt;
|-&lt;br /&gt;
|  core_message&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_message_mark_message_read()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Mark a single message as read, trigger message_viewed event.  ||  MDL-49501&lt;br /&gt;
|-&lt;br /&gt;
|  core_message&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_message_search_contacts()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Search for contacts  ||  MDL-30070&lt;br /&gt;
|-&lt;br /&gt;
|  core_message&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_message_send_instant_messages()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_message_send_instantmessages()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Send instant messages  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_message&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_message_unblock_contacts()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Unblock contacts  ||  MDL-30070&lt;br /&gt;
|-&lt;br /&gt;
|  core_notes&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_notes_create_notes()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_notes_create_notes()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create notes  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_notes&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_notes_delete_notes()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Delete Notes  ||  MDL-30072&lt;br /&gt;
|-&lt;br /&gt;
|  core_notes&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_notes_get_course_notes()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Returns all notes in specified course (or site) for the specified user.  ||  MDL-49330&lt;br /&gt;
|-&lt;br /&gt;
|  core_notes&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_notes_get_notes()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Retrieve Notes  ||  MDL-30072&lt;br /&gt;
|-&lt;br /&gt;
|  core_notes&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_notes_update_notes()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update Notes  ||  MDL-30072&lt;br /&gt;
|-&lt;br /&gt;
|  core_notes&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_notes_view_notes()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Simulates the web interface view of notes/index.php: trigger events.  ||  MDL-49504&lt;br /&gt;
|-&lt;br /&gt;
| core_output&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | core_output_load_template || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Load a template for a renderable ||&lt;br /&gt;
|-&lt;br /&gt;
|  core_question&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_question_update_flag  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update the flag state of a question attempt.  ||  &lt;br /&gt;
|-&lt;br /&gt;
|  core_rating&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_rating_get_item_ratings()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Retrieve all the ratings for an item.  ||  MDL-49347 &lt;br /&gt;
|-&lt;br /&gt;
|  core_role&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_role_assign_roles()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_role_assign()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Manual role assignments  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_role&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_role_unassign_roles()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_role_unassign()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Manual role unassignments  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_tag&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_tag_get_tagindex  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Gets tag index page for one tag and one tag area  ||  &lt;br /&gt;
|-&lt;br /&gt;
| core_tag&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | core_tag_get_tags || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Gets tags by their ids ||&lt;br /&gt;
|-&lt;br /&gt;
| core_tag&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | core_tag_update_tags || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Updates tags ||&lt;br /&gt;
|-&lt;br /&gt;
|  core_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_user_add_user_device()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Store mobile user devices information for PUSH Notifications.  ||  MDL-41914 &lt;br /&gt;
|-&lt;br /&gt;
| core_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | core_user_add_user_private_files || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 2.6 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Copy files from a draft area to users private files area. ||&lt;br /&gt;
|-&lt;br /&gt;
|  core_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_user_create_users()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_user_create_users()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create users - admin function  || &lt;br /&gt;
|-&lt;br /&gt;
|   core_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |   core_user_delete_users()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   moodle_user_delete_users()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Delete users - admin function  || &lt;br /&gt;
|-&lt;br /&gt;
|   core_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |   core_user_get_course_user_profiles()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   moodle_user_get_course_participants_by_id()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get course user profiles by id  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_user_get_users()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Search users. - If you want to get multiple users for one specific field, use core_user_get_users_by_field(), it&#039;s designed for this purpose and it should be faster.  ||  MDL-29938&lt;br /&gt;
|-&lt;br /&gt;
|  core_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_user_get_users_by_field()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Retrieve users information for a specified unique field - If you want to do a user search, use core_user_get_users()  ||  MDL-35543&lt;br /&gt;
|-&lt;br /&gt;
|  core_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_user_get_users_by_id()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_user_get_users_by_id()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get users by id  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_user_remove_user_device()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Remove a user device from the Moodle database.  ||  MDL-48716 &lt;br /&gt;
|-&lt;br /&gt;
|  core_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_user_update_users()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_user_update_users()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update users  || &lt;br /&gt;
|-&lt;br /&gt;
|  core_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_user_view_user_list()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Simulates the web-interface view of user/index.php (triggering events).  ||  MDL-49498 &lt;br /&gt;
|-&lt;br /&gt;
|  core_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_user_view_user_profile()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Simulates the web-interface view of user/view.php and user/profile.php (triggering events).  ||  MDL-49499&lt;br /&gt;
|-&lt;br /&gt;
|  core_webservice&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  core_webservice_get_site_info()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_webservice_get_siteinfo()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return some site info / user info / list web service functions  || &lt;br /&gt;
|-&lt;br /&gt;
|  enrol_guest&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  enrol_guest_get_instance_info  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return guest enrolment instance information.  || &lt;br /&gt;
|-&lt;br /&gt;
|  enrol_manual&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  enrol_manual_enrol_users()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  moodle_enrol_manual_enrol_users()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Manual enrol users  || &lt;br /&gt;
|-&lt;br /&gt;
| enrol_manual&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | enrol_manual_unenrol_users || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Manual unenrol users ||&lt;br /&gt;
|-&lt;br /&gt;
|  enrol_self&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  enrol_self_enrol_user  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Self enrol the current user in the given course.  ||  MDL-51568&lt;br /&gt;
|-&lt;br /&gt;
| enrol_self&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | enrol_self_get_instance_info || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | self enrolment instance information. ||&lt;br /&gt;
|-&lt;br /&gt;
|  gradereport_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  gradereport_user_get_grades_table()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Get the user/s report grades table for a course  ||  MDL-49036 &lt;br /&gt;
|-&lt;br /&gt;
|  gradereport_user&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  gradereport_user_view_grade_report()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Trigger the grade_report_viewed event when a user view his grade report (this web service will be initially used by the mobile app so information can be logged in the Moodle side when a user see the same page in the app).  ||  MDL-49500 &lt;br /&gt;
|-&lt;br /&gt;
| message_airnotifier&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | message_airnotifier_are_notification_preferences_configured || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 2.7 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Check if the users have notification preferences configured yet ||&lt;br /&gt;
|-&lt;br /&gt;
| message_airnotifier&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | message_airnotifier_is_system_configured || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 2.7 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Check whether the airnotifier settings have been configured ||&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_get_assignments()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns the courses and assignments for the users capability  ||  MDL-31873&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_get_grades()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.4  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns grades from the assignment  ||  MDL-31873&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_get_submission_status  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns information about an assignment submission status for a given user.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_get_submissions  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns the submissions for assignments  ||  MDL-31682&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_get_user_flags  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns the user_flags for assignments  ||  MDL-40548&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_get_user_mappings  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns the user_mappings for assignments  ||  MDL-40548&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_list_participants  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  List the participants for a single assignment, with some summary info about their submissions.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_lock_submissions  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Prevent students from making changes to a list of submissions  ||  MDL-37148&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_reveal_identities  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Reveal the identities for a blind marking assignment  ||  MDL-37148&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_revert_submissions_to_draft  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Reverts the list of submissions to draft status  ||  MDL-37148&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_save_grade  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Save a grade update for a single student.  ||  MDL-37148&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_save_grades  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.7  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Save grade updates for one or more students.  ||  MDL-42425&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_save_submission  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update the current students submission  ||  MDL-37148&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_save_user_extensions  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Save a list of assignment extensions  ||  MDL-37148&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_set_user_flags  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Sets the specified user_flags for an assignment  ||  MDL-41738&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_submit_for_grading  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Submit the current students assignment for grading  ||  MDL-37148&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_submit_grading_form  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Submit the grading form data via ajax  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_unlock_submissions  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.6  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Allow students to make changes to a list of submissions  ||  MDL-37148&lt;br /&gt;
|-&lt;br /&gt;
| mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | mod_assign_view_grading_table || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Trigger the grading_table_viewed event. ||&lt;br /&gt;
|-&lt;br /&gt;
|  mod_assign&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_assign_view_submission_status  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the submission status viewed event.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_book&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_book_get_books_by_courses  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns a list of book instances in a provided set of courses.  ||  MDL-50536&lt;br /&gt;
|-&lt;br /&gt;
|  mod_book&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_book_view_book  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the course module viewed event and update the module completion status.  ||  MDL-50013&lt;br /&gt;
|-&lt;br /&gt;
|  mod_chat&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_chat_get_chat_latest_messages  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get the latest messages from the given chat sessio.  ||  MDL-50853&lt;br /&gt;
|-&lt;br /&gt;
|  mod_chat&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_chat_get_chat_users  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get the list of users in the given chat session.  ||  MDL-50853&lt;br /&gt;
|-&lt;br /&gt;
|  mod_chat&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_chat_get_chats_by_courses  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns a list of chat instances in a provided set of courses.  ||  MDL-50537&lt;br /&gt;
|-&lt;br /&gt;
|  mod_chat&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_chat_login_user  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Log a user into a chat room in the given chat.  ||  MDL-50853&lt;br /&gt;
|-&lt;br /&gt;
|  mod_chat&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_chat_send_chat_message  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Send a message on the given chat session.  ||  MDL-50853&lt;br /&gt;
|-&lt;br /&gt;
|  mod_chat&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_chat_view_chat  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the course module viewed event and update the module completion status.  ||  MDL-50853&lt;br /&gt;
|-&lt;br /&gt;
|  mod_choice&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_choice_delete_choice_responses  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Delete the given submitted responses in a choice.  ||  MDL-50944&lt;br /&gt;
|-&lt;br /&gt;
|  mod_choice&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_choice_get_choice_options  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Retrieve options for a specific choice.  ||  MDL-50944&lt;br /&gt;
|-&lt;br /&gt;
|  mod_choice&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_choice_get_choice_results  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Retrieve users results for a given choice.  ||  MDL-50944&lt;br /&gt;
|-&lt;br /&gt;
|  mod_choice&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_choice_get_choices_by_courses  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns a list of choice instances in a provided set of courses.  ||  MDL-50132&lt;br /&gt;
|-&lt;br /&gt;
|  mod_choice&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_choice_submit_choice_response  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Submit responses to a specific choice item.  ||  MDL-50944&lt;br /&gt;
|-&lt;br /&gt;
|  mod_choice&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_choice_view_choice  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the course module viewed event and update the module completion status..  ||  MDL-50944&lt;br /&gt;
|-&lt;br /&gt;
|  mod_data&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_data_get_databases_by_courses()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Returns a list of database instances in a provided set of courses, if no courses are provided then all the database instances the user has access to will be returned.  ||  MDL-49337&lt;br /&gt;
|-&lt;br /&gt;
|  mod_folder&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_folder_view_folder  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the course module viewed event and update the module completion status.  ||  MDL-50008&lt;br /&gt;
|-&lt;br /&gt;
|  mod_forum&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_forum_add_discussion  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Add a new discussion into an existing forum.  ||  MDL-50994&lt;br /&gt;
|-&lt;br /&gt;
|  mod_forum&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_forum_add_discussion_post  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create new posts into an existing discussion.  ||  MDL-50995&lt;br /&gt;
|-&lt;br /&gt;
|  mod_forum&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_forum_can_add_discussion  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Check if the current user can add discussions in the given forum (and optionally for the given group).  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_forum&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_forum_get_forum_discussion_posts()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.7  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Returns a list of forum posts for a discussion.  ||  MDL-30106 &lt;br /&gt;
|-&lt;br /&gt;
|  mod_forum&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_forum_get_forum_discussions_paginated()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.8  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Returns a list of forum discussions optionally sorted and paginated.  ||  MDL-46458 &lt;br /&gt;
|-&lt;br /&gt;
|  mod_forum&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_forum_get_forums_by_courses  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.5  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns a list of forum instances in a provided set of courses, if no courses are provided then all the forum instances the user has access to will be returned.  ||  MDL-37247 &lt;br /&gt;
|-&lt;br /&gt;
|  mod_forum&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_forum_view_forum()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Trigger the course_module_viewed event when a user view a forum (this web service will be initially used by the mobile app so information can be logged in the Moodle side when a user see the same page in the app).  ||  MDL-49502 &lt;br /&gt;
|-&lt;br /&gt;
|  mod_forum&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_forum_view_forum_discussion()  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  2.9  || style=&amp;quot;background:#D4FFDF;&amp;quot; | Trigger the discussion_viewed event when a user view a forum discussion (this web service will be initially used by the mobile app so information can be logged in the Moodle side when a user see the same page in the app).  ||  MDL-49503&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_get_authors  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get the authors in a glossary  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_get_categories  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get a glossary&#039;s categories  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_get_entries_by_author  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get entries using author filtering  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_get_entries_by_author_id  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get entries using author ID filtering  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_get_entries_by_category  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get entries using category filtering  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_get_entries_by_date  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get entries using date filtering  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_get_entries_by_letter  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get entries using letter filtering  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_get_entries_by_search  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get entries matching a search query  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_get_entries_by_term  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get entries using term filtering  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_get_entries_to_approve  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get entries to be approved  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_get_entry_by_id  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get an entry by ID  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_get_glossaries_by_courses  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get the glossaries in courses  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_view_entry  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Notify that a glossary entry was viewed  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_glossary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_glossary_view_glossary  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Notify that a glossary was viewed  ||  MDL-50540&lt;br /&gt;
|-&lt;br /&gt;
|  mod_imscp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_imscp_get_imscps_by_courses  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns a list of imscp instances in a provided set of courses.  ||  MDL-50541&lt;br /&gt;
|-&lt;br /&gt;
|  mod_imscp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_imscp_view_imscp  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the course module viewed event and update the module completion status.  ||  MDL-50015&lt;br /&gt;
|-&lt;br /&gt;
|  mod_lti&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_lti_create_tool_proxy  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create a tool proxy  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_lti&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_lti_create_tool_type  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create a tool type  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_lti&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_lti_delete_tool_proxy  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Delete a tool proxy  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_lti&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_lti_delete_tool_type  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Delete a tool type  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_lti&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_lti_get_ltis_by_courses  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns a list of lti instances in a provided set of courses.  ||  MDL-50543&lt;br /&gt;
|-&lt;br /&gt;
|  mod_lti&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_lti_get_tool_launch_data  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return the launch data for a given external tool.  ||  MDL-51615&lt;br /&gt;
|-&lt;br /&gt;
|  mod_lti&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_lti_get_tool_proxy_registration_request  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get a registration request for a tool proxy  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_lti&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_lti_get_tool_types  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get a list of the tool types  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_lti&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_lti_is_cartridge  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Determine if the given url is for a cartridge  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_lti&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_lti_update_tool_type  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Update a tool type  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_lti&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_lti_view_lti  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the course module viewed event and update the module completion status.  ||  MDL-51624&lt;br /&gt;
|-&lt;br /&gt;
|  mod_page&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_page_view_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the course module viewed event and update the module completion status.  ||  MDL-49791&lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_get_attempt_access_information  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return access information for a given attempt in a quiz.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_get_attempt_data  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns information for the given attempt page for a quiz attempt in progress.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_get_attempt_review  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns review information for the given finished attempt, can be used by users or teachers.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_get_attempt_summary  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns a summary of a quiz attempt before it is submitted.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_get_combined_review_options  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Combines the review options from a number of different quiz attempts.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_get_quiz_access_information  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return access information for a given quiz.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_get_quiz_feedback_for_grade  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get the feedback text that should be show to a student who got the given grade in the given quiz.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_get_quiz_required_qtypes  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return the potential question types that would be required for a given quiz.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_get_quizzes_by_courses  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns a list of quizzes in a provided list of courses, if no list is provided all quizzes that the user can view will be returned.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_get_user_attempts  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return a list of attempts for the given quiz and user.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_get_user_best_grade  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Get the best current grade for the given user on a quiz.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_process_attempt  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Process responses during an attempt at a quiz and also deals with attempts finishing.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_save_attempt  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Processes save requests during the quiz.This function is intended for the quiz auto-save feature.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_start_attempt  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Starts a new attempt at a quiz.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_view_attempt  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the attempt viewed event.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_view_attempt_review  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the attempt reviewed event.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_view_attempt_summary  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the attempt summary viewed event.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_quiz&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_quiz_view_quiz  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the course module viewed event and update the module completion status.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_resource&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_resource_view_resource  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the course module viewed event and update the module completion status.  ||  MDL-49792&lt;br /&gt;
|-&lt;br /&gt;
|  mod_scorm&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_scorm_get_scorm_attempt_count  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Return the number of attempts done by a user in the given SCORM.  ||  MDL-51017&lt;br /&gt;
|-&lt;br /&gt;
|  mod_scorm&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_scorm_get_scorm_sco_tracks  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Retrieves SCO tracking data for the given user id and attempt number.  ||  MDL-50557&lt;br /&gt;
|-&lt;br /&gt;
|  mod_scorm&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_scorm_get_scorm_scoes  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns a list containing all the scoes data related to the given scorm id.  ||  MDL-50351&lt;br /&gt;
|-&lt;br /&gt;
|  mod_scorm&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_scorm_get_scorm_user_data  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Retrieves user tracking and SCO data and default SCORM values.  ||  MDL-50352&lt;br /&gt;
|-&lt;br /&gt;
|  mod_scorm&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_scorm_get_scorms_by_courses  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns a list of scorm instances in a provided set of courses.  ||  MDL-50349&lt;br /&gt;
|-&lt;br /&gt;
|  mod_scorm&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_scorm_insert_scorm_tracks  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Saves a scorm tracking record.  ||  MDL-50353&lt;br /&gt;
|-&lt;br /&gt;
|  mod_scorm&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_scorm_launch_sco  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the SCO launched event.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_scorm&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_scorm_view_scorm  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the course module viewed event and update the module completion status..  ||  MDL-50427&lt;br /&gt;
|-&lt;br /&gt;
| mod_survey&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | mod_survey_get_questions || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Get the complete list of questions for the survey, including subquestions. ||&lt;br /&gt;
|-&lt;br /&gt;
| mod_survey&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | mod_survey_get_surveys_by_courses || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Returns a list of survey instances in a provided set of courses, if no courses are provided then all the survey instances the user has access to will be returned. ||&lt;br /&gt;
|-&lt;br /&gt;
| mod_survey&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | mod_survey_submit_answers || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Submit the answers for a given survey. ||&lt;br /&gt;
|-&lt;br /&gt;
| mod_survey&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | mod_survey_view_survey || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Trigger the course module viewed event and update the module completion status. ||&lt;br /&gt;
|-&lt;br /&gt;
|  mod_url&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_url_view_url  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.0  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the course module viewed event and update the module completion status.  ||  MDL-49793&lt;br /&gt;
|-&lt;br /&gt;
|  mod_wiki&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_wiki_edit_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Save the contents of a page.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_wiki&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_wiki_get_page_contents  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns the contents of a page.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_wiki&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_wiki_get_page_for_editing  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Locks and retrieves info of page-section to be edited.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_wiki&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_wiki_get_subwiki_files  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns the list of files for a specific subwiki.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_wiki&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_wiki_get_subwiki_pages  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns the list of pages for a specific subwiki.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_wiki&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_wiki_get_subwikis  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns the list of subwikis the user can see in a specific wiki.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_wiki&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_wiki_get_wikis_by_courses  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns a list of wiki instances in a provided set of courses, if no courses are provided then all the wiki instances the user has access to will be returned.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_wiki&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_wiki_new_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Create a new page in a subwiki.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_wiki&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_wiki_view_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the page viewed event and update the module completion status.  || &lt;br /&gt;
|-&lt;br /&gt;
|  mod_wiki&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  mod_wiki_view_wiki  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Trigger the course module viewed event and update the module completion status.  || &lt;br /&gt;
|-&lt;br /&gt;
|  report_competency&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  report_competency_data_for_report  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load the data for the competency report in a course.  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_competencies_manage_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load the data for the competencies manage page template  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_competency_frameworks_manage_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load the data for the competency frameworks manage page template  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_competency_summary  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load competency data for summary template.  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_course_competencies_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load the data for the course competencies page template.  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_plan_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load the data for the plan page template.  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_plans_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load the data for the plans page template  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_related_competencies_section  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load the data for the related competencies template.  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_template_competencies_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load the data for the template competencies page template.  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_templates_manage_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load the data for the learning plan templates manage page template  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_user_competency_summary  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load a summary of a user competency.  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_user_competency_summary_in_course  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load a summary of a user competency.  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_user_competency_summary_in_plan  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load a summary of a user competency.  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_user_evidence_list_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load the data for the user evidence list page template  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_data_for_user_evidence_page  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Load the data for the user evidence page template  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_list_courses_using_competency  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  List the courses using a competency  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_search_cohorts  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Search for cohorts.  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_lp&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_lp_search_users  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Search for users.  || &lt;br /&gt;
|-&lt;br /&gt;
|  tool_mobile&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; |  tool_mobile_get_plugins_supporting_mobile  || style=&amp;quot;background:#D4FFDF;&amp;quot; |   || style=&amp;quot;background:#D4FFDF;&amp;quot; |  3.1  || style=&amp;quot;background:#D4FFDF;&amp;quot; |  Returns a list of Moodle plugins supporting the mobile app.  || &lt;br /&gt;
|-&lt;br /&gt;
| tool_templatelibrary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | tool_templatelibrary_list_templates || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | List/search templates by component. ||&lt;br /&gt;
|-&lt;br /&gt;
| tool_templatelibrary&lt;br /&gt;
| style=&amp;quot;background:#D4FFDF;&amp;quot; | tool_templatelibrary_load_canonical_template || style=&amp;quot;background:#D4FFDF;&amp;quot; | || style=&amp;quot;background:#D4FFDF;&amp;quot; | 3.0 || style=&amp;quot;background:#D4FFDF;&amp;quot; | Load a canonical template by name (not the theme overidden one). ||&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
This is the list of the integrated core functions. To see the roadmap, see to the tracker issue in the section bellow.&lt;br /&gt;
&lt;br /&gt;
New Web Services entries are automatically generated for each new major version via this script: https://github.com/moodlehq/moodlemobile-scripts/blob/master/ws-documenter.php&lt;br /&gt;
&lt;br /&gt;
=== API Roadmap===&lt;br /&gt;
Tracker issue: MDL-29934&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [[Web services API Changes]]&lt;br /&gt;
* [[How to contribute a web service function to core]]&lt;br /&gt;
* [[Web services|Web services developer documentation]]&lt;br /&gt;
* [[:en:Web services|Web services user documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Web Services]]&lt;br /&gt;
[[Category:API]]&lt;/div&gt;</summary>
		<author><name>Cameron1729</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_3.1_release_notes&amp;diff=50097</id>
		<title>Moodle 3.1 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_3.1_release_notes&amp;diff=50097"/>
		<updated>2016-05-18T04:27:36Z</updated>

		<summary type="html">&lt;p&gt;Cameron1729: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Releases]] &amp;gt; {{FULLPAGENAME}}&lt;br /&gt;
 &lt;br /&gt;
Release date: 23 May 2016 (Not yet released)&lt;br /&gt;
&lt;br /&gt;
Here is [https://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+mdl+AND+resolution+%3D+fixed+AND+fixVersion+in+%28%223.1%22%29+ORDER+BY+priority+DESC&amp;amp;runQuery=true&amp;amp;clear=true the full list of fixed issues in 3.1].&lt;br /&gt;
&lt;br /&gt;
Important: &lt;br /&gt;
 &lt;br /&gt;
* PHP extension &amp;lt;tt&amp;gt;xmlreader&amp;lt;/tt&amp;gt; is now required (MDL-51603).&lt;br /&gt;
&lt;br /&gt;
==Major features==&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
&lt;br /&gt;
* MDL-53451 - Competencies support in Moodle&lt;br /&gt;
* MDL-52954 - Improvements to the Assignment grading user interface&lt;br /&gt;
* MDL-31989 - [https://docs.moodle.org/31/en/Global_search Global Search] API allows to search forums, wikis and other content throughout the whole site. [https://docs.moodle.org/dev/Global_search Installation and setup] of SOLR server is required, &lt;br /&gt;
* MDL-52002 - Significant performance improvements in gradebook calculations&lt;br /&gt;
* MDL-48012 - [https://docs.moodle.org/31/en/Recycle_bin Recycle bin] plugin is now part of standard Moodle distribution: allow instructors to &amp;quot;undo&amp;quot; deletions of course modules and courses. [https://moodleassociation.org/ Moodle Users Association] project&lt;br /&gt;
* MDL-49279 - Add support in moodle plugins for exporting &amp;quot;Mobile app addons&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Forum===&lt;br /&gt;
&lt;br /&gt;
* MDL-372 - Allow to [https://docs.moodle.org/31/en/Using_Forum#Pinned_posts &amp;quot;pin&amp;quot; discussions] to keep them always on the top of the list&lt;br /&gt;
* MDL-34160 - Allow forum email subject to be customised&lt;br /&gt;
* MDL-47365 - Add  [https://docs.moodle.org/31/en/Using_Forum#Permalinks permalink] option to forum posts&lt;br /&gt;
* MDL-51214 - Rename the News forum to [https://docs.moodle.org/31/en/Announcements &amp;quot;Announcements&amp;quot;]&lt;br /&gt;
* MDL-44087 - Forum does not observe message notification settings for digest emails&lt;br /&gt;
* MDL-53050 - Highlight the selected forum post when deep linking with a #anchor&lt;br /&gt;
&lt;br /&gt;
===Assignment===&lt;br /&gt;
&lt;br /&gt;
* MDL-52397 - ??? Assign feedback not sent if assign grade timemodified is set two days ago&lt;br /&gt;
* MDL-52596 - Add a &#039;maxperpage&#039; site wide setting for grading table size (to mitigate broken grading pages in large courses)&lt;br /&gt;
* MDL-52269 - Not obvious to tell if an assignment is in blind marking if user holds the &amp;quot;mod/assign:viewblinddetails&amp;quot; capabilty&lt;br /&gt;
* MDL-52270 - Difficult to cross reference users with their blind identities&lt;br /&gt;
* MDL-44598 - List student names on &#039;grant extension&#039; screen&lt;br /&gt;
* MDL-52490 - Download selected assign submissions as a zip file&lt;br /&gt;
* MDL-52290 - EditPDF - Also show the total page number in the pagination&lt;br /&gt;
* MDL-52489 - &amp;quot;Download all submissions as a zip&amp;quot; should maintain the folder structure in students submissions&lt;br /&gt;
&lt;br /&gt;
===LTI===&lt;br /&gt;
&lt;br /&gt;
* MDL-52154 - Rework LTI admin screens&lt;br /&gt;
* MDL-45064 - Option to add Preconfigured LTI Tool to Activity Chooser&lt;br /&gt;
* MDL-52035 - Integrate LTI Provider support in Moodle&lt;br /&gt;
* MDL-52821 - Compliance: Send tool_consumer_instance_description in LTI launch request&lt;br /&gt;
&lt;br /&gt;
===Feedback===&lt;br /&gt;
&lt;br /&gt;
* MDL-53738 - Feedback activity module will be enabled by default in new 3.1 installations. If you are upgrading to 3.1 we recommend you to enable it manually.&lt;br /&gt;
* MDL-52094 - Various improvements to UI and bug fixes, including:&lt;br /&gt;
** Performance improvement to download responses as raw data in multiple formats (CSV, Excel, etc.) - now available on &amp;quot;Show responses&amp;quot; page instead of &amp;quot;Analysis&amp;quot;&lt;br /&gt;
** Allow any characters in labels, do not display empty labels&lt;br /&gt;
** Do not display empty pages&lt;br /&gt;
** Map frontpage feedback to multiple courses without leaving the form&lt;br /&gt;
** Improved display of automatic question numbers&lt;br /&gt;
** Disable &amp;quot;Response time&amp;quot; for anonymous feedbacks&lt;br /&gt;
** Use moodleforms to display feedback&lt;br /&gt;
&lt;br /&gt;
===SCORM===&lt;br /&gt;
&lt;br /&gt;
* MDL-45712 - Add Result field to the SCORM Interactions Report&lt;br /&gt;
* MDL-48680 - Add score and status submission events to SCORM activity&lt;br /&gt;
* MDL-42473 - Add group support to SCORM activity&lt;br /&gt;
&lt;br /&gt;
===Quiz===&lt;br /&gt;
&lt;br /&gt;
* MDL-52738 - Quiz attempt/review page should have a previous button to match next&lt;br /&gt;
* MDL-46092 - Add the OU styling of the Quiz navigation into Moodle core as the default&lt;br /&gt;
* MDL-46091 - Rationalise confirmations when you start a quiz&lt;br /&gt;
* MDL-52806 - Show right answers when manually grading automatically marked questions&lt;br /&gt;
* MDL-53304 - Immediate feedback behaviours should not show a disabled check button when you can&#039;t use it&lt;br /&gt;
&lt;br /&gt;
===Other activity modules===&lt;br /&gt;
&lt;br /&gt;
* MDL-42190 - Workshop: Possibility to delete a submission&lt;br /&gt;
* MDL-51306 - Folder: [https://docs.moodle.org/31/en/Folder_resource Bulk download all files within a folder activity as ZIP file]&lt;br /&gt;
* MDL-52414 - Lesson: Allow Default Settings for [https://docs.moodle.org/31/en/Lesson_settings Lesson Module Settings]&lt;br /&gt;
* MDL-51267 - URL/File: Make setting up a [https://docs.moodle.org/31/en/URL_resource_settings#General URL]/[https://docs.moodle.org/31/en/File_resource_settings#Uploading_files File] resource more obvious&lt;br /&gt;
* MDL-50794 - Workshop: [https://docs.moodle.org/31/en/Workshop_settings Restricting file types as attachments] to a workshop&lt;br /&gt;
&lt;br /&gt;
===Gradebook===&lt;br /&gt;
&lt;br /&gt;
* MDL-48634 - Option to rescale existing grades when changing max points&lt;br /&gt;
* MDL-52522 - grade_minmaxtouse should be respected for overridden categories&lt;br /&gt;
* MDL-51900 - Tab Down Grade Column in Single View of Gradebook&lt;br /&gt;
* MDL-52309 - Make Grade History report require user to submit parameters before the report starts running&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
&lt;br /&gt;
* MDL-51374 - Do not purge entire databasemeta cache when there are structure changes (esp temp tables).&lt;br /&gt;
* MDL-51603 - Refactor downloading of csv, ods, excel etc files in reports and exports across moodle to stream progressively&lt;br /&gt;
* MDL-34925 - Improve bulk user export performance&lt;br /&gt;
* MDL-50385 - Performance improvement to the grade history report&lt;br /&gt;
&lt;br /&gt;
===Tagging===&lt;br /&gt;
&lt;br /&gt;
* MDL-50851 - Introduce tag collections - ability to separate independent tag areas&lt;br /&gt;
* MDL-52252 - Add tags to modules (Resources and Activities)&lt;br /&gt;
* MDL-25742 - Allow to search wiki pages by tags&lt;br /&gt;
* MDL-51283 - Rename &amp;quot;official&amp;quot; tags to &amp;quot;standard&amp;quot;, allow admin to set for each tag area how to use standard tags&lt;br /&gt;
* MDL-16855 - Add tag filtering to &amp;quot;Manage tags&amp;quot; page&lt;br /&gt;
* MDL-52707 - Allow tags to be combined&lt;br /&gt;
&lt;br /&gt;
===Usability===&lt;br /&gt;
&lt;br /&gt;
* MDL-27628 - [https://docs.moodle.org/31/en/Course_meta_link Enrol meta:] Possible to add multiple courses without leaving the form&lt;br /&gt;
* MDL-51818 - Move the profile &#039;Message&#039; button to be next to the user picture&lt;br /&gt;
* MDL-52258 - Calendar now shows duration in calendar block&lt;br /&gt;
* MDL-53043 - Move user search box above the students list in the manual enrolments popup&lt;br /&gt;
* MDL-35590 - Navigation block redesign to meet ARIA specification ([https://docs.moodle.org/dev/Tree documentation])&lt;br /&gt;
* MDL-49963 - Allow to message all participants when there are more than one page in participants list&lt;br /&gt;
* MDL-51354 - Help popup and improved name for events dropdown menu on the course and site logs pages&lt;br /&gt;
* MDL-53026 - Use inplace editable for editing cohort names&lt;br /&gt;
* MDL-51706 - Move plagiarism links to the top of the summary and full text outputs&lt;br /&gt;
* MDL-53382 - &amp;quot;Show all&amp;quot; link on participants page should be moved beneath the page switcher&lt;br /&gt;
&lt;br /&gt;
===Other improvements===&lt;br /&gt;
&lt;br /&gt;
* MDL-53057 - Add [https://docs.moodle.org/31/en/File_system_repository#Using_a_File_System_repository_file search feature to the File system repository]&lt;br /&gt;
* MDL-48506 - Improve memcached cache store so that it is multi-site safe&lt;br /&gt;
* MDL-50661 - Restyle &amp;quot;Clean&amp;quot; theme to use Logo and Header in Frontpage with smaller logo option in other pages.&lt;br /&gt;
* MDL-36652 - When downloading an Excel spreadsheet of student logs, have the course short name included in the file name. &lt;br /&gt;
* MDL-53207 - Display stock avatar instead of own user picture from messages from fake users&lt;br /&gt;
* MDL-52781 - ??? Improve core_user::fill_properties_cache()&lt;br /&gt;
* MDL-51698 - Markup the crumb trail so search engines understand it and leverage it&lt;br /&gt;
* MDL-53072 - Option to choose whether we include suspended users when auto-creating groups&lt;br /&gt;
* MDL-52869 - Convert inline activity name edit to use the inplace editable element&lt;br /&gt;
&lt;br /&gt;
===For administrators===&lt;br /&gt;
&lt;br /&gt;
* MDL-26935 - New capability to control role renaming&lt;br /&gt;
* MDL-28030 - Add config.php settings to allow plugins to rewrite output moodle_urls (eg clean / semantic urls)&lt;br /&gt;
* MDL-52752 - Administrators can specify an alternate URL to use for MathJax&lt;br /&gt;
* MDL-52219 - Completion tracking &amp;amp; availability should default to on for new installs&lt;br /&gt;
* MDL-52990 - Enable all emails to be themed, ie add 4 wrapper mustache templates&lt;br /&gt;
* MDL-53260 - Option to display CLI upgrade messages in English&lt;br /&gt;
* MDL-52386 - Allow to control field for flagging enabled/disabled users in LDAP authentication (useful for Active Directory)&lt;br /&gt;
* MDL-52383 - Calendar &amp;quot;Days to look ahead&amp;quot; should allow intervals up to 1 year&lt;br /&gt;
* MDL-49934 - Admins or managers should be able to retrieve assignments info via get_assignments web service&lt;br /&gt;
&lt;br /&gt;
==Security issues==&lt;br /&gt;
&lt;br /&gt;
There are no security issues included in this release, please refer to [https://docs.moodle.org/dev/Moodle_3.0.4_release_notes Moodle 3.0.4 release notes]&lt;br /&gt;
&lt;br /&gt;
==For developers==&lt;br /&gt;
* MDL-53451 - Competencies support in Moodle ([https://docs.moodle.org/dev/Competency_API documentation])&lt;br /&gt;
* MDL-52954 - file_storage class can now convert between office documents ([https://docs.moodle.org/dev/File_API#Convert_between_file_formats_.28office_documents.29 documentation])&lt;br /&gt;
* MDL-30811 - Introduce notification stack to moodle sessions&lt;br /&gt;
* MDL-49279, MDL-50032 - Allow external functions to add themselves into services&lt;br /&gt;
* MDL-51802 - Reusable element for inplace editing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes to webservices XML-RPC API&#039;&#039;&#039;&lt;br /&gt;
Due to MDL-53962, it is now &#039;&#039;&#039;critical&#039;&#039;&#039; to specify parameters for XML-RPC calls in the correct order. Previously Zend may have been able to work out the order, our new implementation, at this stage, cannot.&lt;br /&gt;
&lt;br /&gt;
* MDL-50887 - Antivirus: Implement plugins infrastructure for antivirus and create ClamAV plugin.&lt;br /&gt;
* MDL-52237 - Add a callback to inject nodes in the user profile navigation&lt;br /&gt;
* MDL-50464 - New renderer for RSS Client Block allows themes to customise its look&lt;br /&gt;
* MDL-50851 - Significant changes to Tags API, tag areas can now implement callbacks to display tagged items&lt;br /&gt;
* MDL-53274 - Throw exception (in developer mode) if page context is not set, otherwise it is not noticeable in AJAX calls&lt;br /&gt;
* MDL-52826, MDL-52715 - Allow to use moodleforms in AJAX requests ([https://docs.moodle.org/dev/Fragment documentation])&lt;br /&gt;
* MDL-52013 - Allow mod_assign plugins to add calendar events&lt;br /&gt;
* MDL-51718 - Allow to specify scheme in moodle_url&lt;br /&gt;
* MDL-51700 - Ajax service should clean the return values of the external functions&lt;br /&gt;
* MDL-46891 - Upgrade to behat 3.x&lt;br /&gt;
* MDL-48362 - Improve the enrol API to prevent logic in the UI ([https://docs.moodle.org/dev/Enrolment_plugins#Standard_Editing_UI documentation])&lt;br /&gt;
* MDL-51324 - New course chooser element for moodleforms ([https://docs.moodle.org/dev/lib/formslib.php_Form_Definition#autocomplete documentation])&lt;br /&gt;
* MDL-52996 - Allow Atto customisation for special-purpose plugins&lt;br /&gt;
* MDL-53102 - Message-ID email headers not consistent or using correct domain&lt;br /&gt;
* MDL-53311 - Changes to navigation tree structure&lt;br /&gt;
* MDL-52651 - Add no referrer to links with _blank target attribute&lt;br /&gt;
&lt;br /&gt;
For full list of deprecations refer to lib/upgrade.txt and upgrade.txt files in the folder where the particular plugin is located. Here are the most major deprecations:&lt;br /&gt;
&lt;br /&gt;
* MDL-49414 - Remove deprecated web services&lt;br /&gt;
* MDL-48621 - Deprecate the old events system&lt;br /&gt;
* MDL-52207 - Delete Zend framework&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Moodle 3.0 release notes]]&lt;br /&gt;
 &lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 3.1]]&lt;br /&gt;
 &lt;br /&gt;
[[fr:Notes de mise à jour de Moodle 3.1]]&lt;br /&gt;
[[es:Notas de Moodle 3.1]]&lt;/div&gt;</summary>
		<author><name>Cameron1729</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=49852</id>
		<title>Moodle libraries credits</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=49852"/>
		<updated>2016-04-21T05:35:12Z</updated>

		<summary type="html">&lt;p&gt;Cameron1729: Add credits for PHPExcel library&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some of Moodle&#039;s libraries were written by other people, and are being redistributed as part of Moodle under their respective open source licenses that thankfully allow us to do so. Thanks to the authors of all these excellent products - without them Moodle would be missing important functionality. Copyright information for each package is included below:&lt;br /&gt;
&lt;br /&gt;
==ADOdb==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/adodb&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Database abstraction library for MySQL, PostgreSQL, MSSQL, Oracle, Interbase, Foxpro, Access, ADO, Sybase, DB2 and ODBC.&lt;br /&gt;
&lt;br /&gt;
Version: 5.19&lt;br /&gt;
&lt;br /&gt;
Copyright © 2000-2006 John Lim (&#039;&#039;jlim AT natsoft DOT com DOT my&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
License: Dual LGPL and BSD-style&lt;br /&gt;
&lt;br /&gt;
http://adodb.sourceforge.net&lt;br /&gt;
&lt;br /&gt;
==Amazon S3==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;repository/s3/S3.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A standalone Amazon S3 (REST) client for PHP 5.2.x using CURL that does not require PEAR. &lt;br /&gt;
&lt;br /&gt;
Version: 0.5.1&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2013, Donovan Schönknecht&lt;br /&gt;
&lt;br /&gt;
License: BSD 2-Clause&lt;br /&gt;
&lt;br /&gt;
https://github.com/tpyo/amazon-s3-php-class/releases&lt;br /&gt;
&lt;br /&gt;
==EvalMath==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/evalmath&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to safely evaluate math expressions&lt;br /&gt;
&lt;br /&gt;
Copyright Miles Kaufmann&lt;br /&gt;
&lt;br /&gt;
License: BSD&lt;br /&gt;
&lt;br /&gt;
http://www.twmagic.com/&lt;br /&gt;
&lt;br /&gt;
==FLV player==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;filter/mediaplugin/flvplayer.swf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Flash movie to play FLV files&lt;br /&gt;
&lt;br /&gt;
Copyright Jeroen Wijering &lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://www.jeroenwijering.com&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==FPDF Class==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/fpdf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to generate PDF files&lt;br /&gt;
&lt;br /&gt;
Version: 1.54&lt;br /&gt;
&lt;br /&gt;
Copyright Olivier PLATHEY&lt;br /&gt;
&lt;br /&gt;
License: Freeware&lt;br /&gt;
&lt;br /&gt;
http://www.setasign.com/products/fpdi/downloads&lt;br /&gt;
&lt;br /&gt;
==GeoIP==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/geoip&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library for precessing of GeoIP data files&lt;br /&gt;
&lt;br /&gt;
Version: 1.6&lt;br /&gt;
&lt;br /&gt;
Copyright MaxMind&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
http://www.maxmind.com/app/php&lt;br /&gt;
&lt;br /&gt;
==Google APIs==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/google&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Library Google APIs Client Library for PHP&lt;br /&gt;
&lt;br /&gt;
Version: 1.1.7&lt;br /&gt;
&lt;br /&gt;
License: Apache License Version 2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/google/google-api-php-client&lt;br /&gt;
&lt;br /&gt;
==Graph Class==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/graphlib.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to draw line, point, bar, and area graphs, including numeric x-axis and double y-axis.&lt;br /&gt;
&lt;br /&gt;
Version: 1.6.3 (with modifications)&lt;br /&gt;
&lt;br /&gt;
Copyright © 2000  Herman Veluwenkamp (&#039;&#039;hermanV AT mindless DOT com&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
==Horde==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/horde&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library used by the inbound e-mail handling system.&lt;br /&gt;
&lt;br /&gt;
Version: 5.2.7&lt;br /&gt;
&lt;br /&gt;
Copyright © Horde LLC&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
http://www.horde.org/&lt;br /&gt;
&lt;br /&gt;
==html2text==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/html2text&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP script to convert HTML into an approximate text equivalent&lt;br /&gt;
&lt;br /&gt;
Version: 4.0.1&lt;br /&gt;
&lt;br /&gt;
Copyright © 2005-7 Jon Abernathy&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
https://github.com/mtibben/html2text.git&lt;br /&gt;
&lt;br /&gt;
==htmlArea==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/editor&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Javascript/HTML script to put a GUI editor in textareas on Internet Explorer and Mozilla&lt;br /&gt;
&lt;br /&gt;
Version: 3.0 beta (with modifications)&lt;br /&gt;
&lt;br /&gt;
Copyright © 2002  interactivetools.com, inc.&lt;br /&gt;
&lt;br /&gt;
License: htmlArea License (based on BSD license)&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==IP-Atlas==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/ipatlas&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP scripts to show the location of an IP address on a map.&lt;br /&gt;
&lt;br /&gt;
Version: 1.0 (with modifications)&lt;br /&gt;
&lt;br /&gt;
Copyright © 2002   Ivan Kozik&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://www.xpenguin.com/ip-atlas.php&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==Services_JSON==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/json&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Allows PHP-&amp;gt;JS communication via JSON&lt;br /&gt;
&lt;br /&gt;
Version: 1.3.1&lt;br /&gt;
&lt;br /&gt;
Copyright © 2005 Michal Migurski&lt;br /&gt;
&lt;br /&gt;
License: Modified BSD (GPL-compatible)&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/pepr/pepr-proposal-show.php?id=198&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==kses==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/kses.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HTML/XHTML filter that only allows some elements and attributes&lt;br /&gt;
&lt;br /&gt;
Version: 0.2.2&lt;br /&gt;
&lt;br /&gt;
Copyright © 2002, 2003, 2005   Ulf Harnhammar&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/projects/kses&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==MathJax==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Not actually included in Moodle. Moodle instead has a setting where the mathjax library is located. It is currently pointing to CDN by default.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
JavaScript filter library for displaying LaTeX, AsciiMath notation, and MathML.&lt;br /&gt;
&lt;br /&gt;
Version 2.6&lt;br /&gt;
&lt;br /&gt;
© Copyright 2015 The MathJax Consortium.&lt;br /&gt;
&lt;br /&gt;
License: Apache V2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/mathjax/MathJax&lt;br /&gt;
&lt;br /&gt;
==mimeTeX==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;filter/tex&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Compiled C program to convert TeX into GIFs&lt;br /&gt;
&lt;br /&gt;
Version: 1.4&lt;br /&gt;
&lt;br /&gt;
Copyright © 2002-2004   John Forkosh Associates, Inc&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://www.forkosh.com/mimetex.html&lt;br /&gt;
&lt;br /&gt;
==Mustache.js==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/amd/src/mustache.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
JS library for displaying mustache templates.&lt;br /&gt;
&lt;br /&gt;
Version: 2.2.1&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2009 Chris Wanstrath (Ruby)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2014 Jan Lehnardt (JavaScript)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2015 The mustache.js community&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/janl/mustache.js/releases&lt;br /&gt;
&lt;br /&gt;
==Mustache==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/mustache&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PHP library for displaying mustache templates.&lt;br /&gt;
&lt;br /&gt;
Version: 2.10.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2015 Justin Hileman&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/bobthecow/mustache.php/releases&lt;br /&gt;
&lt;br /&gt;
==mp3player==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/mp3player&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Flash movie to play streaming MP3s&lt;br /&gt;
&lt;br /&gt;
Copyright © 2005   Andrew Walker&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==overlibmws==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/overlib.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Javascript library to enable DHTML popups, floating windows, events etc&lt;br /&gt;
&lt;br /&gt;
Version: July 2004&lt;br /&gt;
&lt;br /&gt;
Copyright © 2002-2004   Foteos Macrides&lt;br /&gt;
&lt;br /&gt;
Copyright © 1998-2004   Erik Bosrup&lt;br /&gt;
&lt;br /&gt;
License: Artistic Open Source License&lt;br /&gt;
&lt;br /&gt;
http://www.macridesweb.com/oltest/&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
== password_compat ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/password_compat&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Provides forward compatibility with the password_* functions that ship with PHP 5.5.&lt;br /&gt;
&lt;br /&gt;
Copyright © 2012 Anthony Ferrara&lt;br /&gt;
&lt;br /&gt;
License: MIT License&lt;br /&gt;
&lt;br /&gt;
https://github.com/ircmaxell/password_compat&lt;br /&gt;
&lt;br /&gt;
==PclZip==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pclzip&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to create, manage and unpack zip files.&lt;br /&gt;
&lt;br /&gt;
Version: 2.4 RC1&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004  Vincent Blavet (&#039;&#039;vincent AT phpconcept DOT net&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://www.phpconcept.net&lt;br /&gt;
&lt;br /&gt;
==PEAR OLE Classes==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to write Excel files&lt;br /&gt;
&lt;br /&gt;
Version: 0.5&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004  Xavier Noguer&lt;br /&gt;
&lt;br /&gt;
License: PHP (plus special exemption for Moodle to make it compatible)&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/OLE&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==PEAR Spreadsheet_Excel_Writer==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to write Excel files&lt;br /&gt;
&lt;br /&gt;
Version: 0.9.1&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004  Xavier Noguer and Mika Tuupola&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/Spreadsheet_Excel_Writer&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==PEAR HTML_Quickform==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to write forms&lt;br /&gt;
&lt;br /&gt;
Version: 3.2.6&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004  Bertrand Mansion, Adam Daniel, Alexey Borzov&lt;br /&gt;
&lt;br /&gt;
License: PHP (plus special exemption for Moodle to make it compatible)&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/HTML_Quickform&lt;br /&gt;
&lt;br /&gt;
==PEAR HTML_Quickform_Renderer_Tableless==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to render forms without tables&lt;br /&gt;
&lt;br /&gt;
Version: 0.3.4&lt;br /&gt;
&lt;br /&gt;
Copyright © 2005 Mark Wiesemann&lt;br /&gt;
&lt;br /&gt;
License: PHP (plus special exemption for Moodle to make it compatible)&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/HTML_Quickform_Renderer_Tableless&lt;br /&gt;
&lt;br /&gt;
==PEAR HTML_QuickForm_DHTMLRulesTableless==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to render validation notices with dhtml&lt;br /&gt;
&lt;br /&gt;
Version: 0.1.2&lt;br /&gt;
&lt;br /&gt;
Copyright © 2005 Alexey Borzov, Adam Daniel, Bertrand Mansion, Justin Patrin, Mark Wiesemann&lt;br /&gt;
&lt;br /&gt;
License: PHP (plus special exemption for Moodle to make it compatible)&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/HTML_QuickForm_DHTMLRulesTableless&lt;br /&gt;
&lt;br /&gt;
==PEAR HTML_Common==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class with many common HTML functions (used by HTML Quickform)&lt;br /&gt;
&lt;br /&gt;
Version: 0.3.4&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004  Adam Daniel, Bertrand Mansion, Klaus Guenther, Alexey Borzov&lt;br /&gt;
&lt;br /&gt;
License: PHP (plus special exemption for Moodle to make it compatible)&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/HTML_Common&lt;br /&gt;
&lt;br /&gt;
==PEAR XML_Parser==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class implementing one handy (sax-expat) XML parser&lt;br /&gt;
&lt;br /&gt;
Version: 1.3.2&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004-2008 The PHP Group &amp;amp; Stephan Schmidt&lt;br /&gt;
&lt;br /&gt;
License: New BSD License&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/XML_Parser&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==PHPExcel==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/phpexcel/PHPExcel.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library to read, write and create spreadsheet documents in PHP.&lt;br /&gt;
&lt;br /&gt;
Version 1.8.1&lt;br /&gt;
&lt;br /&gt;
Copyright © 2006 - 2015 PHPExcel&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
https://github.com/PHPOffice/PHPExcel&lt;br /&gt;
&lt;br /&gt;
==PHP mailer==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/class.phpmailer.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class for sending email using either sendmail, PHP mail(), or SMTP.  Methods are based upon the standard AspEmail(tm) classes.&lt;br /&gt;
&lt;br /&gt;
Version 5.2.14&lt;br /&gt;
&lt;br /&gt;
Copyright © 2003 Brent R. Matzelle (&#039;&#039;bmatzelle AT yahoo DOT com&#039;&#039;)&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
http://phpmailer.sourceforge.net&lt;br /&gt;
https://github.com/PHPMailer/PHPMailer/releases&lt;br /&gt;
&lt;br /&gt;
==PHP Markdown==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/markdown.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Functions to convert from the Markdown text format into clean XHTML.&lt;br /&gt;
&lt;br /&gt;
Version: 1.6.0 (with modifications)&lt;br /&gt;
&lt;br /&gt;
PHP Markdown Lib Copyright © 2004-2015 Michel Fortin https://michelf.ca/&lt;br /&gt;
All rights reserved.&lt;br /&gt;
&lt;br /&gt;
Based on Markdown&lt;br /&gt;
Copyright © 2003-2005 John Gruber https://daringfireball.net/&lt;br /&gt;
All rights reserved.&lt;br /&gt;
&lt;br /&gt;
License: BSD&lt;br /&gt;
&lt;br /&gt;
http://www.michelf.com/projects/php-markdown/&lt;br /&gt;
&lt;br /&gt;
==Snoopy==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/snoopy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A PHP net client&lt;br /&gt;
&lt;br /&gt;
Version: 1.0&lt;br /&gt;
&lt;br /&gt;
Copyright © 1999-2000 Monte Ohrt (&#039;&#039;monte AT ispi DOT net&#039;&#039;)&lt;br /&gt;
License: GNU LGPL&lt;br /&gt;
&lt;br /&gt;
http://snoopy.sourceforge.com&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==SMTP class==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/class.smtp.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class that can be used to connect and communicate with any SMTP server. It implements all the SMTP functions defined in RFC821 except TURN.&lt;br /&gt;
&lt;br /&gt;
Version: 03/26/2001&lt;br /&gt;
&lt;br /&gt;
Copyright © 2001  Chris Ryan (&#039;&#039;chris AT greatbridge DOT com&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==Spike PHPCoverage==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/spikephpcoverage&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP code coverage reporting tool&lt;br /&gt;
&lt;br /&gt;
Version: 0.8.2 (with modifications)&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004 SpikeSource Inc&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
http://developer.spikesource.com/projects/phpcoverage&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==Typo3 Character Set Class==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/typo3&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class for conversion between charsets and multibyte-savy operations with strings.&lt;br /&gt;
&lt;br /&gt;
Version: 4.7.19&lt;br /&gt;
&lt;br /&gt;
Copyright © 2003-2005 Kasper Skaarhoj&lt;br /&gt;
&lt;br /&gt;
Licence: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/&lt;br /&gt;
&lt;br /&gt;
==Yahoo User Interface==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/yui&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Yahoo! User Interface Library is a set of utilities and controls, in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX. The YUI Library also includes several core CSS resources.Set of user-interface components using AJAX, DHTML etc.  We use it for all our AJAX-related stuff.&lt;br /&gt;
&lt;br /&gt;
CVS version: 2.3.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2006, Yahoo! Inc.&lt;br /&gt;
&lt;br /&gt;
Licence: BSD&lt;br /&gt;
&lt;br /&gt;
http://developer.yahoo.com/yui/&lt;br /&gt;
&lt;br /&gt;
==Mustache.js==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/amd/src/mustache.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
JS library for displaying mustache templates.&lt;br /&gt;
&lt;br /&gt;
Version: 2.2.1&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2009 Chris Wanstrath (Ruby)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2014 Jan Lehnardt (JavaScript)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2015 The mustache.js community&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/janl/mustache.js/releases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Cameron1729</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=49846</id>
		<title>Moodle libraries credits</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=49846"/>
		<updated>2016-04-20T09:01:30Z</updated>

		<summary type="html">&lt;p&gt;Cameron1729: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some of Moodle&#039;s libraries were written by other people, and are being redistributed as part of Moodle under their respective open source licenses that thankfully allow us to do so. Thanks to the authors of all these excellent products - without them Moodle would be missing important functionality. Copyright information for each package is included below:&lt;br /&gt;
&lt;br /&gt;
==ADOdb==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/adodb&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Database abstraction library for MySQL, PostgreSQL, MSSQL, Oracle, Interbase, Foxpro, Access, ADO, Sybase, DB2 and ODBC.&lt;br /&gt;
&lt;br /&gt;
Version: 5.19&lt;br /&gt;
&lt;br /&gt;
Copyright © 2000-2006 John Lim (&#039;&#039;jlim AT natsoft DOT com DOT my&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
License: Dual LGPL and BSD-style&lt;br /&gt;
&lt;br /&gt;
http://adodb.sourceforge.net&lt;br /&gt;
&lt;br /&gt;
==Amazon S3==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;repository/s3/S3.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A standalone Amazon S3 (REST) client for PHP 5.2.x using CURL that does not require PEAR. &lt;br /&gt;
&lt;br /&gt;
Version: 0.5.1&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2013, Donovan Schönknecht&lt;br /&gt;
&lt;br /&gt;
License: BSD 2-Clause&lt;br /&gt;
&lt;br /&gt;
https://github.com/tpyo/amazon-s3-php-class/releases&lt;br /&gt;
&lt;br /&gt;
==EvalMath==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/evalmath&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to safely evaluate math expressions&lt;br /&gt;
&lt;br /&gt;
Copyright Miles Kaufmann&lt;br /&gt;
&lt;br /&gt;
License: BSD&lt;br /&gt;
&lt;br /&gt;
http://www.twmagic.com/&lt;br /&gt;
&lt;br /&gt;
==FLV player==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;filter/mediaplugin/flvplayer.swf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Flash movie to play FLV files&lt;br /&gt;
&lt;br /&gt;
Copyright Jeroen Wijering &lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://www.jeroenwijering.com&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==FPDF Class==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/fpdf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to generate PDF files&lt;br /&gt;
&lt;br /&gt;
Version: 1.54&lt;br /&gt;
&lt;br /&gt;
Copyright Olivier PLATHEY&lt;br /&gt;
&lt;br /&gt;
License: Freeware&lt;br /&gt;
&lt;br /&gt;
http://www.setasign.com/products/fpdi/downloads&lt;br /&gt;
&lt;br /&gt;
==GeoIP==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/geoip&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library for precessing of GeoIP data files&lt;br /&gt;
&lt;br /&gt;
Version: 1.6&lt;br /&gt;
&lt;br /&gt;
Copyright MaxMind&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
http://www.maxmind.com/app/php&lt;br /&gt;
&lt;br /&gt;
==Google APIs==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/google&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Library Google APIs Client Library for PHP&lt;br /&gt;
&lt;br /&gt;
Version: 1.1.5&lt;br /&gt;
&lt;br /&gt;
License: Apache License Version 2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/google/google-api-php-client&lt;br /&gt;
&lt;br /&gt;
==Graph Class==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/graphlib.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to draw line, point, bar, and area graphs, including numeric x-axis and double y-axis.&lt;br /&gt;
&lt;br /&gt;
Version: 1.6.3 (with modifications)&lt;br /&gt;
&lt;br /&gt;
Copyright © 2000  Herman Veluwenkamp (&#039;&#039;hermanV AT mindless DOT com&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
==Horde==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/horde&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library used by the inbound e-mail handling system.&lt;br /&gt;
&lt;br /&gt;
Version: 5.2.7&lt;br /&gt;
&lt;br /&gt;
Copyright © Horde LLC&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
http://www.horde.org/&lt;br /&gt;
&lt;br /&gt;
==html2text==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/html2text&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP script to convert HTML into an approximate text equivalent&lt;br /&gt;
&lt;br /&gt;
Version: 4.0.1&lt;br /&gt;
&lt;br /&gt;
Copyright © 2005-7 Jon Abernathy&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
https://github.com/mtibben/html2text.git&lt;br /&gt;
&lt;br /&gt;
==htmlArea==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/editor&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Javascript/HTML script to put a GUI editor in textareas on Internet Explorer and Mozilla&lt;br /&gt;
&lt;br /&gt;
Version: 3.0 beta (with modifications)&lt;br /&gt;
&lt;br /&gt;
Copyright © 2002  interactivetools.com, inc.&lt;br /&gt;
&lt;br /&gt;
License: htmlArea License (based on BSD license)&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==IP-Atlas==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/ipatlas&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP scripts to show the location of an IP address on a map.&lt;br /&gt;
&lt;br /&gt;
Version: 1.0 (with modifications)&lt;br /&gt;
&lt;br /&gt;
Copyright © 2002   Ivan Kozik&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://www.xpenguin.com/ip-atlas.php&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==Services_JSON==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/json&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Allows PHP-&amp;gt;JS communication via JSON&lt;br /&gt;
&lt;br /&gt;
Version: 1.3.1&lt;br /&gt;
&lt;br /&gt;
Copyright © 2005 Michal Migurski&lt;br /&gt;
&lt;br /&gt;
License: Modified BSD (GPL-compatible)&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/pepr/pepr-proposal-show.php?id=198&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==kses==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/kses.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HTML/XHTML filter that only allows some elements and attributes&lt;br /&gt;
&lt;br /&gt;
Version: 0.2.2&lt;br /&gt;
&lt;br /&gt;
Copyright © 2002, 2003, 2005   Ulf Harnhammar&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/projects/kses&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==MathJax==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Not actually included in Moodle. Moodle instead has a setting where the mathjax library is located. It is currently pointing to CDN by default.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
JavaScript filter library for displaying LaTeX, AsciiMath notation, and MathML.&lt;br /&gt;
&lt;br /&gt;
Version 2.6&lt;br /&gt;
&lt;br /&gt;
© Copyright 2015 The MathJax Consortium.&lt;br /&gt;
&lt;br /&gt;
License: Apache V2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/mathjax/MathJax&lt;br /&gt;
&lt;br /&gt;
==mimeTeX==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;filter/tex&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Compiled C program to convert TeX into GIFs&lt;br /&gt;
&lt;br /&gt;
Version: 1.4&lt;br /&gt;
&lt;br /&gt;
Copyright © 2002-2004   John Forkosh Associates, Inc&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://www.forkosh.com/mimetex.html&lt;br /&gt;
&lt;br /&gt;
==Mustache.js==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/amd/src/mustache.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
JS library for displaying mustache templates.&lt;br /&gt;
&lt;br /&gt;
Version: 2.2.1&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2009 Chris Wanstrath (Ruby)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2014 Jan Lehnardt (JavaScript)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2015 The mustache.js community&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/janl/mustache.js/releases&lt;br /&gt;
&lt;br /&gt;
==Mustache==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/mustache&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PHP library for displaying mustache templates.&lt;br /&gt;
&lt;br /&gt;
Version: 2.10.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2015 Justin Hileman&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/bobthecow/mustache.php/releases&lt;br /&gt;
&lt;br /&gt;
==mp3player==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/mp3player&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Flash movie to play streaming MP3s&lt;br /&gt;
&lt;br /&gt;
Copyright © 2005   Andrew Walker&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==overlibmws==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/overlib.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Javascript library to enable DHTML popups, floating windows, events etc&lt;br /&gt;
&lt;br /&gt;
Version: July 2004&lt;br /&gt;
&lt;br /&gt;
Copyright © 2002-2004   Foteos Macrides&lt;br /&gt;
&lt;br /&gt;
Copyright © 1998-2004   Erik Bosrup&lt;br /&gt;
&lt;br /&gt;
License: Artistic Open Source License&lt;br /&gt;
&lt;br /&gt;
http://www.macridesweb.com/oltest/&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
== password_compat ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/password_compat&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Provides forward compatibility with the password_* functions that ship with PHP 5.5.&lt;br /&gt;
&lt;br /&gt;
Copyright © 2012 Anthony Ferrara&lt;br /&gt;
&lt;br /&gt;
License: MIT License&lt;br /&gt;
&lt;br /&gt;
https://github.com/ircmaxell/password_compat&lt;br /&gt;
&lt;br /&gt;
==PclZip==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pclzip&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to create, manage and unpack zip files.&lt;br /&gt;
&lt;br /&gt;
Version: 2.4 RC1&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004  Vincent Blavet (&#039;&#039;vincent AT phpconcept DOT net&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://www.phpconcept.net&lt;br /&gt;
&lt;br /&gt;
==PEAR OLE Classes==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to write Excel files&lt;br /&gt;
&lt;br /&gt;
Version: 0.5&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004  Xavier Noguer&lt;br /&gt;
&lt;br /&gt;
License: PHP (plus special exemption for Moodle to make it compatible)&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/OLE&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==PEAR Spreadsheet_Excel_Writer==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to write Excel files&lt;br /&gt;
&lt;br /&gt;
Version: 0.9.1&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004  Xavier Noguer and Mika Tuupola&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/Spreadsheet_Excel_Writer&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==PEAR HTML_Quickform==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to write forms&lt;br /&gt;
&lt;br /&gt;
Version: 3.2.6&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004  Bertrand Mansion, Adam Daniel, Alexey Borzov&lt;br /&gt;
&lt;br /&gt;
License: PHP (plus special exemption for Moodle to make it compatible)&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/HTML_Quickform&lt;br /&gt;
&lt;br /&gt;
==PEAR HTML_Quickform_Renderer_Tableless==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to render forms without tables&lt;br /&gt;
&lt;br /&gt;
Version: 0.3.4&lt;br /&gt;
&lt;br /&gt;
Copyright © 2005 Mark Wiesemann&lt;br /&gt;
&lt;br /&gt;
License: PHP (plus special exemption for Moodle to make it compatible)&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/HTML_Quickform_Renderer_Tableless&lt;br /&gt;
&lt;br /&gt;
==PEAR HTML_QuickForm_DHTMLRulesTableless==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to render validation notices with dhtml&lt;br /&gt;
&lt;br /&gt;
Version: 0.1.2&lt;br /&gt;
&lt;br /&gt;
Copyright © 2005 Alexey Borzov, Adam Daniel, Bertrand Mansion, Justin Patrin, Mark Wiesemann&lt;br /&gt;
&lt;br /&gt;
License: PHP (plus special exemption for Moodle to make it compatible)&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/HTML_QuickForm_DHTMLRulesTableless&lt;br /&gt;
&lt;br /&gt;
==PEAR HTML_Common==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class with many common HTML functions (used by HTML Quickform)&lt;br /&gt;
&lt;br /&gt;
Version: 0.3.4&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004  Adam Daniel, Bertrand Mansion, Klaus Guenther, Alexey Borzov&lt;br /&gt;
&lt;br /&gt;
License: PHP (plus special exemption for Moodle to make it compatible)&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/HTML_Common&lt;br /&gt;
&lt;br /&gt;
==PEAR XML_Parser==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/pear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class implementing one handy (sax-expat) XML parser&lt;br /&gt;
&lt;br /&gt;
Version: 1.3.2&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004-2008 The PHP Group &amp;amp; Stephan Schmidt&lt;br /&gt;
&lt;br /&gt;
License: New BSD License&lt;br /&gt;
&lt;br /&gt;
http://pear.php.net/package/XML_Parser&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==PHP mailer==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/class.phpmailer.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class for sending email using either sendmail, PHP mail(), or SMTP.  Methods are based upon the standard AspEmail(tm) classes.&lt;br /&gt;
&lt;br /&gt;
Version 5.2.14&lt;br /&gt;
&lt;br /&gt;
Copyright © 2003 Brent R. Matzelle (&#039;&#039;bmatzelle AT yahoo DOT com&#039;&#039;)&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
http://phpmailer.sourceforge.net&lt;br /&gt;
https://github.com/PHPMailer/PHPMailer/releases&lt;br /&gt;
&lt;br /&gt;
==PHP Markdown==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/markdown.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Functions to convert from the Markdown text format into clean XHTML.&lt;br /&gt;
&lt;br /&gt;
Version: 1.5.0 (with modifications)&lt;br /&gt;
&lt;br /&gt;
PHP Markdown Lib Copyright © 2004-2015 Michel Fortin https://michelf.ca/&lt;br /&gt;
All rights reserved.&lt;br /&gt;
&lt;br /&gt;
Based on Markdown&lt;br /&gt;
Copyright © 2003-2005 John Gruber https://daringfireball.net/&lt;br /&gt;
All rights reserved.&lt;br /&gt;
&lt;br /&gt;
License: BSD&lt;br /&gt;
&lt;br /&gt;
http://www.michelf.com/projects/php-markdown/&lt;br /&gt;
&lt;br /&gt;
==Snoopy==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/snoopy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A PHP net client&lt;br /&gt;
&lt;br /&gt;
Version: 1.0&lt;br /&gt;
&lt;br /&gt;
Copyright © 1999-2000 Monte Ohrt (&#039;&#039;monte AT ispi DOT net&#039;&#039;)&lt;br /&gt;
License: GNU LGPL&lt;br /&gt;
&lt;br /&gt;
http://snoopy.sourceforge.com&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==SMTP class==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/class.smtp.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class that can be used to connect and communicate with any SMTP server. It implements all the SMTP functions defined in RFC821 except TURN.&lt;br /&gt;
&lt;br /&gt;
Version: 03/26/2001&lt;br /&gt;
&lt;br /&gt;
Copyright © 2001  Chris Ryan (&#039;&#039;chris AT greatbridge DOT com&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==Spike PHPCoverage==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/spikephpcoverage&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP code coverage reporting tool&lt;br /&gt;
&lt;br /&gt;
Version: 0.8.2 (with modifications)&lt;br /&gt;
&lt;br /&gt;
Copyright © 2004 SpikeSource Inc&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
http://developer.spikesource.com/projects/phpcoverage&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==Typo3 Character Set Class==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/typo3&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class for conversion between charsets and multibyte-savy operations with strings.&lt;br /&gt;
&lt;br /&gt;
Version: 4.7.19&lt;br /&gt;
&lt;br /&gt;
Copyright © 2003-2005 Kasper Skaarhoj&lt;br /&gt;
&lt;br /&gt;
Licence: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/&lt;br /&gt;
&lt;br /&gt;
==Yahoo User Interface==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/yui&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Yahoo! User Interface Library is a set of utilities and controls, in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX. The YUI Library also includes several core CSS resources.Set of user-interface components using AJAX, DHTML etc.  We use it for all our AJAX-related stuff.&lt;br /&gt;
&lt;br /&gt;
CVS version: 2.3.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2006, Yahoo! Inc.&lt;br /&gt;
&lt;br /&gt;
Licence: BSD&lt;br /&gt;
&lt;br /&gt;
http://developer.yahoo.com/yui/&lt;br /&gt;
&lt;br /&gt;
==Mustache.js==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/amd/src/mustache.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
JS library for displaying mustache templates.&lt;br /&gt;
&lt;br /&gt;
Version: 2.2.1&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2009 Chris Wanstrath (Ruby)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2014 Jan Lehnardt (JavaScript)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2015 The mustache.js community&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/janl/mustache.js/releases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Cameron1729</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=sandbox&amp;diff=49845</id>
		<title>sandbox</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=sandbox&amp;diff=49845"/>
		<updated>2016-04-20T08:47:38Z</updated>

		<summary type="html">&lt;p&gt;Cameron1729: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For playing around in....&lt;br /&gt;
a&lt;br /&gt;
&lt;br /&gt;
asdf&lt;/div&gt;</summary>
		<author><name>Cameron1729</name></author>
	</entry>
</feed>