<?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=Aanabit</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=Aanabit"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Aanabit"/>
	<updated>2026-08-21T01:41:36Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=XMLDB_introduction&amp;diff=63896</id>
		<title>XMLDB introduction</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=XMLDB_introduction&amp;diff=63896"/>
		<updated>2023-05-23T12:15:56Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: Remove link to non-existing page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[XMLDB Documentation|XMLDB Documentation]] &amp;gt; Introduction&lt;br /&gt;
----&lt;br /&gt;
__NOTOC__&lt;br /&gt;
One of the main upcoming features in Moodle 1.7 was its ability to work with some more [[wikipedia:RDBMS|RDBMS]] ([[wikipedia:MSSQL|MSSQL]] and [[wikipedia:Oracle database|Oracle]]) while maintaining everything working properly with both [[MySQL]] and [[PostgreSQL]]. As Moodle core uses [http://adodb.sourceforge.net/ ADOdb] internally, this possibility has been present since the beginning and, with the current maturity of the project (5 year old baby!), this can be a good moment to sort all this out.&lt;br /&gt;
&lt;br /&gt;
Initially, all our tests and preliminary work was to inspect how [http://adodb.sourceforge.net/ ADOdb] was doing its work, and how we could mix together all those 4 RDBMS, whose SQL dialects, although pretty similar, have some differences and idiosyncrasies that force us to do some important changes to our current database code (formerly &#039;&#039;&#039;datalib.php&#039;&#039;&#039;) and how it&#039;s used by the rest of Moodle.&lt;br /&gt;
&lt;br /&gt;
All the changes to be performed, which primary objective is to enable Moodle to work with more RDBMS, must be fulfilled by following these non-functional requirements: &lt;br /&gt;
* &#039;&#039;&#039;Provide one layer (new) for DB creation/upgrade&#039;&#039;&#039; ([[wikipedia:Data_Definition_Language|DDL]]): With this, developers will create their structures in one neutral form, independent of the exact implementation to be used by each RDBMS.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provide one layer (existing) for DB handling&#039;&#039;&#039; ([[wikipedia:Data_Manipulation_Language|DML]]): With this, developers will request/store information also in one neutral form, independent of the RDBMS being used.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Easy migration path from previous versions&#039;&#039;&#039;: The current installation/upgrade system will work until, at least, Moodle 2.0, allowing 3rd party developers to migrate to the new system.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Simple, usable and effective&#039;&#039;&#039;: Until now, the way to upgrade Moodle has been really cool and it has worked pretty fine since the beginning. However, it has forced developers to maintain at least two installation and two upgrade scripts for each module/plugin. The new alternative will have only one file to install and one file to upgrade (per module/plugin too), reducing the possibility of mistakes drastically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Conditional code usage must be minimised&#039;&#039;&#039;: Database libraries must accept 99% of potential SQL sentences, building/transforming them as necessary to work properly under any RDBMS. The number of places using custom (per DB) code should be minimum.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Well documented&#039;&#039;&#039;: All the functions defined, both at DML and DDL level must be well documented, helping the developer to find and use the correct one in each situation.&lt;br /&gt;
== The Stack ==&lt;br /&gt;
The next stack shows how Moodle 1.7 code will interact with the underlying RDBMS. It will help us understand a bit more what we are trying to do and will explain some of the points related in the Roadmap (below in this page).&lt;br /&gt;
[[Image:MoodleDBStack.png|center]]&lt;br /&gt;
Moodle code will use two &#039;&#039;languages&#039;&#039; to perform its DB actions:&lt;br /&gt;
* &#039;&#039;&#039;XMLDB neutral description files&#039;&#039;&#039;: To create, modify and delete database objects (DDL: create/alter/drop tables, fields, indexes, constraints...). It consists of a collection of validated, standard, XML files. They will be used to define all the DB objects. New for 1.7.&lt;br /&gt;
* &#039;&#039;&#039;Moodle SQL neutral statements&#039;&#039;&#039;: To add, modify, delete and select database information (DML: insert/update/delete/select records). To modify for 1.7.&lt;br /&gt;
Please note the &#039;&#039;&#039;neutral&#039;&#039;&#039; keyword used in the expressions above. It means that both &#039;&#039;&#039;languages&#039;&#039;&#039; will be 100% the same, independent of the underlying RDBMS being used. And this must be particularly true for the XMLDB part.&lt;br /&gt;
&lt;br /&gt;
Obviously it&#039;s possible that in the SQL part we find some specialised queries (using complex joins, regular expressions...) that will force us to do some &#039;&#039;&#039;Exceptions&#039;&#039;&#039;. Well, they can exist (in fact, they exist), but we always must try to provide an alternate path to minimise them using neutral statements and standard libraries.&lt;br /&gt;
&lt;br /&gt;
Each one of the &#039;&#039;&#039;languages&#039;&#039;&#039; above will use its own library to do the work:&lt;br /&gt;
* &#039;&#039;&#039;Moodle DDL Library&#039;&#039;&#039; ([[DDL functions|ddllib.php]]): Where all the functions needed to handle DB objects will exist. This library is new for 1.7 and will provide developers with a high level of abstraction. As input it will accept some well defined objects and actions and it will execute the proper commands for the RDBMS being used.&lt;br /&gt;
* &#039;&#039;&#039;Moodle DML Library&#039;&#039;&#039; ([[DML functions|dmllib.php]]): Where all the functions needed to handle DB contents will exist. This library is new for 1.7, although its contents are, basically, functions currently present in &#039;&#039;&#039;datalib.php&#039;&#039;&#039; (moved from there). All those DML functions will offer cross-db support for insert/update/delete/select statements using a common behaviour.&lt;br /&gt;
Also note that &#039;&#039;&#039;datalib.php&#039;&#039;&#039; is still present in the schema above. It will contain all the functions that haven&#039;t been moved to the new &#039;&#039;&#039;ddllib.php&#039;&#039;&#039; and &#039;&#039;&#039;dmllib.php&#039;&#039;&#039; libraries. Only some common functions will remain there, and these will disappear (it&#039;s considered a legacy library) in upcoming &#039;&#039;&#039;Moodle&#039;&#039;&#039; releases (after 1.7) by moving all those functions to their proper library (course/lib.php, user/lib.php....). &lt;br /&gt;
&lt;br /&gt;
Both of these libraries (plus the small &#039;&#039;&#039;Exceptions&#039;&#039;&#039; bar) will perform all their actions using the &#039;&#039;&#039;ADOdb Database Abstraction Library for PHP&#039;&#039;&#039; that will receive all the requests from them, communicate with the DB (&#039;&#039;&#039;MySQL&#039;&#039;&#039;, &#039;&#039;&#039;PostgreSQL&#039;&#039;&#039;, &#039;&#039;&#039;Oracle&#039;&#039;&#039; or &#039;&#039;&#039;SQL*Server&#039;&#039;&#039;), retrieve results and forward them back to originator library.&lt;br /&gt;
== The process ==&lt;br /&gt;
This section points to the main areas of information about the &#039;&#039;&#039;process of design and implementation&#039;&#039;&#039; of the new XMLDB layer:&lt;br /&gt;
* [[XMLDB Roadmap|Roadmap]]: Where the whole process is defined. It has been split into small chunks to be performed and tested easily. Also, such documents should be used to track what&#039;s done and what&#039;s pending, while using easy nomenclature.&lt;br /&gt;
&lt;br /&gt;
* [[XMLDB Problems|Problems]]: A comprehensive list of issues that need to be determined/solved prior to incorporating them into the [[XMLDB Roadmap|roadmap]].&lt;br /&gt;
== The documentation ==&lt;br /&gt;
This section points to the &#039;&#039;&#039;main documentation index&#039;&#039;&#039; about the implemented XMLDB:&lt;br /&gt;
* [[XMLDB Documentation|Documentation]]: Where you&#039;ll find quick links to different parts of the XMLDB documentation.&lt;br /&gt;
==See also==&lt;br /&gt;
=== XMLDB related ===&lt;br /&gt;
* [[XMLDB preliminary links|XMLDB preliminary links]] - A collection of links about general info, searched and analysed at the initial stages of the project&lt;br /&gt;
* [[XMLDB preliminary notes|XMLDB preliminary notes]] - A collection of notes collected in the early stages of this project, pointing both to some changes required and some problems to solve.&lt;br /&gt;
=== Database related ===&lt;br /&gt;
* [[DDL functions|DDL functions]] - Documentation for all the Data Definition Language (DDL) functions available inside Moodle.&lt;br /&gt;
* [[DML functions|DML functions]] - Documentation for all the Data Manipulation Language (DML) functions available inside Moodle.&lt;br /&gt;
[[Category:XMLDB]]&lt;br /&gt;
[[ja:XMLDBイントロダクション]]&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MoodleMoot_2007_HackFest&amp;diff=63895</id>
		<title>MoodleMoot 2007 HackFest</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MoodleMoot_2007_HackFest&amp;diff=63895"/>
		<updated>2023-05-23T11:18:02Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:WillNotMigrate}}&lt;br /&gt;
This page will not be migrated to new devdocs&lt;br /&gt;
&lt;br /&gt;
The main part of the [http://moodlemoot.org/ 2007 UK Moodle Moot] is on Wednesday and Thursday 24th and 25th October. The day before, on the Tuesday, there will be a HackFest for developers to meet, talk and write code.&lt;br /&gt;
&lt;br /&gt;
==Practical arrangement==&lt;br /&gt;
&lt;br /&gt;
You need to get [http://maps.google.co.uk/maps?ll=52.025356,-0.710997&amp;amp;spn=0.001005,0.001904&amp;amp;t=k&amp;amp;z=19 right here]. This is the centre of the Open University&#039;s Campus:&lt;br /&gt;
&lt;br /&gt;
[http://www3.open.ac.uk/contact/ The Open University]&amp;lt;br /&amp;gt;&lt;br /&gt;
Walton Hall&amp;lt;br /&amp;gt;&lt;br /&gt;
Milton Keynes&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://maps.google.co.uk/?q=mk7+6aa&amp;amp;ie=UTF8&amp;amp;om=1&amp;amp;f=d MK7 6AA]&lt;br /&gt;
&lt;br /&gt;
The area we are meeting in is called the Christodoulou Meeting Rooms. The entry is under an archway, and if you go in and up the stairs you should find us in Meeting Room 15, or the open foyer area just outside it. We will be there from about 10:00am to about 5:30pm, and lunch will be provided. We also have rooms 1, 2 and 7 available if people want to form smaller groups at any time. (Also, in meeting room 11, there will be a separate group of people taking about online equation editors, which may interest some people.)&lt;br /&gt;
&lt;br /&gt;
If you are registered for the MoodleMoot, wireless network sign-in information should be available on arrival.&lt;br /&gt;
&lt;br /&gt;
==Programme for the day==&lt;br /&gt;
&lt;br /&gt;
In keeping with Moodle&#039;s open source philosophy, the day will be self-organising. You can turn up and talk to other developers about anything you like. However, within that general free-for-all, we will have a number of pre-announced discussions on particular topics at particular times. We have a number of other rooms available for these break-out sessions, but I don&#039;t know the room numbers right now.&lt;br /&gt;
&lt;br /&gt;
Please feel free to add your own suggestions below.&lt;br /&gt;
&lt;br /&gt;
Naturally, not all developers will be able to come, so it might be a good idea to start discussing some of these topics in the [http://moodle.org/mod/forum/view.php?id=55 General Developer Forum] now. And if anything significant comes out of the discussions, we should try to record it on the wiki.&lt;br /&gt;
&lt;br /&gt;
==Particular discussions==&lt;br /&gt;
&lt;br /&gt;
These are significant topics, where it might be worth getting about 5-10 interested developers into a break-out room for a focussed discussion on one topic, or a demonstration of a particular idea.&lt;br /&gt;
&lt;br /&gt;
Irrespective of these sessions, there will be other developers around talking about whatever interests them all day.&lt;br /&gt;
&lt;br /&gt;
===Repository API===&lt;br /&gt;
The aim is to develop some consensus on how it can work so that a spec can be started.&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Time: || 10:30 - 11:20&lt;br /&gt;
|-&lt;br /&gt;
| Room: || CMR07&lt;br /&gt;
|-&lt;br /&gt;
| Suggested by: || Martin Dougiamas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# Portfolio separate from repo&lt;br /&gt;
# We need to think carefully/clearly about when to copy and when not to&lt;br /&gt;
# Think users, not roles&lt;br /&gt;
# It&#039;s very complicated&lt;br /&gt;
&lt;br /&gt;
===Social Networking tools===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Time: || 11:20 - 12:00&lt;br /&gt;
|-&lt;br /&gt;
| Room: || CMR07&lt;br /&gt;
|-&lt;br /&gt;
| Suggested by: || Jenny Gray&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
The aim is to discuss recent user tagging in Moodle and how it can be used; to think about what else can be tagged (courses, resources, activities etc); and to think about how Moodle can be made more social.  Here are some suggestions made to me recently:&lt;br /&gt;
&lt;br /&gt;
* Learning twitter&lt;br /&gt;
* Learning shared to do &lt;br /&gt;
* Offering self-organising groups of learners their own activity areas (forums etc)&lt;br /&gt;
* shared activity reports&lt;br /&gt;
&lt;br /&gt;
Session feedback:&lt;br /&gt;
&lt;br /&gt;
* unit tagging from OU to be integrated into new tags block for Moodle 2.0&lt;br /&gt;
* should we push into third party social networking tools or pull from them?&lt;br /&gt;
** push into will be unpopular with students who see these networks a their private space&lt;br /&gt;
* any moodle site could add extra user profile fields like status, mood with existing core functionality&lt;br /&gt;
* ideas for extension&lt;br /&gt;
** see other people&#039;s tag clouds&lt;br /&gt;
** when it says &amp;quot;3 things tagged with this&amp;quot;, want to know who made those tags&lt;br /&gt;
** need fine grained control over who can tag what&lt;br /&gt;
** need to make sure that when things are deleted the tags go too&lt;br /&gt;
** want to be able to tag other people&lt;br /&gt;
** want to be able to choose to keep my tags private (probably with an admin setting to control whether this feature is enabled or not)&lt;br /&gt;
* facebook apps style API for moodle plug-ins&lt;br /&gt;
** scarey for sys-admins (facebook do it with the app on a separate server)&lt;br /&gt;
** maybe something simple could be done with a better database module&lt;br /&gt;
** something for a lot later!&lt;br /&gt;
&lt;br /&gt;
=== Accessibility demonstration ===&lt;br /&gt;
My colleague Chetz Colwell and I would like to give a brief demonstration of assistive technologies to developers, particularly core developers, and discuss future accessibility work on Moodle. We&#039;ll hopefully have a screen reader JAWS (Thunder?), screen magnifier, do a keyboard-only demo, and possibly speech recognition.&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Time: || 12:00 to 12:40&lt;br /&gt;
|-&lt;br /&gt;
| Room: || CMR15&lt;br /&gt;
|-&lt;br /&gt;
| Suggested by: || Nick Freear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Quiz developments===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Time: || 1:40 to 2:20&lt;br /&gt;
|-&lt;br /&gt;
| Room: || CMR07&lt;br /&gt;
|-&lt;br /&gt;
| Suggested by: || Tim Hunt&lt;br /&gt;
|}&lt;br /&gt;
We can discuss some things that have happened recently:&lt;br /&gt;
* The implication of [[Plan_to_Improve_Flexibility_of_Question_Category_Sharing_and_Permissions|Jamie&#039;s recent changes to the question bank]],&lt;br /&gt;
* Improvements to the question type API, especially [[Plans_for_enhancing_import/export_in_questiontype_plugins|Howard&#039;s recent changes]],&lt;br /&gt;
some things that will probably happen soon:&lt;br /&gt;
* The OU&#039;s quiz navigation changes, that we hope to put into Moodle 2.0,&lt;br /&gt;
* The OU&#039;s [[Plans_for_adaptive_mode|changes to adaptive mode]] that we hope to put into Moodle 2.0,&lt;br /&gt;
* Tony Gardner-Medwin&#039;s plans to introduce certainty-based marking,&lt;br /&gt;
known problems with the quiz architecture that no-one is working on right now:&lt;br /&gt;
* ... suggestions welcome ...&lt;br /&gt;
and anything else you want to raise.&lt;br /&gt;
&lt;br /&gt;
Of course, you can talk to me about the quiz at any time time during the day too, if you have a more specific issue.&lt;br /&gt;
&lt;br /&gt;
===ePortfolios===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Time: || 2:20 to 3:00&lt;br /&gt;
|-&lt;br /&gt;
| Room: || CMR07&lt;br /&gt;
|-&lt;br /&gt;
| Suggested by: || Thanh Le&lt;br /&gt;
|}&lt;br /&gt;
A quick overview of the Open University electronic portfolio tool and describing its technical underpinning to provide more background information.&lt;br /&gt;
&lt;br /&gt;
From the session, I am keen to:&lt;br /&gt;
* gauge people&#039;s interest in the tool;&lt;br /&gt;
* discuss how the tool can integrate with other Moodle tools around the concept of personal data storage;&lt;br /&gt;
* gather interest and collaboration;&lt;br /&gt;
&lt;br /&gt;
===Conditional Activities===&lt;br /&gt;
The aim is to develop some consensus on how it can work so that a spec can be started.&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Time: || 3:00 - 3:40&lt;br /&gt;
|-&lt;br /&gt;
| Room: || CMR07&lt;br /&gt;
|-&lt;br /&gt;
| Suggested by: || Martin Dougiamas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Offline Moodle (and particularly synchronisation issues)===&lt;br /&gt;
Offline Moodle reuses the core components on Backup and mNet(Moodle Network) and adds a synchronisation component to take care of tasks that Moodle doesn&#039;t already cater for. &lt;br /&gt;
&lt;br /&gt;
The components are used because they are core components. They already offer functionality that we require and as they evolve the Offline Moodle feature will be able to take advantage of the extra features, functionality and reliability they provide. &lt;br /&gt;
&lt;br /&gt;
Because this is a new feature I&#039;ll explain a little about how we use the comments and then jot a few questions down that have come up:&lt;br /&gt;
Backup and restore is used to get information in and out of Moodle in a standardised format well understood by Moodle. It is supported by most modules and features and is likely to be fixed quickly as changes to modules effect the backup process.&lt;br /&gt;
* Will the backup tool scale effectively&lt;br /&gt;
* Will changes for Offline Moodle harm the backup code? &lt;br /&gt;
&lt;br /&gt;
Moodle Network is used to provide web service functionality. &lt;br /&gt;
* is Moodle Network the best option for this? &lt;br /&gt;
* has the web service been implemented correctly?&lt;br /&gt;
&lt;br /&gt;
Synchronisation (Synch) Component&lt;br /&gt;
This component is really the main controller of synchronisation whic is the key feature of Offline Moodle at this time. We&#039;ve spent a lot of our time developing code to get the content in and out of Moodle and transferred between Moodles in a reliable and well managed fashion. The synch component brings all this together. &lt;br /&gt;
&lt;br /&gt;
So far we&#039;ve proven that we can reliably get course content and related module content from Moodle Server to Offline Moodle. For forums we can get it back again. We&#039;ve investigated lots more but haven&#039;t code it yet. &lt;br /&gt;
&lt;br /&gt;
We would like the communities input. The plan is to improve it by adding functionality such as: &lt;br /&gt;
* merging content: this is a key feature. For example merging a forum discussion with posts from the Offline Moodle and the Moodle Server. Our original proof of concept proved this is possible for forums but the code has not been written for Offline Moodle&lt;br /&gt;
* filtering content: passwords, copyrighted material and other sensitive data all need to be removed at certain points through out the process&lt;br /&gt;
* security: checks for hacking, viruses and trojans, making sure the data doesn&#039;t get changed in transit. These are all key issues that need to be addressed.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Time: || 3:40 - 4:20&lt;br /&gt;
|-&lt;br /&gt;
| Room: || CMR07&lt;br /&gt;
|-&lt;br /&gt;
| Suggested by: || Colin Chambers&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other things people want to do during the day==&lt;br /&gt;
&lt;br /&gt;
=== PGP Keysiging ===&lt;br /&gt;
If any developers would like to exchange PGP Keys and expand their web of trust then this could be done during the Developer day.  &lt;br /&gt;
&lt;br /&gt;
I think it would be good to follow the  [http://www.debian.org/events/keysigning Debian guidlines] for this.--[[User:Dan Poltawski|Dan Poltawski]] 18:03, 10 October 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
===Enrollment &#039;Groups&#039;===&lt;br /&gt;
I would like to discuss the concept of enrollment groups and thoughts on the reasons for such a feature to be incorporated into Moodle. It would be a useful opportunity to discuss approaches with developers. This is with the intention of implementing a solution and offering it for inclusion into core when I work on this in the coming months. --[[User:Dan Poltawski|Dan Poltawski]] 16:46, 16 October 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
===Bug fixing prize?===&lt;br /&gt;
&lt;br /&gt;
Should we offer a prize for the person who fixes most bugs during the day?--[[User:Tim Hunt|Tim Hunt]] 03:46, 14 October 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
Sorry I won&#039;t be there,&lt;br /&gt;
Ok if you mean somebody submitting the larger number of proposals approved by at least one of the participants, on how to solve various bug. No real code please, if you don&#039;t want to create new ones...[[User:Pierre Pichet|Pierre Pichet]] 18:34, 19 October 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Developer conferences]]&lt;br /&gt;
* [http://moodle.org/mod/forum/view.php?id=55 General Developer Forum]&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=61683</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=61683"/>
		<updated>2022-02-01T16:11:45Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: /* JWT */&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;
==ADOdb==&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.21.0&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-styleMDL-71712&lt;br /&gt;
&lt;br /&gt;
http://adodb.sourceforge.net&lt;br /&gt;
==Amazon S3==&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;
==Axe==&lt;br /&gt;
&#039;&#039;lib/behat/axe&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Accessibility testing engine for websites and other HTML-based user interfaces. &lt;br /&gt;
&lt;br /&gt;
Version: 3.5.5&lt;br /&gt;
&lt;br /&gt;
Copyright Deque Systems Inc.&lt;br /&gt;
&lt;br /&gt;
License: Mozilla Public License 2.0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://github.com/dequelabs/axe-core/tags&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
==Bennu==&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;
==CAS==&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.8&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;
==CFPropertyList==&lt;br /&gt;
&#039;&#039;/lib/plist&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP Implementation of Apple&#039;s PList (binary and XML)&lt;br /&gt;
&lt;br /&gt;
Version: 2.0.2&lt;br /&gt;
&lt;br /&gt;
Copyright © 2018 Teclib&lt;br /&gt;
&lt;br /&gt;
Copyright © 2009 Christian Kruse, Rodney Rehm&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://teclib.github.io/CFPropertyList/&lt;br /&gt;
==Chart.js==&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.9.4&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;
==CodeMirror==&lt;br /&gt;
&#039;&#039;lib/editor/atto/plugins/html/yui/src/codemirror&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
CodeMirror is a versatile text editor implemented in JavaScript for the browser.&lt;br /&gt;
&lt;br /&gt;
Version: 5.59.4&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/codemirror/CodeMirror&lt;br /&gt;
==Emoji-data==&lt;br /&gt;
&#039;&#039;lib/emoji-data&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library to parse easily data and sprite sheets for emoji.&lt;br /&gt;
&lt;br /&gt;
Version 6.0.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2013 Cal Henderson&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/iamcal/emoji-data/&lt;br /&gt;
==EvalMath==&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;
==FLV player==&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;
==FPDI==&lt;br /&gt;
&#039;&#039;/mod/assign/feedback/editpdf/fpdi/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF.&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2020 Setasign GmbH &amp;amp; Co. KG, https://www.setasign.com&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://www.setasign.com/products/pdf-php-solutions/fpdi/&lt;br /&gt;
== GeoIp2 ==&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.11.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;
== GeoPattern==&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;
==Google APIs==&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;
==Graph Class==&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;
==H5P==&lt;br /&gt;
&#039;&#039;joubel/core&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The general H5P library&lt;br /&gt;
&lt;br /&gt;
Version: 1.24.2&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;
==H5P Editor PHP Library==&lt;br /&gt;
&#039;&#039;joubel/editor&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A general library that is supposed to be used in most PHP implementations of H5P.&lt;br /&gt;
&lt;br /&gt;
Version: moodle-1.20.2&lt;br /&gt;
&lt;br /&gt;
Copyright © Joubel&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/h5p/h5p-editor-php-library&lt;br /&gt;
==Horde==&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.23&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;
==html2text==&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.3.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;
==htmlArea==&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;
==HTML Purifier==&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.13.0&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
==http-message==&lt;br /&gt;
&amp;quot;/lib/http-message&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Provide a set of common interfaces for HTTP messages as described in RFC 7230 and RFC 7231&lt;br /&gt;
&lt;br /&gt;
Version: 1.0.1&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2014 PHP Framework Interoperability Group&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
==IP-Atlas==&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;
==Jabber - XMPPHP==&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;
==jQuery==&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.5.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;
==jQuery EU Cookie Law popups==&lt;br /&gt;
&#039;/admin/tool/policy/amd/src/jquery-eu-cookie-law-popup.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An easy-to-install jQuery plugin to create EU Cookie Law popups&lt;br /&gt;
&lt;br /&gt;
Version: 1.1.3&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2015 Richard Dancsi&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/wimagguc/jquery-eu-cookie-law-popup&lt;br /&gt;
==jQuery migrate==&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;
==jQuery UI==&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;
==JavaScript Beautifier==&lt;br /&gt;
&#039;&#039;yui/src/beautify&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Beautify HTML code in Atto.&lt;br /&gt;
&lt;br /&gt;
Version: 1.13.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://beautifier.io/&lt;br /&gt;
==Services_JSON==&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;
==JWT==&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.2.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;
==ENUM==&lt;br /&gt;
&#039;&#039;lib/php-enum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP Enum implementation inspired from SplEnum&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.7&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2015 My C-Labs&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/myclabs/php-enum&lt;br /&gt;
==kses==&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;
==less.php==&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;
Minimal lightweight simple logging for JavaScript.&lt;br /&gt;
&lt;br /&gt;
Version 1.7.1&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;
==LTI Tool Provider Library for PHP==&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;
==MathJax==&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;
* Default MathJax version: 2.7.9 (Moodle 3.11)&lt;br /&gt;
* License: Apache 2.0&lt;br /&gt;
* Homepage: https://www.mathjax.org/&lt;br /&gt;
==MatthiasMullie\Minify==&lt;br /&gt;
CSS &amp;amp; JavaScript minifier, in PHP&lt;br /&gt;
&lt;br /&gt;
Version 1.3.63&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;
&lt;br /&gt;
==MatthiasMullie\Path converter==&lt;br /&gt;
CSS path converter, in PHP&lt;br /&gt;
&lt;br /&gt;
Version 1.1.3&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/matthiasmullie/path-converter&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.9.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/MaxMind-DB-Reader-php/&lt;br /&gt;
==MDN Polyfills==&lt;br /&gt;
&#039;&#039;/lib/mdn-polyfills&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A collection of side-effect ECMAScript modules. Minimized, mangled and extremely small thanks to Rollup - next-generation ES6 module bundler.&lt;br /&gt;
&lt;br /&gt;
Version: 5.20.0&lt;br /&gt;
Version url-polyfill: 1.1.12&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://www.npmjs.com/package/mdn-polyfills&lt;br /&gt;
==mimeTeX==&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.77&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;
==MongoDB PHP Library==&lt;br /&gt;
&#039;&#039;/cache/stores/mongodb/MongoDB/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
MongoDB PHP library&lt;br /&gt;
&lt;br /&gt;
Version: 1.8.0&lt;br /&gt;
&lt;br /&gt;
License: apache 2.0&lt;br /&gt;
&lt;br /&gt;
https://docs.mongodb.com/php-library/&lt;br /&gt;
==Mustache.js==&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.1.0&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;
==Mustache==&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.13.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;
==mp3player==&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;
==overlibmws==&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;
==PclZip==&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;
==PEAR OLE Classes==&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;
==PEAR Spreadsheet_Excel_Writer==&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;
==PEAR HTML_Quickform==&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;
==PEAR HTML_Quickform_Renderer_Tableless==&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;
==PEAR HTML_QuickForm_DHTMLRulesTableless==&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;
==PEAR HTML_Common==&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;
==PEAR XML_Parser==&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;
==PHP-CSS-Parser==&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.1&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;
==PHPExcel==&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;
==PhpSpreadsheet==&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.16.0&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
https://github.com/PHPOffice/PhpSpreadsheet&lt;br /&gt;
==PHP mailer==&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.2.0&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;
==PHP Markdown==&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.9.0 (with modifications)&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;
==PHP-ML==&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;
 * @copyright 2016-2018 Arkadiusz Kondas &amp;lt;arkadiusz.kondas[at]gmail&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://php-ml.readthedocs.io/&lt;br /&gt;
==Popper.js==&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;
==Rangy==&lt;br /&gt;
&amp;quot;/lib/editor/atto/yui/src/rangy/js/*.*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A cross-browser JavaScript range and selection library.&lt;br /&gt;
&lt;br /&gt;
Version: 1.3.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2014 Tim Down&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/timdown/rangy&lt;br /&gt;
==RTLCSS for PHP==&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;
==RequireJS==&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;
==scssphp==&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.4.1&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;
==SimplePie==&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.6&lt;br /&gt;
&lt;br /&gt;
License: BSD&lt;br /&gt;
&lt;br /&gt;
https://github.com/simplepie/simplepie&lt;br /&gt;
==Snoopy==&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;
==SMTP class==&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;
==Spike PHPCoverage==&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;
==Spout==&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.1.0&lt;br /&gt;
&lt;br /&gt;
License: Apache&lt;br /&gt;
&lt;br /&gt;
https://github.com/box/spout/&lt;br /&gt;
==TCPDF Class==&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.4.1&lt;br /&gt;
&lt;br /&gt;
Copyright Olivier PLATHEY&lt;br /&gt;
&lt;br /&gt;
License: LGPL-v3.0-only&lt;br /&gt;
&lt;br /&gt;
http://www.setasign.com/products/fpdi/downloads&lt;br /&gt;
==Twitter Bootstrap==&lt;br /&gt;
&#039;&#039;/theme/boost/scss/bootstrap/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HTML, CSS, and JavaScript framework for developing responsive, mobile-first projects on the web.&lt;br /&gt;
&lt;br /&gt;
Version: 4.6.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2011-2021 Twitter, Inc.&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2011-2021 The Bootstrap Authors&lt;br /&gt;
&lt;br /&gt;
Licence: MIT&lt;br /&gt;
&lt;br /&gt;
https://getbootstrap.com/&lt;br /&gt;
==Typo3 Character Set Class==&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;
==truncate.js==&lt;br /&gt;
&#039;&#039;amd/src/truncate.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dead simple HTML-safe truncation via the DOM. It truncates HTML code, and has several options such as length, finishBlock, noBreak...&lt;br /&gt;
&lt;br /&gt;
Version: 0.0.1&lt;br /&gt;
&lt;br /&gt;
Licence: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/pathable/truncate&lt;br /&gt;
==Video.js==&lt;br /&gt;
&#039;&#039;/media/player/videojs/amd/src/video-lazy.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;/media/player/videojs/videojs/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
JavaScript library that makes it easier to work with and build on HTML5 video&lt;br /&gt;
&lt;br /&gt;
Version: 7.10.0&lt;br /&gt;
&lt;br /&gt;
Copyright Brightcove, Inc&lt;br /&gt;
&lt;br /&gt;
Licence: Apache&lt;br /&gt;
&lt;br /&gt;
http://videojs.com/&lt;br /&gt;
==Video.js - The Flash tech==&lt;br /&gt;
&#039;&#039;/media/player/videojs/amd/src/videojs-flash-lazy.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The Flash tech for video.js&lt;br /&gt;
&lt;br /&gt;
Version: 2.2.1&lt;br /&gt;
&lt;br /&gt;
Copyright Brightcove, Inc&lt;br /&gt;
&lt;br /&gt;
Licence: Apache&lt;br /&gt;
&lt;br /&gt;
https://github.com/videojs/videojs-flash&lt;br /&gt;
==Video.js - Custom Flash Player==&lt;br /&gt;
&#039;&#039;/media/player/videojs/amd/src/videojs-flash-lazy.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Custom Flash Player for VideoJS&lt;br /&gt;
&lt;br /&gt;
Version: 5.4.2&lt;br /&gt;
&lt;br /&gt;
Copyright Brightcove, Inc&lt;br /&gt;
&lt;br /&gt;
Licence: Apache&lt;br /&gt;
&lt;br /&gt;
https://github.com/videojs/video-js-swf/releases&lt;br /&gt;
==WebRTC adapter==&lt;br /&gt;
&#039;&#039;amd/src/adapter.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
JavaScript library to insulate apps from spec changes and prefix differences in WebRTC. The prefix differences are mostly gone these days but differences in behaviour between browsers remain.&lt;br /&gt;
&lt;br /&gt;
Version: 7.4.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2014, The WebRTC project authors. All rights reserved. Copyright (c) 2018, The adapter.js project authors. &lt;br /&gt;
&lt;br /&gt;
Licence: BSD 3 Clause&lt;br /&gt;
&lt;br /&gt;
https://github.com/webrtc/adapter&lt;br /&gt;
==XHProf==&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: 2.2.3&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;
==Yahoo User Interface==&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;
==ZipStream-PHP==&lt;br /&gt;
&#039;&#039;/lib/zipstream&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP ZIP Streaming Library&lt;br /&gt;
&lt;br /&gt;
Version: 2.1.0&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2007-2009 Paul Duncan &amp;lt;pabs@pablotron.org&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2014 Jonatan Männchen &amp;lt;jonatan@maennchen.ch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2014 Jesse G. Donat &amp;lt;donatj@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2018 Nicolas CARPi &amp;lt;nicolas.carpi@curie.fr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Licence: MIT&lt;br /&gt;
&lt;br /&gt;
https://packagist.org/packages/maennchen/zipstream-php&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=61682</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=61682"/>
		<updated>2022-02-01T11:59:18Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: Upgrade PHP-JWT third party library to latest: 6.0.0&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;
==ADOdb==&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.21.0&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-styleMDL-71712&lt;br /&gt;
&lt;br /&gt;
http://adodb.sourceforge.net&lt;br /&gt;
==Amazon S3==&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;
==Axe==&lt;br /&gt;
&#039;&#039;lib/behat/axe&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Accessibility testing engine for websites and other HTML-based user interfaces. &lt;br /&gt;
&lt;br /&gt;
Version: 3.5.5&lt;br /&gt;
&lt;br /&gt;
Copyright Deque Systems Inc.&lt;br /&gt;
&lt;br /&gt;
License: Mozilla Public License 2.0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://github.com/dequelabs/axe-core/tags&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
==Bennu==&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;
==CAS==&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.8&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;
==CFPropertyList==&lt;br /&gt;
&#039;&#039;/lib/plist&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP Implementation of Apple&#039;s PList (binary and XML)&lt;br /&gt;
&lt;br /&gt;
Version: 2.0.2&lt;br /&gt;
&lt;br /&gt;
Copyright © 2018 Teclib&lt;br /&gt;
&lt;br /&gt;
Copyright © 2009 Christian Kruse, Rodney Rehm&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
http://teclib.github.io/CFPropertyList/&lt;br /&gt;
==Chart.js==&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.9.4&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;
==CodeMirror==&lt;br /&gt;
&#039;&#039;lib/editor/atto/plugins/html/yui/src/codemirror&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
CodeMirror is a versatile text editor implemented in JavaScript for the browser.&lt;br /&gt;
&lt;br /&gt;
Version: 5.59.4&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/codemirror/CodeMirror&lt;br /&gt;
==Emoji-data==&lt;br /&gt;
&#039;&#039;lib/emoji-data&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Library to parse easily data and sprite sheets for emoji.&lt;br /&gt;
&lt;br /&gt;
Version 6.0.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2013 Cal Henderson&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/iamcal/emoji-data/&lt;br /&gt;
==EvalMath==&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;
==FLV player==&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;
==FPDI==&lt;br /&gt;
&#039;&#039;/mod/assign/feedback/editpdf/fpdi/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF.&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2020 Setasign GmbH &amp;amp; Co. KG, https://www.setasign.com&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://www.setasign.com/products/pdf-php-solutions/fpdi/&lt;br /&gt;
== GeoIp2 ==&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.11.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;
== GeoPattern==&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;
==Google APIs==&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;
==Graph Class==&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;
==H5P==&lt;br /&gt;
&#039;&#039;joubel/core&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The general H5P library&lt;br /&gt;
&lt;br /&gt;
Version: 1.24.2&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;
==H5P Editor PHP Library==&lt;br /&gt;
&#039;&#039;joubel/editor&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A general library that is supposed to be used in most PHP implementations of H5P.&lt;br /&gt;
&lt;br /&gt;
Version: moodle-1.20.2&lt;br /&gt;
&lt;br /&gt;
Copyright © Joubel&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/h5p/h5p-editor-php-library&lt;br /&gt;
==Horde==&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.23&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;
==html2text==&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.3.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;
==htmlArea==&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;
==HTML Purifier==&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.13.0&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
==http-message==&lt;br /&gt;
&amp;quot;/lib/http-message&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Provide a set of common interfaces for HTTP messages as described in RFC 7230 and RFC 7231&lt;br /&gt;
&lt;br /&gt;
Version: 1.0.1&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2014 PHP Framework Interoperability Group&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
==IP-Atlas==&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;
==Jabber - XMPPHP==&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;
==jQuery==&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.5.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;
==jQuery EU Cookie Law popups==&lt;br /&gt;
&#039;/admin/tool/policy/amd/src/jquery-eu-cookie-law-popup.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An easy-to-install jQuery plugin to create EU Cookie Law popups&lt;br /&gt;
&lt;br /&gt;
Version: 1.1.3&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2015 Richard Dancsi&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/wimagguc/jquery-eu-cookie-law-popup&lt;br /&gt;
==jQuery migrate==&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;
==jQuery UI==&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;
==JavaScript Beautifier==&lt;br /&gt;
&#039;&#039;yui/src/beautify&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Beautify HTML code in Atto.&lt;br /&gt;
&lt;br /&gt;
Version: 1.13.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://beautifier.io/&lt;br /&gt;
==Services_JSON==&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;
==JWT==&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: 6.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;
==ENUM==&lt;br /&gt;
&#039;&#039;lib/php-enum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP Enum implementation inspired from SplEnum&lt;br /&gt;
&lt;br /&gt;
Version: 1.7.7&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2015 My C-Labs&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/myclabs/php-enum&lt;br /&gt;
==kses==&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;
==less.php==&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;
Minimal lightweight simple logging for JavaScript.&lt;br /&gt;
&lt;br /&gt;
Version 1.7.1&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;
==LTI Tool Provider Library for PHP==&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;
==MathJax==&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;
* Default MathJax version: 2.7.9 (Moodle 3.11)&lt;br /&gt;
* License: Apache 2.0&lt;br /&gt;
* Homepage: https://www.mathjax.org/&lt;br /&gt;
==MatthiasMullie\Minify==&lt;br /&gt;
CSS &amp;amp; JavaScript minifier, in PHP&lt;br /&gt;
&lt;br /&gt;
Version 1.3.63&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;
&lt;br /&gt;
==MatthiasMullie\Path converter==&lt;br /&gt;
CSS path converter, in PHP&lt;br /&gt;
&lt;br /&gt;
Version 1.1.3&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/matthiasmullie/path-converter&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.9.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/MaxMind-DB-Reader-php/&lt;br /&gt;
==MDN Polyfills==&lt;br /&gt;
&#039;&#039;/lib/mdn-polyfills&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A collection of side-effect ECMAScript modules. Minimized, mangled and extremely small thanks to Rollup - next-generation ES6 module bundler.&lt;br /&gt;
&lt;br /&gt;
Version: 5.20.0&lt;br /&gt;
Version url-polyfill: 1.1.12&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://www.npmjs.com/package/mdn-polyfills&lt;br /&gt;
==mimeTeX==&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.77&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;
==MongoDB PHP Library==&lt;br /&gt;
&#039;&#039;/cache/stores/mongodb/MongoDB/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
MongoDB PHP library&lt;br /&gt;
&lt;br /&gt;
Version: 1.8.0&lt;br /&gt;
&lt;br /&gt;
License: apache 2.0&lt;br /&gt;
&lt;br /&gt;
https://docs.mongodb.com/php-library/&lt;br /&gt;
==Mustache.js==&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.1.0&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;
==Mustache==&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.13.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;
==mp3player==&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;
==overlibmws==&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;
==PclZip==&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;
==PEAR OLE Classes==&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;
==PEAR Spreadsheet_Excel_Writer==&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;
==PEAR HTML_Quickform==&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;
==PEAR HTML_Quickform_Renderer_Tableless==&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;
==PEAR HTML_QuickForm_DHTMLRulesTableless==&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;
==PEAR HTML_Common==&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;
==PEAR XML_Parser==&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;
==PHP-CSS-Parser==&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.1&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;
==PHPExcel==&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;
==PhpSpreadsheet==&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.16.0&lt;br /&gt;
&lt;br /&gt;
License: LGPL&lt;br /&gt;
&lt;br /&gt;
https://github.com/PHPOffice/PhpSpreadsheet&lt;br /&gt;
==PHP mailer==&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.2.0&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;
==PHP Markdown==&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.9.0 (with modifications)&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;
==PHP-ML==&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;
 * @copyright 2016-2018 Arkadiusz Kondas &amp;lt;arkadiusz.kondas[at]gmail&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://php-ml.readthedocs.io/&lt;br /&gt;
==Popper.js==&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;
==Rangy==&lt;br /&gt;
&amp;quot;/lib/editor/atto/yui/src/rangy/js/*.*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A cross-browser JavaScript range and selection library.&lt;br /&gt;
&lt;br /&gt;
Version: 1.3.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2014 Tim Down&lt;br /&gt;
&lt;br /&gt;
License: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/timdown/rangy&lt;br /&gt;
==RTLCSS for PHP==&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;
==RequireJS==&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;
==scssphp==&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.4.1&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;
==SimplePie==&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.6&lt;br /&gt;
&lt;br /&gt;
License: BSD&lt;br /&gt;
&lt;br /&gt;
https://github.com/simplepie/simplepie&lt;br /&gt;
==Snoopy==&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;
==SMTP class==&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;
==Spike PHPCoverage==&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;
==Spout==&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.1.0&lt;br /&gt;
&lt;br /&gt;
License: Apache&lt;br /&gt;
&lt;br /&gt;
https://github.com/box/spout/&lt;br /&gt;
==TCPDF Class==&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.4.1&lt;br /&gt;
&lt;br /&gt;
Copyright Olivier PLATHEY&lt;br /&gt;
&lt;br /&gt;
License: LGPL-v3.0-only&lt;br /&gt;
&lt;br /&gt;
http://www.setasign.com/products/fpdi/downloads&lt;br /&gt;
==Twitter Bootstrap==&lt;br /&gt;
&#039;&#039;/theme/boost/scss/bootstrap/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HTML, CSS, and JavaScript framework for developing responsive, mobile-first projects on the web.&lt;br /&gt;
&lt;br /&gt;
Version: 4.6.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2011-2021 Twitter, Inc.&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2011-2021 The Bootstrap Authors&lt;br /&gt;
&lt;br /&gt;
Licence: MIT&lt;br /&gt;
&lt;br /&gt;
https://getbootstrap.com/&lt;br /&gt;
==Typo3 Character Set Class==&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;
==truncate.js==&lt;br /&gt;
&#039;&#039;amd/src/truncate.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dead simple HTML-safe truncation via the DOM. It truncates HTML code, and has several options such as length, finishBlock, noBreak...&lt;br /&gt;
&lt;br /&gt;
Version: 0.0.1&lt;br /&gt;
&lt;br /&gt;
Licence: MIT&lt;br /&gt;
&lt;br /&gt;
https://github.com/pathable/truncate&lt;br /&gt;
==Video.js==&lt;br /&gt;
&#039;&#039;/media/player/videojs/amd/src/video-lazy.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;/media/player/videojs/videojs/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
JavaScript library that makes it easier to work with and build on HTML5 video&lt;br /&gt;
&lt;br /&gt;
Version: 7.10.0&lt;br /&gt;
&lt;br /&gt;
Copyright Brightcove, Inc&lt;br /&gt;
&lt;br /&gt;
Licence: Apache&lt;br /&gt;
&lt;br /&gt;
http://videojs.com/&lt;br /&gt;
==Video.js - The Flash tech==&lt;br /&gt;
&#039;&#039;/media/player/videojs/amd/src/videojs-flash-lazy.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The Flash tech for video.js&lt;br /&gt;
&lt;br /&gt;
Version: 2.2.1&lt;br /&gt;
&lt;br /&gt;
Copyright Brightcove, Inc&lt;br /&gt;
&lt;br /&gt;
Licence: Apache&lt;br /&gt;
&lt;br /&gt;
https://github.com/videojs/videojs-flash&lt;br /&gt;
==Video.js - Custom Flash Player==&lt;br /&gt;
&#039;&#039;/media/player/videojs/amd/src/videojs-flash-lazy.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Custom Flash Player for VideoJS&lt;br /&gt;
&lt;br /&gt;
Version: 5.4.2&lt;br /&gt;
&lt;br /&gt;
Copyright Brightcove, Inc&lt;br /&gt;
&lt;br /&gt;
Licence: Apache&lt;br /&gt;
&lt;br /&gt;
https://github.com/videojs/video-js-swf/releases&lt;br /&gt;
==WebRTC adapter==&lt;br /&gt;
&#039;&#039;amd/src/adapter.js&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
JavaScript library to insulate apps from spec changes and prefix differences in WebRTC. The prefix differences are mostly gone these days but differences in behaviour between browsers remain.&lt;br /&gt;
&lt;br /&gt;
Version: 7.4.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2014, The WebRTC project authors. All rights reserved. Copyright (c) 2018, The adapter.js project authors. &lt;br /&gt;
&lt;br /&gt;
Licence: BSD 3 Clause&lt;br /&gt;
&lt;br /&gt;
https://github.com/webrtc/adapter&lt;br /&gt;
==XHProf==&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: 2.2.3&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;
==Yahoo User Interface==&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;
==ZipStream-PHP==&lt;br /&gt;
&#039;&#039;/lib/zipstream&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP ZIP Streaming Library&lt;br /&gt;
&lt;br /&gt;
Version: 2.1.0&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2007-2009 Paul Duncan &amp;lt;pabs@pablotron.org&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2014 Jonatan Männchen &amp;lt;jonatan@maennchen.ch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2014 Jesse G. Donat &amp;lt;donatj@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2018 Nicolas CARPi &amp;lt;nicolas.carpi@curie.fr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Licence: MIT&lt;br /&gt;
&lt;br /&gt;
https://packagist.org/packages/maennchen/zipstream-php&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Creating_a_web_service_client&amp;diff=61192</id>
		<title>Creating a web service client</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Creating_a_web_service_client&amp;diff=61192"/>
		<updated>2021-09-01T10:50:21Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: Related to the comment in https://tracker.moodle.org/browse/MDL-72436&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle_2.0}}&lt;br /&gt;
[[Image:Moodle web service function documentation.jpg|thumb]]You need to know how to [https://docs.moodle.org/en/How_to_create_and_enable_a_web_service setup a web service] first.&lt;br /&gt;
To see the API Documentation, connect as Admin and go to &#039;&#039;&#039;Administration &amp;gt; Plugins &amp;gt; Web services &amp;gt; API Documentation&#039;&#039;&#039;&lt;br /&gt;
== Simple REST request example ==&lt;br /&gt;
To quickly test the web service works you can visit the end point from the browser or via curl. For example to call a function via REST protocol:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$ curl &amp;quot;https://your.site.com/webservice/rest/server.php?wstoken=...&amp;amp;wsfunction=...&amp;amp;moodlewsrestformat=json&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Customise the parameters &amp;lt;tt&amp;gt;wstoken&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;wsfunction&amp;lt;/tt&amp;gt; to match the server side setup. Append additional parameters for the function call as needed with &amp;quot;&amp;amp;parameter_name=param&amp;quot;, or if your parameter is an array then use &amp;quot;&amp;amp;array_name[index][parameter_name]=param&amp;quot;. With the core_user_create_users function&#039;s (required) parameters for example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$ curl &amp;quot;...&amp;amp;moodlewsrestformat=json&amp;amp;wsfunction=core_user_create_users&amp;amp;moodlewsrestformat=json&amp;amp;users[0][username]=testuser&amp;amp;users[0][firstname]=Anne&amp;amp;users[0][lastname]=Example...&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The &amp;lt;tt&amp;gt;moodlewsrestformat&amp;lt;/tt&amp;gt; parameter affects the response format and can be either &amp;lt;tt&amp;gt;xml&amp;lt;/tt&amp;gt; (default) or &amp;lt;tt&amp;gt;json&amp;lt;/tt&amp;gt;.&lt;br /&gt;
== Officially supported protocols ==&lt;br /&gt;
; REST : The Moodle REST server accepts GET/POST parameters and return XML/JSON values. This server is not RESTfull.&lt;br /&gt;
; SOAP : The Moodle SOAP server is based on the Zend SOAP server (itself based on the PHP SOAP server). Zend publishes [http://framework.zend.com/manual/en/zend.soap.client.html a Zend SOAP client]. The current server implementation doesn&#039;t fully work with Java/.Net because we didn&#039;t generated a fully describe WSDL yet. If you are working on a Java/.Net client, follow or participate to the tracker issues MDL-28988 / MDL-28989&lt;br /&gt;
; XML-RPC : The Moodle XML-RPC server is based on Zend XML-RPC server. Zend also publishes [http://framework.zend.com/manual/en/zend.xmlrpc.client.html a Zend XML-RPC client].&lt;br /&gt;
; AMF (Versions &amp;lt; Moodle 3.0) : the Moodle AMF server is based on the Zend AMF server. The test client can be found in &#039;&#039;Settings blocks &amp;gt; Site Administration &amp;gt; Development &amp;gt; Web service test client &amp;gt; AMF Test client&#039;&#039;.&lt;br /&gt;
== Demo client examples ==&lt;br /&gt;
Demo client sample codes can be downloaded on [https://github.com/moodlehq/sample-ws-clients Github].&lt;br /&gt;
&lt;br /&gt;
For HTML5 app creators, you can also find:&lt;br /&gt;
* a nice [https://github.com/jleyva/umm phonegap / Jquery mobile template]&lt;br /&gt;
* a proof of concept of [http://moodle.org/mod/forum/discuss.php?d=189882 javascript cross-domain with Sencha Touch 1.1]&lt;br /&gt;
Node.js apps can use the [https://github.com/mudrd8mz/node-moodle-client moodle-client] module.&lt;br /&gt;
&lt;br /&gt;
A [http://moodle.org/mod/forum/discuss.php?d=199453 Java Library for REST] can be found on [http://sourceforge.net/projects/moodlerestjava/ Sourceforge].&lt;br /&gt;
&lt;br /&gt;
A [https://github.com/llagerlof/MoodleRest PHP Library for REST] can be found on GitHub.&lt;br /&gt;
&lt;br /&gt;
A [https://github.com/zaddok/moodle Go Library for REST] can be found on GitHub.&lt;br /&gt;
== How to get a user token ==&lt;br /&gt;
{{Moodle_2.2}}&lt;br /&gt;
Your client can call the script located in /login/token.php with a simple HTTP request. We highly recommend to do it securely with HTTPS.&lt;br /&gt;
The required parameters are:&lt;br /&gt;
* username&lt;br /&gt;
* password&lt;br /&gt;
* service shortname - The service shortname is usually hardcoded in the pre-build service (db/service.php files). Moodle administrator will be able to edit shortnames for service created on the fly: MDL-29807. If you want to use the Mobile service, its shortname is &amp;lt;tt&amp;gt;moodle_mobile_app&amp;lt;/tt&amp;gt;. Also useful to know, the database shortname field can be found in the table named external_services.&lt;br /&gt;
Request:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
https://www.yourmoodle.com/login/token.php?username=USERNAME&amp;amp;password=PASSWORD&amp;amp;service=SERVICESHORTNAME&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Response: (HTTP)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{token:4ed876sd87g6d8f7g89fsg6987dfh78d}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Response: (HTTPS) - Since at least M3.9&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;token&amp;quot;: &amp;quot;9859148a89546f0efe716a58e340849b&amp;quot;,&lt;br /&gt;
    &amp;quot;privatetoken&amp;quot;: &amp;quot;8RpHJevJ42W7QN23OMkeYcdOYw3YfWgWGKsak7WB3Z88wcApSCVZ9TgY6M5fEO1m&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Difference between Moodle versions ===&lt;br /&gt;
* Moodle 2.2 and later: the script can generate user tokens for any service shortname (of course users must be allowed on the service, see [[:en:How to create and enable a web service|How to create and enable a web service]]).&lt;br /&gt;
* Moodle 2.1: the script can only generate tokens for the official built-in mobile service. However the script can returns tokens for other services, they just need to have been previously generated.&lt;br /&gt;
=== About service shortname ===&lt;br /&gt;
At the moment a service can have a shortname if you:&lt;br /&gt;
* create the service as a built-in service (in db/services.php files) &lt;br /&gt;
* add the shortname manually in the DB. Note: we&#039;ll add the admin UI for shortname later (MDL-30229)&lt;br /&gt;
== Text formats ==&lt;br /&gt;
=== Moodle 2.0 to 2.2 ===&lt;br /&gt;
{{Moodle_2.0}}&lt;br /&gt;
HTML is the format sent/received by web service functions. All returned file urls are converted to &#039;http://xxxx/webservice/pluginfile.php/yyyyyyyy&#039;&lt;br /&gt;
=== Moodle 2.3 and later ===&lt;br /&gt;
{{Moodle_2.3}}&lt;br /&gt;
Since Moodle 2.3 you can add few GET/POST parameters to your request (for devs who have a good knowledge of File API and format_text()):&lt;br /&gt;
* &#039;&#039;moodlewssettingraw&#039;&#039; =&amp;gt; false by default. If true, the function will not apply format_text() to description/summary/textarea. The function will return the raw content from the DB.&lt;br /&gt;
* &#039;&#039;moodlewssettingfileurl&#039;&#039; =&amp;gt; true by default, returned file urls are converted to &#039;http://xxxx/webservice/pluginfile.php/yyyyyyyy&#039;. If false the raw file url content from the DB is returned (e.g. @@PLUGINFILE@@)&lt;br /&gt;
* &#039;&#039;moodlewssettingfilter&#039;&#039; =&amp;gt; false by default. If true, the function will filter during format_text()&lt;br /&gt;
=== Moodle 3.5 and later ===&lt;br /&gt;
{{Moodle_3.5}}&lt;br /&gt;
* &#039;&#039;moodlewssettinglang&#039;&#039; =&amp;gt; to force a session language for when retrieving information (same behaviour than using the language selector in the site)&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Web services|Web services developer documentation]]&lt;br /&gt;
* [[:en:Web_services|Web services user documentation]]&lt;br /&gt;
* [[Creating a web service and a web service function | Implement a web service and a web service function]]&lt;br /&gt;
* [[Web_services_Roadmap|Web service Roadmap]]&lt;br /&gt;
* [https://moodle.org/plugins/webservice_restful A RESTful webservice plugin] by Catalyst Moodle partner.&lt;br /&gt;
[[Category:Web Services]]&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_4.0_developer_update&amp;diff=61132</id>
		<title>Moodle 4.0 developer update</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_4.0_developer_update&amp;diff=61132"/>
		<updated>2021-08-27T07:13:36Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: /* Behat changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 4.0}}This page will highlight the important changes that are coming in Moodle 4.0 for developers. Including how the UX improvements impact custom themes, relevant API changes, and what you can do as developer to prepare for the 4.0 release.&lt;br /&gt;
== UX and theme changes ==&lt;br /&gt;
== Navigation ==&lt;br /&gt;
== Course creation ==&lt;br /&gt;
== API changes ==&lt;br /&gt;
== Behat changes ==&lt;br /&gt;
To make behat tests more readable and easy to maintain, it is recommended to use the most direct steps to get what the test needs. So since [https://tracker.moodle.org/browse/MDL-66335 MDL-66335] was integrated, and the step was improved in [https://tracker.moodle.org/browse/MDL-72179 MDL-72179] is highly recommended to use&lt;br /&gt;
 I am on the &amp;quot;Activity name&amp;quot; &amp;quot;[modname] activity&amp;quot; page &lt;br /&gt;
or&lt;br /&gt;
 I am on the &amp;quot;Activity name&amp;quot; &amp;quot;[modname] activity&amp;quot; page logged in as &amp;quot;user&amp;quot;&lt;br /&gt;
instead of navigating to the activity via&lt;br /&gt;
 I am on &amp;quot;Course&amp;quot; course homepage&lt;br /&gt;
 I follow &amp;quot;Activity name&amp;quot;&lt;br /&gt;
Now that [https://docs.moodle.org/dev/Prototypes#Course_creation_improvements Course index] ([https://tracker.moodle.org/browse/MDL-71209 MDL-71209]) is integrated but the project is not stable, these behat steps&lt;br /&gt;
 I am on &amp;quot;Course&amp;quot; course homepage&lt;br /&gt;
 I follow &amp;quot;Activity name&amp;quot;&lt;br /&gt;
will fail using Boost theme.&lt;br /&gt;
&lt;br /&gt;
The reason for it is that the drawer used in Boost is hiding the course index. So when the test is trying to follow an &amp;quot;Activity name&amp;quot; link, it finds two different links:&lt;br /&gt;
* one in the course index&lt;br /&gt;
* another one in the course main content.&lt;br /&gt;
But the first one, the one in the course index, is hidden by the drawer, and the test fails.&lt;br /&gt;
&lt;br /&gt;
However the recommended behat steps&lt;br /&gt;
 I am on the &amp;quot;Activity name&amp;quot; &amp;quot;[modname] activity&amp;quot; page &lt;br /&gt;
or&lt;br /&gt;
 I am on the &amp;quot;Activity name&amp;quot; &amp;quot;[modname] activity&amp;quot; page logged in as &amp;quot;user&amp;quot;&lt;br /&gt;
work &#039;&#039;&#039;fine&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Some of the failing behats are fixed in [https://github.com/ferranrecio/moodle/commit/c79d58a50b48aa6891ff1d3ba92a7b0ab2393c88#diff-fdf8b0b1eade3b69eaad038de0ddd7c8dec2be7afa32dc693fb929739a49fa9dR32 MDL-71209]&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 And I am on the &amp;quot;Test assignment name&amp;quot; &amp;quot;assign activity&amp;quot; page logged in as teacher1&lt;br /&gt;
instead of:&lt;br /&gt;
 When I log in as &amp;quot;teacher1&amp;quot;&lt;br /&gt;
 And I am on &amp;quot;Course&amp;quot; course homepage&lt;br /&gt;
 And I follow &amp;quot;Test assignment name&amp;quot;&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_4.0_developer_update&amp;diff=61127</id>
		<title>Moodle 4.0 developer update</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_4.0_developer_update&amp;diff=61127"/>
		<updated>2021-08-26T15:21:56Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: /* Behat changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 4.0}}This page will highlight the important changes that are coming in Moodle 4.0 for developers. Including how the UX improvements impact custom themes, relevant API changes, and what you can do as developer to prepare for the 4.0 release.&lt;br /&gt;
== UX and theme changes ==&lt;br /&gt;
== Navigation ==&lt;br /&gt;
== Course creation ==&lt;br /&gt;
== API changes ==&lt;br /&gt;
== Behat changes ==&lt;br /&gt;
To make behat tests more readable and easy to maintain is recommended to use the most direct step to get what the test needs. So since [https://tracker.moodle.org/browse/MDL-66335 MDL-66335] was integrated, and the step was improved in [https://tracker.moodle.org/browse/MDL-72179 MDL-72179] is highly recommended to use&lt;br /&gt;
 I am on the &amp;quot;activity name&amp;quot; page &lt;br /&gt;
or&lt;br /&gt;
 I am on the &amp;quot;activity name&amp;quot; page logged in as &amp;quot;user&amp;quot;&lt;br /&gt;
instead of navigating to the activity via&lt;br /&gt;
 I am on &amp;quot;Course&amp;quot; course homepage&lt;br /&gt;
 I follow &amp;quot;Activity name&amp;quot;&lt;br /&gt;
Now that [https://docs.moodle.org/dev/Prototypes#Course_creation_improvements Course index] ([https://tracker.moodle.org/browse/MDL-71209 MDL-71209]) is integrated but the project is not stable,&lt;br /&gt;
 I am on &amp;quot;Course&amp;quot; course homepage&lt;br /&gt;
 I follow &amp;quot;Activity name&amp;quot;&lt;br /&gt;
behat steps will fail using Boost theme.&lt;br /&gt;
&lt;br /&gt;
The reason for it is that the drawer used in Boost is hiding the course index. So when test is trying to follow an &amp;quot;Activity name&amp;quot; link, it finds two different links:&lt;br /&gt;
&lt;br /&gt;
* one in the course index&lt;br /&gt;
* another one in the course main content.&lt;br /&gt;
&lt;br /&gt;
But the first one, the one in the course index, is hidden by the drawer, and test fails.&lt;br /&gt;
&lt;br /&gt;
But the recommended behat steps&lt;br /&gt;
 I am on the &amp;quot;activity name&amp;quot; page &lt;br /&gt;
or&lt;br /&gt;
 I am on the &amp;quot;activity name&amp;quot; page logged in as &amp;quot;user&amp;quot;&lt;br /&gt;
work &#039;&#039;&#039;fine&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Some of failing behats are fixed in [https://github.com/ferranrecio/moodle/commit/c79d58a50b48aa6891ff1d3ba92a7b0ab2393c88#diff-fdf8b0b1eade3b69eaad038de0ddd7c8dec2be7afa32dc693fb929739a49fa9dR32 MDL-71209]&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 And I am on the &amp;quot;Test assignment name&amp;quot; &amp;quot;assign activity&amp;quot; page logged in as teacher1&lt;br /&gt;
instead of:&lt;br /&gt;
 When I log in as &amp;quot;teacher1&amp;quot;&lt;br /&gt;
 And I am on &amp;quot;Course&amp;quot; course homepage&lt;br /&gt;
 And I follow &amp;quot;Test assignment name&amp;quot;&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:Contenttype_folder.png&amp;diff=57680</id>
		<title>File:Contenttype folder.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:Contenttype_folder.png&amp;diff=57680"/>
		<updated>2020-06-29T16:42:55Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: Aanabit uploaded a new version of File:Contenttype folder.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File structure for the h5p content type plugin&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:Contenttype_folder.png&amp;diff=57679</id>
		<title>File:Contenttype folder.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:Contenttype_folder.png&amp;diff=57679"/>
		<updated>2020-06-29T16:41:19Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: Aanabit uploaded a new version of File:Contenttype folder.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File structure for the h5p content type plugin&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:Contenttype_folder.png&amp;diff=57678</id>
		<title>File:Contenttype folder.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:Contenttype_folder.png&amp;diff=57678"/>
		<updated>2020-06-29T16:40:49Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: Aanabit uploaded a new version of File:Contenttype folder.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File structure for the h5p content type plugin&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:Contenttype_folder.png&amp;diff=57677</id>
		<title>File:Contenttype folder.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:Contenttype_folder.png&amp;diff=57677"/>
		<updated>2020-06-29T16:40:04Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: Aanabit uploaded a new version of File:Contenttype folder.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File structure for the h5p content type plugin&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Content_bank_content_types&amp;diff=57676</id>
		<title>Content bank content types</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Content_bank_content_types&amp;diff=57676"/>
		<updated>2020-06-29T16:34:37Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Content bank content types reside in the &#039;&#039;&#039;/contentbank/contenttype&#039;&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
Each plugin is in a separate subdirectory and consists of a number of &#039;mandatory files&#039; and any other files the developer is going to use. Please note, any reference to &amp;lt;contenttypename&amp;gt; in this documentation should be replaced by the name of your content type.&lt;br /&gt;
&lt;br /&gt;
Below is an example of the file structure for the h5p content type plugin.&lt;br /&gt;
&lt;br /&gt;
[[File:Contenttype folder.png]]&lt;br /&gt;
&lt;br /&gt;
== Standard Files and their Functions ==&lt;br /&gt;
&lt;br /&gt;
There are several files that are crucial to Moodle. These files are used to install your plugin and then integrate it into the Moodle system. Each file has a particular function, some of the files are not necessary and are only created when wanting to use the functionality it offers. Below are the list of most commonly used files.&lt;br /&gt;
&lt;br /&gt;
=== DB Folder ===&lt;br /&gt;
&lt;br /&gt;
==== access.php ====&lt;br /&gt;
&lt;br /&gt;
This is where you define what capabilities your plugin will create. Note, if you add new capabilities to this file after your plugin has been installed you will need to increase the version number in your version.php file (discussed later) in order for them to be installed.&lt;br /&gt;
&lt;br /&gt;
An example of the file is below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$capabilities = array(&lt;br /&gt;
    &#039;contenttype/h5p:access&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;captype&#039; =&amp;gt; &#039;read&#039;,&lt;br /&gt;
        &#039;contextlevel&#039; =&amp;gt; CONTEXT_COURSE,&lt;br /&gt;
        &#039;archetypes&#039; =&amp;gt; array(&lt;br /&gt;
            &#039;manager&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
            &#039;coursecreator&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
            &#039;editingteacher&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every content type needs to implement a ‘contenttype/&amp;lt;contenttypename&amp;gt;:access’ capability. This capability controls the access to all the contents managed and controlled by this plugin.&lt;br /&gt;
&lt;br /&gt;
If your content type plugin allows uploading files with a certain extension, you would need to create contenttype/&amp;lt;contenttypename&amp;gt;:upload’ capability. This capability controls the permissions to create content uploading a file.&lt;br /&gt;
&lt;br /&gt;
If your content type plugin implements an editor and allows content creation or edition via that editor, you need to create contenttype/&amp;lt;contenttypename&amp;gt;:useeditor’ capability. This capability controls the permissions to create content and edit it using the implemented editor.&lt;br /&gt;
&lt;br /&gt;
For consistency and ease of use for the teachers it is advisable to use the following archetypes with the &amp;lt;code php&amp;gt;contenttype/&amp;lt;contenttypename&amp;gt;:access&amp;lt;/code&amp;gt; capability&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&#039;contenttype/CONTENTTYPENAME:access&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;captype&#039; =&amp;gt; &#039;read&#039;,&lt;br /&gt;
        &#039;contextlevel&#039; =&amp;gt; CONTEXT_COURSE,&lt;br /&gt;
        &#039;archetypes&#039; =&amp;gt; array(&lt;br /&gt;
            &#039;manager&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
            &#039;coursecreator&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
            &#039;editingteacher&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
        )&lt;br /&gt;
    )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== install.xml ====&lt;br /&gt;
&lt;br /&gt;
This file is used on installation of your plugin; it defines the associated database tables. Content bank already implements ‘contentbank_content’ table contains ‘configdata’ and ‘instanceid’ fields. Those fields are not used by the main content bank, so are free for the plugins to use them.&lt;br /&gt;
&lt;br /&gt;
Those fields are there to make it easier to develop a new contenttype plugin with no new table, but you can of course create the new tables you need using  the [[XMLDB_editor]]. Please note, in the XML file the table names are listed without the config.php prefix, this is automatically used when creating the tables and does not need to be specified.&lt;br /&gt;
&lt;br /&gt;
You can use the ‘instanceid’ field as a foreign key  to any other table your plugins needs, and ‘configdata’ for any information your plugin needs, such some JSON content. There is no need to use them; those fields are there just to help with your plugin.&lt;br /&gt;
&lt;br /&gt;
The contentbank_content table definition is below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;TABLE NAME=&amp;quot;contentbank_content&amp;quot; COMMENT=&amp;quot;This table stores content data in the content bank.&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;FIELDS&amp;gt;&lt;br /&gt;
    &amp;lt;FIELD NAME=&amp;quot;id&amp;quot; TYPE=&amp;quot;int&amp;quot; LENGTH=&amp;quot;10&amp;quot; NOTNULL=&amp;quot;true&amp;quot; SEQUENCE=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FIELD NAME=&amp;quot;name&amp;quot; TYPE=&amp;quot;char&amp;quot; LENGTH=&amp;quot;255&amp;quot; NOTNULL=&amp;quot;true&amp;quot; SEQUENCE=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FIELD NAME=&amp;quot;contenttype&amp;quot; TYPE=&amp;quot;char&amp;quot; LENGTH=&amp;quot;100&amp;quot; NOTNULL=&amp;quot;true&amp;quot; SEQUENCE=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FIELD NAME=&amp;quot;contextid&amp;quot; TYPE=&amp;quot;int&amp;quot; LENGTH=&amp;quot;10&amp;quot; NOTNULL=&amp;quot;true&amp;quot; SEQUENCE=&amp;quot;false&amp;quot; COMMENT=&amp;quot;References context.id.&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FIELD NAME=&amp;quot;instanceid&amp;quot; TYPE=&amp;quot;int&amp;quot; LENGTH=&amp;quot;10&amp;quot; NOTNULL=&amp;quot;false&amp;quot; SEQUENCE=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FIELD NAME=&amp;quot;configdata&amp;quot; TYPE=&amp;quot;text&amp;quot; NOTNULL=&amp;quot;false&amp;quot; SEQUENCE=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FIELD NAME=&amp;quot;usercreated&amp;quot; TYPE=&amp;quot;int&amp;quot; LENGTH=&amp;quot;10&amp;quot; NOTNULL=&amp;quot;true&amp;quot; SEQUENCE=&amp;quot;false&amp;quot; COMMENT=&amp;quot;The original author of the content&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FIELD NAME=&amp;quot;usermodified&amp;quot; TYPE=&amp;quot;int&amp;quot; LENGTH=&amp;quot;10&amp;quot; NOTNULL=&amp;quot;false&amp;quot; SEQUENCE=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FIELD NAME=&amp;quot;timecreated&amp;quot; TYPE=&amp;quot;int&amp;quot; LENGTH=&amp;quot;10&amp;quot; NOTNULL=&amp;quot;true&amp;quot; DEFAULT=&amp;quot;0&amp;quot; SEQUENCE=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FIELD NAME=&amp;quot;timemodified&amp;quot; TYPE=&amp;quot;int&amp;quot; LENGTH=&amp;quot;10&amp;quot; NOTNULL=&amp;quot;false&amp;quot; DEFAULT=&amp;quot;0&amp;quot; SEQUENCE=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/FIELDS&amp;gt;&lt;br /&gt;
  &amp;lt;KEYS&amp;gt;&lt;br /&gt;
    &amp;lt;KEY NAME=&amp;quot;primary&amp;quot; TYPE=&amp;quot;primary&amp;quot; FIELDS=&amp;quot;id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;KEY NAME=&amp;quot;contextid&amp;quot; TYPE=&amp;quot;foreign&amp;quot; FIELDS=&amp;quot;contextid&amp;quot; REFTABLE=&amp;quot;context&amp;quot; REFFIELDS=&amp;quot;id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;KEY NAME=&amp;quot;usermodified&amp;quot; TYPE=&amp;quot;foreign&amp;quot; FIELDS=&amp;quot;usermodified&amp;quot; REFTABLE=&amp;quot;user&amp;quot; REFFIELDS=&amp;quot;id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;KEY NAME=&amp;quot;usercreated&amp;quot; TYPE=&amp;quot;foreign&amp;quot; FIELDS=&amp;quot;usercreated&amp;quot; REFTABLE=&amp;quot;user&amp;quot; REFFIELDS=&amp;quot;id&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/KEYS&amp;gt;&lt;br /&gt;
  &amp;lt;INDEXES&amp;gt;&lt;br /&gt;
    &amp;lt;INDEX NAME=&amp;quot;name&amp;quot; UNIQUE=&amp;quot;false&amp;quot; FIELDS=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;INDEX NAME=&amp;quot;instance&amp;quot; UNIQUE=&amp;quot;false&amp;quot; FIELDS=&amp;quot;contextid, contenttype, instanceid&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/INDEXES&amp;gt;&lt;br /&gt;
&amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== upgrade.php ====&lt;br /&gt;
&lt;br /&gt;
This file handles upgrading the plugin to match the latest version. After creating a content type and using it extensively on your site (and others) you may want to extend the functionality of your plugin. In some cases you need to add new fields to your plugin’s tables, edit the existing indexes, default values, etc. This is where the upgrade.php script becomes used. The install.xml file is only executed once, that is when your plugin is first installed, so changing the schema in this file does not change the database structure for users who have already installed the plugin. So, to perform this upgrade you need to do three things.&lt;br /&gt;
&lt;br /&gt;
1. Ensure the install.xml file implements the latest table structure.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Add the instructions for the upgrade.php files.&amp;lt;br /&amp;gt;&lt;br /&gt;
3. Update the version number in your version.php file.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example we are only adding two new columns to the database, so we can use the [[XMLDB_editor]] to change the install.xml file AND create the upgrade path.&lt;br /&gt;
&lt;br /&gt;
An example of the upgrade.php file is as follows -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
function xmldb_certificate_upgrade($oldversion=0) {&lt;br /&gt;
    if ($oldversion &amp;lt; 2020062901) {&lt;br /&gt;
        // Add new fields to certificate table.&lt;br /&gt;
        $table = new xmldb_table(&#039;certificate&#039;);&lt;br /&gt;
        $field = new xmldb_field(&#039;showcode&#039;);&lt;br /&gt;
        $field-&amp;gt;set_attributes(XMLDB_TYPE_INTEGER, &#039;1&#039;, XMLDB_UNSIGNED, XMLDB_NOTNULL, null, &#039;0&#039;, &#039;savecert&#039;);&lt;br /&gt;
        if (!$dbman-&amp;gt;field_exists($table, $field)) {&lt;br /&gt;
            $dbman-&amp;gt;add_field($table, $field);&lt;br /&gt;
        }&lt;br /&gt;
        // Add new fields to certificate_issues table.&lt;br /&gt;
        $table = new xmldb_table(&#039;certificate_issues&#039;);&lt;br /&gt;
        $field = new xmldb_field(&#039;code&#039;);&lt;br /&gt;
        $field-&amp;gt;set_attributes(XMLDB_TYPE_CHAR, &#039;50&#039;, null, null, null, null, &#039;certificateid&#039;);&lt;br /&gt;
        if (!$dbman-&amp;gt;field_exists($table, $field)) {&lt;br /&gt;
            $dbman-&amp;gt;add_field($table, $field);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        upgrade_plugin_savepoint(true, 2020062901, &#039;contenttype&#039;, &#039;&amp;lt;contenttypename&amp;gt;&#039;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whenever you change the version in your version.php plugin Moodle will look to see if anything needs to be done. The version that is stored in the database is passed to the xmldb_&amp;lt;contenttypename&amp;gt;_upgrade function as the variable $oldversion in this case. In this example lets say that the initial version was 2020012000, since this is less than 2020062901 (the new value we put in the version.php file) we will execute the code in the if statement which will then update the version stored in the database meaning this if statement is never executed again. For more extensive details on this please see [[Upgrade_API]].&lt;br /&gt;
&lt;br /&gt;
=== Lang Folder ===&lt;br /&gt;
&lt;br /&gt;
This is where you store any strings you are going to use in your plugin. Each language has a specific folder that needs to be created in order for it to be used with your plugin. In this case we are going to use the English language. A folder called en is created in your lang folder that contains a file called ‘contenttype_&amp;lt;contenttypename&amp;gt;.php’ that lists the translations of your string. For example, your plugin may have a &#039;H5P interactive content&#039; description, rather than hard coding this term in your form, you use a placeholder that will then retrieve the appropriate string depending on the language being used on your Moodle site. There is one mandatory placeholder for plugins called &#039;pluginname&#039; that Moodle will use when listing this plugin. To keep with Moodle standards you should order your strings alphabetically by the placeholder name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$string[&#039;pluginname&#039;] = &#039;H5P&#039;;&lt;br /&gt;
$string[&#039;description&#039;] = &#039;H5P interactive content&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you wanted to add the Basque translation you would create a folder called eu and add the file contenttype_&amp;lt;contenttypename&amp;gt;.php to it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$string[&#039;pluginname&#039;] = &#039;H5P&#039;;&lt;br /&gt;
$string[&#039;description&#039;] = &#039;H5P eduki interaktiboa&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, when using the string &#039;description&#039; we will use the Moodle function get_string instead, which will get the appropriate string depending on the language being used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
get_string(&#039;description&#039;, &#039;contenttype_h5p&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Classes folder ===&lt;br /&gt;
&lt;br /&gt;
The classes folder contains all the classes are mandatory for the plugin, and any other class your plugin needs.&lt;br /&gt;
&lt;br /&gt;
==== Privacy folder ====&lt;br /&gt;
&lt;br /&gt;
You need to implement a privacy provider for your plugin defining the user data the plugin stores. &lt;br /&gt;
&lt;br /&gt;
For more extensive details on this please see [[Privacy API]].&lt;br /&gt;
&lt;br /&gt;
An example of the a null privacy provider is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
class provider implements \core_privacy\local\metadata\null_provider {&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Get the language string identifier with the component&#039;s language&lt;br /&gt;
     * file to explain why this plugin stores no data.&lt;br /&gt;
     *&lt;br /&gt;
     * @return  string&lt;br /&gt;
     */&lt;br /&gt;
    public static function get_reason() : string {&lt;br /&gt;
        return &#039;privacy:metadata&#039;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== contenttype.php ====&lt;br /&gt;
&lt;br /&gt;
Contenttype.php file should contain a contentype class extends the main \core_contentbank\contenttype. You can overwrite the non final functions in your plugin as you need, but there are some abstract functions that are mandatory to implement.&lt;br /&gt;
&lt;br /&gt;
===== get_implemented_features() =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
    /**&lt;br /&gt;
     * Return an array of implemented features by the plugins.&lt;br /&gt;
     *&lt;br /&gt;
     * @return array&lt;br /&gt;
     */&lt;br /&gt;
    abstract protected function get_implemented_features(): array;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This function defines the features your plugin implements. Right now the features a plugin could implement in the content bank are CAN_UPLOAD and CAN_EDIT. So your plugin should return an empty array, an array with one of those elements, or an array with both elements. CAN_UPLOAD and CAN_EDIT constants are defined in \core_contentbank\contenttype class.&lt;br /&gt;
&lt;br /&gt;
An example of the get_implemented_features function is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Return an array of implemented features by this plugin.&lt;br /&gt;
     *&lt;br /&gt;
     * @return array&lt;br /&gt;
     */&lt;br /&gt;
    protected function get_implemented_features(): array {&lt;br /&gt;
        return [self::CAN_UPLOAD, self::CAN_EDIT];&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== get_manageable_extensions() =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Return an array of extensions the plugins could manage.&lt;br /&gt;
     *&lt;br /&gt;
     * @return array&lt;br /&gt;
     */&lt;br /&gt;
   abstract public function get_manageable_extensions(): array;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This function defines the file extensions (including the dot) your plugin can support. &lt;br /&gt;
&lt;br /&gt;
An example of the get_manageable_extensions function is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Return an array of extensions this contenttype could manage.&lt;br /&gt;
     *&lt;br /&gt;
     * @return array&lt;br /&gt;
     */&lt;br /&gt;
    public function get_manageable_extensions(): array {&lt;br /&gt;
        return [&#039;.h5p&#039;];&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== get_contenttype_types() =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Returns the list of different types of the given content type.&lt;br /&gt;
     *&lt;br /&gt;
     * A content type can have one or more options for creating content. This method will report all of them or only the content&lt;br /&gt;
     * type itself if it has no other options.&lt;br /&gt;
     *&lt;br /&gt;
     * @return array An object for each type:&lt;br /&gt;
     *     - string typename: descriptive name of the type.&lt;br /&gt;
     *     - string typeeditorparams: params required by this content type editor.&lt;br /&gt;
     *     - url typeicon: this type icon.&lt;br /&gt;
     */&lt;br /&gt;
    abstract public function get_contenttype_types(): array;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case your plugin support creation of different types of content, you should list all those types in this function. &lt;br /&gt;
&lt;br /&gt;
This method is used to generate the “Add” menu inside the content bank.&lt;br /&gt;
&lt;br /&gt;
An example of the get_contenttype_types function is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Returns the list of different types of the given content type.&lt;br /&gt;
     *&lt;br /&gt;
     * @return array&lt;br /&gt;
     */&lt;br /&gt;
    public function get_contenttype_types(): array {&lt;br /&gt;
        $type = new \stdClass();&lt;br /&gt;
        $type-&amp;gt;typename = &#039;testable&#039;;&lt;br /&gt;
&lt;br /&gt;
        return [$type];&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Controlling permissions =====&lt;br /&gt;
&lt;br /&gt;
Some other functions are defined to control content users permissions. The main content bank defines the access via capabilities to the content, but your plugin can overwrite some of the functions to make that control more strict. The capabilities are already checked, but you can prohibit the access to a content based on other information of the content.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;is_access_allowed&#039;&#039;&#039;: to restrict the view access to a user for an specific content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Returns user has access capability for the content itself.&lt;br /&gt;
     *&lt;br /&gt;
     * @return bool     True if content could be accessed. False otherwise.&lt;br /&gt;
     */&lt;br /&gt;
    protected function is_access_allowed(): bool&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;is_upload_allowed&#039;&#039;&#039;: to restrict the uploading feature to an specific user for any reason your plugin wants to check.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Returns plugin allows uploading.&lt;br /&gt;
     *&lt;br /&gt;
     * @return bool     True if plugin allows uploading. False otherwise.&lt;br /&gt;
     */&lt;br /&gt;
    protected function is_upload_allowed(): bool &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;is_delete_allowed&#039;&#039;&#039;: to prohibit a user to delete an specific content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Returns if content allows deleting.&lt;br /&gt;
     *&lt;br /&gt;
     * @param  content $content The content to be deleted.&lt;br /&gt;
     * @return bool True if content allows uploading. False otherwise.&lt;br /&gt;
     */&lt;br /&gt;
    protected function is_delete_allowed(content $content): bool &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;is_manage_allowed&#039;&#039;&#039;: to prohibit a user to manage (rename, etc.) an specific content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Returns if content allows managing.&lt;br /&gt;
     *&lt;br /&gt;
     * @param  content $content The content to be managed.&lt;br /&gt;
     * @return bool True if content allows uploading. False otherwise.&lt;br /&gt;
     */&lt;br /&gt;
    protected function is_manage_allowed(content $content): bool &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; is_edit_allowed&#039;&#039;&#039;: to prohibit a user to edit an specific content using the editor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Returns plugin allows edition.&lt;br /&gt;
     *&lt;br /&gt;
     * @param  content $content The content to be edited.&lt;br /&gt;
     * @return bool     True if plugin allows edition. False otherwise.&lt;br /&gt;
     */&lt;br /&gt;
    protected function is_edit_allowed(?content $content): bool &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some functions that you most likely will need to overwrite:&lt;br /&gt;
&lt;br /&gt;
===== get_view_content() =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Returns the HTML content to add to view.php visualizer.&lt;br /&gt;
     *&lt;br /&gt;
     * @param  content $content The content to be displayed.&lt;br /&gt;
     * @return string           HTML code to include in view.php.&lt;br /&gt;
     */&lt;br /&gt;
    public function get_view_content(content $content): string &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This function returns the HTML code to render the content supported by your plugin. By default returns an empty string, so your plugin most likely needs to overwrite it. &lt;br /&gt;
&lt;br /&gt;
Notice that the main function is triggering the ‘contentbank_content_viewed’ event, so you will need to call to parent:get_view_content function when overwriting it.&lt;br /&gt;
&lt;br /&gt;
===== get_icon() =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Returns the HTML code to render the icon for content bank contents.&lt;br /&gt;
     *&lt;br /&gt;
     * @param  content $content The content to be displayed.&lt;br /&gt;
     * @return string               HTML code to render the icon&lt;br /&gt;
     */&lt;br /&gt;
    public function get_icon(content $content): string &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This function returns by default the ‘unknown’ icon, so to make the contents supported by your plugin easier to identify, would be good to overwrite this function and return a more personalized icon.&lt;br /&gt;
&lt;br /&gt;
==== content.php ====&lt;br /&gt;
&lt;br /&gt;
content.php file should contain a content class extends the main \core_contentbank\content. Even if you are not overwriting any of the functions, the \contenttype_&amp;lt;contenttypename&amp;gt;\content class must exists.&lt;br /&gt;
&lt;br /&gt;
There is no abstract class that you must overwrite, but there is a function that will help you to manage permissions:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;is_view_allowed&#039;&#039;&#039;: to prohibit a user to view an specific content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Returns user has access permission for the content itself (based on what plugin needs).&lt;br /&gt;
     *&lt;br /&gt;
     * @return bool     True if content could be accessed. False otherwise.&lt;br /&gt;
     */&lt;br /&gt;
    public function is_view_allowed(): bool&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And there are some useful functions that might help you implementing your plugin:&lt;br /&gt;
&lt;br /&gt;
===== set_configdata() and get_configdata() =====&lt;br /&gt;
&lt;br /&gt;
Setter and getter function for the ‘configdata’ field that is ready for your plugin to use.&lt;br /&gt;
&lt;br /&gt;
===== set_instanceid() and get_ instanceid()  =====&lt;br /&gt;
&lt;br /&gt;
Setter and getter function for the ‘instanceid’ field that is ready for your plugin to reference any other table your plugin is using.&lt;br /&gt;
&lt;br /&gt;
=====get_file()  =====&lt;br /&gt;
&lt;br /&gt;
The function that returns the file linked to the content. Null in case the content has not file linked.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Returns the $file related to this content.&lt;br /&gt;
     *&lt;br /&gt;
     * @return stored_file  File stored in content bank area related to the given itemid.&lt;br /&gt;
     * @throws \coding_exception if not loaded.&lt;br /&gt;
     */&lt;br /&gt;
    public function get_file(): ?stored_file &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== get_file_url()  =====&lt;br /&gt;
&lt;br /&gt;
The function that returns the URL of the file linked to the content. Empty string in case the content has not file linked.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
     /**&lt;br /&gt;
     * Returns the file url related to this content.&lt;br /&gt;
     *&lt;br /&gt;
     * @return string       URL of the file stored in content bank area related to the given itemid.&lt;br /&gt;
     * @throws \coding_exception if not loaded.&lt;br /&gt;
     */&lt;br /&gt;
    public function get_file_url(): string&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== form/editor.php ====&lt;br /&gt;
&lt;br /&gt;
If your plugin implements an editor to create and edit content, a editor.php file must exists in the form directory, extending the \core_contentbank\form\edit_content class. &lt;br /&gt;
This file is used when adding/editing a content to the content bank. It contains the elements that will be displayed on the form responsible for creating/editing a content supported by your plugin. &lt;br /&gt;
We are extending a ‘moodleform’ class you can overwrite or extend as you need. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
class editor extends core_contentbank\form\edit_content {&lt;br /&gt;
 &lt;br /&gt;
    function definition() {&lt;br /&gt;
        global $CFG, $DB, $OUTPUT;&lt;br /&gt;
 &lt;br /&gt;
        $mform =&amp;amp; $this-&amp;gt;_form;&lt;br /&gt;
 &lt;br /&gt;
        $mform-&amp;gt;addElement(&#039;text&#039;, &#039;title&#039;, get_string(&#039;title&#039;, &#039;contenttype_&amp;lt;contenttypename&amp;gt;&#039;), array(&#039;size&#039;=&amp;gt;&#039;64&#039;));&lt;br /&gt;
        $mform-&amp;gt;setType(&#039;title&#039;, PARAM_TEXT);&lt;br /&gt;
        $mform-&amp;gt;addRule(&#039;title&#039;, null, &#039;required&#039;, null, &#039;client&#039;);&lt;br /&gt;
 &lt;br /&gt;
        $ynoptions = array(0 =&amp;gt; get_string(&#039;no&#039;),&lt;br /&gt;
                           1 =&amp;gt; get_string(&#039;yes&#039;));&lt;br /&gt;
        $mform-&amp;gt;addElement(&#039;select&#039;, &#039;useit&#039;, get_string(&#039;useit&#039;, &#039;contenttype_&amp;lt;contenttypename&amp;gt;&#039;), $ynoptions);&lt;br /&gt;
        $mform-&amp;gt;setDefault(&#039;useit&#039;, 1);&lt;br /&gt;
        $mform-&amp;gt;addHelpButton(&#039;useit&#039;, &#039;useit&#039;, &#039;contenttype_&amp;lt;contenttypename&amp;gt;&#039;);&lt;br /&gt;
 &lt;br /&gt;
        $this-&amp;gt;add_action_buttons();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above example does not contain the full file, just enough to provide you with an idea. First we create a text element called &#039;title&#039; that is required. Then we created another element that stores whether a user wishes to use the title or not with a default value of 1 and a help button explaining what this setting does. The add_action_buttons function adds the submit and cancel buttons to the form. &lt;br /&gt;
&lt;br /&gt;
You can also add validation to this form, just like any other form in Moodle. For more information on how to create forms in Moodle see [[Form_API]].&lt;br /&gt;
&lt;br /&gt;
=== Test folder ===&lt;br /&gt;
&lt;br /&gt;
This folder is not mandatory, but we strongly recommend to write automated tests for all your plugins and features to ensure everything is working ok and changes do not break anything. Testing is essential to make sure that developed code does what it is meant to do without causing new problems and automated testing is a very helpful tool for it.&lt;br /&gt;
&lt;br /&gt;
For more information about automated testing in Moodle see [[Testing#Automated_testing]].&lt;br /&gt;
&lt;br /&gt;
=== version.php ===&lt;br /&gt;
&lt;br /&gt;
The version.php file keeps track of the version of your plugin, and other attributes, such as what version of Moodle it requires. For a full list of the attributes please see [[version.php]].&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:Contenttype_folder.png&amp;diff=57675</id>
		<title>File:Contenttype folder.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:Contenttype_folder.png&amp;diff=57675"/>
		<updated>2020-06-29T15:55:05Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: File structure for the h5p content type plugin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File structure for the h5p content type plugin&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Plugin_types&amp;diff=57651</id>
		<title>Plugin types</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Plugin_types&amp;diff=57651"/>
		<updated>2020-06-23T20:00:00Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Plugins development}}&lt;br /&gt;
&lt;br /&gt;
The M in Moodle stands for modular.  The easiest and most maintainable way to add new functionality to Moodle is by writing one of these types of plugin. &lt;br /&gt;
&lt;br /&gt;
== List of Moodle plugin types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Plugin type&lt;br /&gt;
! Component name ([[Frankenstyle]])&lt;br /&gt;
! Moodle path&lt;br /&gt;
! Description&lt;br /&gt;
! Moodle versions&lt;br /&gt;
|-&lt;br /&gt;
| [[Activity modules]]&lt;br /&gt;
| mod&lt;br /&gt;
| /mod&lt;br /&gt;
| Activity modules are essential types of plugins in Moodle as they provide activities in courses. For example: Forum, Quiz and Assignment.&lt;br /&gt;
| 1.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Antivirus plugins]]&lt;br /&gt;
| antivirus&lt;br /&gt;
| /lib/antivirus&lt;br /&gt;
| Antivirus scanner plugins provide functionality for virus scanning user uploaded files using third-party virus scanning tools in Moodle. For example: ClamAV.&lt;br /&gt;
| 3.1+&lt;br /&gt;
|-&lt;br /&gt;
| [[Assign_submission_plugins|Assignment submission plugins]]&lt;br /&gt;
| assignsubmission&lt;br /&gt;
| /mod/assign/submission&lt;br /&gt;
| Different forms of assignment submissions&lt;br /&gt;
| 2.3+&lt;br /&gt;
|-&lt;br /&gt;
| [[Assign_feedback_plugins|Assignment feedback plugins]]&lt;br /&gt;
| assignfeedback&lt;br /&gt;
| /mod/assign/feedback&lt;br /&gt;
| Different forms of assignment feedbacks&lt;br /&gt;
| 2.3+&lt;br /&gt;
|-&lt;br /&gt;
| [[Book tools]]&lt;br /&gt;
| booktool&lt;br /&gt;
| /mod/book/tool&lt;br /&gt;
| Small information-displays or tools that can be moved around pages&lt;br /&gt;
| 2.1+&lt;br /&gt;
|-&lt;br /&gt;
| [[Custom fields]]&lt;br /&gt;
| customfield&lt;br /&gt;
| /customfield/field&lt;br /&gt;
| Custom field types, used e. g. in Custom course fields&lt;br /&gt;
| 3.7+&lt;br /&gt;
|-&lt;br /&gt;
| [[Database fields]]&lt;br /&gt;
| datafield&lt;br /&gt;
| /mod/data/field&lt;br /&gt;
| Different types of data that may be added to the Database activity module&lt;br /&gt;
| 1.6+&lt;br /&gt;
|-&lt;br /&gt;
| [[Database presets]]&lt;br /&gt;
| datapreset&lt;br /&gt;
| /mod/data/preset&lt;br /&gt;
| Pre-defined templates for the Database activity module&lt;br /&gt;
| 1.6+&lt;br /&gt;
|-&lt;br /&gt;
| [[External tool source|LTI sources]]&lt;br /&gt;
| ltisource&lt;br /&gt;
| /mod/lti/source&lt;br /&gt;
| LTI providers can be added to external tools easily through the external tools interface see [https://docs.moodle.org/en/External_tool Documentation on External Tools]. This type of plugin is specific to LTI providers that need a plugin that can register custom handlers to process LTI messages&lt;br /&gt;
| 2.7+&lt;br /&gt;
|-&lt;br /&gt;
| [[File Converters]]&lt;br /&gt;
| fileconverter&lt;br /&gt;
| /files/converter&lt;br /&gt;
| Allow conversion between different types of user-submitted file. For example from .doc to PDF.&lt;br /&gt;
| 3.2+&lt;br /&gt;
|-&lt;br /&gt;
| [[LTI services]]&lt;br /&gt;
| ltiservice&lt;br /&gt;
| /mod/lti/service&lt;br /&gt;
| Allows the implementation of LTI services as described by the IMS LTI specification&lt;br /&gt;
| 2.8+&lt;br /&gt;
|-&lt;br /&gt;
| [[Machine learning backends]]&lt;br /&gt;
| mlbackend&lt;br /&gt;
| /lib/mlbackend&lt;br /&gt;
| Prediction processors for analytics API&lt;br /&gt;
| 3.4+&lt;br /&gt;
|-&lt;br /&gt;
| [[Quiz reports]]&lt;br /&gt;
| quiz&lt;br /&gt;
| /mod/quiz/report&lt;br /&gt;
| Display and analyse the results of quizzes, or just plug miscellaneous behaviour into the quiz module&lt;br /&gt;
| 1.1+&lt;br /&gt;
|-&lt;br /&gt;
| [[Quiz access rules]]&lt;br /&gt;
| quizaccess&lt;br /&gt;
| /mod/quiz/accessrule&lt;br /&gt;
| Add conditions to when or where quizzes can be attempted, for example only from some IP addresses, or student must enter a password first&lt;br /&gt;
| 2.2+&lt;br /&gt;
|-&lt;br /&gt;
| [[SCORM reports]]&lt;br /&gt;
| scormreport&lt;br /&gt;
| /mod/scorm/report&lt;br /&gt;
| Analysis of SCORM attempts&lt;br /&gt;
| 2.2+&lt;br /&gt;
|-&lt;br /&gt;
| [[Workshop grading strategies]]&lt;br /&gt;
| workshopform&lt;br /&gt;
| /mod/workshop/form&lt;br /&gt;
| Define the type of the grading form and implement the calculation of the grade for submission in the [[Workshop]] module&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Workshop allocation methods]]&lt;br /&gt;
| workshopallocation&lt;br /&gt;
| /mod/workshop/allocation&lt;br /&gt;
| Define ways how submissions are assigned for assessment in the [[Workshop]] module&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Workshop evaluation methods]]&lt;br /&gt;
| workshopeval&lt;br /&gt;
| /mod/workshop/eval&lt;br /&gt;
| Implement the calculation of the grade for assessment (grading grade) in the [[Workshop]] module&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Blocks]]&lt;br /&gt;
| block&lt;br /&gt;
| /blocks&lt;br /&gt;
| Small information-displays or tools that can be moved around pages&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Question types]]&lt;br /&gt;
| qtype&lt;br /&gt;
| /question/type&lt;br /&gt;
| Different types of question (e.g. multiple-choice, drag-and-drop) that can be used in quizzes and other activities&lt;br /&gt;
| 1.6+&lt;br /&gt;
|-&lt;br /&gt;
| [[Question behaviours]]&lt;br /&gt;
| qbehaviour&lt;br /&gt;
| /question/behaviour&lt;br /&gt;
| Control how student interact with questions during an attempt&lt;br /&gt;
| 2.1+&lt;br /&gt;
|-&lt;br /&gt;
| [[Question formats|Question import/export formats]]&lt;br /&gt;
| qformat&lt;br /&gt;
| /question/format&lt;br /&gt;
| Import and export question definitions to/from the question bank&lt;br /&gt;
| 1.6+&lt;br /&gt;
|-&lt;br /&gt;
| [[Filters|Text filters]]&lt;br /&gt;
| filter&lt;br /&gt;
| /filter&lt;br /&gt;
| Automatically convert, highlight, and transmogrify text posted into Moodle.&lt;br /&gt;
| 1.4+&lt;br /&gt;
|-&lt;br /&gt;
| [[Editors]]&lt;br /&gt;
| editor&lt;br /&gt;
| /lib/editor&lt;br /&gt;
| Alternative text editors for editing content&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Atto|Atto editor plugins]]&lt;br /&gt;
| atto&lt;br /&gt;
| /lib/editor/atto/plugins&lt;br /&gt;
| Extra functionality for the Atto text editor&lt;br /&gt;
| 2.7+&lt;br /&gt;
|-&lt;br /&gt;
| [[TinyMCE editor plugins]]&lt;br /&gt;
| tinymce&lt;br /&gt;
| /lib/editor/tinymce/plugins&lt;br /&gt;
| Extra functionality for the TinyMCE text editor.&lt;br /&gt;
| 2.4+&lt;br /&gt;
|-&lt;br /&gt;
| [[Enrolment plugins]]&lt;br /&gt;
| enrol&lt;br /&gt;
| /enrol&lt;br /&gt;
| Ways to control who is enrolled in courses&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Authentication plugins]]&lt;br /&gt;
| auth&lt;br /&gt;
| /auth&lt;br /&gt;
| Allows connection to external sources of authentication&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Admin tools]]&lt;br /&gt;
| tool&lt;br /&gt;
| /admin/tool&lt;br /&gt;
| Provides utility scripts useful for various site administration and maintenance tasks&lt;br /&gt;
| 2.2+&lt;br /&gt;
|-&lt;br /&gt;
| [[Log stores]]&lt;br /&gt;
| logstore&lt;br /&gt;
| /admin/tool/log/store&lt;br /&gt;
| Event logs storage back-ends&lt;br /&gt;
| 2.7+&lt;br /&gt;
|-&lt;br /&gt;
| [[Availability conditions]]&lt;br /&gt;
| availability&lt;br /&gt;
| /availability/condition&lt;br /&gt;
| Conditions to restrict user access to activities and sections.&lt;br /&gt;
| 2.7+&lt;br /&gt;
|-&lt;br /&gt;
| [[Calendar types]]&lt;br /&gt;
| calendartype&lt;br /&gt;
| /calendar/type&lt;br /&gt;
| Defines how dates are displayed throughout Moodle&lt;br /&gt;
| 2.6+&lt;br /&gt;
|-&lt;br /&gt;
| [[Messaging consumers]]&lt;br /&gt;
| message&lt;br /&gt;
| /message/output&lt;br /&gt;
| Represent various targets where messages and notifications can be sent to (email, sms, jabber, ...)&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Course formats]]&lt;br /&gt;
| format&lt;br /&gt;
| /course/format&lt;br /&gt;
| Different ways of laying out the activities and blocks in a course&lt;br /&gt;
| 1.3+&lt;br /&gt;
|-&lt;br /&gt;
| [[Data formats]]&lt;br /&gt;
| dataformat&lt;br /&gt;
| /dataformat&lt;br /&gt;
| Formats for data exporting and downloading&lt;br /&gt;
| 3.1+&lt;br /&gt;
|-&lt;br /&gt;
| [[User profile fields]]&lt;br /&gt;
| profilefield&lt;br /&gt;
| /user/profile/field&lt;br /&gt;
| Add new types of data to user profiles&lt;br /&gt;
| 1.9+&lt;br /&gt;
|-&lt;br /&gt;
| [[Reports]]&lt;br /&gt;
| report&lt;br /&gt;
| /report&lt;br /&gt;
| Provides useful views of data in a Moodle site for admins and teachers&lt;br /&gt;
| 2.2+&lt;br /&gt;
|-&lt;br /&gt;
| [[Course reports]]&lt;br /&gt;
| coursereport&lt;br /&gt;
| /course/report&lt;br /&gt;
| Reports of activity within the course&lt;br /&gt;
| Up to 2.1 (for 2.2+ see [[Reports]])&lt;br /&gt;
|-&lt;br /&gt;
| [[Gradebook export]]&lt;br /&gt;
| gradeexport&lt;br /&gt;
| /grade/export&lt;br /&gt;
| Export grades in various formats&lt;br /&gt;
| 1.9+&lt;br /&gt;
|-&lt;br /&gt;
| [[Gradebook import]]&lt;br /&gt;
| gradeimport&lt;br /&gt;
| /grade/import&lt;br /&gt;
| Import grades in various formats &lt;br /&gt;
| 1.9+&lt;br /&gt;
|-&lt;br /&gt;
| [[Gradebook reports]]&lt;br /&gt;
| gradereport&lt;br /&gt;
| /grade/report&lt;br /&gt;
| Display/edit grades in various layouts and reports&lt;br /&gt;
| 1.9+&lt;br /&gt;
|-&lt;br /&gt;
| [[Grading methods|Advanced grading methods]]&lt;br /&gt;
| gradingform&lt;br /&gt;
| /grade/grading/form&lt;br /&gt;
| Interfaces for actually performing grading in activity modules (eg Rubrics)&lt;br /&gt;
| 2.2+&lt;br /&gt;
|-&lt;br /&gt;
| [[MNet services]]&lt;br /&gt;
| mnetservice&lt;br /&gt;
| /mnet/service&lt;br /&gt;
| Allows to implement remote services for the [[MNet]] environment (deprecated, use web services instead)&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Webservice protocols]]&lt;br /&gt;
| webservice&lt;br /&gt;
| /webservice&lt;br /&gt;
| Define new protocols for web service communication (such as SOAP, XML-RPC, JSON, REST ...)&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Repository plugins]]&lt;br /&gt;
| repository&lt;br /&gt;
| /repository&lt;br /&gt;
| Connect to external sources of files to use in Moodle&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Portfolio plugins]]&lt;br /&gt;
| portfolio&lt;br /&gt;
| /portfolio&lt;br /&gt;
| Connect external portfolio services as destinations for users to store Moodle content&lt;br /&gt;
| 1.9+&lt;br /&gt;
|-&lt;br /&gt;
| [[Search engines]]&lt;br /&gt;
| search&lt;br /&gt;
| /search/engine&lt;br /&gt;
| Search engine backends to index Moodle&#039;s contents.&lt;br /&gt;
| 3.1+&lt;br /&gt;
|-&lt;br /&gt;
| [[Media players]]&lt;br /&gt;
| media&lt;br /&gt;
| /media/player&lt;br /&gt;
| Pluggable media players&lt;br /&gt;
| 3.2+&lt;br /&gt;
|-&lt;br /&gt;
| [[Plagiarism plugins]]&lt;br /&gt;
| plagiarism&lt;br /&gt;
| /plagiarism&lt;br /&gt;
| Define external services to process submitted files and content&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Cache store]]&lt;br /&gt;
| cachestore&lt;br /&gt;
| /cache/stores&lt;br /&gt;
| Cache storage back-ends.&lt;br /&gt;
| 2.4+&lt;br /&gt;
|-&lt;br /&gt;
| [[Cache locks]]&lt;br /&gt;
| cachelock&lt;br /&gt;
| /cache/locks&lt;br /&gt;
| Cache lock implementations.&lt;br /&gt;
| 2.4+&lt;br /&gt;
|-&lt;br /&gt;
| [[Themes]]&lt;br /&gt;
| theme&lt;br /&gt;
| /theme&lt;br /&gt;
| Change the look of Moodle by changing the the HTML and the CSS. &lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Local plugins]]&lt;br /&gt;
| local&lt;br /&gt;
| /local&lt;br /&gt;
| Generic plugins for local customisations&lt;br /&gt;
| 2.0+&lt;br /&gt;
|-&lt;br /&gt;
| [[Assignment types|Legacy assignment types]]&lt;br /&gt;
| assignment&lt;br /&gt;
| /mod/assignment/type&lt;br /&gt;
| Different forms of assignments to be graded by teachers&lt;br /&gt;
| 1.x - 2.2&lt;br /&gt;
|-&lt;br /&gt;
| [[Admin reports|Legacy admin reports]]&lt;br /&gt;
| report&lt;br /&gt;
| /admin/report&lt;br /&gt;
| Provides useful views of data in a Moodle site, for admins only.&lt;br /&gt;
| Up to 2.1 (for 2.2+ see [[Reports]])&lt;br /&gt;
|-&lt;br /&gt;
| [[Content bank content types]]&lt;br /&gt;
| contenttype&lt;br /&gt;
| /contentbank/contenttype&lt;br /&gt;
| Content types to upload, create or edit in the content bank and use all over the Moodle site&lt;br /&gt;
| 3.9+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Obtaining the list of plugin types known to your Moodle ==&lt;br /&gt;
&lt;br /&gt;
To get the most exact list of types in your version of Moodle, use the following script. Put it to a file in the root directory of your Moodle installation and execute it via command line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
define(&#039;CLI_SCRIPT&#039;, true);&lt;br /&gt;
require(&#039;config.php&#039;);&lt;br /&gt;
&lt;br /&gt;
$pluginman = core_plugin_manager::instance();&lt;br /&gt;
&lt;br /&gt;
foreach ($pluginman-&amp;gt;get_plugin_types() as $type =&amp;gt; $dir) {&lt;br /&gt;
    $dir = substr($dir, strlen($CFG-&amp;gt;dirroot));&lt;br /&gt;
    printf(&amp;quot;%-20s %-50s %s&amp;quot;.PHP_EOL, $type, $pluginman-&amp;gt;plugintype_name_plural($type), $dir);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Things you can find in all plugins==&lt;br /&gt;
&lt;br /&gt;
Although there are many different types of plugin, there are some things that work the same way in all plugin types, and we have [[Things that work the same in all plugin types|a page that describes them]].&lt;br /&gt;
&lt;br /&gt;
Additionally you probably want to look at the page [[Plugin files]].&lt;br /&gt;
&lt;br /&gt;
== Naming conventions ==&lt;br /&gt;
&lt;br /&gt;
Warning if you have to choose a plugin (directory) name. The name is validated by the method &amp;lt;tt&amp;gt;lib/classes/component.php::is_valid_plugin_name()&amp;lt;/tt&amp;gt; with a regexp: &amp;lt;tt&amp;gt;/^[a-z](?:[a-z0-9_](?!__))*[a-z0-9]+$/&amp;lt;/tt&amp;gt;. In particular, the minus (-) character is not considered as valid, and the plugin will be silently ignored if the name is not valid.&lt;br /&gt;
&lt;br /&gt;
There is an exception for [[Activity modules|activity modules]] that can not have the underscore in their name for legacy reasons.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Guidelines_for_contributed_code|Guidelines for contributing code]]&lt;br /&gt;
* [[Core APIs]]&lt;br /&gt;
* [[Frankenstyle]]&lt;br /&gt;
* [http://moodle.org/plugins Moodle Plugins directory] &lt;br /&gt;
* [[Tutorial]] to help you learn how to write plugins for Moodle from start to finish, while showing you how to navigate the most important developer documentation along the way. &lt;br /&gt;
&lt;br /&gt;
[[Category:Coding guidelines|Plugins]]&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=56786</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=56786"/>
		<updated>2020-01-07T10:55:33Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: &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;
==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>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=56773</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=56773"/>
		<updated>2019-12-30T08:42:47Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: Undo revision 56772 by Aanabit (talk)&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;
&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;
==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;
==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>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=56772</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=56772"/>
		<updated>2019-12-30T08:40:19Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: &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;
&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;
==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;
==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>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_libraries_credits&amp;diff=56771</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=56771"/>
		<updated>2019-12-30T08:38:38Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: &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;
&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;
==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;
==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>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Deprecation&amp;diff=56167</id>
		<title>Deprecation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Deprecation&amp;diff=56167"/>
		<updated>2019-06-17T14:04:43Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is deprecation? ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Why is deprecation needed? ==&lt;br /&gt;
&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;
&lt;br /&gt;
== What is Moodle&#039;s deprecation policy? ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Moodle Core deprecation process ==&lt;br /&gt;
&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;
&lt;br /&gt;
Every deprecation should be documented in the corresponding upgrade.txt files &#039;&#039;&#039;at least&#039;&#039;&#039; once, but ideally both on initial deprecation and on final removal.&lt;br /&gt;
&lt;br /&gt;
=== Step 1. Immediate action ===&lt;br /&gt;
&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;
&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;
* 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;
&lt;br /&gt;
 debugging(&#039;foobar() is deprecated. Please use foobar::blah() instead.&#039;, DEBUG_DEVELOPER);&lt;br /&gt;
&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;
* 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;
&lt;br /&gt;
Longer deprecation periods can be considered for functions that are widely used.&lt;br /&gt;
&lt;br /&gt;
=== Step 2. Final deprecation ===&lt;br /&gt;
&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;
&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;
&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;
* Please note that previously the final deprecation was 2 versions instead of 4. For example, functions deprecated in 2.9 are throwing exceptions starting from 3.1; however functions deprecated in 3.0 will throw exception in 3.4&lt;br /&gt;
&lt;br /&gt;
== See also... ==&lt;br /&gt;
&lt;br /&gt;
* [[String deprecation]]&lt;br /&gt;
* [[Process]]&lt;br /&gt;
* [[Release process]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Processes]]&lt;br /&gt;
[[Category:Core development]]&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Deprecation&amp;diff=56166</id>
		<title>Deprecation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Deprecation&amp;diff=56166"/>
		<updated>2019-06-17T14:04:07Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is deprecation? ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Why is deprecation needed? ==&lt;br /&gt;
&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;
&lt;br /&gt;
== What is Moodle&#039;s deprecation policy? ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Moodle Core deprecation process ==&lt;br /&gt;
&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;
&lt;br /&gt;
Every deprecation should be documented in the corresponding upgrade.txt files &#039;&#039;&#039;at least&#039;&#039;&#039; once, but ideally both on initial deprecation and on final removal.&lt;br /&gt;
&lt;br /&gt;
=== Step 1. Immediate action ===&lt;br /&gt;
&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;
&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;
* 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;
&lt;br /&gt;
 debugging(&#039;foobar() is deprecated. Please use foobar::blah() instead.&#039;, DEBUG_DEVELOPER);&lt;br /&gt;
&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;
* 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;
&lt;br /&gt;
Longer deprecation periods can be considered for functions that are widely used.&lt;br /&gt;
&lt;br /&gt;
=== Step 2. Final deprecation ===&lt;br /&gt;
&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;
&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;
&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 should be completely removed.&lt;br /&gt;
* Please note that previously the final deprecation was 2 versions instead of 4. For example, functions deprecated in 2.9 are throwing exceptions starting from 3.1; however functions deprecated in 3.0 will throw exception in 3.4&lt;br /&gt;
&lt;br /&gt;
== See also... ==&lt;br /&gt;
&lt;br /&gt;
* [[String deprecation]]&lt;br /&gt;
* [[Process]]&lt;br /&gt;
* [[Release process]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Processes]]&lt;br /&gt;
[[Category:Core development]]&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Peer_reviewing&amp;diff=54510</id>
		<title>Peer reviewing</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Peer_reviewing&amp;diff=54510"/>
		<updated>2018-07-12T13:16:52Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Process=&lt;br /&gt;
&lt;br /&gt;
Peer review process helps to prepare the issue for integration. The peer reviewer is another developer who was not involved in the development process on the issue and therefore can take a fresh look and notice something that original developer might have forgotten during development. It is important to check that the bug actually is present and the code fixes it without creating new regressions. &lt;br /&gt;
&lt;br /&gt;
==Completing Peer review as a community member==&lt;br /&gt;
&lt;br /&gt;
Any other developer can review any change. That is why it is called &#039;peer&#039; review. However, not everyone has the necessary permissions in the tracker to click the buttons &#039;Start peer review&#039;, &#039;Finish peer review&#039; etc. This should not discourage you from looking at other contributors code and providing comments and feedback. The issue will still need to wait for someone with the right permissions to come along and click the buttons, but they can read your review and then need do no more than double-check some points, which will save a lot of time.&lt;br /&gt;
&lt;br /&gt;
To provide feedback to the developer, leave the issue in &amp;quot;Waiting for Peer Review&amp;quot; (since you don&#039;t have permission to do anything else, and also that makes it easy for someone with sufficient permissions to find the issue and move it forwards). Review the code using the checklist below, including any appropriate comments.  Once finished, please post a comment clearly stating the outcome of your review.  If you think it needs more work then indicate what needs to be changed.  If you are happy with the patch, leave a clear comment that you believe this is ready to be made part of Moodle.  This can then easily be seen by a HQ developer or component lead and they can quickly take appropriate action.&lt;br /&gt;
&lt;br /&gt;
If a followup review happens to identify something you did not find, you have an opportunity to expand your knowledge and provide better reviews in the future as well as having saved everybody else some time.&lt;br /&gt;
&lt;br /&gt;
Feedback to indicate the issue is ready to progress might look like the following;&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
Thanks again for your contribution. I have reviewed the patch:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[Copy and paste the checklist here, and complete it]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
I don&#039;t have permission to use the peer review buttons on this issue. I hope that someone with sufficient permissions will move the issue forwards soon.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Feedback to indicate the issue requires further work might look like the following;&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
Thanks for providing a patch. I think the following points require further work&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[Copy and paste the checklist here, and complete it]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Please indicate If you are willing to continue working on this issue and complete the solution.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Peer review for development by HQ or a known common contributor==&lt;br /&gt;
&lt;br /&gt;
When code comes from a HQ developer or external developer who has been contributing significantly to Moodle and is well acquainted with Moodle standards, peer review is limited to checking the code according to the Checklist below. &lt;br /&gt;
&lt;br /&gt;
If everything is fine, the peer reviewer submits the issue for integration. &lt;br /&gt;
&lt;br /&gt;
If some additional work is needed or the author specifically asked not to submit for integration yet, the peer reviewer clicks on “Finish peer review” and the issue state returns to “Development in progress”. Usually the name of the peer reviewer stays on the issue and if a second peer review is requested it is expected that the same Peer reviewer picks it up. If the peer reviewer is not able to do the second review, they should remove their name and comment about it. Otherwise the issue does not appear on “waiting for peer review” dashboard. Please remember that not all jira users have permission to submit for integration.&lt;br /&gt;
&lt;br /&gt;
==Peer review for external developers==&lt;br /&gt;
&lt;br /&gt;
When the code has come from an external developer, the peer reviewer will also help the developer to lead the issue to integration. In this case the peer reviewer should not use “Finish peer review” button. &lt;br /&gt;
&lt;br /&gt;
If the issue needs additional work, the peer reviewer comments about the suggested changes but does not change the status of the issue and it remains as “Peer review in progress”. If the author of the patch does not reply in 4 days, the peer reviewer may select either to complete the patch themselves or reopen the issue. The decision should be based on the amount of work required to complete the solution, for example, changing coding style or commit message, rebasing, backporting, adding testing instructions, etc. should be performed by the peer reviewer. This may require picking the commits into reviewer’s git branch. &lt;br /&gt;
&lt;br /&gt;
It is very important to give the credit to the author of the code by either keeping their authorship on the commit or adding “Thanks to XXXX for providing the patch” to the commit message. If the author of the patch is not in jira-developers group the special user &#039;moodle.com&#039; should be entered in Assignee field.&lt;br /&gt;
&lt;br /&gt;
There could be situations when the patch is incomplete, does not fix the original issue, creates regressions or otherwise is not correct. As stated above, the peer reviewer should comment about it and wait for the feedback from the author. If there is no feedback, or the author can not work on this issue any more, and the peer reviewer also does not find it easy and important enough to complete, the issue needs to be reopened. Button “Fail peer review” (available to HQ developers only) will reset the issue status to “Reopened”. On this screen peer reviewer should remove assignee, peer reviewer and “patch” label from the issue. This way issue will become available again for anybody who want to work on it. All communication will remain in comments and issue history.&lt;br /&gt;
&lt;br /&gt;
If the issue has passed peer review but the integrator or tester has raised some questions about it, then normally the developer who created the patch would be expected to respond. If they do no respond quickly enough, then the peer reviewer is expected to step in and take responsibility for the change they reviewed.&lt;br /&gt;
&lt;br /&gt;
Once the issue is ready for integration, you can submit it to integration on behalf of the developer. Most external developers (those who are not in the jira-developers group) do not have permission to submit their own issues to integration so cannot do it themselves.&lt;br /&gt;
&lt;br /&gt;
==Replies templates==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
Thanks for providing a patch.&amp;lt;br/&amp;gt;&lt;br /&gt;
I have reviewed your code and can confirm that it addresses the reported issue. We would like to include it in core. Moodle values its contributors and tries to give them credit when possible. If you are interested in your name appearing on the https://moodle.org/dev/contributions.php page you can create a git commit that we will then pull into Moodle. You can learn more about Git and how Moodle uses it at &amp;lt;nowiki&amp;gt;[Git for developers|https://docs.moodle.org/dev/Git_for_developers]&amp;lt;/nowiki&amp;gt; page. Please let me know if you want to prepare a git branch. Or if you don’t have time to go through the whole process at the moment I can pick your patch myself.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
Thanks for providing a patch.&amp;lt;br/&amp;gt;&lt;br /&gt;
Your code looks almost ready for integration into Moodle. There are just some little things that need to be changed to comply with Moodle standards. Can you please take a look at the review results below and tell me if you are able to modify your branch to address them.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
I have reviewed your patch, it addresses the problem and complies with Moodle standards. I&#039;m pushing this issue for integration. Following Moodle &amp;lt;nowiki&amp;gt;[Process|https://docs.moodle.org/dev/Process]&amp;lt;/nowiki&amp;gt; it will go through integration review and testing before being included in the product. There might be additional questions from an integrator and/or a tester at those stages. It would be appreciated if you read tracker emails and can reply to questions if needed. If everything goes well during the next two stages your issue will be included in the next weekly release and your count on https://moodle.org/dev/contributions.php page will increase.&amp;lt;br/&amp;gt;&lt;br /&gt;
Thanks again for your contribution.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
Thanks for providing a patch.&amp;lt;br/&amp;gt;&lt;br /&gt;
Unfortunately this patch does not fully address the reported issue. ... DETAILS...&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Even though the code does solve the issue in the short-term it is very likely to create regressions ..... &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have spent some time reviewing the patch and I would recommend that you ..... &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Please let me know If you are willing to continue working on this issue and complete the solution.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Checklist=&lt;br /&gt;
&lt;br /&gt;
These are points to consider while peer-reviewing issues. Further explanation below.&lt;br /&gt;
&lt;br /&gt;
 [] Syntax&lt;br /&gt;
 [] Output&lt;br /&gt;
 [] Language&lt;br /&gt;
 [] Databases&lt;br /&gt;
 [] Testing (instructions and automated tests)&lt;br /&gt;
 [] Security&lt;br /&gt;
 [] Performance and Clustering&lt;br /&gt;
 [] Documentation&lt;br /&gt;
 [] Git&lt;br /&gt;
 [] Third party code&lt;br /&gt;
 [] Sanity check&lt;br /&gt;
 [] Icons&lt;br /&gt;
&lt;br /&gt;
Acceptable check-marks are Y (for yes), N (for no) or - (for not applicable). All N check-marks should be accompanied by an explanation of the problem that still needs to be addressed.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
To allow the community of Moodle developers to work together, conventions should be followed.&lt;br /&gt;
&lt;br /&gt;
* The code is easy to understand and, where it isn&#039;t, comments have been provided.&lt;br /&gt;
* Variables are named correctly (all lower case, no camel-case, no underscores).&lt;br /&gt;
* Functions are named correctly (all lower case, no camel-case, underscores allowed).&lt;br /&gt;
* PHP DocBlocks have been updated and adhere to [[Coding_style#Documentation_and_comments|coding style guide]].&lt;br /&gt;
* Where functions are being removed, the [[Deprecation]] process is followed.&lt;br /&gt;
* The code doesn&#039;t use [[Deprecated_functions_in_2.0|deprecated functions]].&lt;br /&gt;
* $_GET, $_POST, $_REQUEST, $_COOKIE, and $_SESSION are never used.&lt;br /&gt;
&lt;br /&gt;
See the [[Coding style]] guide for details.&lt;br /&gt;
Most of the previous items list are checked automatically by the CiBot ([[Automated code review]]). So in this case it&#039;s recommended to review the execution results to validate that there aren&#039;t errors. However, take into account that for now, CiBot is not checking all file types (it happens, for instance, with the Javascript files).&lt;br /&gt;
&lt;br /&gt;
==Output==&lt;br /&gt;
Output needs to be controlled by renderers to achieve consistency and correct application of themes.&lt;br /&gt;
&lt;br /&gt;
Ensure that:&lt;br /&gt;
* output renders are used to generate output strings, including HTML tags;&lt;br /&gt;
* HTML output is valid XHTML;&lt;br /&gt;
* no inline styles have been used in HTML output (everything has to be in CSS);&lt;br /&gt;
* CSS has been added to the appropriate CSS files (base, specific area, sometimes canvas); and&lt;br /&gt;
* the code doesn&#039;t use buffered output unless absolutely necessary.&lt;br /&gt;
* all visual output has a RTL alternative included&lt;br /&gt;
&lt;br /&gt;
feedback any notices (E_STRICT, etc) seen into the MDL.&lt;br /&gt;
&lt;br /&gt;
==Language==&lt;br /&gt;
To achieve appropriate internationalisation of Moodle, language strings must be managed correctly.&lt;br /&gt;
&lt;br /&gt;
Ensure that:&lt;br /&gt;
* new language strings are named correctly (all lower case, no camel-case, underscores are permissible in some cases);&lt;br /&gt;
* help strings are named and formatted as described in [[Help strings]];&lt;br /&gt;
* language strings are used instead of hard-coded strings for text output;&lt;br /&gt;
* language strings have not been removed or renamed, had their meaning changed or had their parameters changed in stable branches (permitted only in master); and&lt;br /&gt;
* [https://docs.moodle.org/dev/Commit_cheat_sheet#Include_AMOS_script_in_the_commit_if_needed AMOS commands]  have been specified when moving or copying language strings.&lt;br /&gt;
&lt;br /&gt;
==Databases==&lt;br /&gt;
DB calls are the greatest performance bottleneck in Moodle.&lt;br /&gt;
&lt;br /&gt;
If there is SQL code you can test quickly then do so. &lt;br /&gt;
&lt;br /&gt;
Ensure that:&lt;br /&gt;
* there are minimal DB calls (no excessive use of the DB); and&lt;br /&gt;
* the code uses SQL compatible with all the supported DB engines (check all selected fields appear in an &#039;order by&#039; clause).&lt;br /&gt;
&lt;br /&gt;
==Testing instructions and automated tests==&lt;br /&gt;
It is the developer&#039;s responsibility to test code before integration. Issues should not be sent for peer review without tests so that the peer reviewer can assess their quality and use them to consider the scope of the issue.&lt;br /&gt;
&lt;br /&gt;
Ensure that:&lt;br /&gt;
* there are specific [[Testing instructions guide|testing instructions]] that state how, as well as what, to test. Please ensure that the testing instructions are in the correct format: [https://docs.moodle.org/dev/Behat Behat gherkin];&lt;br /&gt;
* the assignee has tested according to the instructions and verified that they are passing (This is the responsibility of the assignee, not the peer reviewer)&lt;br /&gt;
* new unit tests have been added when there is a change in functionality; and&lt;br /&gt;
* &#039;&#039;&#039;unit tests pass&#039;&#039;&#039; for related areas where changes have been made.&lt;br /&gt;
* &#039;&#039;&#039;Behat tests pass&#039;&#039;&#039; for related areas where changes have been made, especially when it involved UI changes.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
The user community relies on Moodle being responsibly secure.&lt;br /&gt;
&lt;br /&gt;
Ensure that:&lt;br /&gt;
* user login is checked where an identity is needed;&lt;br /&gt;
* sesskey values are checked before all write actions where appropriate (some read actions as well);&lt;br /&gt;
* capabilities are checked where roles differ; and&lt;br /&gt;
* if the issue itself is a [[Security|security]] issue, the [[Process#Security_issues|security process]] is being followed.&lt;br /&gt;
** Ensure that the fix is &#039;&#039;&#039;not&#039;&#039;&#039; available in a public repository (ie. a personal Github account); stand-alone patches should be provided instead.&lt;br /&gt;
** The issue will not be integrated until just before the next minor version release.&lt;br /&gt;
&lt;br /&gt;
==Performance and clustering==&lt;br /&gt;
It is easy to write code that works sufficiently well when you are working on either small sets of data or with a small number of active users.  Picking performance issues can be quite difficult and can required a complex level of understanding of both the section of code being reviewed, but also other parts that interact with it.&lt;br /&gt;
&lt;br /&gt;
Clustering is when the same code is run on different computers and an end user could send each request to a different computer.  This can produce a number of concurrency issues if not thought through.  One example is;  If you complete an opcache_reset(), no other server except the one you ran it on knows that it happened.  So data can get out of sync.&lt;br /&gt;
&lt;br /&gt;
Ensure that:&lt;br /&gt;
* Any filesystem, database or cache accesses are done in the most efficient way.&lt;br /&gt;
* That any code or function that appear expensive are not in critical paths.  eg; They don&#039;t load on every page.&lt;br /&gt;
* The least possible code is running to complete the task, especially looking for hidden loops.  They can appear from calling functions.&lt;br /&gt;
* Any code that runs is not specific to a single node. (eg opcache_reset())  The ensures clusters will run correctly.&lt;br /&gt;
* If the code could affect performance at all, make sure there is a comment noting what was considered.&lt;br /&gt;
** What they did to mitigate performance impact, or why they thought it wasn&#039;t an issue.&lt;br /&gt;
** Why they made certain trade-offs.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
Work does not stop when code is integrated.&lt;br /&gt;
&lt;br /&gt;
Ensure that:&lt;br /&gt;
* Appropriate [[Tracker_issue_labels|labels]] have been added when there has been a function change, particularly&lt;br /&gt;
** docs_required (any functional change, usually paired with ui_change),&lt;br /&gt;
** dev_docs_required (any change to APIs, usually paired with api_change),&lt;br /&gt;
** ui_change (any functional change, usually paired with docs_required, except ui_change remains permanetly),&lt;br /&gt;
** api_change (any change to APIs that devs will need to know about, usually paired with dev_docs_required, except api_change remains permanetly),&lt;br /&gt;
** unit_test_required and acceptance_test_required, when there are api or ui changes needing improved coverage, and&lt;br /&gt;
** qa_test_required (significant functional change, not covered by unit/acceptance ones).&lt;br /&gt;
* Also, verify that the components for the issue are correctly set, so maintainers (subscribed by default) will be mailed about issues early in the process.&lt;br /&gt;
&lt;br /&gt;
==Git==&lt;br /&gt;
Ensure that:&lt;br /&gt;
* the commit matches the [[Coding style#Git_commits|Coding style]]&lt;br /&gt;
* the Git history is clean and the work has been rebased to logical commits; and&lt;br /&gt;
* the original author of the work provided as a patch has been given credit within the commit (as author of in the commit message if changes were made).&lt;br /&gt;
&lt;br /&gt;
==Third party code==&lt;br /&gt;
Does the change contain [[Third Party Libraries|third party code]]? If so, ensure that:&lt;br /&gt;
&lt;br /&gt;
* The code is licensed under a [http://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses| GPL compatible license].&lt;br /&gt;
* The instructions for upgrading/importing the library and contained within a readme_moodle.txt file.&lt;br /&gt;
* The library is recorded in a thirdparty.xml file, including licensing information.&lt;br /&gt;
* Third party code has been scanned to check for url accessible entry points that could be exploited. These should either be disabled, or if required functionality they should be checked for security weaknesses.&lt;br /&gt;
* Does not duplicate the functionality of any existing api or third party library in core.&lt;br /&gt;
* Any modifications to third party code are recorded in readme_moodle.txt&lt;br /&gt;
&lt;br /&gt;
==Sanity check==&lt;br /&gt;
Ensure that:&lt;br /&gt;
* the code seems to solve the described problem completely within its reported scope (and further issues have been created to resolve remaining parts or further refactoring);&lt;br /&gt;
* the code makes sense in relation to the broader codebase (look at the whole function, not just the altered code); and&lt;br /&gt;
* the developer has searched for and fixed other areas that may also have been affected by the same problem.&lt;br /&gt;
* verify that the related component maintainers, if known, have participated and are aware of the issue (as assignee, or existing comments...). If they have not, please perform a friendly &amp;lt;tt&amp;gt;@mention&amp;lt;/tt&amp;gt; to make them aware about the issue. A list of component leads is available here: https://docs.moodle.org/dev/Component_Leads&lt;br /&gt;
* if any version numbers have been changed in [[version.php]] files, then the changes follow [[Moodle_versions#How_to_increment_version_numbers_in_core|the rule for updating version numbers in core]].&lt;br /&gt;
* there are comments on tracker explaining why current approach was taken and why other options (especially large issues). If not comment asking them to explain&lt;br /&gt;
&lt;br /&gt;
==Icons==&lt;br /&gt;
Are new icons being introduced? If so, ensure that:&lt;br /&gt;
* the icons abide by our [https://docs.moodle.org/dev/Moodle_icons icon guidelines] with regards to size, design and format&lt;br /&gt;
* the icons are do not unnecessarily add new ways of expressing existing concepts&lt;br /&gt;
* the icons are in a pix folder that makes sense&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [http://moodle.org/plugins/view.php?plugin=local_codechecker Code checker plugin]&lt;br /&gt;
&lt;br /&gt;
[[Category: Processes]]&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=HQ_component_teams&amp;diff=54375</id>
		<title>HQ component teams</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=HQ_component_teams&amp;diff=54375"/>
		<updated>2018-06-11T15:34:06Z</updated>

		<summary type="html">&lt;p&gt;Aanabit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of Dec 2017, at Moodle HQ each core developer is assigned a list of components to lead. They are responsible for triaging the issues in those components, planning the roadmap of issues to be worked on and should be consulted as part of the peer review process for all issues relating to their components. &lt;br /&gt;
&lt;br /&gt;
The current list of component leads is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adrian (abgreeve), Mihail (Geshoski)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Blocks, Blog, Book, Filepicker, Glossary, Lesson, Ratings, Reports, Repositories, Resource&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Andrew (dobedobedoh), Mick Hawkins (michaelh)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Email, Forum, HTML Editor (Atto), HTML Editor (TinyMCE), Installation, JavaScript, Logging, RSS, Unit tests, User Tours&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bas Brands (basbrands), Ryan (ryanwyllie)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Themes, Dashboard (My home), Accessibility, HTML and CSS, Navigation, Usability, Javascript (&#039;&#039;Ryan&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Damyon (damyon), Zig (zig)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Assignment, Assignment (2.2), Competencies, Database activity module, Backup, Backup: IMS-CC&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;David (dmonllao), Víctor Deniz (victor)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Analytics, Caching, Global search, Gradebook, Grading methods, Libraries, Performance, Tasks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;David (mudrd8mz), Sara (sarjona), Amaia Anabitarte (amaia)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Badges, Cohorts, Enrolments, Feedback, Hub, Language, Maths filters, MNet, Plagiarism, Roles / Access, SCORM, Survey, Tags, Translation, User management, Wiki(2.x), Workshop&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jake (jaked), Jun (jpataleta )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Automated functional tests (behat), Choice, Comments, Conditional activities, Database SQL/XMLDB, Events API, Files API, Filters, Forms Library, Portfolio, Web Services&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mark (markn), Carlos Escobedo (carlos)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Activity completion, Authentication, Chat, Course completion, External Tool (IMS-LTI), IMS-CP resource type, LTI provider, Media, Messages&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simey (lameze), Shamim (rezaie9)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Calendar, Groups, Questions, Quiz&lt;/div&gt;</summary>
		<author><name>Aanabit</name></author>
	</entry>
</feed>