<?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=Lameze</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=Lameze"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Lameze"/>
	<updated>2026-08-03T12:51:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Deprecation&amp;diff=61768</id>
		<title>Deprecation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Deprecation&amp;diff=61768"/>
		<updated>2022-03-04T07:24:39Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &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;
&lt;br /&gt;
== Parameters deprecation ==&lt;br /&gt;
* The deprecated parameter should be renamed to &amp;lt;tt&amp;gt;$unused&amp;lt;/tt&amp;gt; and it&#039;s default value changed to &amp;lt;tt&amp;gt;null&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* The respective parameter phpDoc should be updated stating the parameter has been deprecated since version X.X and should not be used any more.&lt;br /&gt;
 @param null $unused This parameter has been deprecated since 4.0 and should not be used anymore.&lt;br /&gt;
Remember the phpDoc parameter type should also be updated to &amp;lt;tt&amp;gt;null&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Show a debugging message if that parameter is being provided in the function call:  &lt;br /&gt;
 if ($unused !== null) {&lt;br /&gt;
     debugging(&#039;Deprecated argument passed to &#039; . __FUNCTION__, DEBUG_DEVELOPER);&lt;br /&gt;
 }&lt;br /&gt;
* Update all calls to the affected function removing the deprecated parameter.&lt;br /&gt;
* Add a mention to corresponding upgrade.txt documenting the deprecated method should not be used any more.&lt;br /&gt;
 &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>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Deprecation&amp;diff=61767</id>
		<title>Deprecation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Deprecation&amp;diff=61767"/>
		<updated>2022-03-04T07:20:27Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &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;
&lt;br /&gt;
== Parameters deprecation ==&lt;br /&gt;
* The deprecated parameter should be renamed to &amp;lt;tt&amp;gt;$unused&amp;lt;/tt&amp;gt; and it&#039;s default value changed to &amp;lt;tt&amp;gt;null&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* The respective parameter phpDoc should be updated stating the parameter has been deprecated since version X.X and should not be used any more.&lt;br /&gt;
 @param null $unused This parameter has been deprecated since 4.0 and should not be used anymore.&lt;br /&gt;
Remember the phpDoc parameter type should also be updated to &amp;lt;tt&amp;gt;null&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Show a debugging message if that parameter is being provided in the function call:  &lt;br /&gt;
 if ($unused !== null) {&lt;br /&gt;
     debugging(&#039;Deprecated argument passed to &#039; . __FUNCTION__, DEBUG_DEVELOPER);&lt;br /&gt;
 }&lt;br /&gt;
* Add a mention to corresponding upgrade.txt documenting the deprecated method should not be used any more.&lt;br /&gt;
 &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>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=57614</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=57614"/>
		<updated>2020-06-17T06:36:44Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* loglevel.js */&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.20.14&lt;br /&gt;
&lt;br /&gt;
@copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.&lt;br /&gt;
&lt;br /&gt;
@copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community&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;
==Bennu==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/bennu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Bennu is an object-oriented library written in PHP that implements the iCalendar standard (RFC 2445).&lt;br /&gt;
&lt;br /&gt;
Version: 0.1 (customized since then)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2005, Jon Papaioannou&lt;br /&gt;
&lt;br /&gt;
License: LGPL 2.1+&lt;br /&gt;
&lt;br /&gt;
http://bennu.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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;auth/cas/CAS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Version: 1.3.7&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&lt;br /&gt;
&lt;br /&gt;
==Chart.js==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/amd/src/chartjs-lazy.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Simple yet flexible JavaScript charting for designers &amp;amp; developers&lt;br /&gt;
&lt;br /&gt;
Version: 2.7.0&lt;br /&gt;
&lt;br /&gt;
Copyright 2016 Nick Downie&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://www.chartjs.org&lt;br /&gt;
&lt;br /&gt;
==Emoji-data==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/emoji-data&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library to parse easily data and spritesheets for emoji&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/iamcal/emoji-data/&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;
==Flexitour==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/tour.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A JS library for tours&lt;br /&gt;
&lt;br /&gt;
© 2016 Andrew Nicols and contributors&lt;br /&gt;
&lt;br /&gt;
License: GPLv3&lt;br /&gt;
&lt;br /&gt;
https://github.com/andrewnicols/flexitour&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;
== GeoIp2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/maxmind/GeoIp2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library for processing of GeoIP data files&lt;br /&gt;
&lt;br /&gt;
Version: 2.10.0&lt;br /&gt;
&lt;br /&gt;
Copyright MaxMind&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/maxmind/GeoIP2-php&lt;br /&gt;
&lt;br /&gt;
== GeoPattern==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/geopattern-php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library for creating beautiful generative background images from a string&lt;br /&gt;
&lt;br /&gt;
Version: 1.1.1&lt;br /&gt;
&lt;br /&gt;
Copyright 2015 Leaf Corcoran&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/RedeyeGroup/geopattern-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;
==H5P==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/h5p&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The general H5P library&lt;br /&gt;
&lt;br /&gt;
Version: 1.24&lt;br /&gt;
&lt;br /&gt;
Copyright © Joubel&lt;br /&gt;
&lt;br /&gt;
License: GPL-3.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/h5p/h5p-php-library/&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.22&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.2.1&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2005-2007 Jon Abernathy &amp;lt;jon@chuggnutt.com&amp;gt;&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;
==HTML Purifier==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/htmlpurifier&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Filters HTML.&lt;br /&gt;
&lt;br /&gt;
Version: 4.10.0&lt;br /&gt;
&lt;br /&gt;
License: LGPL&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;
==Jabber - XMPPHP==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jabber&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP library for XMPP (aka Jabber, Google Talk, etc).&lt;br /&gt;
&lt;br /&gt;
Version: 0.1rc2-r77&lt;br /&gt;
&lt;br /&gt;
Copyright: 2008  Nathanael C. Fritz&lt;br /&gt;
&lt;br /&gt;
License: GPL&lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/xmpphp&lt;br /&gt;
&lt;br /&gt;
==jQuery==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery is a fast, small, and feature-rich JavaScript library widely used on moodle.&lt;br /&gt;
&lt;br /&gt;
Version: 3.4.1&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://jquery.com&lt;br /&gt;
&lt;br /&gt;
==jQuery migrate==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/jquery-migrate-1.4.0.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library used migrate older jQuery code to jQuery 3.0.&lt;br /&gt;
&lt;br /&gt;
Version: 1.4.0&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==jQuery UI==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/ui-1.12.1/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery UI is a set of user interface interactions, effects, widgets, and themes built on top of the jQuery library.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.1&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&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;
==JWT==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/php-jwt&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A simple library to encode and decode JSON Web Tokens (JWT) in PHP, conforming to RFC 7519&lt;br /&gt;
&lt;br /&gt;
Version: 5.0.0&lt;br /&gt;
&lt;br /&gt;
Copyright © 2011, Neuman Vong&lt;br /&gt;
&lt;br /&gt;
License: BSD&lt;br /&gt;
&lt;br /&gt;
https://github.com/firebase/php-jwt&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/lessphp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==loglevel.js==&lt;br /&gt;
&lt;br /&gt;
Minimal lightweight simple logging for JavaScript.&lt;br /&gt;
&lt;br /&gt;
Version 1.6.6&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2019 Tim Perry&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/pimterry/loglevel/&lt;br /&gt;
&lt;br /&gt;
==LTI Tool Provider Library for PHP==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/ltiprovider/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PHP library for communicating with learning tools as per the LTI specification.&lt;br /&gt;
&lt;br /&gt;
Version: 3.0.2&lt;br /&gt;
&lt;br /&gt;
© 2016 IMS Global Learning Consortium Inc. All Rights Reserved. Trademark Policy - (www.imsglobal.org/trademarks)&lt;br /&gt;
&lt;br /&gt;
License: Apache 2&lt;br /&gt;
&lt;br /&gt;
https://github.com/IMSGlobal/LTI-Tool-Provider-Library-PHP&lt;br /&gt;
&lt;br /&gt;
==MathJax==&lt;br /&gt;
&lt;br /&gt;
JavaScript filter library for displaying LaTeX, AsciiMath notation, and MathML.&lt;br /&gt;
&lt;br /&gt;
Not actually included in Moodle. Instead, Moodle [[:en:MathJax filter|has a setting]] for where the library is located to be loaded from. It is currently pointing to the Cloudflare CDN by default.&lt;br /&gt;
&lt;br /&gt;
© Copyright 2009 - 2017 The MathJax Consortium&lt;br /&gt;
&lt;br /&gt;
* Default MathJax version: 2.7.2 (Moodle 3.4)&lt;br /&gt;
* License: Apache 2.0&lt;br /&gt;
* Homepage: https://www.mathjax.org/&lt;br /&gt;
&lt;br /&gt;
==MatthiasMullie\Minify==&lt;br /&gt;
CSS &amp;amp; JavaScript minifier, in PHP&lt;br /&gt;
&lt;br /&gt;
Version 1.3.61&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/matthiasmullie/minify&lt;br /&gt;
&lt;br /&gt;
==MaxMind DB Reader==&lt;br /&gt;
lib/maxmind/MaxMind/&lt;br /&gt;
&lt;br /&gt;
PHP API for reading MaxMind DB files&lt;br /&gt;
&lt;br /&gt;
Version: 1.5.1&lt;br /&gt;
&lt;br /&gt;
Copyright MaxMind&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/maxmind/MaxMind-DB-Reader-php/&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.74&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: 3.0.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.12.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2016 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;
==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;
(This library is not currently used in Moodle)&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-CSS-Parser==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/php-css-parser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Parser for CSS Files written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 8.3.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2011 Raphael Schweikert, http://sabberworm.com/&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/sabberworm/PHP-CSS-Parser&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;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==PhpSpreadsheet==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/phpspreadsheet&#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.7.0&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
https://github.com/PHPOffice/PhpSpreadsheet&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 6.0.7&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.8.0 (with modifications)&lt;br /&gt;
&lt;br /&gt;
 * @copyright 2004-2016 Michel Fortin &amp;lt;https://michelf.com/projects/php-markdown/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 * @copyright (Original Markdown) 2004-2006 John Gruber &amp;lt;https://daringfireball.net/projects/markdown/&amp;gt;&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;
==PHP-ML==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/mlbackend/php/phpml&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Machine learning library used to generate data for the Analytics system.&lt;br /&gt;
&lt;br /&gt;
Version: 0.8.0&lt;br /&gt;
&lt;br /&gt;
 * @copyright 2016-2018 Arkadiusz Kondas &amp;lt;arkadiusz.kondas[at]gmail&amp;gt;&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://php-ml.readthedocs.io/&lt;br /&gt;
&lt;br /&gt;
==Popper.js==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/popper.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A kickass library used to created Poppers in web applications&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.6&lt;br /&gt;
&lt;br /&gt;
© 2016 Federico Zivolo and contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/FezVrasta/popper.js&lt;br /&gt;
&lt;br /&gt;
==RTLCSS for PHP==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/rtlcss&amp;quot;&lt;br /&gt;
&lt;br /&gt;
RTLCSS is a framework for converting Left-To-Right (LTR) Cascading Style Sheets(CSS) to Right-To-Left (RTL).&lt;br /&gt;
&lt;br /&gt;
© 2016 Frédéric Massart&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/moodlehq/rtlcss-php&lt;br /&gt;
&lt;br /&gt;
==RequireJS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/requirejs/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
RequireJS is a JavaScript file and module loader.&lt;br /&gt;
&lt;br /&gt;
Version 2.3.5&lt;br /&gt;
&lt;br /&gt;
License: new BSD or MIT&lt;br /&gt;
&lt;br /&gt;
http://requirejs.org/&lt;br /&gt;
&lt;br /&gt;
==scssphp==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/scssphp/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
scssphp is a compiler for SCSS written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 1.0.2&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2015 Leaf Corcoran&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://leafo.github.io/scssphp&lt;br /&gt;
&lt;br /&gt;
==SimplePie==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;/lib/simplepie&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Simple Pie helps with blogs.&lt;br /&gt;
&lt;br /&gt;
Version 1.5.2&lt;br /&gt;
&lt;br /&gt;
License: BSD&lt;br /&gt;
&lt;br /&gt;
https://github.com/simplepie/simplepie&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;
==Spout==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/spout&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Library for importing and exporting csv / excel / ODS files.&lt;br /&gt;
&lt;br /&gt;
Version 3.0.1&lt;br /&gt;
&lt;br /&gt;
License: Apache&lt;br /&gt;
&lt;br /&gt;
https://github.com/box/spout/&lt;br /&gt;
&lt;br /&gt;
==TCPDF Class==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/tcpdf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to generate PDF files&lt;br /&gt;
&lt;br /&gt;
Version: 6.2.26&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;
==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;
==XHProf==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/xhprof&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Hierarchical Profiler for PHP&lt;br /&gt;
&lt;br /&gt;
Version: 0.9.4&lt;br /&gt;
&lt;br /&gt;
Copyright © 2009 Phacility&lt;br /&gt;
&lt;br /&gt;
Licence: Apache&lt;br /&gt;
&lt;br /&gt;
https://github.com/phacility/xhprof&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: 3.17.2&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;
&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=57613</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=57613"/>
		<updated>2020-06-17T06:30:54Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &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.20.14&lt;br /&gt;
&lt;br /&gt;
@copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.&lt;br /&gt;
&lt;br /&gt;
@copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community&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;
==Bennu==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/bennu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Bennu is an object-oriented library written in PHP that implements the iCalendar standard (RFC 2445).&lt;br /&gt;
&lt;br /&gt;
Version: 0.1 (customized since then)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2005, Jon Papaioannou&lt;br /&gt;
&lt;br /&gt;
License: LGPL 2.1+&lt;br /&gt;
&lt;br /&gt;
http://bennu.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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;auth/cas/CAS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Version: 1.3.7&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&lt;br /&gt;
&lt;br /&gt;
==Chart.js==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/amd/src/chartjs-lazy.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Simple yet flexible JavaScript charting for designers &amp;amp; developers&lt;br /&gt;
&lt;br /&gt;
Version: 2.7.0&lt;br /&gt;
&lt;br /&gt;
Copyright 2016 Nick Downie&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://www.chartjs.org&lt;br /&gt;
&lt;br /&gt;
==Emoji-data==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/emoji-data&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library to parse easily data and spritesheets for emoji&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/iamcal/emoji-data/&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;
==Flexitour==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/tour.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A JS library for tours&lt;br /&gt;
&lt;br /&gt;
© 2016 Andrew Nicols and contributors&lt;br /&gt;
&lt;br /&gt;
License: GPLv3&lt;br /&gt;
&lt;br /&gt;
https://github.com/andrewnicols/flexitour&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;
== GeoIp2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/maxmind/GeoIp2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library for processing of GeoIP data files&lt;br /&gt;
&lt;br /&gt;
Version: 2.10.0&lt;br /&gt;
&lt;br /&gt;
Copyright MaxMind&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/maxmind/GeoIP2-php&lt;br /&gt;
&lt;br /&gt;
== GeoPattern==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/geopattern-php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library for creating beautiful generative background images from a string&lt;br /&gt;
&lt;br /&gt;
Version: 1.1.1&lt;br /&gt;
&lt;br /&gt;
Copyright 2015 Leaf Corcoran&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/RedeyeGroup/geopattern-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;
==H5P==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/h5p&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The general H5P library&lt;br /&gt;
&lt;br /&gt;
Version: 1.24&lt;br /&gt;
&lt;br /&gt;
Copyright © Joubel&lt;br /&gt;
&lt;br /&gt;
License: GPL-3.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/h5p/h5p-php-library/&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.22&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.2.1&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2005-2007 Jon Abernathy &amp;lt;jon@chuggnutt.com&amp;gt;&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;
==HTML Purifier==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/htmlpurifier&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Filters HTML.&lt;br /&gt;
&lt;br /&gt;
Version: 4.10.0&lt;br /&gt;
&lt;br /&gt;
License: LGPL&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;
==Jabber - XMPPHP==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jabber&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP library for XMPP (aka Jabber, Google Talk, etc).&lt;br /&gt;
&lt;br /&gt;
Version: 0.1rc2-r77&lt;br /&gt;
&lt;br /&gt;
Copyright: 2008  Nathanael C. Fritz&lt;br /&gt;
&lt;br /&gt;
License: GPL&lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/xmpphp&lt;br /&gt;
&lt;br /&gt;
==jQuery==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery is a fast, small, and feature-rich JavaScript library widely used on moodle.&lt;br /&gt;
&lt;br /&gt;
Version: 3.4.1&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://jquery.com&lt;br /&gt;
&lt;br /&gt;
==jQuery migrate==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/jquery-migrate-1.4.0.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library used migrate older jQuery code to jQuery 3.0.&lt;br /&gt;
&lt;br /&gt;
Version: 1.4.0&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==jQuery UI==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/ui-1.12.1/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery UI is a set of user interface interactions, effects, widgets, and themes built on top of the jQuery library.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.1&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&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;
==JWT==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/php-jwt&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A simple library to encode and decode JSON Web Tokens (JWT) in PHP, conforming to RFC 7519&lt;br /&gt;
&lt;br /&gt;
Version: 5.0.0&lt;br /&gt;
&lt;br /&gt;
Copyright © 2011, Neuman Vong&lt;br /&gt;
&lt;br /&gt;
License: BSD&lt;br /&gt;
&lt;br /&gt;
https://github.com/firebase/php-jwt&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/lessphp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&lt;br /&gt;
&lt;br /&gt;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==loglevel.js==&lt;br /&gt;
&lt;br /&gt;
Minimal lightweight simple logging for JavaScript.&lt;br /&gt;
&lt;br /&gt;
Version 1.6.2&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2013 Tim Perry&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/pimterry/loglevel/&lt;br /&gt;
&lt;br /&gt;
==LTI Tool Provider Library for PHP==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/ltiprovider/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PHP library for communicating with learning tools as per the LTI specification.&lt;br /&gt;
&lt;br /&gt;
Version: 3.0.2&lt;br /&gt;
&lt;br /&gt;
© 2016 IMS Global Learning Consortium Inc. All Rights Reserved. Trademark Policy - (www.imsglobal.org/trademarks)&lt;br /&gt;
&lt;br /&gt;
License: Apache 2&lt;br /&gt;
&lt;br /&gt;
https://github.com/IMSGlobal/LTI-Tool-Provider-Library-PHP&lt;br /&gt;
&lt;br /&gt;
==MathJax==&lt;br /&gt;
&lt;br /&gt;
JavaScript filter library for displaying LaTeX, AsciiMath notation, and MathML.&lt;br /&gt;
&lt;br /&gt;
Not actually included in Moodle. Instead, Moodle [[:en:MathJax filter|has a setting]] for where the library is located to be loaded from. It is currently pointing to the Cloudflare CDN by default.&lt;br /&gt;
&lt;br /&gt;
© Copyright 2009 - 2017 The MathJax Consortium&lt;br /&gt;
&lt;br /&gt;
* Default MathJax version: 2.7.2 (Moodle 3.4)&lt;br /&gt;
* License: Apache 2.0&lt;br /&gt;
* Homepage: https://www.mathjax.org/&lt;br /&gt;
&lt;br /&gt;
==MatthiasMullie\Minify==&lt;br /&gt;
CSS &amp;amp; JavaScript minifier, in PHP&lt;br /&gt;
&lt;br /&gt;
Version 1.3.61&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/matthiasmullie/minify&lt;br /&gt;
&lt;br /&gt;
==MaxMind DB Reader==&lt;br /&gt;
lib/maxmind/MaxMind/&lt;br /&gt;
&lt;br /&gt;
PHP API for reading MaxMind DB files&lt;br /&gt;
&lt;br /&gt;
Version: 1.5.1&lt;br /&gt;
&lt;br /&gt;
Copyright MaxMind&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/maxmind/MaxMind-DB-Reader-php/&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.74&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: 3.0.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.12.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2016 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;
==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;
(This library is not currently used in Moodle)&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-CSS-Parser==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/php-css-parser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Parser for CSS Files written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 8.3.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2011 Raphael Schweikert, http://sabberworm.com/&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/sabberworm/PHP-CSS-Parser&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;
(This library is not currently used in Moodle)&lt;br /&gt;
&lt;br /&gt;
==PhpSpreadsheet==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/phpspreadsheet&#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.7.0&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
https://github.com/PHPOffice/PhpSpreadsheet&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 6.0.7&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.8.0 (with modifications)&lt;br /&gt;
&lt;br /&gt;
 * @copyright 2004-2016 Michel Fortin &amp;lt;https://michelf.com/projects/php-markdown/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 * @copyright (Original Markdown) 2004-2006 John Gruber &amp;lt;https://daringfireball.net/projects/markdown/&amp;gt;&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;
==PHP-ML==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/mlbackend/php/phpml&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Machine learning library used to generate data for the Analytics system.&lt;br /&gt;
&lt;br /&gt;
Version: 0.8.0&lt;br /&gt;
&lt;br /&gt;
 * @copyright 2016-2018 Arkadiusz Kondas &amp;lt;arkadiusz.kondas[at]gmail&amp;gt;&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://php-ml.readthedocs.io/&lt;br /&gt;
&lt;br /&gt;
==Popper.js==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/popper.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A kickass library used to created Poppers in web applications&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.6&lt;br /&gt;
&lt;br /&gt;
© 2016 Federico Zivolo and contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/FezVrasta/popper.js&lt;br /&gt;
&lt;br /&gt;
==RTLCSS for PHP==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/rtlcss&amp;quot;&lt;br /&gt;
&lt;br /&gt;
RTLCSS is a framework for converting Left-To-Right (LTR) Cascading Style Sheets(CSS) to Right-To-Left (RTL).&lt;br /&gt;
&lt;br /&gt;
© 2016 Frédéric Massart&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/moodlehq/rtlcss-php&lt;br /&gt;
&lt;br /&gt;
==RequireJS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/requirejs/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
RequireJS is a JavaScript file and module loader.&lt;br /&gt;
&lt;br /&gt;
Version 2.3.5&lt;br /&gt;
&lt;br /&gt;
License: new BSD or MIT&lt;br /&gt;
&lt;br /&gt;
http://requirejs.org/&lt;br /&gt;
&lt;br /&gt;
==scssphp==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/scssphp/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
scssphp is a compiler for SCSS written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 1.0.2&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2015 Leaf Corcoran&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://leafo.github.io/scssphp&lt;br /&gt;
&lt;br /&gt;
==SimplePie==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;/lib/simplepie&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Simple Pie helps with blogs.&lt;br /&gt;
&lt;br /&gt;
Version 1.5.2&lt;br /&gt;
&lt;br /&gt;
License: BSD&lt;br /&gt;
&lt;br /&gt;
https://github.com/simplepie/simplepie&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;
==Spout==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/spout&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Library for importing and exporting csv / excel / ODS files.&lt;br /&gt;
&lt;br /&gt;
Version 3.0.1&lt;br /&gt;
&lt;br /&gt;
License: Apache&lt;br /&gt;
&lt;br /&gt;
https://github.com/box/spout/&lt;br /&gt;
&lt;br /&gt;
==TCPDF Class==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/tcpdf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Class to generate PDF files&lt;br /&gt;
&lt;br /&gt;
Version: 6.2.26&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;
==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;
==XHProf==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/xhprof&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Hierarchical Profiler for PHP&lt;br /&gt;
&lt;br /&gt;
Version: 0.9.4&lt;br /&gt;
&lt;br /&gt;
Copyright © 2009 Phacility&lt;br /&gt;
&lt;br /&gt;
Licence: Apache&lt;br /&gt;
&lt;br /&gt;
https://github.com/phacility/xhprof&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: 3.17.2&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;
&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=57612</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=57612"/>
		<updated>2020-06-17T00:45:20Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
[[File:bar_chart.png]]&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$chart-&amp;gt;set_stacked(true);&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
[[File:stacked_bar_chart.png]]&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$chart-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizontal bar charts.&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
[[File:horizontal_bar_chart.png]]&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_line();&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
[[File:line_chart.png]]&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
[[File:smooth_line_chart.png]]&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_pie();&lt;br /&gt;
$chart-&amp;gt;add_series($sales); // On pie charts we just need to set one series.&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
[[File:pie_chart.png]]&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_pie();&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true); // Calling set_doughnut(true) we display the chart as a doughnut.&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
[[File:doughnut_pie_chart.png]]&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a chart title, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need. &lt;br /&gt;
It is also possible to select multiple axis, for example if you want to have custom steps labels in one side and data in the other.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis1 = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis1 = $chart-&amp;gt;get_yaxis(0, true) // Will display the default axis steps information.&lt;br /&gt;
$yaxis2 = $chart-&amp;gt;get_yaxis(1, true) // Select the second Y axis.&lt;br /&gt;
$yaxis2-&amp;gt;set_position(chart_axis::POS_RIGHT);  // Now I can change positioning, labels and etc just on the right side.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers, just get the axis and call set_labels passing an array of labels:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Min and Max ===&lt;br /&gt;
You can customise the minimum and the maximum value of a axis step size. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(1, true);&lt;br /&gt;
$xaxis-&amp;gt;set_min(1);&lt;br /&gt;
$xaxis-&amp;gt;set_max(100); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
[[File:bar_line_chart.png]]&lt;br /&gt;
&lt;br /&gt;
== Rendering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to render() or render_chart().&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data table ===&lt;br /&gt;
By default, in order to make chart data accessible to users with special needs, a link at the bottom of the chart will display a table containing all of its data. &lt;br /&gt;
If that information is already displayed on the page in some other fashion, it may not be necessary to display the chart data table. &lt;br /&gt;
To remove it, a &#039;&#039;&#039;false&#039;&#039;&#039; value can be passed as the second parameter when calling the render_chart function:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render_chart($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overriding chart colours ===&lt;br /&gt;
It is possible to override the default set of colours used on charts, you just need to the following setting to config.php and set an array of hex css colours:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;chart_colorset = [&#039;#001f3f&#039;, &#039;#01ff70&#039;, &#039;#F012BE&#039;, &#039;#85144b&#039;, &#039;#B10DC9&#039;];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Legend options ===&lt;br /&gt;
It is possible to customize some aspects of the chart legend such position and visibility. In order to do that you need to call set_legend_options() method&lt;br /&gt;
and pass an array of options supported by ChartJS. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_legend_options([&#039;display&#039; =&amp;gt; false]);  // Hide chart legend.&lt;br /&gt;
$chart-&amp;gt;set_legend_options([&#039;position&#039; =&amp;gt; &#039;left&#039;]);  // Change legend position to left side.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=53103</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=53103"/>
		<updated>2017-10-19T02:25:14Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Chart.js */&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.20.9&lt;br /&gt;
&lt;br /&gt;
@copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.&lt;br /&gt;
&lt;br /&gt;
@copyright (c) 2014      Damien Regad, Mark Newnham and the ADOdb community&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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;auth/cas/CAS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&lt;br /&gt;
&lt;br /&gt;
==Chart.js==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/amd/src/chartjs-lazy.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Simple yet flexible JavaScript charting for designers &amp;amp; developers&lt;br /&gt;
&lt;br /&gt;
Version: 2.7.0&lt;br /&gt;
&lt;br /&gt;
Copyright 2016 Nick Downie&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://www.chartjs.org&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;
== GeoIp2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/maxmind/GeoIp2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library for precessing of GeoIP data files&lt;br /&gt;
&lt;br /&gt;
Version: 2.6.0&lt;br /&gt;
&lt;br /&gt;
Copyright MaxMind&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/maxmind/GeoIP2-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.1.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2005-2007 Jon Abernathy &amp;lt;jon@chuggnutt.com&amp;gt;&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;
==HTML Purifier==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/htmlpurifier&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Filters HTML.&lt;br /&gt;
&lt;br /&gt;
Version: 4.8.0&lt;br /&gt;
&lt;br /&gt;
License: LGPL&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;
==jQuery==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery is a fast, small, and feature-rich JavaScript library widely used on moodle.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.3&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://jquery.com&lt;br /&gt;
&lt;br /&gt;
==jQuery migrate==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/jquery-migrate-1.4.0.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library used migrate older jQuery code to jQuery 3.0.&lt;br /&gt;
&lt;br /&gt;
Version: 1.4.0&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&lt;br /&gt;
&lt;br /&gt;
==jQuery UI==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/ui-1.12.1/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery UI is a set of user interface interactions, effects, widgets, and themes built on top of the jQuery library.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.1&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/lessphp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&lt;br /&gt;
==loglevel.js==&lt;br /&gt;
&lt;br /&gt;
Minimal lightweight simple logging for JavaScript.&lt;br /&gt;
&lt;br /&gt;
Version 1.4.1&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2013 Tim Perry&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/pimterry/loglevel/&lt;br /&gt;
==MathJax==&lt;br /&gt;
&lt;br /&gt;
JavaScript filter library for displaying LaTeX, AsciiMath notation, and MathML.&lt;br /&gt;
&lt;br /&gt;
Not actually included in Moodle. Instead, Moodle [[:en:MathJax filter|has a setting]] for where the library is located to be loaded from. It is currently pointing to the Cloudflare CDN by default.&lt;br /&gt;
&lt;br /&gt;
© Copyright 2009 - 2017 The MathJax Consortium&lt;br /&gt;
&lt;br /&gt;
* Default MathJax version: 2.7.2 (Moodle 3.4)&lt;br /&gt;
* License: Apache 2.0&lt;br /&gt;
* Homepage: https://www.mathjax.org/&lt;br /&gt;
&lt;br /&gt;
==MatthiasMullie\Minify==&lt;br /&gt;
CSS &amp;amp; JavaScript minifier, in PHP&lt;br /&gt;
&lt;br /&gt;
Version 1.3.37&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/matthiasmullie/minify&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.11.1&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2010-2016 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;
==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-CSS-Parser==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/php-css-parser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Parser for CSS Files written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 8.1.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2011 Raphael Schweikert, http://sabberworm.com/&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/sabberworm/PHP-CSS-Parser&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.16&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.7.0 (with modifications)&lt;br /&gt;
&lt;br /&gt;
 * @copyright 2004-2016 Michel Fortin &amp;lt;https://michelf.com/projects/php-markdown/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 * @copyright (Original Markdown) 2004-2006 John Gruber &amp;lt;https://daringfireball.net/projects/markdown/&amp;gt;&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;
==RequireJS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/requirejs/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
RequireJS is a JavaScript file and module loader.&lt;br /&gt;
&lt;br /&gt;
Version 2.3.2&lt;br /&gt;
&lt;br /&gt;
License: new BSD or MIT&lt;br /&gt;
&lt;br /&gt;
http://requirejs.org/&lt;br /&gt;
&lt;br /&gt;
==scssphp==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/scssphp/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
scssphp is a compiler for SCSS written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 0.6.5&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2015 Leaf Corcoran&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://leafo.github.io/scssphp&lt;br /&gt;
&lt;br /&gt;
==SimplePie==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;/lib/simplepie&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Simple Pie helps with blogs.&lt;br /&gt;
&lt;br /&gt;
Version 1.5&lt;br /&gt;
&lt;br /&gt;
License: BSD&lt;br /&gt;
&lt;br /&gt;
https://github.com/simplepie/simplepie&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;
==Spout==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/spout&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Library for importing and exporting csv / excel / ODS files.&lt;br /&gt;
&lt;br /&gt;
Version 2.7.3&lt;br /&gt;
&lt;br /&gt;
License: Apache&lt;br /&gt;
&lt;br /&gt;
https://github.com/box/spout/&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;
==LTI Tool Provider Library for PHP==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/ltiprovider/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PHP library for communicating with learning tools as per the LTI specification.&lt;br /&gt;
&lt;br /&gt;
Version: 3.0.2&lt;br /&gt;
&lt;br /&gt;
© 2016 IMS Global Learning Consortium Inc. All Rights Reserved. Trademark Policy - (www.imsglobal.org/trademarks)&lt;br /&gt;
&lt;br /&gt;
License: Apache 2&lt;br /&gt;
&lt;br /&gt;
https://github.com/IMSGlobal/LTI-Tool-Provider-Library-PHP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Popper.js==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/popper.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A kickass library used to created Poppers in web applications&lt;br /&gt;
&lt;br /&gt;
© 2016 Federico Zivolo and contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/FezVrasta/popper.js&lt;br /&gt;
&lt;br /&gt;
==Flexitour==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/tour.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A JS library for tours&lt;br /&gt;
&lt;br /&gt;
© 2016 Andrew Nicols and contributors&lt;br /&gt;
&lt;br /&gt;
License: GPLv3&lt;br /&gt;
&lt;br /&gt;
https://github.com/andrewnicols/flexitour&lt;br /&gt;
&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51499</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51499"/>
		<updated>2016-12-05T01:04:22Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Chart types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$chart-&amp;gt;set_stacked(true);&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$chart-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizontal bar charts.&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_line();&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_pie();&lt;br /&gt;
$chart-&amp;gt;add_series($sales); // On pie charts we just need to set one series.&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_pie();&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true); // Calling set_doughnut(true) we display the chart as a doughnut.&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a chart title, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need. &lt;br /&gt;
It is also possible to select multiple axis, for example if you want to have custom steps labels in one side and data in the other.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis1 = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis1 = $chart-&amp;gt;get_yaxis(0, true) // Will display the default axis steps information.&lt;br /&gt;
$yaxis2 = $chart-&amp;gt;get_yaxis(1, true) // Select the second Y axis.&lt;br /&gt;
$yaxis2-&amp;gt;set_position(chart_axis::POS_RIGHT);  // Now I can change positioning, labels and etc just on the right side.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers, just get the axis and call set_labels passing an array of labels:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Min and Max ===&lt;br /&gt;
You can customise the minimum and the maximum value of a axis step size. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(1, true);&lt;br /&gt;
$xaxis-&amp;gt;set_min(1);&lt;br /&gt;
$xaxis-&amp;gt;set_max(100); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data table ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overriding chart colours ===&lt;br /&gt;
It is possible to override the default set of colours used on charts, you just need to the following setting to config.php and set an array of hex css colours:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;chart_colorset = [&#039;#001f3f&#039;, &#039;#01ff70&#039;, &#039;#F012BE&#039;, &#039;#85144b&#039;, &#039;#B10DC9&#039;];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51498</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51498"/>
		<updated>2016-12-05T01:01:04Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Line */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$chart-&amp;gt;set_stacked(true);&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$chart-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizontal bar charts.&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_line();&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;SMOOTH LINES CHART&#039;);&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a chart title, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need. &lt;br /&gt;
It is also possible to select multiple axis, for example if you want to have custom steps labels in one side and data in the other.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis1 = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis1 = $chart-&amp;gt;get_yaxis(0, true) // Will display the default axis steps information.&lt;br /&gt;
$yaxis2 = $chart-&amp;gt;get_yaxis(1, true) // Select the second Y axis.&lt;br /&gt;
$yaxis2-&amp;gt;set_position(chart_axis::POS_RIGHT);  // Now I can change positioning, labels and etc just on the right side.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers, just get the axis and call set_labels passing an array of labels:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Min and Max ===&lt;br /&gt;
You can customise the minimum and the maximum value of a axis step size. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(1, true);&lt;br /&gt;
$xaxis-&amp;gt;set_min(1);&lt;br /&gt;
$xaxis-&amp;gt;set_max(100); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data table ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overriding chart colours ===&lt;br /&gt;
It is possible to override the default set of colours used on charts, you just need to the following setting to config.php and set an array of hex css colours:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;chart_colorset = [&#039;#001f3f&#039;, &#039;#01ff70&#039;, &#039;#F012BE&#039;, &#039;#85144b&#039;, &#039;#B10DC9&#039;];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51497</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51497"/>
		<updated>2016-12-05T00:59:20Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Bar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$chart-&amp;gt;set_stacked(true);&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$chart-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizontal bar charts.&lt;br /&gt;
$chart-&amp;gt;add_series($sales);&lt;br /&gt;
$chart-&amp;gt;add_series($expenses);&lt;br /&gt;
$chart-&amp;gt;set_labels($labels);&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a chart title, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need. &lt;br /&gt;
It is also possible to select multiple axis, for example if you want to have custom steps labels in one side and data in the other.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis1 = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis1 = $chart-&amp;gt;get_yaxis(0, true) // Will display the default axis steps information.&lt;br /&gt;
$yaxis2 = $chart-&amp;gt;get_yaxis(1, true) // Select the second Y axis.&lt;br /&gt;
$yaxis2-&amp;gt;set_position(chart_axis::POS_RIGHT);  // Now I can change positioning, labels and etc just on the right side.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers, just get the axis and call set_labels passing an array of labels:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Min and Max ===&lt;br /&gt;
You can customise the minimum and the maximum value of a axis step size. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(1, true);&lt;br /&gt;
$xaxis-&amp;gt;set_min(1);&lt;br /&gt;
$xaxis-&amp;gt;set_max(100); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data table ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overriding chart colours ===&lt;br /&gt;
It is possible to override the default set of colours used on charts, you just need to the following setting to config.php and set an array of hex css colours:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;chart_colorset = [&#039;#001f3f&#039;, &#039;#01ff70&#039;, &#039;#F012BE&#039;, &#039;#85144b&#039;, &#039;#B10DC9&#039;];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51401</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51401"/>
		<updated>2016-12-02T04:32:36Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Axis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a chart title, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need. &lt;br /&gt;
It is also possible to select multiple axis, for example if you want to have custom steps labels in one side and data in the other.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis1 = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis1 = $chart-&amp;gt;get_yaxis(0, true) // Will display the default axis steps information.&lt;br /&gt;
$yaxis2 = $chart-&amp;gt;get_yaxis(1, true) // Select the second Y axis.&lt;br /&gt;
$yaxis2-&amp;gt;set_position(chart_axis::POS_RIGHT);  // Now I can change positioning, labels and etc just on the right side.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers, just get the axis and call set_labels passing an array of labels:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Min and Max ===&lt;br /&gt;
You can customise the minimum and the maximum value of a axis step size. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(1, true);&lt;br /&gt;
$xaxis-&amp;gt;set_min(1);&lt;br /&gt;
$xaxis-&amp;gt;set_max(100); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data table ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overriding chart colours ===&lt;br /&gt;
It is possible to override the default set of colours used on charts, you just need to the following setting to config.php and set an array of hex css colours:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;chart_colorset = [&#039;#001f3f&#039;, &#039;#01ff70&#039;, &#039;#F012BE&#039;, &#039;#85144b&#039;, &#039;#B10DC9&#039;];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51394</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51394"/>
		<updated>2016-12-02T04:23:50Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Override chart colours */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a chart title, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need.&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers, just get the axis and call set_labels passing an array of labels:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Min and Max ===&lt;br /&gt;
You can customise the minimum and the maximum value of a axis step size. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(1, true);&lt;br /&gt;
$xaxis-&amp;gt;set_min(1);&lt;br /&gt;
$xaxis-&amp;gt;set_max(100); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data table ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overriding chart colours ===&lt;br /&gt;
It is possible to override the default set of colours used on charts, you just need to the following setting to config.php and set an array of hex css colours:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;chart_colorset = [&#039;#001f3f&#039;, &#039;#01ff70&#039;, &#039;#F012BE&#039;, &#039;#85144b&#039;, &#039;#B10DC9&#039;];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51393</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51393"/>
		<updated>2016-12-02T04:23:32Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Show chart data table */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a chart title, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need.&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers, just get the axis and call set_labels passing an array of labels:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Min and Max ===&lt;br /&gt;
You can customise the minimum and the maximum value of a axis step size. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(1, true);&lt;br /&gt;
$xaxis-&amp;gt;set_min(1);&lt;br /&gt;
$xaxis-&amp;gt;set_max(100); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data table ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Override chart colours ===&lt;br /&gt;
It is possible to override the default set of colours used on charts, you just need to the following setting to config.php and set an array of hex css colours:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;chart_colorset = [&#039;#001f3f&#039;, &#039;#01ff70&#039;, &#039;#F012BE&#039;, &#039;#85144b&#039;, &#039;#B10DC9&#039;];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51392</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51392"/>
		<updated>2016-12-02T04:23:07Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a chart title, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need.&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers, just get the axis and call set_labels passing an array of labels:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Min and Max ===&lt;br /&gt;
You can customise the minimum and the maximum value of a axis step size. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(1, true);&lt;br /&gt;
$xaxis-&amp;gt;set_min(1);&lt;br /&gt;
$xaxis-&amp;gt;set_max(100); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data table ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data table ===&lt;br /&gt;
It is possible to override the default set of colours used on charts, you just need to the following setting to config.php and set an array of hex css colours:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;chart_colorset = [&#039;#001f3f&#039;, &#039;#01ff70&#039;, &#039;#F012BE&#039;, &#039;#85144b&#039;, &#039;#B10DC9&#039;];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Self_Enrolment_API&amp;diff=51308</id>
		<title>Self Enrolment API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Self_Enrolment_API&amp;diff=51308"/>
		<updated>2016-12-01T04:45:01Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Self Enrolment API==&lt;br /&gt;
&lt;br /&gt;
The class &#039;&#039;enrol_self_plugin&amp;quot; contains a set of attributes and methods related to moodle self enrolment plugin implementation.&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
===get_welcome_email_contact()===&lt;br /&gt;
Find the sender contact details based on &#039;&#039;&#039;enrol_self/sendcoursewelcomemessage&#039;&#039;&#039; setting. &lt;br /&gt;
&lt;br /&gt;
Based on the provided parameters (send option and context) it fetches the contact details  and returns the user object that will be used as from address.&lt;br /&gt;
&lt;br /&gt;
This setting can have four possible options:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Do not send&#039;&#039;&#039; Based on &amp;lt;code&amp;gt;ENROL_DO_NOT_SEND_EMAIL&amp;lt;/code&amp;gt; setting and represents not sending welcome email to users.&lt;br /&gt;
* &#039;&#039;&#039;Send from course contact&#039;&#039;&#039; Matches &amp;lt;code php&amp;gt;ENROL_SEND_EMAIL_FROM_COURSE_CONTACT&amp;lt;/code&amp;gt; constant defined on enrollib and depends of course contacs to be set on &amp;lt;code php&amp;gt;$CFG-&amp;gt;coursecontact&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Send from key holder&#039;&#039;&#039; Matches &amp;lt;code php&amp;gt;ENROL_SEND_EMAIL_FROM_KEY_HOLDER&amp;lt;/code&amp;gt; constant and retrieve contact details from the first user with &amp;lt;code&amp;gt;enrol/self:holdkey&amp;lt;/code&amp;gt; capability assigned in the course.&lt;br /&gt;
* &#039;&#039;&#039;Send from no reply address&#039;&#039;&#039; If none of those options above return a contact or if the setting is &amp;lt;code php&amp;gt;ENROL_SEND_EMAIL_FROM_NOREPLY&amp;lt;code&amp;gt;, fetch no reply contact for sending.&lt;br /&gt;
&lt;br /&gt;
For more information about all possible sending constants and methods, please see [[Enrolment_API]].&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Self_Enrolment_API&amp;diff=51306</id>
		<title>Self Enrolment API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Self_Enrolment_API&amp;diff=51306"/>
		<updated>2016-12-01T04:42:59Z</updated>

		<summary type="html">&lt;p&gt;Lameze: Created page with &amp;quot;==Self Enrolment API==  The class &amp;#039;&amp;#039;enrol_self_plugin&amp;quot; contains a set of attributes and methods related to moodle self enrolment plugin implementation.  ==Methods==  ===get_we...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Self Enrolment API==&lt;br /&gt;
&lt;br /&gt;
The class &#039;&#039;enrol_self_plugin&amp;quot; contains a set of attributes and methods related to moodle self enrolment plugin implementation.&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
===get_welcome_email_contact()===&lt;br /&gt;
Find the sender contact details based on &#039;&#039;&#039;enrol_self/sendcoursewelcomemessage&#039;&#039;&#039; setting. &lt;br /&gt;
&lt;br /&gt;
Based on the provided parameters (send option and context) it fetches the contact details  and returns the user object that will be used as from address.&lt;br /&gt;
&lt;br /&gt;
This setting can have four possible options:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Do not send&#039;&#039;&#039; Based on &amp;lt;code&amp;gt;ENROL_DO_NOT_SEND_EMAIL&amp;lt;/code&amp;gt; setting and represents not sending welcome email to users.&lt;br /&gt;
# &#039;&#039;&#039;Send from course contact&#039;&#039;&#039; Matches &amp;lt;code php&amp;gt;ENROL_SEND_EMAIL_FROM_COURSE_CONTACT&amp;lt;/code&amp;gt; constant defined on enrollib and depends of course contacs to be set on &amp;lt;code php&amp;gt;$CFG-&amp;gt;coursecontact&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;Send from key holder&#039;&#039;&#039; Matches &amp;lt;code php&amp;gt;ENROL_SEND_EMAIL_FROM_KEY_HOLDER&amp;lt;/code&amp;gt; constant and retrieve contact details from the first user with &amp;lt;code&amp;gt;enrol/self:holdkey&amp;lt;/code&amp;gt; capability assigned in the course.&lt;br /&gt;
# &#039;&#039;&#039;Send from no reply address&#039;&#039;&#039; If none of those options above return a contact or if the setting is &amp;lt;code php&amp;gt;ENROL_SEND_EMAIL_FROM_NOREPLY&amp;lt;code&amp;gt;, fetch no reply contact for sending.&lt;br /&gt;
&lt;br /&gt;
For more information about all possible sending constants and methods, please see [https://docs.moodle.org/dev/Enrolment_API#API_functions Enrolment API document page].&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Enrolment_API&amp;diff=51299</id>
		<title>Enrolment API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Enrolment_API&amp;diff=51299"/>
		<updated>2016-12-01T04:02:31Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since Moodle  2.0 there is a new concept of user enrolments, they are fully independent from the roles and capabilities. Capabilities are very often used in combination with enrolment status.&lt;br /&gt;
&lt;br /&gt;
==What is enrolment?==&lt;br /&gt;
&lt;br /&gt;
Enrolled users may fully participate in a course. Active user enrolment allows user to enter course. Only enrolled users may be group members. Grades are stored only for enrolled users.&lt;br /&gt;
&lt;br /&gt;
==Unenrolment==&lt;br /&gt;
&lt;br /&gt;
Unenrolment is irreversible operation that purges user participation information. Full unenrolment is suitable only if you do not need to preserve all course participation information including user grades.&lt;br /&gt;
&lt;br /&gt;
==Enrolment status==&lt;br /&gt;
&lt;br /&gt;
Instead of full unenrolment it is usually better to only &#039;&#039;suspend&#039;&#039; user enrolment. If there are other ways to enter the course (such guest access) it is recommended to remove user roles at the same time.&lt;br /&gt;
&lt;br /&gt;
==Activity participation==&lt;br /&gt;
&lt;br /&gt;
Activity developers decide the enrolment related behaviour of module.&lt;br /&gt;
&lt;br /&gt;
There are some general guidelines:&lt;br /&gt;
* Only users with active enrolments should receive notifications.&lt;br /&gt;
* Activities should display enrolled users with some capability as participants.&lt;br /&gt;
* By default only users with active enrolments should be displayed in reports.&lt;br /&gt;
* There should be option to display all enrolled users including suspended enrolments.&lt;br /&gt;
* For performance reasons invisible participation data should be purged on unenrolment.&lt;br /&gt;
* Contributions visible by other participants should be kept after unenrolment (such as forum posts).&lt;br /&gt;
&lt;br /&gt;
==API functions==&lt;br /&gt;
&lt;br /&gt;
===enrol_send_welcome_email_options()===&lt;br /&gt;
Some enrol methods has the support for sending welcome emails to users. &lt;br /&gt;
This method returns a list of all possible options for sending welcome email when the user enrol in a course and each option has a respective constant defined on &#039;&#039;&#039;enrollib.php&#039;&#039;&#039;: &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
define(&#039;ENROL_DO_NOT_SEND_EMAIL&#039;, 0); // Do not send the welcome email.&lt;br /&gt;
define(&#039;ENROL_SEND_EMAIL_FROM_COURSE_CONTACT&#039;, 1); // Send welcome email from course contact.&lt;br /&gt;
define(&#039;ENROL_SEND_EMAIL_FROM_KEY_HOLDER&#039;, 2); // Send welcome email from course key holder.&lt;br /&gt;
define(&#039;ENROL_SEND_EMAIL_FROM_NOREPLY&#039;, 3); // Send welcome email from no reply.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The main idea is to make send email options consistent across enrolment methods that support this feature. See an example below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$sendoptions = enrol_send_welcome_email_options();&lt;br /&gt;
print_object($sendoptions);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The example above will output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
Array &lt;br /&gt;
(&lt;br /&gt;
       [1] =&amp;gt; &#039;No&#039;&lt;br /&gt;
       [2] =&amp;gt; &#039;From the course contact&#039;&lt;br /&gt;
       [3] =&amp;gt; &#039;From the key holder&#039;&lt;br /&gt;
       [4] =&amp;gt; &#039;From the no-reply address&#039;&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===is_enrolled()===&lt;br /&gt;
Is user participating in the course? Returns true for students and teachers, false for administrators and other managers. User enrolments can be either active or suspended, suspended users can not enter the course (unless there is some kind of guest access allowed) or have moodle/course:view capability and are usually hidden in the UI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
function is_enrolled(context $context, $user = null, $withcapability = &#039;&#039;, $onlyactive = false)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Good example is choice module where we have one slot for each participant, people that are not enrolled are not allowed to vote &amp;lt;code&amp;gt;is_enrolled($context, $USER, &#039;mod/choice:choose&#039;)&amp;lt;/code&amp;gt;. Another example is assignment where users need to be enrolled and have capability to submit assignemnts &amp;lt;code&amp;gt;is_enrolled($this-&amp;gt;context, $USER, &#039;mod/assignment:submit&#039;)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===get_enrolled_users()===&lt;br /&gt;
&lt;br /&gt;
Sometimes you need to know the list of users that can participate in some activity.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
function get_enrolled_sql(context $context, $withcapability = &#039;&#039;, $groupid = 0, $onlyactive = false)&lt;br /&gt;
function get_enrolled_users(context $context, $withcapability = &#039;&#039;, $groupid = 0, $userfields = &#039;u.*&#039;, $orderby = &#039;&#039;, $limitfrom = 0, $limitnum = 0)&lt;br /&gt;
function count_enrolled_users(context $context, $withcapability = &#039;&#039;, $groupid = 0)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example you want to know who is able to summit assignment right now:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$submissioncandidates = get_enrolled_users($modcontext, &#039;mod/assignment:submit&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The assignment module needs to hold data for all users that are enrolled including the users with suspended enrolments and without any roles. Module developers may decide to purge all user data when user is fully unenrolled.&lt;br /&gt;
&lt;br /&gt;
SQL select from get_enrolled_sql() is often used for performance reasons - you can use it in joins to get specific information for enrolled users only.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Enrolment plugins]]&lt;br /&gt;
* [[Enrolment usage overview]]&lt;br /&gt;
* [[New enrolments in 2.0]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Enrolment]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51288</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51288"/>
		<updated>2016-12-01T01:54:15Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Title */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a chart title, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need.&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers, just get the axis and call set_labels passing an array of labels:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Min and Max ===&lt;br /&gt;
You can customise the minimum and the maximum value of a axis step size. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(1, true);&lt;br /&gt;
$xaxis-&amp;gt;set_min(1);&lt;br /&gt;
$xaxis-&amp;gt;set_max(100); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51227</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51227"/>
		<updated>2016-11-29T07:57:18Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Axis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a title for a chart, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need.&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers, just get the axis and call set_labels passing an array of labels:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Min and Max ===&lt;br /&gt;
You can customise the minimum and the maximum value of a axis step size. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(1, true);&lt;br /&gt;
$xaxis-&amp;gt;set_min(1);&lt;br /&gt;
$xaxis-&amp;gt;set_max(100); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51226</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51226"/>
		<updated>2016-11-29T07:53:58Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a title for a chart, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need.&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers, just get the axis and call set_labels passing an array of labels:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51225</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51225"/>
		<updated>2016-11-29T07:53:10Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Step labels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a title for a chart, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need.&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers, just get the axis and call set_labels passing an array of labels:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51224</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51224"/>
		<updated>2016-11-29T07:51:04Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Axis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a title for a chart, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need.&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step size ===&lt;br /&gt;
Step size can be described as the size between the axis labels. You can set the step size of the axis, by calling &#039;&#039;&#039;set_stepsize()&#039;&#039;&#039; and passing the step size number.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$axis-&amp;gt;set_stepsize(5); // Chart steps will be displayed as  5, 10, 15, 20...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step labels ===&lt;br /&gt;
If you prefer to display custom labels instead of numbers:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true);&lt;br /&gt;
$chart-&amp;gt;get_xaxis(1, true)-&amp;gt;set_labels([&#039;Poor&#039;, &#039;Average&#039;, &#039;Good&#039;, &#039;Perfect&#039;]); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51223</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51223"/>
		<updated>2016-11-29T07:41:43Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Axis position */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a title for a chart, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need.&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis by calling &#039;&#039;&#039;set_position()&#039;&#039;&#039; and passing the axis position constant (POS_RIGHT, POS_LEFT, POS_BOTTOM, POS_TOP).&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51222</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51222"/>
		<updated>2016-11-29T07:25:55Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Axis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a title for a chart, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
You can customise chart axis (X,Y) by setting title, position and change the step size.&lt;br /&gt;
Firstly, you need to select the axis by the side you want and providing the index and whether you want to create the axis if it does not exists.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$xaxis = $chart-&amp;gt;get_xaxis(0, true) // Select the index 0 of X axis and pass true to create the axis if not exists.&lt;br /&gt;
$yaxis = $chart-&amp;gt;get_yaxis(0, true) // Select the index 0 of Y axis and pass true to create the axis if not exists.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Once you get the axis you want change, you can change the attributes you need.&lt;br /&gt;
&lt;br /&gt;
=== Axis title ===&lt;br /&gt;
Axis titles can be displayed on the chart sides and can be used to provide additional information about the chart.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
$chart-&amp;gt;get_xaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for X&amp;quot;); &lt;br /&gt;
$chart-&amp;gt;get_yaxis(0, true)-&amp;gt;set_label(&amp;quot;I&#039;m the label for Y&amp;quot;); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis position ===&lt;br /&gt;
You can define the position of axis, &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new chart_line();&lt;br /&gt;
&lt;br /&gt;
// Customise X axis.&lt;br /&gt;
$xaxis = new chart_axis();&lt;br /&gt;
$xaxis-&amp;gt;set_label(&amp;quot;I&#039;m X, but at the top&amp;quot;);&lt;br /&gt;
$xaxis-&amp;gt;set_position(chart_axis::POS_TOP); // You can use POS_BOTTOM or POS_TOP for X axis, in this case let&#039;s change the position to the top.&lt;br /&gt;
$chart-&amp;gt;set_xaxis($xaxis);&lt;br /&gt;
&lt;br /&gt;
// Customise Y axis.&lt;br /&gt;
$yaxis = new chart_axis();&lt;br /&gt;
$yaxis-&amp;gt;set_position(chart_axis::POS_RIGHT);  // You can use POS_LEFT or POS_RIGHT for Y axis, in this case let&#039;s change the position to the right side.&lt;br /&gt;
$chart-&amp;gt;set_yaxis($yaxis);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51211</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51211"/>
		<updated>2016-11-29T06:12:57Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Renderering */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a title for a chart, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51210</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51210"/>
		<updated>2016-11-29T06:01:28Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Charts API is a core set of methods intended to provide a simple and yet modern interface to generate dynamic charts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Chart types ==&lt;br /&gt;
&lt;br /&gt;
The first step to create a new chart is to create an instance of the desired chart type. &lt;br /&gt;
At the moment bar, line and pie types are supported and using some display changing methods can change how the charts are displayed.&lt;br /&gt;
&lt;br /&gt;
=== Bar === &lt;br /&gt;
To create a new bar chart, just create a new instance of &#039;&#039;&#039;chart_bar&#039;&#039;&#039; class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want change how your bar chart are displayed:&lt;br /&gt;
&lt;br /&gt;
==== Stacked Bar ====&lt;br /&gt;
To display stacked bars, you can call &#039;&#039;&#039;set_stacked()&#039;&#039;&#039; method, setting the parameter to true.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_stacked(true); //Calling set_stacked() passing true as parameter will display stacked bars.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Horizontal Bar ====&lt;br /&gt;
To display you bar chart in the horizontal position, you need to call &#039;&#039;&#039;set_horizontal()&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_bar();&lt;br /&gt;
$char-&amp;gt;set_horizontal(true); // Calling set_horizontal() passing true as parameter will display horizonal bar charts.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line ===&lt;br /&gt;
To create a new line chart, just create an instance of &#039;&#039;&#039;chart_line&#039;&#039;&#039; class. By default, lines are tensioned. &lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Smooth lines ====&lt;br /&gt;
You might want to change you line chart to display &#039;&#039;&#039;smooth lines&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_line();&lt;br /&gt;
$chart-&amp;gt;set_smooth(true); // Calling set_smooth() passing true as parameter, will display smooth lines.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pie ===&lt;br /&gt;
To create a pie chart you just need to create a new instance of chart_pie class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new core\chart_pie();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Doughnut ====&lt;br /&gt;
You might want to change you pie chart to be displayed as doughnut:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_doughnut(true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Series ==&lt;br /&gt;
Series can be defined as a set of values. To set series of a chart, you need to create an instance of &#039;&#039;&#039;chart_series&#039;&#039;&#039; object and pass the title and an array of values.&lt;br /&gt;
The title and the data are displayed when mouse over the specific point representing the serie on the chart.  &lt;br /&gt;
&#039;&#039;&#039;The number of values of the series must be equal to the number of labels.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$serie1 = new core\chart_series(&#039;My series title&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
It is possible to set a title for a chart, by calling set_title and passing the title as string method.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_title(&#039;chart with a title&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Labels are the description in which the data will be grouped, in the example above labels are an array of years. The number of values on the series must match the number of labels.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Axis ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mixed chart types ==&lt;br /&gt;
It is possible to combine two types of chart by setting the type of the series differently of the chart type. For example, to create a chart that combine a bar chart with a line chart:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$chart = new \core\chart_bar(); // Create a bar chart instance.&lt;br /&gt;
$series1 = new \core\chart_series(&#039;Series 1 (Bar)&#039;, [1000, 1170, 660, 1030]);&lt;br /&gt;
$series2 = new \core\chart_series(&#039;Series 2 (Line)&#039;, [400, 460, 1120, 540]);&lt;br /&gt;
$series2-&amp;gt;set_type(\core\chart_series::TYPE_LINE); // Set the series type to line chart.&lt;br /&gt;
$chart-&amp;gt;add_series($series2);&lt;br /&gt;
$chart-&amp;gt;add_series($series1);&lt;br /&gt;
$chart-&amp;gt;set_labels([&#039;2004&#039;, &#039;2005&#039;, &#039;2006&#039;, &#039;2007&#039;]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Please note the order you call add_series change the order series are displayed on the chart. In the example above, the first to be displayed will be line chart and in the background the bar chart.&lt;br /&gt;
&lt;br /&gt;
== Renderering ==  &lt;br /&gt;
All charts are rendered by render_chart() located on outputrenderers.php, once the chart object is ready, it must be passed to chart_render.&lt;br /&gt;
&amp;lt;cide php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show chart data ===&lt;br /&gt;
To make the chart data accessible to users with special needs, a link on the bottom of the chart will display a table containing all data. &lt;br /&gt;
In some cases, the same information is displayed on the page and might not be necessary display chart table. &lt;br /&gt;
In that case, you need to pass false as the second parameter when calling the render:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
echo $OUTPUT-&amp;gt;render($chart, false);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=51199</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=51199"/>
		<updated>2016-11-29T01:10:10Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* ADOdb */&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.20.7&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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;auth/cas/CAS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&lt;br /&gt;
&lt;br /&gt;
==Chart.js==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/amd/src/chartjs-lazy.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Simple yet flexible JavaScript charting for designers &amp;amp; developers&lt;br /&gt;
&lt;br /&gt;
Version: 2.2.2&lt;br /&gt;
&lt;br /&gt;
Copyright 2016 Nick Downie&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://www.chartjs.org&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;
== GeoIp2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/maxmind/GeoIp2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library for precessing of GeoIP data files&lt;br /&gt;
&lt;br /&gt;
Version: 2.4.2&lt;br /&gt;
&lt;br /&gt;
Copyright MaxMind&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/maxmind/GeoIP2-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;
==jQuery==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery is a fast, small, and feature-rich JavaScript library widely used on moodle.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.3&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://jquery.com&lt;br /&gt;
&lt;br /&gt;
==jQuery migrate==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/jquery-migrate-1.4.0.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library used migrate older jQuery code to jQuery 3.0.&lt;br /&gt;
&lt;br /&gt;
Version: 1.4.0&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&lt;br /&gt;
&lt;br /&gt;
==jQuery UI==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/ui-1.12.1/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery UI is a set of user interface interactions, effects, widgets, and themes built on top of the jQuery library.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.1&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/lessphp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&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.7&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;
==MatthiasMullie\Minify==&lt;br /&gt;
CSS &amp;amp; JavaScript minifier, in PHP&lt;br /&gt;
&lt;br /&gt;
Version 1.3.37&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/matthiasmullie/minify&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;
==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-CSS-Parser==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/php-css-parser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Parser for CSS Files written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 8.1.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2011 Raphael Schweikert, http://sabberworm.com/&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/sabberworm/PHP-CSS-Parser&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.16&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;
==RequireJS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/requirejs/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
RequireJS is a JavaScript file and module loader.&lt;br /&gt;
&lt;br /&gt;
Version 2.3.2&lt;br /&gt;
&lt;br /&gt;
License: new BSD or MIT&lt;br /&gt;
&lt;br /&gt;
http://requirejs.org/&lt;br /&gt;
&lt;br /&gt;
==scssphp==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/scssphp/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
scssphp is a compiler for SCSS written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 0.6.5&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2015 Leaf Corcoran&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://leafo.github.io/scssphp&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;
==LTI Tool Provider Library for PHP==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/ltiprovider/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PHP library for communicating with learning tools as per the LTI specification.&lt;br /&gt;
&lt;br /&gt;
Version: 3.0.2&lt;br /&gt;
&lt;br /&gt;
© 2016 IMS Global Learning Consortium Inc. All Rights Reserved. Trademark Policy - (www.imsglobal.org/trademarks)&lt;br /&gt;
&lt;br /&gt;
License: Apache 2&lt;br /&gt;
&lt;br /&gt;
https://github.com/IMSGlobal/LTI-Tool-Provider-Library-PHP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Popper.js==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/popper.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A kickass library used to created Poppers in web applications&lt;br /&gt;
&lt;br /&gt;
© 2016 Federico Zivolo and contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/FezVrasta/popper.js&lt;br /&gt;
&lt;br /&gt;
==Flexitour==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/tour.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A JS library for tours&lt;br /&gt;
&lt;br /&gt;
© 2016 Andrew Nicols and contributors&lt;br /&gt;
&lt;br /&gt;
License: GPLv3&lt;br /&gt;
&lt;br /&gt;
https://github.com/andrewnicols/flexitour&lt;br /&gt;
&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=51198</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=51198"/>
		<updated>2016-11-29T01:09:04Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* PHP mailer */&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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;auth/cas/CAS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&lt;br /&gt;
&lt;br /&gt;
==Chart.js==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/amd/src/chartjs-lazy.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Simple yet flexible JavaScript charting for designers &amp;amp; developers&lt;br /&gt;
&lt;br /&gt;
Version: 2.2.2&lt;br /&gt;
&lt;br /&gt;
Copyright 2016 Nick Downie&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://www.chartjs.org&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;
== GeoIp2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/maxmind/GeoIp2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library for precessing of GeoIP data files&lt;br /&gt;
&lt;br /&gt;
Version: 2.4.2&lt;br /&gt;
&lt;br /&gt;
Copyright MaxMind&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/maxmind/GeoIP2-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;
==jQuery==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery is a fast, small, and feature-rich JavaScript library widely used on moodle.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.3&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://jquery.com&lt;br /&gt;
&lt;br /&gt;
==jQuery migrate==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/jquery-migrate-1.4.0.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library used migrate older jQuery code to jQuery 3.0.&lt;br /&gt;
&lt;br /&gt;
Version: 1.4.0&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&lt;br /&gt;
&lt;br /&gt;
==jQuery UI==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/ui-1.12.1/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery UI is a set of user interface interactions, effects, widgets, and themes built on top of the jQuery library.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.1&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/lessphp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&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.7&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;
==MatthiasMullie\Minify==&lt;br /&gt;
CSS &amp;amp; JavaScript minifier, in PHP&lt;br /&gt;
&lt;br /&gt;
Version 1.3.37&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/matthiasmullie/minify&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;
==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-CSS-Parser==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/php-css-parser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Parser for CSS Files written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 8.1.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2011 Raphael Schweikert, http://sabberworm.com/&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/sabberworm/PHP-CSS-Parser&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.16&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;
==RequireJS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/requirejs/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
RequireJS is a JavaScript file and module loader.&lt;br /&gt;
&lt;br /&gt;
Version 2.3.2&lt;br /&gt;
&lt;br /&gt;
License: new BSD or MIT&lt;br /&gt;
&lt;br /&gt;
http://requirejs.org/&lt;br /&gt;
&lt;br /&gt;
==scssphp==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/scssphp/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
scssphp is a compiler for SCSS written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 0.6.5&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2015 Leaf Corcoran&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://leafo.github.io/scssphp&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;
==LTI Tool Provider Library for PHP==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/ltiprovider/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PHP library for communicating with learning tools as per the LTI specification.&lt;br /&gt;
&lt;br /&gt;
Version: 3.0.2&lt;br /&gt;
&lt;br /&gt;
© 2016 IMS Global Learning Consortium Inc. All Rights Reserved. Trademark Policy - (www.imsglobal.org/trademarks)&lt;br /&gt;
&lt;br /&gt;
License: Apache 2&lt;br /&gt;
&lt;br /&gt;
https://github.com/IMSGlobal/LTI-Tool-Provider-Library-PHP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Popper.js==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/popper.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A kickass library used to created Poppers in web applications&lt;br /&gt;
&lt;br /&gt;
© 2016 Federico Zivolo and contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/FezVrasta/popper.js&lt;br /&gt;
&lt;br /&gt;
==Flexitour==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/tour.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A JS library for tours&lt;br /&gt;
&lt;br /&gt;
© 2016 Andrew Nicols and contributors&lt;br /&gt;
&lt;br /&gt;
License: GPLv3&lt;br /&gt;
&lt;br /&gt;
https://github.com/andrewnicols/flexitour&lt;br /&gt;
&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=51197</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=51197"/>
		<updated>2016-11-29T01:06:51Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* jQuery migrate */&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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;auth/cas/CAS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&lt;br /&gt;
&lt;br /&gt;
==Chart.js==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/amd/src/chartjs-lazy.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Simple yet flexible JavaScript charting for designers &amp;amp; developers&lt;br /&gt;
&lt;br /&gt;
Version: 2.2.2&lt;br /&gt;
&lt;br /&gt;
Copyright 2016 Nick Downie&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://www.chartjs.org&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;
== GeoIp2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/maxmind/GeoIp2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library for precessing of GeoIP data files&lt;br /&gt;
&lt;br /&gt;
Version: 2.4.2&lt;br /&gt;
&lt;br /&gt;
Copyright MaxMind&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/maxmind/GeoIP2-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;
==jQuery==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery is a fast, small, and feature-rich JavaScript library widely used on moodle.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.3&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://jquery.com&lt;br /&gt;
&lt;br /&gt;
==jQuery migrate==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/jquery-migrate-1.4.0.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library used migrate older jQuery code to jQuery 3.0.&lt;br /&gt;
&lt;br /&gt;
Version: 1.4.0&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&lt;br /&gt;
&lt;br /&gt;
==jQuery UI==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/ui-1.12.1/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery UI is a set of user interface interactions, effects, widgets, and themes built on top of the jQuery library.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.1&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/lessphp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&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.7&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;
==MatthiasMullie\Minify==&lt;br /&gt;
CSS &amp;amp; JavaScript minifier, in PHP&lt;br /&gt;
&lt;br /&gt;
Version 1.3.37&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/matthiasmullie/minify&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;
==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-CSS-Parser==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/php-css-parser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Parser for CSS Files written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 8.1.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2011 Raphael Schweikert, http://sabberworm.com/&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/sabberworm/PHP-CSS-Parser&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;
==RequireJS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/requirejs/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
RequireJS is a JavaScript file and module loader.&lt;br /&gt;
&lt;br /&gt;
Version 2.3.2&lt;br /&gt;
&lt;br /&gt;
License: new BSD or MIT&lt;br /&gt;
&lt;br /&gt;
http://requirejs.org/&lt;br /&gt;
&lt;br /&gt;
==scssphp==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/scssphp/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
scssphp is a compiler for SCSS written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 0.6.5&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2015 Leaf Corcoran&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://leafo.github.io/scssphp&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;
==LTI Tool Provider Library for PHP==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/ltiprovider/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PHP library for communicating with learning tools as per the LTI specification.&lt;br /&gt;
&lt;br /&gt;
Version: 3.0.2&lt;br /&gt;
&lt;br /&gt;
© 2016 IMS Global Learning Consortium Inc. All Rights Reserved. Trademark Policy - (www.imsglobal.org/trademarks)&lt;br /&gt;
&lt;br /&gt;
License: Apache 2&lt;br /&gt;
&lt;br /&gt;
https://github.com/IMSGlobal/LTI-Tool-Provider-Library-PHP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Popper.js==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/popper.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A kickass library used to created Poppers in web applications&lt;br /&gt;
&lt;br /&gt;
© 2016 Federico Zivolo and contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/FezVrasta/popper.js&lt;br /&gt;
&lt;br /&gt;
==Flexitour==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/tour.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A JS library for tours&lt;br /&gt;
&lt;br /&gt;
© 2016 Andrew Nicols and contributors&lt;br /&gt;
&lt;br /&gt;
License: GPLv3&lt;br /&gt;
&lt;br /&gt;
https://github.com/andrewnicols/flexitour&lt;br /&gt;
&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=51196</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=51196"/>
		<updated>2016-11-29T00:58:20Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* RequireJS */&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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;auth/cas/CAS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&lt;br /&gt;
&lt;br /&gt;
==Chart.js==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/amd/src/chartjs-lazy.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Simple yet flexible JavaScript charting for designers &amp;amp; developers&lt;br /&gt;
&lt;br /&gt;
Version: 2.2.2&lt;br /&gt;
&lt;br /&gt;
Copyright 2016 Nick Downie&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://www.chartjs.org&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;
== GeoIp2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/maxmind/GeoIp2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library for precessing of GeoIP data files&lt;br /&gt;
&lt;br /&gt;
Version: 2.4.2&lt;br /&gt;
&lt;br /&gt;
Copyright MaxMind&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/maxmind/GeoIP2-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;
==jQuery==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery is a fast, small, and feature-rich JavaScript library widely used on moodle.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.3&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://jquery.com&lt;br /&gt;
&lt;br /&gt;
==jQuery migrate==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/jquery-migrate-1.4.0.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library used migrate older jQuery code to jQuery 3.0.&lt;br /&gt;
&lt;br /&gt;
Version: 1.4.0&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/lessphp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&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.7&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;
==MatthiasMullie\Minify==&lt;br /&gt;
CSS &amp;amp; JavaScript minifier, in PHP&lt;br /&gt;
&lt;br /&gt;
Version 1.3.37&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/matthiasmullie/minify&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;
==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-CSS-Parser==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/php-css-parser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Parser for CSS Files written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 8.1.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2011 Raphael Schweikert, http://sabberworm.com/&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/sabberworm/PHP-CSS-Parser&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;
==RequireJS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/requirejs/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
RequireJS is a JavaScript file and module loader.&lt;br /&gt;
&lt;br /&gt;
Version 2.3.2&lt;br /&gt;
&lt;br /&gt;
License: new BSD or MIT&lt;br /&gt;
&lt;br /&gt;
http://requirejs.org/&lt;br /&gt;
&lt;br /&gt;
==scssphp==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/scssphp/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
scssphp is a compiler for SCSS written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 0.6.5&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2015 Leaf Corcoran&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://leafo.github.io/scssphp&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;
==LTI Tool Provider Library for PHP==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/ltiprovider/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PHP library for communicating with learning tools as per the LTI specification.&lt;br /&gt;
&lt;br /&gt;
Version: 3.0.2&lt;br /&gt;
&lt;br /&gt;
© 2016 IMS Global Learning Consortium Inc. All Rights Reserved. Trademark Policy - (www.imsglobal.org/trademarks)&lt;br /&gt;
&lt;br /&gt;
License: Apache 2&lt;br /&gt;
&lt;br /&gt;
https://github.com/IMSGlobal/LTI-Tool-Provider-Library-PHP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Popper.js==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/popper.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A kickass library used to created Poppers in web applications&lt;br /&gt;
&lt;br /&gt;
© 2016 Federico Zivolo and contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/FezVrasta/popper.js&lt;br /&gt;
&lt;br /&gt;
==Flexitour==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/tour.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A JS library for tours&lt;br /&gt;
&lt;br /&gt;
© 2016 Andrew Nicols and contributors&lt;br /&gt;
&lt;br /&gt;
License: GPLv3&lt;br /&gt;
&lt;br /&gt;
https://github.com/andrewnicols/flexitour&lt;br /&gt;
&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=51195</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=51195"/>
		<updated>2016-11-29T00:56:32Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* MathJax */&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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;auth/cas/CAS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&lt;br /&gt;
&lt;br /&gt;
==Chart.js==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/amd/src/chartjs-lazy.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Simple yet flexible JavaScript charting for designers &amp;amp; developers&lt;br /&gt;
&lt;br /&gt;
Version: 2.2.2&lt;br /&gt;
&lt;br /&gt;
Copyright 2016 Nick Downie&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://www.chartjs.org&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;
== GeoIp2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/maxmind/GeoIp2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library for precessing of GeoIP data files&lt;br /&gt;
&lt;br /&gt;
Version: 2.4.2&lt;br /&gt;
&lt;br /&gt;
Copyright MaxMind&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
https://github.com/maxmind/GeoIP2-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;
==jQuery==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery is a fast, small, and feature-rich JavaScript library widely used on moodle.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.3&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://jquery.com&lt;br /&gt;
&lt;br /&gt;
==jQuery migrate==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/jquery-migrate-1.4.0.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library used migrate older jQuery code to jQuery 3.0.&lt;br /&gt;
&lt;br /&gt;
Version: 1.4.0&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/lessphp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&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.7&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;
==MatthiasMullie\Minify==&lt;br /&gt;
CSS &amp;amp; JavaScript minifier, in PHP&lt;br /&gt;
&lt;br /&gt;
Version 1.3.37&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/matthiasmullie/minify&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;
==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-CSS-Parser==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/php-css-parser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Parser for CSS Files written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 8.1.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2011 Raphael Schweikert, http://sabberworm.com/&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/sabberworm/PHP-CSS-Parser&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;
==RequireJS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/requirejs/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
RequireJS is a JavaScript file and module loader.&lt;br /&gt;
&lt;br /&gt;
Version 2.1.22&lt;br /&gt;
&lt;br /&gt;
License: new BSD or MIT&lt;br /&gt;
&lt;br /&gt;
http://requirejs.org/&lt;br /&gt;
&lt;br /&gt;
==scssphp==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/scssphp/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
scssphp is a compiler for SCSS written in PHP.&lt;br /&gt;
&lt;br /&gt;
Version: 0.6.5&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2015 Leaf Corcoran&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://leafo.github.io/scssphp&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;
==LTI Tool Provider Library for PHP==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/ltiprovider/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PHP library for communicating with learning tools as per the LTI specification.&lt;br /&gt;
&lt;br /&gt;
Version: 3.0.2&lt;br /&gt;
&lt;br /&gt;
© 2016 IMS Global Learning Consortium Inc. All Rights Reserved. Trademark Policy - (www.imsglobal.org/trademarks)&lt;br /&gt;
&lt;br /&gt;
License: Apache 2&lt;br /&gt;
&lt;br /&gt;
https://github.com/IMSGlobal/LTI-Tool-Provider-Library-PHP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Popper.js==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/popper.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A kickass library used to created Poppers in web applications&lt;br /&gt;
&lt;br /&gt;
© 2016 Federico Zivolo and contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/FezVrasta/popper.js&lt;br /&gt;
&lt;br /&gt;
==Flexitour==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin/tool/usertours/amd/src/tour.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A JS library for tours&lt;br /&gt;
&lt;br /&gt;
© 2016 Andrew Nicols and contributors&lt;br /&gt;
&lt;br /&gt;
License: GPLv3&lt;br /&gt;
&lt;br /&gt;
https://github.com/andrewnicols/flexitour&lt;br /&gt;
&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51053</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51053"/>
		<updated>2016-11-11T06:07:57Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
On the roadmap for Moodle 3.2 was added the requirement for a new charting library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
The requirements can be split in two different categories, the rendering, and the API.&lt;br /&gt;
&lt;br /&gt;
=== Rendering ===&lt;br /&gt;
The rendering of the charts must occur on the client-side, in Javascript. It must be visually pleasing without the need for a lot of customisation. &lt;br /&gt;
It has to be accessible, support translation and right-to-left languages. It must reasonably support large datasets and dynamic data changes, for instance &lt;br /&gt;
when fetching and including more data from an Ajax request. &lt;br /&gt;
The charts generated can be printed. Aside the feature requiremements, the library itself has to be mature, stable and under active development. &lt;br /&gt;
Its popularity on networks such as Github and Stackoverflow is a good indicator. It must also be downloadable to be shipped and served locally from Moodle.&lt;br /&gt;
&lt;br /&gt;
=== The API ===&lt;br /&gt;
Simplicity is the main keyword here. Programmatically creating a new chart must be as simple as possible. &lt;br /&gt;
The API has to be designed so that using a different rendering engine later on is possible (when switching to another library). &lt;br /&gt;
The API must be available from both PHP and Javascript, so that a chart can be created from any of these even if its rendering will happen solely in Javascript.&lt;br /&gt;
&lt;br /&gt;
== The winner is ==&lt;br /&gt;
&#039;&#039;&#039;Chart.js wins&#039;&#039;&#039;&lt;br /&gt;
We have investigated the following libraries:&lt;br /&gt;
Chart.js&lt;br /&gt;
Highcharts&lt;br /&gt;
CanvasJS&lt;br /&gt;
Chartist&lt;br /&gt;
n3&lt;br /&gt;
Google Charts&lt;br /&gt;
Flot/jQuery&lt;br /&gt;
D3&lt;br /&gt;
Plotly.js/D3&lt;br /&gt;
C3/D3&lt;br /&gt;
nvd3/D3&lt;br /&gt;
dimple-js/D3&lt;br /&gt;
dc-js/D3&lt;br /&gt;
metricsgraphicsjs/D3&lt;br /&gt;
ECharts&lt;br /&gt;
After considering popularity (Github stars, contributors, Stackoverflow questions), license, maturity, and relative simplicity, we shortlisted these:&lt;br /&gt;
C3&lt;br /&gt;
Chart.js&lt;br /&gt;
Echarts&lt;br /&gt;
Chart.js won because it is the most popular even though it only contains a limited set of chart types. Echarts was very promising but the community around it being mainly non-English speaking felt risky as getting help online would be much harder. C3 is a layer on top of D3 with aim to provide a simpler charting solution, however its popularity was quite limited compared to the other ones.&lt;br /&gt;
Other more or less popular libraries could have been discarded because of their license, complexity, or being an overkill for what we need.&lt;br /&gt;
&lt;br /&gt;
== The API ==&lt;br /&gt;
Just as the requirements, the API was split in two different categories, the chart structure, and the rendering.&lt;br /&gt;
Data structure&lt;br /&gt;
In order to create a library agnostic to the rendering mechanism used, the API must construct a data structure representing the chart. &lt;br /&gt;
Not only it needs to contain the data to be displayed, but also some information on the display itself, such as the type of chart, the axis labels, etc...&lt;br /&gt;
The goal of the data structure is not to contain all the rendering options offered by the multitude of charting libraries out there, it is simply to advise the rendering &lt;br /&gt;
method on how the data should be presented. As much as possible the options have to remain simple. For example the data structure will not contain a parameter &lt;br /&gt;
determining the thickness of the lines in a chart, that is the sole responsibility of the rendering engine.&lt;br /&gt;
The API to construct the data structure of a chart is available in both PHP and Javascript, however it is acceptable for the validation of the data to only occur in Javascript. &lt;br /&gt;
This to avoid duplicating too much code, especially as Javascript is always invoked for rendering purposes.&lt;br /&gt;
The PHP objects of the API implement the built-in interface jsonSerializable. The serialisation will be the mechanism used to export a PHP-made structure to Javascript as a JSON object. Only PHP needs to support the serialisation. The Javascript API implements the mechanism to restore a chart structure from JSON data.&lt;br /&gt;
Whilst limiting, it is important to not oversee the benefits of this data structure. It creates a self-documenting API exposing the different attributes and methods a data structure supports. It streamlines the data visualisation to its essential components, offering a quick and easy way to implement new charts to developers without the need for a knowledge of the rendering library. And it allows for a chart structure to be exported to any Moodle frontend such as the Web interface, but also the mobile app.&lt;br /&gt;
== Rendering ==&lt;br /&gt;
This part of the API only happens in Javascript. The rendering engine receives the data structure and converts it to a visualisation of this data. Mainly this will translate the data structure into the format expected by existing charting libraries and output the result. This allows for an instant migration to another charting library, simply by replacing the rendering engine, and for custom rendering engines such as outputting the chart data to a table for accessibility purposes.&lt;br /&gt;
The engine can be notified that the chart data structure has changed and that the output needs to be updated.&lt;br /&gt;
Moodle will ship with an output engine for Chart.js and another one to generate HTML tables.&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51050</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51050"/>
		<updated>2016-11-11T06:00:56Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the great Charts API docs&lt;br /&gt;
&lt;br /&gt;
New charting library&lt;br /&gt;
Introduction&lt;br /&gt;
On the roadmap for Moodle 3.2 was added the requirement for a new charting library.&lt;br /&gt;
Requirements&lt;br /&gt;
The requirements can be split in two different categories, the rendering, and the API.&lt;br /&gt;
Rendering&lt;br /&gt;
The rendering of the charts must occur on the client-side, in Javascript. It must be visually pleasing without the need for a lot of customisation. It has to be accessible, support translation and right-to-left languages. It must reasonably support large datasets and dynamic data changes, for instance when fetching and including more data from an Ajax request. The charts generated can be printed.&lt;br /&gt;
Aside the feature requiremements, the library itself has to be mature, stable and under active development. Its popularity on networks such as Github and Stackoverflow is a good indicator. It must also be downloadable to be shipped and served locally from Moodle.&lt;br /&gt;
The API&lt;br /&gt;
Simplicity is the main keyword here. Programmatically creating a new chart must be as simple as possible. The API has to be designed so that using a different rendering engine later on is possible (when switching to another library). The API must be available from both PHP and Javascript, so that a chart can be created from any of these even if its rendering will happen solely in Javascript.&lt;br /&gt;
Chart.js wins&lt;br /&gt;
We have investigated the following libraries:&lt;br /&gt;
Chart.js&lt;br /&gt;
Highcharts&lt;br /&gt;
CanvasJS&lt;br /&gt;
Chartist&lt;br /&gt;
n3&lt;br /&gt;
Google Charts&lt;br /&gt;
Flot/jQuery&lt;br /&gt;
D3&lt;br /&gt;
Plotly.js/D3&lt;br /&gt;
C3/D3&lt;br /&gt;
nvd3/D3&lt;br /&gt;
dimple-js/D3&lt;br /&gt;
dc-js/D3&lt;br /&gt;
metricsgraphicsjs/D3&lt;br /&gt;
ECharts&lt;br /&gt;
After considering popularity (Github stars, contributors, Stackoverflow questions), license, maturity, and relative simplicity, we shortlisted these:&lt;br /&gt;
C3&lt;br /&gt;
Chart.js&lt;br /&gt;
Echarts&lt;br /&gt;
Chart.js won because it is the most popular even though it only contains a limited set of chart types. Echarts was very promising but the community around it being mainly non-English speaking felt risky as getting help online would be much harder. C3 is a layer on top of D3 with aim to provide a simpler charting solution, however its popularity was quite limited compared to the other ones.&lt;br /&gt;
Other more or less popular libraries could have been discarded because of their license, complexity, or being an overkill for what we need.&lt;br /&gt;
The API&lt;br /&gt;
Just as the requirements, the API was split in two different categories, the chart structure, and the rendering.&lt;br /&gt;
Data structure&lt;br /&gt;
In order to create a library agnostic to the rendering mechanism used, the API must construct a data structure representing the chart. Not only it needs to contain the data to be displayed, but also some information on the display itself, such as the type of chart, the axis labels, etc...&lt;br /&gt;
The goal of the data structure is not to contain all the rendering options offered by the multitude of charting libraries out there, it is simply to advise the rendering method on how the data should be presented. As much as possible the options have to remain simple. For example the data structure will not contain a parameter determining the thickness of the lines in a chart, that is the sole responsibility of the rendering engine.&lt;br /&gt;
The API to construct the data structure of a chart is available in both PHP and Javascript, however it is acceptable for the validation of the data to only occur in Javascript. This to avoid duplicating too much code, especially as Javascript is always invoked for rendering purposes.&lt;br /&gt;
The PHP objects of the API implement the built-in interface jsonSerializable. The serialisation will be the mechanism used to export a PHP-made structure to Javascript as a JSON object. Only PHP needs to support the serialisation. The Javascript API implements the mechanism to restore a chart structure from JSON data.&lt;br /&gt;
Whilst limiting, it is important to not oversee the benefits of this data structure. It creates a self-documenting API exposing the different attributes and methods a data structure supports. It streamlines the data visualisation to its essential components, offering a quick and easy way to implement new charts to developers without the need for a knowledge of the rendering library. And it allows for a chart structure to be exported to any Moodle frontend such as the Web interface, but also the mobile app.&lt;br /&gt;
Rendering&lt;br /&gt;
This part of the API only happens in Javascript. The rendering engine receives the data structure and converts it to a visualisation of this data. Mainly this will translate the data structure into the format expected by existing charting libraries and output the result. This allows for an instant migration to another charting library, simply by replacing the rendering engine, and for custom rendering engines such as outputting the chart data to a table for accessibility purposes.&lt;br /&gt;
The engine can be notified that the chart data structure has changed and that the output needs to be updated.&lt;br /&gt;
Moodle will ship with an output engine for Chart.js and another one to generate HTML tables.&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51049</id>
		<title>Charts API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Charts_API&amp;diff=51049"/>
		<updated>2016-11-11T05:59:08Z</updated>

		<summary type="html">&lt;p&gt;Lameze: Created page with &amp;quot;This is the great Charts API docs&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the great Charts API docs&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User-related_APIs&amp;diff=50267</id>
		<title>User-related APIs</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User-related_APIs&amp;diff=50267"/>
		<updated>2016-05-24T07:25:42Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This is a collection of miscelaneous APIs that can help with doing things with lists of users. Note that, in many cases, the more specific [[Access API]], [[Groups API]], [[Enrolment API]], etc. may be what you need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User fields definition ==&lt;br /&gt;
&lt;br /&gt;
To guarantee the sanity of the data inserted on moodle core and avoid security bugs, new user fields definition methods has been created. The purpose of these new methods is to create a central point of user fields data validation and guarantee all data inserted on moodle will be cleaned against the correct parameter type. Another goal of  this new API is to create consistency across moodle core, avoid different parameter validations for the same user fields. For now on, must validate user data against the user field, not using clean_param() directly.&lt;br /&gt;
&lt;br /&gt;
===$propertiescache===&lt;br /&gt;
Cached information of each user field and its attributes filled by the fill_properties_cache.&lt;br /&gt;
&lt;br /&gt;
===fill_properties_cache()===&lt;br /&gt;
The main method of the user definition, It keep the definition of each user field and it&#039;s properties. It verify if the &#039;&#039;&#039;core_user::$propertiescache&#039;&#039;&#039; is already filled and cache all user fields attributes into this same attribute.&lt;br /&gt;
Each field matches the exact field name on the user table, that said, every new field added to the user table should be added to fill_properties_cache $fields array, otherwise it won&#039;t be validated or cleaned.&lt;br /&gt;
Each field has four possible properties, being choices and default optional:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;null&#039;&#039;&#039; - whether the field is NULL or NOT_NULL, it SHOULD NOT be used as form validation, as many fields on user table has NOT_NULL property but it has the default value as (``).&lt;br /&gt;
* &#039;&#039;&#039;type&#039;&#039;&#039; - the expected parameter type (PARAM_*) to be used as validation and sanitizing.&lt;br /&gt;
* &#039;&#039;&#039;choices&#039;&#039;&#039; - A list of accepted values of that field. For example the list of the available countries, timezones, calendartype and etc.&lt;br /&gt;
* &#039;&#039;&#039;default&#039;&#039;&#039; - The default value in case the user field didn`t passed the validation or cleaned and we must set the default value. For example if the user country is invalid and it is not on the list of choices, set $CFG-&amp;gt;country.&lt;br /&gt;
&lt;br /&gt;
===validate()===&lt;br /&gt;
A static method to validate an user fields, accepts an array or the user object as parameter, validate each parameter individually and can return true if all user data is correct or an array of validation errors. The purpose of this method is to just validate the user data, it won’t do any cleaning of the data.&lt;br /&gt;
&lt;br /&gt;
===clean_data()===&lt;br /&gt;
A static method that has the purpose of clean the user data and return the same user array/object. It receives an array with user data or a user object as parameter and it checks if the data is in the list of choices and if the property has a default value and clean the data if the user object doesn’t have a choices property.&lt;br /&gt;
It will display a debugging message if one the operations above has problems.&lt;br /&gt;
&lt;br /&gt;
===clean_field()===&lt;br /&gt;
A static method to clean a single user field. It has two parameters, the data to be cleaned and its user field. The behaviour of the method is similar to the clean_data, it will do the validations and cleaning and can display a debug message if error has been found. It returns the cleaned data.&lt;br /&gt;
&lt;br /&gt;
===get_property_type()===&lt;br /&gt;
A helper method to get the type of the property. It receive the user field name as parameter and if it doesn’t exist will throw an exception. If the property has been found, it will return its type.&lt;br /&gt;
&lt;br /&gt;
===get_property_null()===&lt;br /&gt;
A helper method to get the null property of the user field.. It receive the user field name as parameter and if it doesn’t exists it throws an exception. If the property has been found, it will return the null value.&lt;br /&gt;
&lt;br /&gt;
===get_property_choices()===&lt;br /&gt;
A helper method to get the list of choices of a user field. It receive the user field name as parameter and if it doesn’t exist will throw an exception. If the property has been found, it will return the list of accepted values&lt;br /&gt;
&lt;br /&gt;
===get_property_default()===&lt;br /&gt;
A helper method to get the default value of a property. It receive the user field name as parameter and if it doesn’t exist or if it doesn’t has a default attribute will throw an exception. If the property has been found, it will return its default value.&lt;br /&gt;
&lt;br /&gt;
== User selector ==&lt;br /&gt;
&lt;br /&gt;
The base class &amp;lt;tt&amp;gt;user_selector_base&amp;lt;/tt&amp;gt; defined in &amp;lt;tt&amp;gt;user/selector/lib.php&amp;lt;/tt&amp;gt;, which you can subclass to make a widget that lets you select users in an AJAX-y way. It is used, for example, on the Add group members page. The best way to learn how to use it is to search the code for other users, and see how they work. The base class also has good PHPdoc comments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sorting lists of users ==&lt;br /&gt;
&lt;br /&gt;
When you fetch a list of users from the database, they should always be sorted consistently, by using the &amp;lt;tt&amp;gt;users_order_by_sql&amp;lt;/tt&amp;gt; function to generate the order-by clause. Again, the best way to see how that works is to search the code for existing uses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
This page is probably incomplete.&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Core APIs]]&lt;br /&gt;
* [[Access API]]&lt;br /&gt;
* [[Groups API]]&lt;br /&gt;
* [[Enrolment API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=50233</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=50233"/>
		<updated>2016-05-23T07:46:48Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;auth/cas/CAS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&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;
==jQuery==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery is a fast, small, and feature-rich JavaScript library widely used on moodle.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.3&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://jquery.com&lt;br /&gt;
&lt;br /&gt;
==jQuery migrate==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery/jquery-migrate-1.4.0.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library used migrate older jQuery code to jQuery 3.0.&lt;br /&gt;
&lt;br /&gt;
Version: 1.4.0&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation and other contributors&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/jquery/jquery-migrate&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/lessphp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&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;
==RequireJS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/requirejs/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
RequireJS is a JavaScript file and module loader.&lt;br /&gt;
&lt;br /&gt;
Version 2.1.22&lt;br /&gt;
&lt;br /&gt;
License: new BSD or MIT&lt;br /&gt;
&lt;br /&gt;
http://requirejs.org/&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>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=50230</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=50230"/>
		<updated>2016-05-23T07:29:24Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;auth/cas/CAS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&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;
==jQuery==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/jquery&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
jQuery is a fast, small, and feature-rich JavaScript library widely used on moodle.&lt;br /&gt;
&lt;br /&gt;
Version: 1.12.3&lt;br /&gt;
&lt;br /&gt;
Copyright: 2016 The jQuery Foundation&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://jquery.com&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/lessphp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&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;
==RequireJS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/requirejs/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
RequireJS is a JavaScript file and module loader.&lt;br /&gt;
&lt;br /&gt;
Version 2.1.22&lt;br /&gt;
&lt;br /&gt;
License: new BSD or MIT&lt;br /&gt;
&lt;br /&gt;
http://requirejs.org/&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>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=50229</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=50229"/>
		<updated>2016-05-23T06:58:32Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;auth/cas/CAS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/lessphp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&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;
==RequireJS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;/lib/requirejs/&#039;&#039;	&lt;br /&gt;
&lt;br /&gt;
RequireJS is a JavaScript file and module loader.&lt;br /&gt;
&lt;br /&gt;
Version 2.1.22&lt;br /&gt;
&lt;br /&gt;
License: new BSD or MIT&lt;br /&gt;
&lt;br /&gt;
http://requirejs.org/&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>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=50228</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=50228"/>
		<updated>2016-05-23T06:40:26Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;auth/cas/CAS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lib/lessphp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&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>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=50227</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=50227"/>
		<updated>2016-05-23T06:37:38Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;auth/cas/CAS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&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;
==less.php==&lt;br /&gt;
&lt;br /&gt;
The less.php is a PHP port of the official LESS processor used by moodle themes.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lib/lessphp/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.0.10&lt;br /&gt;
&lt;br /&gt;
License: Apache 2.0&lt;br /&gt;
&lt;br /&gt;
http://lessphp.typesettercms.com/&lt;br /&gt;
&lt;br /&gt;
Copyright:  Matt Agar and Martin Jantošovič&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>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=50223</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=50223"/>
		<updated>2016-05-23T02:55:35Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &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;
==CAS==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;auth/cas/CAS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
phpCAS library to support CAS authentication plugin&lt;br /&gt;
&lt;br /&gt;
Copyright Jasig&lt;br /&gt;
&lt;br /&gt;
License: Apache License 2.0&lt;br /&gt;
&lt;br /&gt;
https://wiki.jasig.org/display/CASC/phpCAS&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>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=49851</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=49851"/>
		<updated>2016-04-21T05:34:45Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Google APIs */&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;
==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>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=49850</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=49850"/>
		<updated>2016-04-21T05:32:46Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* PHP Markdown */&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.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>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=48688</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=48688"/>
		<updated>2015-10-07T06:27:44Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* horde */&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-dev&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&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.53&lt;br /&gt;
&lt;br /&gt;
Copyright Olivier PLATHEY&lt;br /&gt;
&lt;br /&gt;
License: Freeware&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;
==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.php&#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: 1.0 (with modifications)&lt;br /&gt;
&lt;br /&gt;
Copyright © 2002  Mark Wilton-Jones&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://roundcube.net/&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;
==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;
==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;
==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 1.73&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;
&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;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=48687</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=48687"/>
		<updated>2015-10-07T06:26:18Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &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-dev&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&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.53&lt;br /&gt;
&lt;br /&gt;
Copyright Olivier PLATHEY&lt;br /&gt;
&lt;br /&gt;
License: Freeware&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;
==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 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.php&#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: 1.0 (with modifications)&lt;br /&gt;
&lt;br /&gt;
Copyright © 2002  Mark Wilton-Jones&lt;br /&gt;
&lt;br /&gt;
License: GNU GPL&lt;br /&gt;
&lt;br /&gt;
http://roundcube.net/&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;
==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;
==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;
==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 1.73&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;
&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;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Authentication_plugins&amp;diff=48683</id>
		<title>Authentication plugins</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Authentication_plugins&amp;diff=48683"/>
		<updated>2015-10-06T07:35:30Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* postlogout_hook() */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
This page first gives an &#039;&#039;&#039;overview&#039;&#039;&#039; of the &#039;&#039;authentication process&#039;&#039; and then explains how &#039;&#039;authentication modules&#039;&#039; can be &#039;&#039;&#039;created&#039;&#039;&#039; using hooks to take over from the native authentication in Moodle.&lt;br /&gt;
=== Overview of Moodle authentication process ===&lt;br /&gt;
[[File:1.9.11_login_element.png|203px||thumb|right|The login UI element in Moodle 1.9]]The authentication use case in Moodle starts when a user clicks on the Login link in the UI or if they try to access a protected page. There are two broad classes of authentication plugins, the regular type where moodle handles the password and ones where the password is handled by a 3rd party page eg SAML, OpenID etc.&lt;br /&gt;
&lt;br /&gt;
For the regular plugins the following happens (skipping some minor details and rarer scenarios):&lt;br /&gt;
&lt;br /&gt;
# The default login page (&amp;lt;tt&amp;gt;/login/index.php&amp;lt;/tt&amp;gt;) is displayed. OR, if a system administrator has set the Alternate Login URL on the &amp;quot;Manage authentication&amp;quot; page, that URL will be displayed.&lt;br /&gt;
# A user enters their credentials and submits the form.&lt;br /&gt;
# The handler code in &amp;lt;tt&amp;gt;/login/index.php&amp;lt;/tt&amp;gt; runs:&lt;br /&gt;
## Gets a list of enabled authentication plugins.&lt;br /&gt;
## Runs &amp;lt;tt&amp;gt;loginpage_hook()&amp;lt;/tt&amp;gt; for each plugin, in case any of them needs to intercept the login request.&lt;br /&gt;
## Checks to make sure that the username meets Moodle&#039;s criteria (alphanumeric, with periods and hyphens allowed).&lt;br /&gt;
## Calls &amp;lt;tt&amp;gt;authenticate_user_login()&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;/lib/moodlelib.php&amp;lt;/tt&amp;gt;, which returns a &amp;lt;code&amp;gt;$user&amp;lt;/code&amp;gt; object. (Details of this code follow this main outline.)&lt;br /&gt;
## Determines whether authentication was successful (by checking whether &amp;lt;code&amp;gt;$user&amp;lt;/code&amp;gt; is a valid object) and, if not, sends them back to the login page with an error message. Otherwise, it figures out where to send the user based on their original page request, whether their password is expired, etc., and redirects them there.&lt;br /&gt;
&lt;br /&gt;
For the 3rd party auth plugins the process could look like this (eg CAS, SAML, OpenID etc):&lt;br /&gt;
# Access a protected page but isn&#039;t logged in, so moodle calls &amp;lt;tt&amp;gt;pre_loginpage_hook()&amp;lt;/tt&amp;gt; on each enabled plugin, which may redirect to the 3rd party login page&lt;br /&gt;
# Or if they go directly to the login page moodle calls &amp;lt;tt&amp;gt;loginpage_hook()&amp;lt;/tt&amp;gt; on each enabled plugin, which may redirect to the 3rd party login page&lt;br /&gt;
# The user enters their credentials and authenticates on the 3rd party page&lt;br /&gt;
# The remote authentication service redirects back to moodle with an assertion, such as a single use token or encrypted response in a query param&lt;br /&gt;
# The auth plugin now validates the token or decrypts the assertion, does any other checking as required and then logs the user in using &amp;lt;tt&amp;gt;complete_user_login($user)&amp;lt;/tt&amp;gt;. If this happens inside &amp;lt;tt&amp;gt;pre_loginpage_hook()&amp;lt;/tt&amp;gt; then the user continues on their way, or if inside &amp;lt;tt&amp;gt;loginpage_hook()&amp;lt;/tt&amp;gt; or another custom page then the plugin should redirect to the wantsurl.&lt;br /&gt;
&lt;br /&gt;
Note that in this scenario above &amp;lt;tt&amp;gt;user_login($username, $password)&amp;lt;/tt&amp;gt; is never called and should probably return false.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
Authentication plugins exist from 1.9&lt;br /&gt;
==Example==&lt;br /&gt;
[http://moodle.org/plugins/view.php?plugin=auth_googleoauth2 Google / Facebook / Messenger Oauth2 Authentication plugin]&lt;br /&gt;
&lt;br /&gt;
==Template==&lt;br /&gt;
Please see Moodle &#039;&#039;&#039;none&#039;&#039;&#039; authentication plugin (auth/none), it&#039;s the perfect plugin template to start with.&lt;br /&gt;
&lt;br /&gt;
==Naming convention==&lt;br /&gt;
==File structure==&lt;br /&gt;
# Choose a name for your plugin.  We&#039;ll use &#039;sentry&#039; as an example below; change it to whatever name you have chosen.&lt;br /&gt;
# Under your Moodle installation root, create the directory &amp;lt;tt&amp;gt;/auth/sentry&amp;lt;/tt&amp;gt;.  It should be sibling to existing auth plugin directories: &#039;db&#039;, &#039;nologin&#039;, &#039;none&#039;, etc.&lt;br /&gt;
# Create the file &amp;lt;tt&amp;gt;/auth/sentry/auth.php&amp;lt;/tt&amp;gt;.  Within the file, create a class &amp;lt;tt&amp;gt;auth_plugin_sentry&amp;lt;/tt&amp;gt; that extends &amp;lt;tt&amp;gt;auth_plugin_base&amp;lt;/tt&amp;gt; from &amp;lt;tt&amp;gt;/lib/authlib.php&amp;lt;/tt&amp;gt;.  (You will need to &amp;lt;code&amp;gt;require_once&amp;lt;/code&amp;gt; the authlib file.)&lt;br /&gt;
# Implement the &amp;lt;tt&amp;gt;user_login()&amp;lt;/tt&amp;gt; function in your &amp;lt;tt&amp;gt;auth.php&amp;lt;/tt&amp;gt; file, and create or override additional functions based on your plugin&#039;s requirements.&lt;br /&gt;
# Log in to your Moodle installation as a site administrator and find, in the site administrator block, the page &amp;quot;Users -&amp;gt; Authentication -&amp;gt; Manage authentication&amp;quot;.  You will see your plugin in the list, appearing as &amp;lt;nowiki&amp;gt;[[auth_sentrytitle]]&amp;lt;/nowiki&amp;gt;.  You can enable it and move it up and down in the order.  &#039;&#039;&#039;At this point, with the plugin enabled, your plugin is registered and will be used by Moodle in its authentication process.&#039;&#039;&#039;&lt;br /&gt;
# If you don&#039;t like seeing &amp;lt;nowiki&amp;gt;[[auth_sentrytitle]]&amp;lt;/nowiki&amp;gt; as the name of your plugin in the Moodle UI, you&#039;ll need to create language files for your plugin.  Do this by creating the directory &amp;lt;tt&amp;gt;/auth/sentry/lang&amp;lt;/tt&amp;gt;, and under it, a directory for each language that your installation needs to support.  (Example: &amp;lt;tt&amp;gt;/auth/sentry/lang/en&amp;lt;/tt&amp;gt;.)  Within each of these language directories, create a file called &amp;lt;tt&amp;gt;auth_sentry.php&amp;lt;/tt&amp;gt;.  That file should set the desired value for &amp;lt;code&amp;gt;$string[&#039;auth_sentrytitle&#039;] for that language (use $string[&#039;pluginname&#039;] for Moodle2)&amp;lt;/code&amp;gt;.  You can also set the plugin description by setting &amp;lt;code&amp;gt;$string[&#039;auth_sentrydescription&#039;]&amp;lt;/code&amp;gt;, and you can also assign other translatable strings that your plugin uses, in these files.  &#039;&#039;&#039;Note:&#039;&#039;&#039; A folder named like &#039;&#039;&#039;en&#039;&#039;&#039; may not work for everyone. Please refer to the lang folder under your moodle installation directory to get an idea about the language/locale codes used in your moodle installation. For example, the lang folder in own users system contained folders named &#039;&#039;&#039;en&#039;&#039;&#039; and &#039;&#039;&#039;zh-cn&#039;&#039;&#039;. He emulated the same in the lang folder of the auth plugin and the plugin picked up the title and description strings immediately. ([[Places_to_search_for_lang_strings|More info on how Moodle handles language]]).&lt;br /&gt;
# If you want to configure your plugin through the Moodle UI, implement &amp;lt;tt&amp;gt;config_form()&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;process_config()&amp;lt;/tt&amp;gt; in the plugin class.  You might find it convenient to use the &#039;db&#039; plugin as a model for this.  The plugin&#039;s config settings can then be managed through the Manage authentication page by clicking on the Settings link for that plugin, and the values will be stored in the &amp;lt;tt&amp;gt;mdl_config_plugins&amp;lt;/tt&amp;gt; table in the database.&lt;br /&gt;
&lt;br /&gt;
==Interfacing to API&#039;s==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;authenticate_user_login()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
That&#039;s the main outline, but a lot of interesting stuff happens in &amp;lt;tt&amp;gt;authenticate_user_login()&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
# It gets a list of enabled authentication plugins.&lt;br /&gt;
# It looks up the username in the mdl_user table to see if they are allowed to log in, and which authentication plugin handles their login requests. (This will be the plugin that handled their first-ever login request.)&lt;br /&gt;
# It creates a user object, which will contain the data from &amp;lt;tt&amp;gt;mdl_user&amp;lt;/tt&amp;gt; if the username is known; if not, it will be an empty object.&lt;br /&gt;
# It does the following with the authentication plugin (note that for a username unknown to Moodle, it will do these steps for each authenticated plugin until one succeeds or it has tried them all):&lt;br /&gt;
## Calls the &amp;lt;tt&amp;gt;user_login()&amp;lt;/tt&amp;gt; function provided by that plugin, which returns a boolean value based on whether the credentials authenticate or not. If the result is false (not authenticated), skips the rest of the steps below and continues to the next plugin.&lt;br /&gt;
## If the plugin authenticates against an external system (not Moodle&#039;s user database), its &amp;lt;tt&amp;gt;update_user_record()&amp;lt;/tt&amp;gt; function is called to get the user&#039;s name, contact info, etc.&lt;br /&gt;
## Creates the Moodle user record if it doesn&#039;t already exist.&lt;br /&gt;
## Calls the plugin&#039;s &amp;lt;tt&amp;gt;sync_roles()&amp;lt;/tt&amp;gt; function.&lt;br /&gt;
## Notifies each enabled authentication plugin that the user successfully authenticated, by calling each one&#039;s &amp;lt;tt&amp;gt;user_authenticated_hook()&amp;lt;/tt&amp;gt; function.&lt;br /&gt;
# It returns the user object if everything was successful, or false if no plugin was able to successfully authenticate the credentials.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_login($username, $password)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
This must be rewritten by plugin to return boolean value, returns true if the username and password work and false if they are wrong or don&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;can_change_password()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns true if this authentication plugin can change users&#039; password.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : false&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;change_password_url()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns the URL for changing the users&#039; passwords, or empty if the default URL can be used.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;can_edit_profile()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns true if this authentication plugin can edit the users&#039; profile.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : true&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;edit_profile_url()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns the URL for editing users&#039; profile, or empty if the defaults URL can be used.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;is_internal()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns true if this authentication plugin is &amp;quot;internal&amp;quot;.  Internal plugins use password hashes from Moodle user table for authentication.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : true&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;prevent_local_passwords()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Indicates if password hashes should be stored in local moodle database.  This function automatically returns the opposite boolean of what is_internal() returns.  Returning true means MD5 password hashes will be stored in the user table.  Returning false means flag &#039;not_cached&#039; will be stored there instead.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : !$this-&amp;gt;is_internal()&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;is_synchronised_with_external()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Indicates if moodle should automatically update internal user records with data from external sources using the information from get_userinfo() method.  This function automatically returns the opposite boolean of what is_internal() returns.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : !$this-&amp;gt;is_internal()&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_update_password($user, $newpassword)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Update the user&#039;s password.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_update($olduser, $newuser)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Called when the user record is updated. It will modify the user information in external database.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_delete($olduser)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
User delete requested. Internal user record had been deleted.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;can_reset_password()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns true if plugin allows resetting of internal password.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : false&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;can_signup()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns true if plugin allows resetting of internal password.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : false&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_signup($user, $notify=true)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Sign up a new user ready for confirmation, password is passed in plaintext.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;can_confirm()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns true if plugin allows confirming of new users.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : false&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_confirm($username, $confirmsecret)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Confirm the new user as registered.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_exists($username)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Checks if user exists in external db.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;password_expire($username)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns number of days to user password expires.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;sync_roles()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Sync roles for this user - usually creator&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;get_userinfo($username)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Read user information from external database and returns it as array.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;config_form($config, $err, $user_fields)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Prints a form for configuring this authentication plugin. It&#039;s called from admin/auth.php, and outputs a full page with a form for configuring this plugin.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;validate_form($form, $err)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Validate form data.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;process_config($config)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Processes and stores configuration data for this authentication plugin.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;loginpage_hook()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Hook for overriding behaviour of login page.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;pre_loginpage_hook()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Hook for overriding behaviour of prior to redirecting to the login page, eg redirecting to an external login url for SAML or OpenID authentication. If you implement this you should also implement loginpage_hook as the user may go directly to the login page.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_authenticated_hook($user, $username, $password)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Post authentication hook. This method is called from authenticate_user_login() for all enabled auth plugins.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;prelogout_hook()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Pre logout hook.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;postlogout_hook()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
This method replace the prelogout_hook method to avoid authentication plugins redirects before the user logout event being triggered. &lt;br /&gt;
At the moment the only authentication plugin using this method is CAS (SSO).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;logoutpage_hook()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Hook for overriding behaviour of logout page.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;can_be_manually_set()&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
This function was introduced in the base class and returns false by default. If overriden by an authentication plugin to return true, the authentication plugin will be able to be manually set for users. For example, when bulk uploading users you will be able to select it as the authentication method they use.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Authentication API]]&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/discuss.php?d=102070 Overview of entire authentication code flow] forum discussion&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/view.php?id=42 User authentication forum]&lt;br /&gt;
* Moodle Docs [[:en:Manage authentication|Manage authentication]]&lt;br /&gt;
* [[:en:Authentication FAQ|Authentication FAQ]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Authentication]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fr:Méthodes_d&#039;authentification]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Authentication_plugins&amp;diff=48682</id>
		<title>Authentication plugins</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Authentication_plugins&amp;diff=48682"/>
		<updated>2015-10-06T07:34:28Z</updated>

		<summary type="html">&lt;p&gt;Lameze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
This page first gives an &#039;&#039;&#039;overview&#039;&#039;&#039; of the &#039;&#039;authentication process&#039;&#039; and then explains how &#039;&#039;authentication modules&#039;&#039; can be &#039;&#039;&#039;created&#039;&#039;&#039; using hooks to take over from the native authentication in Moodle.&lt;br /&gt;
=== Overview of Moodle authentication process ===&lt;br /&gt;
[[File:1.9.11_login_element.png|203px||thumb|right|The login UI element in Moodle 1.9]]The authentication use case in Moodle starts when a user clicks on the Login link in the UI or if they try to access a protected page. There are two broad classes of authentication plugins, the regular type where moodle handles the password and ones where the password is handled by a 3rd party page eg SAML, OpenID etc.&lt;br /&gt;
&lt;br /&gt;
For the regular plugins the following happens (skipping some minor details and rarer scenarios):&lt;br /&gt;
&lt;br /&gt;
# The default login page (&amp;lt;tt&amp;gt;/login/index.php&amp;lt;/tt&amp;gt;) is displayed. OR, if a system administrator has set the Alternate Login URL on the &amp;quot;Manage authentication&amp;quot; page, that URL will be displayed.&lt;br /&gt;
# A user enters their credentials and submits the form.&lt;br /&gt;
# The handler code in &amp;lt;tt&amp;gt;/login/index.php&amp;lt;/tt&amp;gt; runs:&lt;br /&gt;
## Gets a list of enabled authentication plugins.&lt;br /&gt;
## Runs &amp;lt;tt&amp;gt;loginpage_hook()&amp;lt;/tt&amp;gt; for each plugin, in case any of them needs to intercept the login request.&lt;br /&gt;
## Checks to make sure that the username meets Moodle&#039;s criteria (alphanumeric, with periods and hyphens allowed).&lt;br /&gt;
## Calls &amp;lt;tt&amp;gt;authenticate_user_login()&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;/lib/moodlelib.php&amp;lt;/tt&amp;gt;, which returns a &amp;lt;code&amp;gt;$user&amp;lt;/code&amp;gt; object. (Details of this code follow this main outline.)&lt;br /&gt;
## Determines whether authentication was successful (by checking whether &amp;lt;code&amp;gt;$user&amp;lt;/code&amp;gt; is a valid object) and, if not, sends them back to the login page with an error message. Otherwise, it figures out where to send the user based on their original page request, whether their password is expired, etc., and redirects them there.&lt;br /&gt;
&lt;br /&gt;
For the 3rd party auth plugins the process could look like this (eg CAS, SAML, OpenID etc):&lt;br /&gt;
# Access a protected page but isn&#039;t logged in, so moodle calls &amp;lt;tt&amp;gt;pre_loginpage_hook()&amp;lt;/tt&amp;gt; on each enabled plugin, which may redirect to the 3rd party login page&lt;br /&gt;
# Or if they go directly to the login page moodle calls &amp;lt;tt&amp;gt;loginpage_hook()&amp;lt;/tt&amp;gt; on each enabled plugin, which may redirect to the 3rd party login page&lt;br /&gt;
# The user enters their credentials and authenticates on the 3rd party page&lt;br /&gt;
# The remote authentication service redirects back to moodle with an assertion, such as a single use token or encrypted response in a query param&lt;br /&gt;
# The auth plugin now validates the token or decrypts the assertion, does any other checking as required and then logs the user in using &amp;lt;tt&amp;gt;complete_user_login($user)&amp;lt;/tt&amp;gt;. If this happens inside &amp;lt;tt&amp;gt;pre_loginpage_hook()&amp;lt;/tt&amp;gt; then the user continues on their way, or if inside &amp;lt;tt&amp;gt;loginpage_hook()&amp;lt;/tt&amp;gt; or another custom page then the plugin should redirect to the wantsurl.&lt;br /&gt;
&lt;br /&gt;
Note that in this scenario above &amp;lt;tt&amp;gt;user_login($username, $password)&amp;lt;/tt&amp;gt; is never called and should probably return false.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
Authentication plugins exist from 1.9&lt;br /&gt;
==Example==&lt;br /&gt;
[http://moodle.org/plugins/view.php?plugin=auth_googleoauth2 Google / Facebook / Messenger Oauth2 Authentication plugin]&lt;br /&gt;
&lt;br /&gt;
==Template==&lt;br /&gt;
Please see Moodle &#039;&#039;&#039;none&#039;&#039;&#039; authentication plugin (auth/none), it&#039;s the perfect plugin template to start with.&lt;br /&gt;
&lt;br /&gt;
==Naming convention==&lt;br /&gt;
==File structure==&lt;br /&gt;
# Choose a name for your plugin.  We&#039;ll use &#039;sentry&#039; as an example below; change it to whatever name you have chosen.&lt;br /&gt;
# Under your Moodle installation root, create the directory &amp;lt;tt&amp;gt;/auth/sentry&amp;lt;/tt&amp;gt;.  It should be sibling to existing auth plugin directories: &#039;db&#039;, &#039;nologin&#039;, &#039;none&#039;, etc.&lt;br /&gt;
# Create the file &amp;lt;tt&amp;gt;/auth/sentry/auth.php&amp;lt;/tt&amp;gt;.  Within the file, create a class &amp;lt;tt&amp;gt;auth_plugin_sentry&amp;lt;/tt&amp;gt; that extends &amp;lt;tt&amp;gt;auth_plugin_base&amp;lt;/tt&amp;gt; from &amp;lt;tt&amp;gt;/lib/authlib.php&amp;lt;/tt&amp;gt;.  (You will need to &amp;lt;code&amp;gt;require_once&amp;lt;/code&amp;gt; the authlib file.)&lt;br /&gt;
# Implement the &amp;lt;tt&amp;gt;user_login()&amp;lt;/tt&amp;gt; function in your &amp;lt;tt&amp;gt;auth.php&amp;lt;/tt&amp;gt; file, and create or override additional functions based on your plugin&#039;s requirements.&lt;br /&gt;
# Log in to your Moodle installation as a site administrator and find, in the site administrator block, the page &amp;quot;Users -&amp;gt; Authentication -&amp;gt; Manage authentication&amp;quot;.  You will see your plugin in the list, appearing as &amp;lt;nowiki&amp;gt;[[auth_sentrytitle]]&amp;lt;/nowiki&amp;gt;.  You can enable it and move it up and down in the order.  &#039;&#039;&#039;At this point, with the plugin enabled, your plugin is registered and will be used by Moodle in its authentication process.&#039;&#039;&#039;&lt;br /&gt;
# If you don&#039;t like seeing &amp;lt;nowiki&amp;gt;[[auth_sentrytitle]]&amp;lt;/nowiki&amp;gt; as the name of your plugin in the Moodle UI, you&#039;ll need to create language files for your plugin.  Do this by creating the directory &amp;lt;tt&amp;gt;/auth/sentry/lang&amp;lt;/tt&amp;gt;, and under it, a directory for each language that your installation needs to support.  (Example: &amp;lt;tt&amp;gt;/auth/sentry/lang/en&amp;lt;/tt&amp;gt;.)  Within each of these language directories, create a file called &amp;lt;tt&amp;gt;auth_sentry.php&amp;lt;/tt&amp;gt;.  That file should set the desired value for &amp;lt;code&amp;gt;$string[&#039;auth_sentrytitle&#039;] for that language (use $string[&#039;pluginname&#039;] for Moodle2)&amp;lt;/code&amp;gt;.  You can also set the plugin description by setting &amp;lt;code&amp;gt;$string[&#039;auth_sentrydescription&#039;]&amp;lt;/code&amp;gt;, and you can also assign other translatable strings that your plugin uses, in these files.  &#039;&#039;&#039;Note:&#039;&#039;&#039; A folder named like &#039;&#039;&#039;en&#039;&#039;&#039; may not work for everyone. Please refer to the lang folder under your moodle installation directory to get an idea about the language/locale codes used in your moodle installation. For example, the lang folder in own users system contained folders named &#039;&#039;&#039;en&#039;&#039;&#039; and &#039;&#039;&#039;zh-cn&#039;&#039;&#039;. He emulated the same in the lang folder of the auth plugin and the plugin picked up the title and description strings immediately. ([[Places_to_search_for_lang_strings|More info on how Moodle handles language]]).&lt;br /&gt;
# If you want to configure your plugin through the Moodle UI, implement &amp;lt;tt&amp;gt;config_form()&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;process_config()&amp;lt;/tt&amp;gt; in the plugin class.  You might find it convenient to use the &#039;db&#039; plugin as a model for this.  The plugin&#039;s config settings can then be managed through the Manage authentication page by clicking on the Settings link for that plugin, and the values will be stored in the &amp;lt;tt&amp;gt;mdl_config_plugins&amp;lt;/tt&amp;gt; table in the database.&lt;br /&gt;
&lt;br /&gt;
==Interfacing to API&#039;s==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;authenticate_user_login()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
That&#039;s the main outline, but a lot of interesting stuff happens in &amp;lt;tt&amp;gt;authenticate_user_login()&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
# It gets a list of enabled authentication plugins.&lt;br /&gt;
# It looks up the username in the mdl_user table to see if they are allowed to log in, and which authentication plugin handles their login requests. (This will be the plugin that handled their first-ever login request.)&lt;br /&gt;
# It creates a user object, which will contain the data from &amp;lt;tt&amp;gt;mdl_user&amp;lt;/tt&amp;gt; if the username is known; if not, it will be an empty object.&lt;br /&gt;
# It does the following with the authentication plugin (note that for a username unknown to Moodle, it will do these steps for each authenticated plugin until one succeeds or it has tried them all):&lt;br /&gt;
## Calls the &amp;lt;tt&amp;gt;user_login()&amp;lt;/tt&amp;gt; function provided by that plugin, which returns a boolean value based on whether the credentials authenticate or not. If the result is false (not authenticated), skips the rest of the steps below and continues to the next plugin.&lt;br /&gt;
## If the plugin authenticates against an external system (not Moodle&#039;s user database), its &amp;lt;tt&amp;gt;update_user_record()&amp;lt;/tt&amp;gt; function is called to get the user&#039;s name, contact info, etc.&lt;br /&gt;
## Creates the Moodle user record if it doesn&#039;t already exist.&lt;br /&gt;
## Calls the plugin&#039;s &amp;lt;tt&amp;gt;sync_roles()&amp;lt;/tt&amp;gt; function.&lt;br /&gt;
## Notifies each enabled authentication plugin that the user successfully authenticated, by calling each one&#039;s &amp;lt;tt&amp;gt;user_authenticated_hook()&amp;lt;/tt&amp;gt; function.&lt;br /&gt;
# It returns the user object if everything was successful, or false if no plugin was able to successfully authenticate the credentials.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_login($username, $password)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
This must be rewritten by plugin to return boolean value, returns true if the username and password work and false if they are wrong or don&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;can_change_password()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns true if this authentication plugin can change users&#039; password.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : false&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;change_password_url()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns the URL for changing the users&#039; passwords, or empty if the default URL can be used.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;can_edit_profile()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns true if this authentication plugin can edit the users&#039; profile.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : true&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;edit_profile_url()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns the URL for editing users&#039; profile, or empty if the defaults URL can be used.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;is_internal()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns true if this authentication plugin is &amp;quot;internal&amp;quot;.  Internal plugins use password hashes from Moodle user table for authentication.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : true&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;prevent_local_passwords()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Indicates if password hashes should be stored in local moodle database.  This function automatically returns the opposite boolean of what is_internal() returns.  Returning true means MD5 password hashes will be stored in the user table.  Returning false means flag &#039;not_cached&#039; will be stored there instead.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : !$this-&amp;gt;is_internal()&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;is_synchronised_with_external()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Indicates if moodle should automatically update internal user records with data from external sources using the information from get_userinfo() method.  This function automatically returns the opposite boolean of what is_internal() returns.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : !$this-&amp;gt;is_internal()&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_update_password($user, $newpassword)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Update the user&#039;s password.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_update($olduser, $newuser)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Called when the user record is updated. It will modify the user information in external database.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_delete($olduser)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
User delete requested. Internal user record had been deleted.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;can_reset_password()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns true if plugin allows resetting of internal password.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : false&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;can_signup()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns true if plugin allows resetting of internal password.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : false&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_signup($user, $notify=true)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Sign up a new user ready for confirmation, password is passed in plaintext.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;can_confirm()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns true if plugin allows confirming of new users.&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Return type&#039;&#039;&#039; : boolean&lt;br /&gt;
; &#039;&#039;&#039;Default return value&#039;&#039;&#039; : false&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_confirm($username, $confirmsecret)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Confirm the new user as registered.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_exists($username)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Checks if user exists in external db.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;password_expire($username)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Returns number of days to user password expires.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;sync_roles()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Sync roles for this user - usually creator&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;get_userinfo($username)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Read user information from external database and returns it as array.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;config_form($config, $err, $user_fields)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Prints a form for configuring this authentication plugin. It&#039;s called from admin/auth.php, and outputs a full page with a form for configuring this plugin.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;validate_form($form, $err)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Validate form data.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;process_config($config)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Processes and stores configuration data for this authentication plugin.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;loginpage_hook()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Hook for overriding behaviour of login page.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;pre_loginpage_hook()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Hook for overriding behaviour of prior to redirecting to the login page, eg redirecting to an external login url for SAML or OpenID authentication. If you implement this you should also implement loginpage_hook as the user may go directly to the login page.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;user_authenticated_hook($user, $username, $password)&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Post authentication hook. This method is called from authenticate_user_login() for all enabled auth plugins.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;prelogout_hook()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Pre logout hook.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;postlogout_hook()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
This replace the prelogout_hook method to avoid authentication plugins redirects before the event userlogout being triggered. &lt;br /&gt;
At the moment the only authentication plugin using this method is CAS (SSO).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;logoutpage_hook()&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Hook for overriding behaviour of logout page.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;can_be_manually_set()&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
This function was introduced in the base class and returns false by default. If overriden by an authentication plugin to return true, the authentication plugin will be able to be manually set for users. For example, when bulk uploading users you will be able to select it as the authentication method they use.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Authentication API]]&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/discuss.php?d=102070 Overview of entire authentication code flow] forum discussion&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/view.php?id=42 User authentication forum]&lt;br /&gt;
* Moodle Docs [[:en:Manage authentication|Manage authentication]]&lt;br /&gt;
* [[:en:Authentication FAQ|Authentication FAQ]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Authentication]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fr:Méthodes_d&#039;authentification]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Developer_meeting_July_2015&amp;diff=48302</id>
		<title>Developer meeting July 2015</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Developer_meeting_July_2015&amp;diff=48302"/>
		<updated>2015-07-20T01:36:11Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* Agenda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Developer meetings]] &amp;gt; July 2015 meeting notes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Time&lt;br /&gt;
| [http://www.timeanddate.com/worldclock/fixedtime.html?year=2015&amp;amp;month=7&amp;amp;day=21&amp;amp;hour=07&amp;amp;min=0&amp;amp;sec=0 07:00 UTC on Tuesday, 21 July 2015] [http://www.google.com/calendar/event?action=TEMPLATE&amp;amp;text=Moodle+General+developer+meeting&amp;amp;dates=20150721T070000Z/20150721T090000Z&amp;amp;details=&amp;amp;location= &amp;lt;span class=&amp;quot;btn btn-info&amp;quot;&amp;gt;Add to my calendar&amp;lt;/span&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
| Meeting room&lt;br /&gt;
| [https://www.youtube.com/watch?v=pgPBohzErr4 Live stream at YouTube]&lt;br /&gt;
|-&lt;br /&gt;
| Forum discussion&lt;br /&gt;
| [https://moodle.org/mod/forum/discuss.php?d=316807 Thread in GDF at moodle.org]&lt;br /&gt;
|-&lt;br /&gt;
| Chat&lt;br /&gt;
| [https://moodle.org/local/chatlogs/info.php Regular dev chat]&lt;br /&gt;
|-&lt;br /&gt;
| Twitter&lt;br /&gt;
| [https://twitter.com/search?q=%23moodledev #moodledev]&lt;br /&gt;
|-&lt;br /&gt;
| Social event page&lt;br /&gt;
| [https://plus.google.com/events/c63rl8n5jdjldr9slcd1tdcqmg0 Google+ page]&lt;br /&gt;
|-&lt;br /&gt;
| Meeting notes&lt;br /&gt;
| [https://devpad.moodle.org/p/gdm150721 devpad]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
* Moodle Mobile 2 - Juan Leyva&lt;br /&gt;
* Summary report of the recent Moodle hackfests (Dublin, Melbourne) - David Mudrák, Andrew Nicols&lt;br /&gt;
* Moodle Association and how it is supposed to affect the Moodle development in the future - Martin Dougiamas&lt;br /&gt;
* Moodle HQ&#039;s personal projects week products - HQ devs&lt;br /&gt;
** Improved East Asian support (ruby tags in Atto and in fullname()) - Jetha Chan&lt;br /&gt;
** mod_lesson improved lesson creation tool - Adrian Greeve&lt;br /&gt;
** Events Graphic Reports plugin - Simey Lameze&lt;br /&gt;
* Work in progress on Learning plans and outcomes project for Moodle 3.0 - Damyon (to be confirmed)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Please feel encouraged to raise topics you would like to present / discuss during the meeting. Contact [https://moodle.org/user/profile.php?id=1601 David Mudrák] for details.&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Gradebook_export&amp;diff=47807</id>
		<title>Gradebook export</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Gradebook_export&amp;diff=47807"/>
		<updated>2015-05-06T07:10:24Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* /grade/export/[newexport]/index.php */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This document is for developers wanting to allow users to export Moodle grade information in a new export format. Here is another document if you are looking for [https://docs.moodle.org/en/Grade_export an introduction to exporting grades from Moodle]&lt;br /&gt;
&lt;br /&gt;
Moodle allows authorised users to export grade information. This can be used to to provide a teacher with a copy of their gradebook at a particular point in time or to extract student assessment data from Moodle so that it can be loaded into a piece of software other than Moodle.&lt;br /&gt;
&lt;br /&gt;
Since 1.9 the Moodle gradebook has provided support for the addition of plug-in export modules to allow Moodle to export grade information in new or custom formats. Moodle includes several default gradebook export modules that produce formats like Excel or CSV that will work in most situations.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement a custom gradebook export plug-in in case you need gradebook data in a format that is not available using the provided export modules.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
The gradebook export modules are located in the &#039;&#039;&#039;grade/export&#039;&#039;&#039; directory.  To create a new gradebook export, complete the steps listed below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: For the remainder of this topic when you see [newexport], replace it with the short name you have choosen for your export, do not include the [].  Moodle comes with the following exports: ods, txt, xls, and xml so you cannot use those names.&lt;br /&gt;
&lt;br /&gt;
== New Gradebook Export Module Creation Steps ==&lt;br /&gt;
&lt;br /&gt;
* Decide on a short name for this new export.  This name will be referred to as [newexport] the remainder of this topic.&lt;br /&gt;
* Create a new directory in Moodle&#039;s grade/export directory for your files.&lt;br /&gt;
* Review the export formats that ship with Moodle and choose the export format most like the one you wish to develop.  Refer to that export&#039;s files as needed.&lt;br /&gt;
* Copy the files from the export format you selected into your newly created directory of grade/export/[newexport]&lt;br /&gt;
* Alter each of the files listed below so they produce the data you desire.&lt;br /&gt;
* Click on Notifications in the Site Administration menu to go through the upgrade process and set up the permissions for your export format.&lt;br /&gt;
* Test, test, test - until your export performs properly.&lt;br /&gt;
&lt;br /&gt;
=== Files That Need Special Attention ===&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/db/access.php ====&lt;br /&gt;
&lt;br /&gt;
The access.php file makes your gradebook export available to teachers and allows the security administrator to decide who can and cannot access this export module.  See the &amp;quot;View role details&amp;quot; page in Site Administration &amp;gt; Users &amp;gt; Permissions &amp;gt; Define roles for more details.&lt;br /&gt;
&lt;br /&gt;
For your export to have the same set of permissions as the other exports, change the lines listed below replacing the old export format name with [newexport].&lt;br /&gt;
 &lt;br /&gt;
         &#039;gradeexport/[newexport]:view&#039; =&amp;gt; array(&lt;br /&gt;
 &lt;br /&gt;
         &#039;gradeexport/[newexport]:publish&#039; =&amp;gt; array(&lt;br /&gt;
&lt;br /&gt;
The new security role entries will be available after an upgrade has been completed (click the Notifications link in Site Administration).  This should not be done until you have worked through each of the files listed in this section.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: The gradeexport_[newexport].php file in the lang directory works with the :view and :publish settings to provide a description.  See the information about that file for more details.&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/dump.php ====&lt;br /&gt;
&lt;br /&gt;
The only change needed in this file is the following capability checks:&lt;br /&gt;
&lt;br /&gt;
   require_capability(&#039;gradeexport/[newexport]:publish&#039;, $context);&lt;br /&gt;
   require_capability(&#039;gradeexport/[newexport]:view&#039;, $context);&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/export.php ====&lt;br /&gt;
&lt;br /&gt;
The following lines need to be changed to reflect your new export&#039;s name.&lt;br /&gt;
&lt;br /&gt;
   require_once &#039;grade_export_[newexport].php&#039;;&lt;br /&gt;
   require_capability(&#039;gradeexport/[newexport]:view&#039;, $context);&lt;br /&gt;
   $export = new grade_export_[newexport]($course, $groupid, $itemids, $export_feedback, $updatedgradesonly, $displaytype, $decimalpoints, $separator);&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/grade_export_[newexport].php ====&lt;br /&gt;
&lt;br /&gt;
The following lines need to be changed to reflect your new export&#039;s name.&lt;br /&gt;
&lt;br /&gt;
   class grade_export_[newexport] extends grade_export {&lt;br /&gt;
   var $plugin = &#039;[newexport]&#039;;&lt;br /&gt;
   function grade_export_[newexport]($course, $groupid=0, $itemlist=&#039;&#039;, ...&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/index.php ====&lt;br /&gt;
&lt;br /&gt;
The following lines need to be changed to reflect your new export&#039;s name.&lt;br /&gt;
&lt;br /&gt;
   require_once &#039;grade_export_[newexport].php&#039;;&lt;br /&gt;
   require_capability(&#039;gradeexport/[newexport]:view&#039;, $context);&lt;br /&gt;
   print_grade_page_head($COURSE-&amp;gt;id, &#039;export&#039;, &#039;[newexport]&#039;, get_string(&#039;exportto&#039;, &#039;grades&#039;) . &#039; &#039; . get_string(&#039;modulename&#039;, &#039;gradeexport_[newexport]&#039;));&lt;br /&gt;
   $CFG-&amp;gt;gradepublishing = has_capability(&#039;gradeexport/[newexport]:publish&#039;, $context);&lt;br /&gt;
   $export = new grade_export_[newexport]($course, $currentgroup, &#039;&#039;, false, false, $data-&amp;gt;display, $data-&amp;gt;decimals);&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/version.php ====&lt;br /&gt;
&lt;br /&gt;
Use the current dates for your export module.  If any adjustments are made to your security or if any database changes are needed (see the db/access.php file above) the version will need to be incremented and an upgrade will be performed (loggin in as admin clicking the Notifications link on the Site Administration causes Moodle to check if an upgrade is necessary).&lt;br /&gt;
&lt;br /&gt;
Your version.php will look something like this ...&lt;br /&gt;
&lt;br /&gt;
     $plugin-&amp;gt;version  = 2007092700;&lt;br /&gt;
     $plugin-&amp;gt;requires = 2007101000;&lt;br /&gt;
&lt;br /&gt;
==== /lang/en_utf8/gradeexport_[newexport].php  ====&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Replace en_utf8 with your language directory if using multiple languages or a language other than English.  Copy one of the existing files (i.e. gradeexport_txt.php) to create your new gradebook export language file.&lt;br /&gt;
&lt;br /&gt;
When you first create your gradebook export directory and look in the Action menu of the Moodle gradebook, your new export module will be listed as &amp;lt;nowiki&amp;gt;[[modulename]]&amp;lt;/nowiki&amp;gt;.  The &#039;&#039;&#039;modulename&#039;&#039;&#039; string in this file will provide the Action menu with the name specified. &lt;br /&gt;
&lt;br /&gt;
The :view and the :publish strings are used to display a meaningful description on the security roles for users.  These two descriptions work in conjunction with the db/access.php file.  See the information about the db/access.php file for more details.&lt;br /&gt;
&lt;br /&gt;
The gradeexport_txt.php (Plain text file export) is shown below without the PHP tags.  Change &amp;quot;Plain text file&amp;quot; to the name of the new export and replace &amp;quot;txt&amp;quot; with the [newexport] value.  Change the comments after the &amp;quot;:view&amp;quot; and &amp;quot;:publish&amp;quot; to descriptions that should appear on the role details page for your new export.&lt;br /&gt;
&lt;br /&gt;
     $string[&#039;modulename&#039;] = &#039;Plain text file&#039;;&lt;br /&gt;
     $string[&#039;txt:view&#039;] = &#039;Use text grade export&#039;;&lt;br /&gt;
     $string[&#039;txt:publish&#039;] = &#039;Publish TXT grade export&#039;;&lt;br /&gt;
&lt;br /&gt;
To better illustrate, if your module had a short name of &amp;quot;sis&amp;quot; and a description of &amp;quot;My Student Info System&amp;quot;, then this file would like something like the following ...&lt;br /&gt;
&lt;br /&gt;
     $string[&#039;modulename&#039;] = &#039;My Student Info System&#039;;&lt;br /&gt;
     $string[&#039;sis:view&#039;] = &#039;Use My SIS grade export&#039;;&lt;br /&gt;
     $string[&#039;sis:publish&#039;] = &#039;Publish SIS grade export&#039;;&lt;br /&gt;
&lt;br /&gt;
=== A Safety Check For References to the Original Export Module ===&lt;br /&gt;
To make sure no references to the original export format have been missed you can use grep (in Linux) or an equivalent command in Windows or Mac. For example, if you copied &amp;quot;txt&amp;quot; when creating your export module you could use a command similar to the following.&lt;br /&gt;
&lt;br /&gt;
     grep -R &amp;quot;txt&amp;quot; ./grade/export/[newexport]/&lt;br /&gt;
&lt;br /&gt;
=== Customizing Your Export Module ===&lt;br /&gt;
&lt;br /&gt;
At this point your export is in its own directory, has its own security identifiers, and has its own name but it behaves just like the export you copied from.  In this section we will look at how to customize the behavior of your export.&lt;br /&gt;
&lt;br /&gt;
==== Changing the Grade Export Form Options ====&lt;br /&gt;
&lt;br /&gt;
The grade export form (used to select options when exporting) can be altered by opening the grade/export/[newexport]/index.php file and finding the line similar to the one shown below:&lt;br /&gt;
&lt;br /&gt;
   $mform = new grade_export_form(null, array(&#039;includeseparator&#039;=&amp;gt;true, &#039;publishing&#039; =&amp;gt; true));&lt;br /&gt;
&lt;br /&gt;
The part of that statement starting with &#039;&#039;&#039;array(&#039;&#039;&#039; can be altered to pass feature parameters into the grade_export_form class.  Refer to the file grade/export/grade_export_form.php for the details of the available feature parameters and how they affect the grade export form.  The grade_export_form.php file should not be altered as it is part of the Moodle core code and will affect the other exports as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Changing the Format and Fields in the Export File ====&lt;br /&gt;
&lt;br /&gt;
To change the format of the export file and the fields in the export file, edit the grade/export/[newexport]/grade_export_[newexport].php file.  The echo statements in the print_grades() function determine what will be included in the export file.  Make whatever adjustments to the echo statements in this function that your new export needs.&lt;br /&gt;
&lt;br /&gt;
The [[Grades]] documentation referenced in the See Also section below will help in understanding the gradebook and what values are available for use in your export.  The variables can also be dumped to see their structure and contents.&lt;br /&gt;
&lt;br /&gt;
For example, the following two statements will show you what is in the $userdata-&amp;gt;grades and $this-&amp;gt;columns structures.  If you include these statements in the print_grades() function then you will see the results in your export file.&lt;br /&gt;
&lt;br /&gt;
   var_dump($userdata-&amp;gt;grades);&lt;br /&gt;
   var_dump($this-&amp;gt;columns);&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Grades]]&lt;br /&gt;
* [[Gradebook_import]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Grades]]&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Gradebook_export&amp;diff=47806</id>
		<title>Gradebook export</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Gradebook_export&amp;diff=47806"/>
		<updated>2015-05-06T07:09:58Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* /grade/export/[newexport]/grade_export_[newexport].php */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This document is for developers wanting to allow users to export Moodle grade information in a new export format. Here is another document if you are looking for [https://docs.moodle.org/en/Grade_export an introduction to exporting grades from Moodle]&lt;br /&gt;
&lt;br /&gt;
Moodle allows authorised users to export grade information. This can be used to to provide a teacher with a copy of their gradebook at a particular point in time or to extract student assessment data from Moodle so that it can be loaded into a piece of software other than Moodle.&lt;br /&gt;
&lt;br /&gt;
Since 1.9 the Moodle gradebook has provided support for the addition of plug-in export modules to allow Moodle to export grade information in new or custom formats. Moodle includes several default gradebook export modules that produce formats like Excel or CSV that will work in most situations.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement a custom gradebook export plug-in in case you need gradebook data in a format that is not available using the provided export modules.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
The gradebook export modules are located in the &#039;&#039;&#039;grade/export&#039;&#039;&#039; directory.  To create a new gradebook export, complete the steps listed below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: For the remainder of this topic when you see [newexport], replace it with the short name you have choosen for your export, do not include the [].  Moodle comes with the following exports: ods, txt, xls, and xml so you cannot use those names.&lt;br /&gt;
&lt;br /&gt;
== New Gradebook Export Module Creation Steps ==&lt;br /&gt;
&lt;br /&gt;
* Decide on a short name for this new export.  This name will be referred to as [newexport] the remainder of this topic.&lt;br /&gt;
* Create a new directory in Moodle&#039;s grade/export directory for your files.&lt;br /&gt;
* Review the export formats that ship with Moodle and choose the export format most like the one you wish to develop.  Refer to that export&#039;s files as needed.&lt;br /&gt;
* Copy the files from the export format you selected into your newly created directory of grade/export/[newexport]&lt;br /&gt;
* Alter each of the files listed below so they produce the data you desire.&lt;br /&gt;
* Click on Notifications in the Site Administration menu to go through the upgrade process and set up the permissions for your export format.&lt;br /&gt;
* Test, test, test - until your export performs properly.&lt;br /&gt;
&lt;br /&gt;
=== Files That Need Special Attention ===&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/db/access.php ====&lt;br /&gt;
&lt;br /&gt;
The access.php file makes your gradebook export available to teachers and allows the security administrator to decide who can and cannot access this export module.  See the &amp;quot;View role details&amp;quot; page in Site Administration &amp;gt; Users &amp;gt; Permissions &amp;gt; Define roles for more details.&lt;br /&gt;
&lt;br /&gt;
For your export to have the same set of permissions as the other exports, change the lines listed below replacing the old export format name with [newexport].&lt;br /&gt;
 &lt;br /&gt;
         &#039;gradeexport/[newexport]:view&#039; =&amp;gt; array(&lt;br /&gt;
 &lt;br /&gt;
         &#039;gradeexport/[newexport]:publish&#039; =&amp;gt; array(&lt;br /&gt;
&lt;br /&gt;
The new security role entries will be available after an upgrade has been completed (click the Notifications link in Site Administration).  This should not be done until you have worked through each of the files listed in this section.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: The gradeexport_[newexport].php file in the lang directory works with the :view and :publish settings to provide a description.  See the information about that file for more details.&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/dump.php ====&lt;br /&gt;
&lt;br /&gt;
The only change needed in this file is the following capability checks:&lt;br /&gt;
&lt;br /&gt;
   require_capability(&#039;gradeexport/[newexport]:publish&#039;, $context);&lt;br /&gt;
   require_capability(&#039;gradeexport/[newexport]:view&#039;, $context);&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/export.php ====&lt;br /&gt;
&lt;br /&gt;
The following lines need to be changed to reflect your new export&#039;s name.&lt;br /&gt;
&lt;br /&gt;
   require_once &#039;grade_export_[newexport].php&#039;;&lt;br /&gt;
   require_capability(&#039;gradeexport/[newexport]:view&#039;, $context);&lt;br /&gt;
   $export = new grade_export_[newexport]($course, $groupid, $itemids, $export_feedback, $updatedgradesonly, $displaytype, $decimalpoints, $separator);&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/grade_export_[newexport].php ====&lt;br /&gt;
&lt;br /&gt;
The following lines need to be changed to reflect your new export&#039;s name.&lt;br /&gt;
&lt;br /&gt;
   class grade_export_[newexport] extends grade_export {&lt;br /&gt;
   var $plugin = &#039;[newexport]&#039;;&lt;br /&gt;
   function grade_export_[newexport]($course, $groupid=0, $itemlist=&#039;&#039;, ...&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/index.php ====&lt;br /&gt;
&lt;br /&gt;
The following lines need to be changed to reflect your new export&#039;s name.&lt;br /&gt;
&lt;br /&gt;
   require_once &#039;grade_export_[newexport].php&#039;;&lt;br /&gt;
&lt;br /&gt;
   require_capability(&#039;gradeexport/[newexport]:view&#039;, $context);&lt;br /&gt;
&lt;br /&gt;
   print_grade_page_head($COURSE-&amp;gt;id, &#039;export&#039;, &#039;[newexport]&#039;, get_string(&#039;exportto&#039;, &#039;grades&#039;) . &#039; &#039; . get_string(&#039;modulename&#039;, &#039;gradeexport_[newexport]&#039;));&lt;br /&gt;
&lt;br /&gt;
   $CFG-&amp;gt;gradepublishing = has_capability(&#039;gradeexport/[newexport]:publish&#039;, $context);&lt;br /&gt;
&lt;br /&gt;
   $export = new grade_export_[newexport]($course, $currentgroup, &#039;&#039;, false, false, $data-&amp;gt;display, $data-&amp;gt;decimals);&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/version.php ====&lt;br /&gt;
&lt;br /&gt;
Use the current dates for your export module.  If any adjustments are made to your security or if any database changes are needed (see the db/access.php file above) the version will need to be incremented and an upgrade will be performed (loggin in as admin clicking the Notifications link on the Site Administration causes Moodle to check if an upgrade is necessary).&lt;br /&gt;
&lt;br /&gt;
Your version.php will look something like this ...&lt;br /&gt;
&lt;br /&gt;
     $plugin-&amp;gt;version  = 2007092700;&lt;br /&gt;
     $plugin-&amp;gt;requires = 2007101000;&lt;br /&gt;
&lt;br /&gt;
==== /lang/en_utf8/gradeexport_[newexport].php  ====&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Replace en_utf8 with your language directory if using multiple languages or a language other than English.  Copy one of the existing files (i.e. gradeexport_txt.php) to create your new gradebook export language file.&lt;br /&gt;
&lt;br /&gt;
When you first create your gradebook export directory and look in the Action menu of the Moodle gradebook, your new export module will be listed as &amp;lt;nowiki&amp;gt;[[modulename]]&amp;lt;/nowiki&amp;gt;.  The &#039;&#039;&#039;modulename&#039;&#039;&#039; string in this file will provide the Action menu with the name specified. &lt;br /&gt;
&lt;br /&gt;
The :view and the :publish strings are used to display a meaningful description on the security roles for users.  These two descriptions work in conjunction with the db/access.php file.  See the information about the db/access.php file for more details.&lt;br /&gt;
&lt;br /&gt;
The gradeexport_txt.php (Plain text file export) is shown below without the PHP tags.  Change &amp;quot;Plain text file&amp;quot; to the name of the new export and replace &amp;quot;txt&amp;quot; with the [newexport] value.  Change the comments after the &amp;quot;:view&amp;quot; and &amp;quot;:publish&amp;quot; to descriptions that should appear on the role details page for your new export.&lt;br /&gt;
&lt;br /&gt;
     $string[&#039;modulename&#039;] = &#039;Plain text file&#039;;&lt;br /&gt;
     $string[&#039;txt:view&#039;] = &#039;Use text grade export&#039;;&lt;br /&gt;
     $string[&#039;txt:publish&#039;] = &#039;Publish TXT grade export&#039;;&lt;br /&gt;
&lt;br /&gt;
To better illustrate, if your module had a short name of &amp;quot;sis&amp;quot; and a description of &amp;quot;My Student Info System&amp;quot;, then this file would like something like the following ...&lt;br /&gt;
&lt;br /&gt;
     $string[&#039;modulename&#039;] = &#039;My Student Info System&#039;;&lt;br /&gt;
     $string[&#039;sis:view&#039;] = &#039;Use My SIS grade export&#039;;&lt;br /&gt;
     $string[&#039;sis:publish&#039;] = &#039;Publish SIS grade export&#039;;&lt;br /&gt;
&lt;br /&gt;
=== A Safety Check For References to the Original Export Module ===&lt;br /&gt;
To make sure no references to the original export format have been missed you can use grep (in Linux) or an equivalent command in Windows or Mac. For example, if you copied &amp;quot;txt&amp;quot; when creating your export module you could use a command similar to the following.&lt;br /&gt;
&lt;br /&gt;
     grep -R &amp;quot;txt&amp;quot; ./grade/export/[newexport]/&lt;br /&gt;
&lt;br /&gt;
=== Customizing Your Export Module ===&lt;br /&gt;
&lt;br /&gt;
At this point your export is in its own directory, has its own security identifiers, and has its own name but it behaves just like the export you copied from.  In this section we will look at how to customize the behavior of your export.&lt;br /&gt;
&lt;br /&gt;
==== Changing the Grade Export Form Options ====&lt;br /&gt;
&lt;br /&gt;
The grade export form (used to select options when exporting) can be altered by opening the grade/export/[newexport]/index.php file and finding the line similar to the one shown below:&lt;br /&gt;
&lt;br /&gt;
   $mform = new grade_export_form(null, array(&#039;includeseparator&#039;=&amp;gt;true, &#039;publishing&#039; =&amp;gt; true));&lt;br /&gt;
&lt;br /&gt;
The part of that statement starting with &#039;&#039;&#039;array(&#039;&#039;&#039; can be altered to pass feature parameters into the grade_export_form class.  Refer to the file grade/export/grade_export_form.php for the details of the available feature parameters and how they affect the grade export form.  The grade_export_form.php file should not be altered as it is part of the Moodle core code and will affect the other exports as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Changing the Format and Fields in the Export File ====&lt;br /&gt;
&lt;br /&gt;
To change the format of the export file and the fields in the export file, edit the grade/export/[newexport]/grade_export_[newexport].php file.  The echo statements in the print_grades() function determine what will be included in the export file.  Make whatever adjustments to the echo statements in this function that your new export needs.&lt;br /&gt;
&lt;br /&gt;
The [[Grades]] documentation referenced in the See Also section below will help in understanding the gradebook and what values are available for use in your export.  The variables can also be dumped to see their structure and contents.&lt;br /&gt;
&lt;br /&gt;
For example, the following two statements will show you what is in the $userdata-&amp;gt;grades and $this-&amp;gt;columns structures.  If you include these statements in the print_grades() function then you will see the results in your export file.&lt;br /&gt;
&lt;br /&gt;
   var_dump($userdata-&amp;gt;grades);&lt;br /&gt;
   var_dump($this-&amp;gt;columns);&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Grades]]&lt;br /&gt;
* [[Gradebook_import]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Grades]]&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Gradebook_export&amp;diff=47805</id>
		<title>Gradebook export</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Gradebook_export&amp;diff=47805"/>
		<updated>2015-05-06T07:09:39Z</updated>

		<summary type="html">&lt;p&gt;Lameze: /* /grade/export/[newexport]/export.php */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This document is for developers wanting to allow users to export Moodle grade information in a new export format. Here is another document if you are looking for [https://docs.moodle.org/en/Grade_export an introduction to exporting grades from Moodle]&lt;br /&gt;
&lt;br /&gt;
Moodle allows authorised users to export grade information. This can be used to to provide a teacher with a copy of their gradebook at a particular point in time or to extract student assessment data from Moodle so that it can be loaded into a piece of software other than Moodle.&lt;br /&gt;
&lt;br /&gt;
Since 1.9 the Moodle gradebook has provided support for the addition of plug-in export modules to allow Moodle to export grade information in new or custom formats. Moodle includes several default gradebook export modules that produce formats like Excel or CSV that will work in most situations.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement a custom gradebook export plug-in in case you need gradebook data in a format that is not available using the provided export modules.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
The gradebook export modules are located in the &#039;&#039;&#039;grade/export&#039;&#039;&#039; directory.  To create a new gradebook export, complete the steps listed below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: For the remainder of this topic when you see [newexport], replace it with the short name you have choosen for your export, do not include the [].  Moodle comes with the following exports: ods, txt, xls, and xml so you cannot use those names.&lt;br /&gt;
&lt;br /&gt;
== New Gradebook Export Module Creation Steps ==&lt;br /&gt;
&lt;br /&gt;
* Decide on a short name for this new export.  This name will be referred to as [newexport] the remainder of this topic.&lt;br /&gt;
* Create a new directory in Moodle&#039;s grade/export directory for your files.&lt;br /&gt;
* Review the export formats that ship with Moodle and choose the export format most like the one you wish to develop.  Refer to that export&#039;s files as needed.&lt;br /&gt;
* Copy the files from the export format you selected into your newly created directory of grade/export/[newexport]&lt;br /&gt;
* Alter each of the files listed below so they produce the data you desire.&lt;br /&gt;
* Click on Notifications in the Site Administration menu to go through the upgrade process and set up the permissions for your export format.&lt;br /&gt;
* Test, test, test - until your export performs properly.&lt;br /&gt;
&lt;br /&gt;
=== Files That Need Special Attention ===&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/db/access.php ====&lt;br /&gt;
&lt;br /&gt;
The access.php file makes your gradebook export available to teachers and allows the security administrator to decide who can and cannot access this export module.  See the &amp;quot;View role details&amp;quot; page in Site Administration &amp;gt; Users &amp;gt; Permissions &amp;gt; Define roles for more details.&lt;br /&gt;
&lt;br /&gt;
For your export to have the same set of permissions as the other exports, change the lines listed below replacing the old export format name with [newexport].&lt;br /&gt;
 &lt;br /&gt;
         &#039;gradeexport/[newexport]:view&#039; =&amp;gt; array(&lt;br /&gt;
 &lt;br /&gt;
         &#039;gradeexport/[newexport]:publish&#039; =&amp;gt; array(&lt;br /&gt;
&lt;br /&gt;
The new security role entries will be available after an upgrade has been completed (click the Notifications link in Site Administration).  This should not be done until you have worked through each of the files listed in this section.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: The gradeexport_[newexport].php file in the lang directory works with the :view and :publish settings to provide a description.  See the information about that file for more details.&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/dump.php ====&lt;br /&gt;
&lt;br /&gt;
The only change needed in this file is the following capability checks:&lt;br /&gt;
&lt;br /&gt;
   require_capability(&#039;gradeexport/[newexport]:publish&#039;, $context);&lt;br /&gt;
   require_capability(&#039;gradeexport/[newexport]:view&#039;, $context);&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/export.php ====&lt;br /&gt;
&lt;br /&gt;
The following lines need to be changed to reflect your new export&#039;s name.&lt;br /&gt;
&lt;br /&gt;
   require_once &#039;grade_export_[newexport].php&#039;;&lt;br /&gt;
   require_capability(&#039;gradeexport/[newexport]:view&#039;, $context);&lt;br /&gt;
   $export = new grade_export_[newexport]($course, $groupid, $itemids, $export_feedback, $updatedgradesonly, $displaytype, $decimalpoints, $separator);&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/grade_export_[newexport].php ====&lt;br /&gt;
&lt;br /&gt;
The following lines need to be changed to reflect your new export&#039;s name.&lt;br /&gt;
&lt;br /&gt;
   class grade_export_[newexport] extends grade_export {&lt;br /&gt;
&lt;br /&gt;
   var $plugin = &#039;[newexport]&#039;;&lt;br /&gt;
&lt;br /&gt;
   function grade_export_[newexport]($course, $groupid=0, $itemlist=&#039;&#039;, ...&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/index.php ====&lt;br /&gt;
&lt;br /&gt;
The following lines need to be changed to reflect your new export&#039;s name.&lt;br /&gt;
&lt;br /&gt;
   require_once &#039;grade_export_[newexport].php&#039;;&lt;br /&gt;
&lt;br /&gt;
   require_capability(&#039;gradeexport/[newexport]:view&#039;, $context);&lt;br /&gt;
&lt;br /&gt;
   print_grade_page_head($COURSE-&amp;gt;id, &#039;export&#039;, &#039;[newexport]&#039;, get_string(&#039;exportto&#039;, &#039;grades&#039;) . &#039; &#039; . get_string(&#039;modulename&#039;, &#039;gradeexport_[newexport]&#039;));&lt;br /&gt;
&lt;br /&gt;
   $CFG-&amp;gt;gradepublishing = has_capability(&#039;gradeexport/[newexport]:publish&#039;, $context);&lt;br /&gt;
&lt;br /&gt;
   $export = new grade_export_[newexport]($course, $currentgroup, &#039;&#039;, false, false, $data-&amp;gt;display, $data-&amp;gt;decimals);&lt;br /&gt;
&lt;br /&gt;
==== /grade/export/[newexport]/version.php ====&lt;br /&gt;
&lt;br /&gt;
Use the current dates for your export module.  If any adjustments are made to your security or if any database changes are needed (see the db/access.php file above) the version will need to be incremented and an upgrade will be performed (loggin in as admin clicking the Notifications link on the Site Administration causes Moodle to check if an upgrade is necessary).&lt;br /&gt;
&lt;br /&gt;
Your version.php will look something like this ...&lt;br /&gt;
&lt;br /&gt;
     $plugin-&amp;gt;version  = 2007092700;&lt;br /&gt;
     $plugin-&amp;gt;requires = 2007101000;&lt;br /&gt;
&lt;br /&gt;
==== /lang/en_utf8/gradeexport_[newexport].php  ====&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Replace en_utf8 with your language directory if using multiple languages or a language other than English.  Copy one of the existing files (i.e. gradeexport_txt.php) to create your new gradebook export language file.&lt;br /&gt;
&lt;br /&gt;
When you first create your gradebook export directory and look in the Action menu of the Moodle gradebook, your new export module will be listed as &amp;lt;nowiki&amp;gt;[[modulename]]&amp;lt;/nowiki&amp;gt;.  The &#039;&#039;&#039;modulename&#039;&#039;&#039; string in this file will provide the Action menu with the name specified. &lt;br /&gt;
&lt;br /&gt;
The :view and the :publish strings are used to display a meaningful description on the security roles for users.  These two descriptions work in conjunction with the db/access.php file.  See the information about the db/access.php file for more details.&lt;br /&gt;
&lt;br /&gt;
The gradeexport_txt.php (Plain text file export) is shown below without the PHP tags.  Change &amp;quot;Plain text file&amp;quot; to the name of the new export and replace &amp;quot;txt&amp;quot; with the [newexport] value.  Change the comments after the &amp;quot;:view&amp;quot; and &amp;quot;:publish&amp;quot; to descriptions that should appear on the role details page for your new export.&lt;br /&gt;
&lt;br /&gt;
     $string[&#039;modulename&#039;] = &#039;Plain text file&#039;;&lt;br /&gt;
     $string[&#039;txt:view&#039;] = &#039;Use text grade export&#039;;&lt;br /&gt;
     $string[&#039;txt:publish&#039;] = &#039;Publish TXT grade export&#039;;&lt;br /&gt;
&lt;br /&gt;
To better illustrate, if your module had a short name of &amp;quot;sis&amp;quot; and a description of &amp;quot;My Student Info System&amp;quot;, then this file would like something like the following ...&lt;br /&gt;
&lt;br /&gt;
     $string[&#039;modulename&#039;] = &#039;My Student Info System&#039;;&lt;br /&gt;
     $string[&#039;sis:view&#039;] = &#039;Use My SIS grade export&#039;;&lt;br /&gt;
     $string[&#039;sis:publish&#039;] = &#039;Publish SIS grade export&#039;;&lt;br /&gt;
&lt;br /&gt;
=== A Safety Check For References to the Original Export Module ===&lt;br /&gt;
To make sure no references to the original export format have been missed you can use grep (in Linux) or an equivalent command in Windows or Mac. For example, if you copied &amp;quot;txt&amp;quot; when creating your export module you could use a command similar to the following.&lt;br /&gt;
&lt;br /&gt;
     grep -R &amp;quot;txt&amp;quot; ./grade/export/[newexport]/&lt;br /&gt;
&lt;br /&gt;
=== Customizing Your Export Module ===&lt;br /&gt;
&lt;br /&gt;
At this point your export is in its own directory, has its own security identifiers, and has its own name but it behaves just like the export you copied from.  In this section we will look at how to customize the behavior of your export.&lt;br /&gt;
&lt;br /&gt;
==== Changing the Grade Export Form Options ====&lt;br /&gt;
&lt;br /&gt;
The grade export form (used to select options when exporting) can be altered by opening the grade/export/[newexport]/index.php file and finding the line similar to the one shown below:&lt;br /&gt;
&lt;br /&gt;
   $mform = new grade_export_form(null, array(&#039;includeseparator&#039;=&amp;gt;true, &#039;publishing&#039; =&amp;gt; true));&lt;br /&gt;
&lt;br /&gt;
The part of that statement starting with &#039;&#039;&#039;array(&#039;&#039;&#039; can be altered to pass feature parameters into the grade_export_form class.  Refer to the file grade/export/grade_export_form.php for the details of the available feature parameters and how they affect the grade export form.  The grade_export_form.php file should not be altered as it is part of the Moodle core code and will affect the other exports as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Changing the Format and Fields in the Export File ====&lt;br /&gt;
&lt;br /&gt;
To change the format of the export file and the fields in the export file, edit the grade/export/[newexport]/grade_export_[newexport].php file.  The echo statements in the print_grades() function determine what will be included in the export file.  Make whatever adjustments to the echo statements in this function that your new export needs.&lt;br /&gt;
&lt;br /&gt;
The [[Grades]] documentation referenced in the See Also section below will help in understanding the gradebook and what values are available for use in your export.  The variables can also be dumped to see their structure and contents.&lt;br /&gt;
&lt;br /&gt;
For example, the following two statements will show you what is in the $userdata-&amp;gt;grades and $this-&amp;gt;columns structures.  If you include these statements in the print_grades() function then you will see the results in your export file.&lt;br /&gt;
&lt;br /&gt;
   var_dump($userdata-&amp;gt;grades);&lt;br /&gt;
   var_dump($this-&amp;gt;columns);&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Grades]]&lt;br /&gt;
* [[Gradebook_import]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Grades]]&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>Lameze</name></author>
	</entry>
</feed>