<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/501/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stronk7</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/501/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stronk7"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/Special:Contributions/Stronk7"/>
	<updated>2026-04-14T22:22:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Learning_Tools/Installation&amp;diff=155174</id>
		<title>Learning Tools/Installation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Learning_Tools/Installation&amp;diff=155174"/>
		<updated>2026-03-23T10:02:34Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installation ==&lt;br /&gt;
For more detailed info how to install plugins in general, visit https://docs.moodle.org/501/en/Installing_plugins.&lt;br /&gt;
&lt;br /&gt;
To install Learning Tools, you have three options:&lt;br /&gt;
=====Option 1: Install from Moodle.org=====&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;NOT YET POSSIBLE, WAITING FOR PLUGIN APPROVAL&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
#Login as an admin and go to Site administration &amp;gt; Plugins &amp;gt; Install plugins. (If you can&#039;t find this location, then plugin installation is prevented on your site.)&lt;br /&gt;
#Click the button &#039;Install plugins from Moodle plugins directory&#039;.&lt;br /&gt;
#Search for &amp;quot;Learning Tools&amp;quot;, click the install button, then click Continue.&lt;br /&gt;
#Confirm the installation request&lt;br /&gt;
#Check the plugin validation report&lt;br /&gt;
=====Option 2: Install from zip package=====&lt;br /&gt;
#Download Learning Tools from &amp;lt;nowiki&amp;gt;https://bdecent.de/product/learningtools&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
#Login to your Moodle site as an admin and go to Administration &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Install plugins.&lt;br /&gt;
#Upload the ZIP file. You should only be prompted to add extra details (in the Show more section) if the plugin is not automatically detected.&lt;br /&gt;
#If your target directory is not writeable, you will see a warning message.&lt;br /&gt;
#Check the plugin validation report&lt;br /&gt;
=====Option 3: Install manually on server=====&lt;br /&gt;
#Download Learning Tools from &amp;lt;nowiki&amp;gt;https://bdecent.de/product/learningtools&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
#Rename the folder to &amp;quot;learningtools&amp;quot;&lt;br /&gt;
#Upload or copy it to your Moodle server.&lt;br /&gt;
#Unzip it in the `/local` directory. (the path should then look for example like this: [https://yourmoodle.com/mod/pulse/version.php https://yourmoodle.com/local/learningtools/version.php])&lt;br /&gt;
#In your Moodle site (as admin) go to Settings &amp;gt; Site administration &amp;gt; Notifications (you should, for most plugin types, get a message saying the plugin is installed).&lt;br /&gt;
==Initial configuration==&lt;br /&gt;
After the installation, the plugin is ready to use. The floating button will immediately show up for all authenticated users (guests and non-authenticated users can&#039;t use them).&lt;br /&gt;
===Global settings===&lt;br /&gt;
Learning Tools has a couple of global settings which can be accessed via at &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Local Plugins &amp;gt; Learning Tools&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Notification display time&#039;&#039;&#039; — this defined the time that the notification is shown to the user after the user for example bookmarked a page&lt;br /&gt;
*&#039;&#039;&#039;Learning Tools in user menu&#039;&#039;&#039; — syntax for adding tools to the user menu (see below)&lt;br /&gt;
*&#039;&#039;&#039;Manage Learning Tools&#039;&#039;&#039; — on this page, you can enable/disable, sort and uninstall each tool&lt;br /&gt;
===Adding Learning Tools to the user menu===&lt;br /&gt;
In order to keep the floating button menu as simple as possible, we have only added the &amp;quot;action&amp;quot; (e.g. create a bookmark), but not the &amp;quot;list&amp;quot; (e.g. see all bookmarks). Instead, we tried to make Learning Tools as native as possible by adding them on the user profile, following a design pattern used by core moodle (e.g. for forum posts or user related reports).&lt;br /&gt;
&lt;br /&gt;
In addition, we think that the user menu is a great spot as well to provide access, too. That&#039;s why we&#039;ve prepared the syntax for you, so that you can simply copy and paste it into the user menu. (we had initially automated that, but it felt too intrusive and would have potentially surprised some administrators, which is why we opted for this solution instead).&lt;br /&gt;
&lt;br /&gt;
The user menu can be customized here: &#039;&#039;Site administration &amp;gt; Appearance &amp;gt; Themes &amp;gt; Theme settings &amp;gt; User menu items&#039;&#039; (or simply search for user menu).&lt;br /&gt;
[[Category:Learning Tools]]&lt;br /&gt;
[[Category:bdecent plugins]]&lt;br /&gt;
[[Category:Plugin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[es:Instalación de Herramientas de Aprendizaje]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Talk:Installing_plugins&amp;diff=155170</id>
		<title>Talk:Installing plugins</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Talk:Installing_plugins&amp;diff=155170"/>
		<updated>2026-03-20T09:46:11Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi,&lt;br /&gt;
&lt;br /&gt;
I&#039;d suggest to remove the &amp;quot;Contributed code&amp;quot; category from this page. This is not contributed code, but real information about how to install code/plugins, contributed or no. --[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] ([[User talk:Eloy Lafuente (stronk7)|talk]]) 09:45, 20 March 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Talk:Installing_plugins&amp;diff=155169</id>
		<title>Talk:Installing plugins</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Talk:Installing_plugins&amp;diff=155169"/>
		<updated>2026-03-20T09:45:39Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Created page with &amp;quot;Hi,  I&amp;#039;d suggest to remove the &amp;quot;Contributed code&amp;quot; category from this page. This is not contributed code, but real information about how to install code, contributed or no. --~~~~&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi,&lt;br /&gt;
&lt;br /&gt;
I&#039;d suggest to remove the &amp;quot;Contributed code&amp;quot; category from this page. This is not contributed code, but real information about how to install code, contributed or no. --[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] ([[User talk:Eloy Lafuente (stronk7)|talk]]) 09:45, 20 March 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Count_user_block&amp;diff=154742</id>
		<title>Count user block</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Count_user_block&amp;diff=154742"/>
		<updated>2025-11-19T17:27:39Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This plug-in is the block which counts the number assigned to the roll within a course like moodle1.9.&lt;br /&gt;
Only an administrator can use.&lt;br /&gt;
When it installs in the front page of moodle, this block considers the load of a server and a total button is not displayed.&lt;br /&gt;
&lt;br /&gt;
You can be a registered user on the screen, such as moodle1.9 When you click the name of the role.&lt;br /&gt;
&lt;br /&gt;
GitHub:&lt;br /&gt;
&lt;br /&gt;
https://github.com/h-honda/moodle&lt;br /&gt;
&lt;br /&gt;
[[Category: Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/addressbook_contact_add&amp;diff=154725</id>
		<title>blocks/moodletxt/addressbook contact add</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/addressbook_contact_add&amp;diff=154725"/>
		<updated>2025-11-16T16:32:08Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding a Contact to a MoodleTxt Address Book ==&lt;br /&gt;
&lt;br /&gt;
This page allows you to add a new contact to your address book. The first section allows you to enter some basic information about the contact:&lt;br /&gt;
&lt;br /&gt;
*Contact&#039;s first name&lt;br /&gt;
*Contact&#039;s last name&lt;br /&gt;
*Name of company (if contact is a company, or represents one)&lt;br /&gt;
*Contact&#039;s phone number&lt;br /&gt;
&lt;br /&gt;
=== Group Membership ===&lt;br /&gt;
&lt;br /&gt;
Any groups that already exist within your address book are displayed in the &amp;quot;Addressbook Groups&amp;quot; list on the left of the page. If you want to add this new contact to any of these groups, select them from the list on the left and click the &amp;gt;&amp;gt; button. This will move them to the list on the right hand side of the page. The new contact will be added to any groups that are shown in this list on the right when it is saved to the address book.&lt;br /&gt;
&lt;br /&gt;
=== Saving the Contact ===&lt;br /&gt;
&lt;br /&gt;
When you are satisfied with the details you have entered for the new contact, you have two options when saving it. You can either save the contact, and return to the address book&#039;s listing page, or you can clear the form to add another contact. Select the appropriate button from the bottom of the form, and the contact will be saved to the database.&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Addressbook Add Contact]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/addressbook_groups&amp;diff=154724</id>
		<title>blocks/moodletxt/addressbook groups</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/addressbook_groups&amp;diff=154724"/>
		<updated>2025-11-16T16:31:56Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Managing your MoodleTxt Addressbook Groups ==&lt;br /&gt;
&lt;br /&gt;
This page consists of three forms, allowing you to add, edit and delete groups.&lt;br /&gt;
&lt;br /&gt;
=== Adding a Group ===&lt;br /&gt;
&lt;br /&gt;
Adding a group to the address book couldn&#039;t be simpler.  Locate the form at the top of the page headed &#039;&#039;&#039;Add a Group&#039;&#039;&#039;.  This form has a single text box for the name of the group.  Give the group a name, and then click the &amp;quot;Add Group&amp;quot; button, and the new contact group will be created.&lt;br /&gt;
&lt;br /&gt;
=== Updating Group Members ===&lt;br /&gt;
&lt;br /&gt;
If you wish to add or remove members from a group, first select the group you wish to modify from the large drop-down box at the top of the form labelled &#039;&#039;&#039;Update Group Members&#039;&#039;&#039;. When you have selected a group, you should see the form update, with the current group members being moved from the list of potential members on the left to the list of current members on the right (assuming that the group already has members).&lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-group-member-selector.png|frame|center|Group membership selector]]&lt;br /&gt;
&lt;br /&gt;
To add contacts to the group, select them from the list of potential members on the left, and click the &amp;quot;&amp;gt;&amp;gt;&amp;quot; button.  You will see them move to the list of group members on the right.  To remove contacts from the group, select them from the right hand list and click the &amp;quot;&amp;lt;&amp;lt;&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
Once you are satisfied with the list of group members, click the &amp;quot;Update Group&amp;quot; button, and the group membership list will be updated. The page will refresh, and a short notification should be displayed indicating that the group has been saved to the database.&lt;br /&gt;
&lt;br /&gt;
=== Deleting Groups ===&lt;br /&gt;
&lt;br /&gt;
The first step to deleting a group is to select the one you wish to delete from the drop-down list at the top of the form labelled &#039;&#039;&#039;Delete a Group&#039;&#039;&#039;. (You&#039;ll find it at the bottom of the page.)&lt;br /&gt;
&lt;br /&gt;
When you have done this, you need to confirm what should happen to the contacts that are already in the group being deleted.  Three options are available, and are shown below the group list.  &lt;br /&gt;
&lt;br /&gt;
; Preserve Contacts : Will remove the group without affecting the contacts contained within it.&lt;br /&gt;
; Delete Contacts : This will remove the group and delete its members from the address book.  This is useful for erasing old classes/years from the book.  &lt;br /&gt;
; Merge Contacts : This will remove the group and transfer its contacts into another group, allowing you to merge groups together.  If you select this option, be sure to select a destination group from the drop-down list provided.&lt;br /&gt;
&lt;br /&gt;
Once you have decided what you want to happen to the group&#039;s members, click the &amp;quot;Delete Group&amp;quot; button and the group will be erased from the address book.&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Addressbook Groups]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/addressbook_view&amp;diff=154723</id>
		<title>blocks/moodletxt/addressbook view</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/addressbook_view&amp;diff=154723"/>
		<updated>2025-11-16T16:31:49Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Viewing a MoodleTxt Address Book ==&lt;br /&gt;
&lt;br /&gt;
This page exists displays all contacts available within the selected address book. It allows you to browse, edit and delete them, as well as export the list to a file for download. If you wish to add a new contact to the address book, or edit your address book&#039;s contact groups, two links to the pages that handle this functionality are available at the top-left of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Contact Listing ===&lt;br /&gt;
&lt;br /&gt;
The primary feature of this page is a listing of all contacts contained within the address book. The table of contacts shows the following fields:&lt;br /&gt;
&lt;br /&gt;
*Contact&#039;s first name&lt;br /&gt;
*Contact&#039;s last name&lt;br /&gt;
*Name of company (if contact is a company, or represents one)&lt;br /&gt;
*Contact&#039;s phone number&lt;br /&gt;
&lt;br /&gt;
The list displayed is a standard Moodle table, and can be re-ordered, edited and navigated like any other tabular list in Moodle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Editing a Listed Contact ===&lt;br /&gt;
&lt;br /&gt;
MoodleTxt supports inline editing of the contacts displayed in the contact list. To edit a contact, simply double-click on it. The text row representing that contact will be automatically converted into a form.&lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-addressbook-contact-edit.png|border|none]]&lt;br /&gt;
&lt;br /&gt;
You can then make the appropriate corrections to the contact directly within the listing. Once you are satisfied with your changes, click the &amp;quot;Save&amp;quot; button at the right of the contact row, and the contact will be saved back into the listing. Clicking &amp;quot;Cancel&amp;quot; will revert any changes and restore the contact&#039;s entry to its previous state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Deleting One or More Contacts ===&lt;br /&gt;
&lt;br /&gt;
To delete contacts from your address book, first select them in the contact listing by checking the box at the left of each contact entry. (You can also select or deselect all contacts on the page by using the &amp;quot;Check all&amp;quot;/&amp;quot;Uncheck all&amp;quot; links at the bottom left of the table.) Once you have the contacts you wish to delete selected, click the &amp;quot;Delete the selected records&amp;quot; link underneath the contact listing, and the contacts will be removed from the address book.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the set of contacts you wish to retain in the address book is smaller than the set you wish to delete, you can select the contacts you wish to keep, and then click the link labelled &amp;quot;Delete all records except those currently selected&amp;quot; underneath the contact listing. This will delete all contacts in the address book except for those that you have selected from the contact listing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Changing the Address Book&#039;s Name and Visibility ===&lt;br /&gt;
&lt;br /&gt;
If you wish to change the details of the address book, they are displayed as an inline form at the top-left of the page, just above the contact listing. Simply edit the address book&#039;s name and visibility level and click the &amp;quot;Save&amp;quot; button. The page will refresh, and a short notification should be displayed indicating that the address book&#039;s details were updated in the database.&lt;br /&gt;
&lt;br /&gt;
Possible visibility levels for the address book:&lt;br /&gt;
&lt;br /&gt;
; Private Address Books : These are address books visible only to you, and can only have messages sent to them from your account.&lt;br /&gt;
; Global Address Books : These are visible to all users within the Moodle system, and messages can be sent to them from anywhere. However, the address book can still only be edited/maintained by you.&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Addressbook Listing]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/addressbooks&amp;diff=154722</id>
		<title>blocks/moodletxt/addressbooks</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/addressbooks&amp;diff=154722"/>
		<updated>2025-11-16T16:31:44Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MoodleTxt: Managing Address Books ==&lt;br /&gt;
&lt;br /&gt;
MoodleTxt allows you to create your own address books of contacts for sending messages to. These are generally contacts who do not have accounts within the Moodle system themselves, such as the parents of students.&lt;br /&gt;
&lt;br /&gt;
Your existing address books (if you have any) are displayed at the top of the page. Clicking on the name of an address book will open it for browsing and editing on another page. The icon next to an address book indicates whether it is a private or global addressbook.&lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-addressbook-icons.png|frame|none|Example of a global and private addressbook, with icons.]]&lt;br /&gt;
&lt;br /&gt;
; Private Address Books : These are address books visible only to you, and can only have messages sent to them from your account.&lt;br /&gt;
; Global Address Books : These are visible to all users within the Moodle system, and messages can be sent to them from anywhere. However, the address book can still only be edited/maintained by you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding a New Address Book ===&lt;br /&gt;
&lt;br /&gt;
Adding a new address book to MoodleTxt is simple. Under the &#039;&#039;&#039;Add a new address book&#039;&#039;&#039; heading, type the name of the new address book into the box labelled &amp;quot;Address book name&amp;quot;. Below that, select whether you want the address book to be private (only usable by you) or global (usable by anyone). &lt;br /&gt;
&lt;br /&gt;
When you are happy with your selections, click the &amp;quot;Add&amp;quot; button below the form. The page will refresh, and your new address book should appear in the list at the top of the page, along with a short success message indicating that the address book was saved to the database successfully. You can now click into the address book and begin adding contacts to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Deleting an Existing Address Book ===&lt;br /&gt;
&lt;br /&gt;
This section allows you to permanently delete an address book from the MoodleTxt block, or optionally merge it into another existing address book.&lt;br /&gt;
&lt;br /&gt;
Firstly, select the address book you wish to delete from the first drop-down box in this section. Next, you have the option to either delete the contacts in the address book, or merge them into another one. If you select the first option, then when the address book is deleted, all contacts and contact groups within it will also be permanently deleted. If you select the second option, then when the address book is deleted, all of its contacts and groups will be moved into another address book within the system. In order to use this option, you must select the destination address book from the second drop-down list provided.&lt;br /&gt;
&lt;br /&gt;
Once you are happy with the options selected, click the &amp;quot;Delete/Merge&amp;quot; button below the form. The page will be refreshed, and your selected address book should have been removed from the list of existing address books at the top of the page. A short notification message should also be displayed, indicating that the address book was successfully deleted from the database.&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Addressbooks]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Moodletxt_capabilities&amp;diff=154721</id>
		<title>Moodletxt capabilities</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Moodletxt_capabilities&amp;diff=154721"/>
		<updated>2025-11-16T16:31:36Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== List of all capabilities installed by MoodleTxt ==&lt;br /&gt;
&lt;br /&gt;
This page is an administrator&#039;s reference for the user capabilities that will be installed into your Moodle installation by MoodleTxt. You can use these to grant or deny access to the various sections of MoodleTxt using these capabilities in the standard Moodle control panel.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Capability Name&lt;br /&gt;
! Default Assignment&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| block/moodletxt:addressbooks&lt;br /&gt;
| Teachers and admins&lt;br /&gt;
| Granting this permission allows a user to create addressbooks within MoodleTxt&lt;br /&gt;
|-&lt;br /&gt;
| block/moodletxt:adminsettings&lt;br /&gt;
| Admins only&lt;br /&gt;
| Allows a user to use the MoodleTxt control panel and see error messages intended for administrators.&lt;br /&gt;
|-&lt;br /&gt;
| block/moodletxt:adminusers&lt;br /&gt;
| Admins only&lt;br /&gt;
| Allows a user to admin user information within MoodleTxt, such as editing a user&#039;s message filters, or viewing their message history.&lt;br /&gt;
|-&lt;br /&gt;
| block/moodletxt:defaultinbox&lt;br /&gt;
| Teachers and admins&lt;br /&gt;
| If a user has this capability assigned to them at system level, then they can be selected as the &amp;quot;default inbox&amp;quot; when creating message filters. (A default inbox is where any unfiltered messages for a given account are deposited.)&lt;br /&gt;
|-&lt;br /&gt;
| block/moodletxt:globaladdressbooks&lt;br /&gt;
| Teachers and admins&lt;br /&gt;
| If this user can create address books within MoodleTxt, they can create global address books that can be viewed and used by all users within the system.&lt;br /&gt;
|-&lt;br /&gt;
| block/moodletxt:personalsettings&lt;br /&gt;
| Teachers and admins&lt;br /&gt;
| Having this capability assigned to a user allows them to edit their own messaging preferences. This includes message templates and signatures, as well as options related to message display.&lt;br /&gt;
|-&lt;br /&gt;
| block/moodletxt:receivemessages&lt;br /&gt;
| Teachers and admins&lt;br /&gt;
| Any user that has this capability assigned can receive inbound messages within the block.&lt;br /&gt;
|-&lt;br /&gt;
| block/moodletxt:sendmessages&lt;br /&gt;
| Teachers and admins&lt;br /&gt;
| Any user that has this capability assigned can send messages out from the block.&lt;br /&gt;
|-&lt;br /&gt;
| block/moodletxt:viewstats&lt;br /&gt;
| Teachers and admins&lt;br /&gt;
| Any user that has this capability assigned can view user/message statistics. (Coming in 3.1)&lt;br /&gt;
|-&lt;br /&gt;
| block/moodletxt:viewmoodletxtpluslogs&lt;br /&gt;
| Admins only&lt;br /&gt;
| Allows the user to view the logs of event-based messaging. (Largely redundant, may be removed in 3.1. Users that have the :adminusers permission can use the sent page, which was upgraded since 3.0 beta 2, to view these logs already.)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Capabilities]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Moodletxt_cron&amp;diff=154720</id>
		<title>Moodletxt cron</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Moodletxt_cron&amp;diff=154720"/>
		<updated>2025-11-16T16:31:26Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MoodleTxt Updates Via Cron ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is cron? ===&lt;br /&gt;
&lt;br /&gt;
; Cron job : The term generally used (in Unix circles) to refer to a user-defined script or program that is automatically run at regular intervals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MoodleTxt can optionally use a cron job to fetch regular updates from the ConnectTxt server, including new inbound messages, and status updates for previously sent messages.&lt;br /&gt;
&lt;br /&gt;
=== Why use cron? ===&lt;br /&gt;
&lt;br /&gt;
The recommended method of acquiring updates from the ConnectTxt system is [[Moodletxt_push|XML Push]]. However, this requires an inbound connection to your Moodle server. If you cannot configure this connection, but still wish to receive updates from the ConnectTxt system automatically, then you can use MoodleTxt&#039;s local cron job to automatically poll the ConnectTxt system for updates at regular intervals. This is much more efficient than the default update settings (where checks are made when certain pages are loaded) and will result in a performance increase for MoodleTxt.&lt;br /&gt;
&lt;br /&gt;
=== Automatic Setup ===&lt;br /&gt;
&lt;br /&gt;
As of MoodleTxt 2.4, this cron script automatically adds itself to the main Moodle maintenance script, so if you already have this running at short, regular intervals, no action is required to enable cron – MoodleTxt will automatically fetch inbound messages and status updates every time the Moodle maintenance script runs.&lt;br /&gt;
&lt;br /&gt;
=== Custom Setup ===&lt;br /&gt;
&lt;br /&gt;
If your Moodle maintenance script is not enabled, or does not run often enough for MoodleTxt use, you can still use cron to fetch message details.  MoodleTxt provides a script that is another entry point to the cron system, which you can set to run at shorter intervals separate from the Moodle maintenance script. The path to this script is “/blocks/moodletxt/cron.php”, under your main Moodle installation directory.  For example, if you have Moodle installed on Linux at:&lt;br /&gt;
&lt;br /&gt;
/srv/www/moodle/&lt;br /&gt;
&lt;br /&gt;
Then the path to the cron script would be:&lt;br /&gt;
&lt;br /&gt;
/srv/www/moodle/blocks/moodletxt/cron.php&lt;br /&gt;
&lt;br /&gt;
By specifying this file to be run in your chosen scheduling software, at an interval of your choosing, you can emulate the efficiency of the [[Moodletxt_push|XML Push]] service without changing your security configuration.&lt;br /&gt;
&lt;br /&gt;
=== Steps to Take After Setup ===&lt;br /&gt;
&lt;br /&gt;
Once you have configured cron according to your needs, it is wise to turn off the per-request updates from the [[admin/setting/blocksettingmoodletxt|MoodleTxt Settings page]]. (These are the Get_Status_On_View and  Get_Inbound_On_View settings.) These will no longer be needed, and you will gain a performance boost by disabling them.&lt;br /&gt;
&lt;br /&gt;
[[:Category:MoodleTxt | View all MoodleTxt documentation]]&lt;br /&gt;
[[Category:MoodleTxt|Cron]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=error/block_moodletxt/errorbadbookid&amp;diff=154719</id>
		<title>error/block moodletxt/errorbadbookid</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=error/block_moodletxt/errorbadbookid&amp;diff=154719"/>
		<updated>2025-11-16T16:31:20Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Attempting to View/Edit an Address Book That Is Not Yours ==&lt;br /&gt;
&lt;br /&gt;
You have attempted to view or edit a MoodleTxt addressbook, or the contacts within it, and received the error message:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The address book selected was invalid, or you do not own the address book you are attempting to edit.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Cause ===&lt;br /&gt;
Address books created within MoodleTxt can only be edited by the user that created them, and in most cases this applies to viewing the address book also. You are attempting to edit an address book that you do not have ownership of, and as such MoodleTxt has blocked this action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Error]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=error/block_moodletxt/errorbadmessageid&amp;diff=154718</id>
		<title>error/block moodletxt/errorbadmessageid</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=error/block_moodletxt/errorbadmessageid&amp;diff=154718"/>
		<updated>2025-11-16T16:31:14Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Attempting to View a Message That Does Not Exist ==&lt;br /&gt;
&lt;br /&gt;
You have attempted to view a sent message within MoodleTxt, and received the error message:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The message ID given does not exist, or does not belong to the user ID found. Please select a valid message to view.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Cause ===&lt;br /&gt;
There are several potential causes for this error:&lt;br /&gt;
&lt;br /&gt;
# The ID of the message you are attempting to view is incorrect. If you are copying and pasting a link to a message, please ensure that you have included all the page&#039;s parameters in the link.&lt;br /&gt;
# The message you are attempting to view no longer exists within the database.&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Error]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=error/block_moodletxt/errornoaccountspresent&amp;diff=154717</id>
		<title>error/block moodletxt/errornoaccountspresent</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=error/block_moodletxt/errornoaccountspresent&amp;diff=154717"/>
		<updated>2025-11-16T16:31:08Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== No ConnectTxt Accounts Present Within MoodleTxt ==&lt;br /&gt;
&lt;br /&gt;
You have gone to the &amp;quot;Compose a Message&amp;quot; page within MoodleTxt, and received the error message:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;No ConnectTxt accounts have been added to moodletxt. The system administrator must link moodletxt to one or more ConnectTxt accounts before messages can be sent.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Cause ===&lt;br /&gt;
MoodleTxt uses SMS messaging accounts on the [http://www.bbconnecttxt.com/ ConnectTxt] messaging system to send and receive SMS messages. Before MoodleTxt can be used to send out messages, one or more ConnectTxt accounts must be made available to you via MoodleTxt&#039;s control panel. &lt;br /&gt;
&lt;br /&gt;
=== Solution ===&lt;br /&gt;
Your system administrator must make one or more ConnectTxt accounts available for you to use.&lt;br /&gt;
&lt;br /&gt;
If you are the system administrator, then you can find out more information about how to do this in the [[admin/setting/blocksettingmoodletxt|MoodleTxt settings documentation]].&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Error]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=error/block_moodletxt/errornopermissionmessage&amp;diff=154716</id>
		<title>error/block moodletxt/errornopermissionmessage</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=error/block_moodletxt/errornopermissionmessage&amp;diff=154716"/>
		<updated>2025-11-16T16:31:01Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Attempting to Access a Message You Do Not Have Permission to View ==&lt;br /&gt;
&lt;br /&gt;
You have attempted to view the details of a sent message within MoodleTxt, and received the following message:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;You are not authorised to view this message.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Cause ===&lt;br /&gt;
The message you have attempted to view does not belong to you, and you do not have the [[Moodletxt_capabilities|necessary access level]] to view another user&#039;s message details.&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Error]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/preferences&amp;diff=154715</id>
		<title>blocks/moodletxt/preferences</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/preferences&amp;diff=154715"/>
		<updated>2025-11-16T16:30:54Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MoodleTxt User Preferences ==&lt;br /&gt;
&lt;br /&gt;
On this page of the block, you can configure your user-specific preferences. These include your message templates, SMS signature, and various other options that relate to how you use the messaging block.&lt;br /&gt;
&lt;br /&gt;
=== Signature ===&lt;br /&gt;
&lt;br /&gt;
A message signature is a short piece of text (up to 25 characters) that you can optionally append to the end of your outgoing messages within MoodleTxt. This signature is useful for identifying yourself to the recipient, or for including common reply information (such as &amp;quot;reply with keyword BEN&amp;quot;). If you already have a message signature stored within MoodleTxt, it will appear in the textbox labelled &amp;quot;signature&amp;quot;, otherwise this block will be blank. To edit your signature, simply enter the text you would like to use in this box. You will notice the character counter above it decreasing from 25 towards 0 as you type, indicating the number of usable characters you have remaining. Once you hit 25 characters, you will be unable to type any further.&lt;br /&gt;
&lt;br /&gt;
When you are happy with your signature text, click the &amp;quot;Save&amp;quot; button at the bottom of the page. The page will refresh, and you should receive a short notification that the signature text has been updated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Message Templates ===&lt;br /&gt;
&lt;br /&gt;
Message templates can be used to store and re-use commonly sent messages, making sending these messages quick and easy. Templates can be selected from the [[blocks/moodletxt/send|message composition page]], instead of filling in the message text by hand, and can contain any text that a regular message can.&lt;br /&gt;
&lt;br /&gt;
You will notice two sections on the page, &#039;&#039;&#039;My Message Templates&#039;&#039;&#039; and &#039;&#039;&#039;Add New Template&#039;&#039;&#039;. The first of these lists all your existing message templates (if you have any), and allows you to select them for editing or deletion. The second section contains a text area in which you can add a new template to the system, or edit one you have selected from the existing list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding a New Template ===&lt;br /&gt;
&lt;br /&gt;
To add a new template, click inside the box labelled &amp;quot;Template Text&amp;quot;, and enter your message.  As you type, you should see the number of characters you have used displayed directly above the message box, along with the number of individual SMS messages your text will be broken into. For example, the display &#039;&#039;&#039;172 / 2&#039;&#039;&#039; means you have used 172 characters, and that this will be split into two messages when sent. &lt;br /&gt;
&lt;br /&gt;
Also, underneath the message text box. you will find three buttons, labelled &amp;quot;First Name,&amp;quot; &amp;quot;Last Name,&amp;quot; and &amp;quot;Full Name.&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-compose-tag-buttons.png|border|center]]&lt;br /&gt;
&lt;br /&gt;
Clicking on any of these buttons will insert a &amp;quot;tag&amp;quot; into the message.  This tag will be automatically replaced, for each recipient, with the appropriate name, allowing you to add a personal touch to the message.  For example:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Hello %FIRSTNAME%, welcome to DMU.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Will be converted automatically to:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Hello Jaime, welcome to DMU.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you are satisfied with the text in the template editing box, click the &amp;quot;Save&amp;quot; button at the bottom of the page. The page will refresh, and you should see a short notice at the top of the screen indicating that the template has been saved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Editing an Existing Template ===&lt;br /&gt;
&lt;br /&gt;
To edit a template that has already been saved in the MoodleTxt block, go to the section headed &#039;&#039;&#039;My Message Templates&#039;&#039;&#039;. Select the template you wish to edit from the list and click the &amp;quot;Edit Template&amp;quot; button below it. The &#039;&#039;&#039;Add New Template&#039;&#039;&#039; section will be retitled to &#039;&#039;&#039;Edit Existing Template&#039;&#039;&#039;, and your template will appear in the editing box. You can now make your desired changes to it, exactly as if you were adding a new template to the system. When you are satisfied with your changes, click the &amp;quot;Save&amp;quot; button at the bottom of the page. The page will refresh, and you should see a short notice at the top of the screen indicating that the template has been updated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Deleting a Template ===&lt;br /&gt;
&lt;br /&gt;
To remove a template from MoodleTxt, go to the section headed &#039;&#039;&#039;My Message Templates&#039;&#039;&#039;. Select the template you wish to delete from the list and click the &amp;quot;Delete Template&amp;quot; button below it. A confirmation message will be displayed over the page. If you are happy to delete the template, click the &amp;quot;OK&amp;quot; button. The page will refresh, and a short message should be displayed at the top of the screen, indicating that the template has been deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Inbox Preferences ===&lt;br /&gt;
&lt;br /&gt;
Several options exist that relate to how MoodleTxt displays messages in your [[blocks/moodletxt/received|inbox]], and these are listed here. Firstly, you can instruct MoodleTxt to hide the names and phone numbers of received messages within the inbox listing. This is useful in classroom or group situations, where you wish to receive feedback or opinions from a number of people whilst keeping their responses anonymous. With this box checked, MoodleTxt will hide sender information for these messages.&lt;br /&gt;
&lt;br /&gt;
Finally, there is the option to determine how often MoodleTxt&#039;s dynamic inbox checks for new messages with the Moodle system. If you are on the [[blocks/moodletxt/received|inbox]] page, it will check with the database for new messages at the interval you set here. Please note that this is separate from checking with the ConnectTxt system for new messages, and will only pick up messages that have already been received by the Moodle system. Administrators wanting more information on how messages are received by MoodleTxt can find it in the documentation for the [[admin/setting/blocksettingmoodletxt|main settings page]].&lt;br /&gt;
&lt;br /&gt;
When you have edited your inbox preferences accordingly, click the &amp;quot;Save&amp;quot; button at the bottom of the page. The page will refresh, and you should see a short message at the top of the screen, indicating that your preferences have been updated.&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Preferences]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Moodletxt_push&amp;diff=154714</id>
		<title>Moodletxt push</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Moodletxt_push&amp;diff=154714"/>
		<updated>2025-11-16T16:30:47Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MoodleTxt and Pushed Updates ==&lt;br /&gt;
&lt;br /&gt;
=== What is XML Push? ===&lt;br /&gt;
&lt;br /&gt;
For those MoodleTxt administrators whose Moodle installations are publicly accessible from outside their local network, ConnectTxt offers a free service that automatically sends updates to sent messages, along with any new inbound messages, directly to your MoodleTxt installation.  &lt;br /&gt;
&lt;br /&gt;
=== Why should I use it? ===&lt;br /&gt;
&lt;br /&gt;
XML Push updates are sent out as soon as they are received by the ConnectTxt system. As a result, this solution provides the quickest and most convenient update of message status records, and ensures that the information contained within your installation is up-to-date and useful. It also provides a performance boost for your MoodleTxt installation, as once XML Push is enabled you can disable the default update methods within MoodleTxt.&lt;br /&gt;
&lt;br /&gt;
=== Information required for setup ===&lt;br /&gt;
&lt;br /&gt;
To use XML Push, please first ensure that you are certain of the URL (web address) for your your Moodle installation.  Beneath this, the XML Push script is located at “/blocks/moodletxt/push.php.”  For example, if your URL for Moodle is normally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://www.yoursite.com/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then the path to XML Push will be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://www.yoursite.com/moodle/blocks/moodletxt/push.php&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have made a note of this URL, you must decide on a username and password for ConnectTxt to use to authenticate themselves on your installation.  This username is used so that only ConnectTxt may send data through to your system, and helps to keep your installation secure – if the correct username and password are not supplied, XML Push simply shuts itself down, not accepting any further data.&lt;br /&gt;
&lt;br /&gt;
When you have decided on a username and password for XML Push to use, please save them in [[admin/setting/blocksettingmoodletxt|MoodleTxt&#039;s system settings]] to enable the XML Push system.&lt;br /&gt;
&lt;br /&gt;
=== Passing information to ConnectTxt ===&lt;br /&gt;
&lt;br /&gt;
Now you should have all the information necessary to activate XML Push with ConnectTxt.  Please contact the ConnectTxt support team (using the contact information displayed at the end of this document) with:&lt;br /&gt;
&lt;br /&gt;
# A list of all the ConnectTxt accounts that will need to be enabled for use with XML Push (this is normally a list of all the accounts stored in MoodleTxt).&lt;br /&gt;
# The URL path to XML Push on your installation.&lt;br /&gt;
# The XML Push username and password you defined above and stored on the setting screen.&lt;br /&gt;
&lt;br /&gt;
ConnectTxt will then activate your account(s) for use with XML Push.  This process is normally completed quickly, but can take up to 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== After setup ===&lt;br /&gt;
&lt;br /&gt;
If your change your XML Push username or password in the future, or add/remove any ConnectTxt accounts from the MoodleTxt system, please notify ConnectTxt of any changes that need to be made.&lt;br /&gt;
&lt;br /&gt;
Once you have configured cron according to your needs, it is wise to turn off the per-request updates from the [[admin/setting/blocksettingmoodletxt|MoodleTxt Settings page]]. (These are the Get_Status_On_View and  Get_Inbound_On_View settings.) These will no longer be needed, and you will gain a performance boost by disabling them.&lt;br /&gt;
&lt;br /&gt;
=== ConnectTxt Contact Details ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Telephone : +44 (0) 113 234 2111&lt;br /&gt;
; E-mail : txttoolssupport@blackboard.com&lt;br /&gt;
; Live Chat : [http://messenger.providesupport.com/messenger/txttools.html Click here to chat live with our support team].&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Push Updates]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/send&amp;diff=154713</id>
		<title>blocks/moodletxt/send</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/send&amp;diff=154713"/>
		<updated>2025-11-16T16:30:39Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sending a Message via MoodleTxt ==&lt;br /&gt;
&lt;br /&gt;
This page will run you through the process of sending out a message from the MoodleTxt compose page. Given the wide number of options that MoodleTxt provides for outbound messaging, this page is designed as a wizard, to easily section off the various stages of composing a new message. You can move forwards and backwards through the steps of the wizard by clicking on their titles at the top of the form.&lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-compose-nav.png|frame|center|The compose wizard is organised into 4 steps. Click on a step to zoom to it]]&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Recipients ===&lt;br /&gt;
&lt;br /&gt;
Firstly, you must select the recipients for the message.  You may send a text message to one or more individuals, to a pre-defined group of users/contacts, to additional recipients you specify on the page, or any combination of the three. &lt;br /&gt;
&lt;br /&gt;
On the left of the screen you will see the &amp;quot;Potential Recipients&amp;quot; list. This list holds all the recipients (of a given type) that were found in your Moodle system. These are the recipients that you can add to the message. On the right of the screen you will see the &amp;quot;Selected Recipients&amp;quot; list. Any recipient that is in this list when the form is submitted will receive the message. &lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-compose-recipient-lists.png|frame|center|The &amp;quot;potential&amp;quot; and &amp;quot;selected&amp;quot; recipient lists for MoodleTxt. Clicking the &amp;gt;&amp;gt; and &amp;lt;&amp;lt; buttons will add or remove selected recipients to/from the message.]]&lt;br /&gt;
&lt;br /&gt;
To add a recipient to the message, find them in the list on the left, select them, and click the button with the right-facing arrows (&amp;gt;&amp;gt;). The recipient will move across to the selected list. To remove them from the message, click the button with the left-facing arrows (&amp;lt;&amp;lt;). The recipient will be removed from the selected list, and reappear in the potential list on the left; they will no longer receive a copy of the message.&lt;br /&gt;
&lt;br /&gt;
You will notice that the recipients you are selecting are colour-coded. These colours designate the type of recipient that you are selecting. Underneath the two lists you will notice a number of coloured buttons: &amp;quot;Users&amp;quot;, &amp;quot;User Groups&amp;quot;, &amp;quot;Addressbook Contacts&amp;quot;, &amp;quot;Addressbook Groups&amp;quot;. Users are the user accounts and user groups defined in your Moodle installation.  Address Books contain the contacts and groups you define within MoodleTxt.  Click on one of these buttons to display the appropriate contact list.&lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-compose-recipient-selectors.png|frame|center|Clicking on one of these colour-coded buttons displays the appropriate contacts in the &amp;quot;Potential Recipients&amp;quot; list]]&lt;br /&gt;
&lt;br /&gt;
(To select more than one contact from a list, hold down CTRL on Windows/Linux, or the Apple/cloverleaf key on a Mac, and click on each contact. You can also select a group of sequential contacts by clicking on the first contact, then holding the SHIFT key and selecting a contact further up/down the list.  This will select every contact in a range.)&lt;br /&gt;
&lt;br /&gt;
Finally, if you wish to add recipients to the message that are not already stored within Moodle or MoodleTxt, you can use the &amp;quot;Add Additional Contact&amp;quot; form, which you will find underneath the recipient lists at the bottom of the slide.  Enter the contact&#039;s first name, last name and phone number in the appropriate boxes, and click the “Add Contact” button.  The new contact will be added to the “Selected Recipients” list on the right of the page.&lt;br /&gt;
&lt;br /&gt;
 Any contacts you added from the “Additional Recipients” form &lt;br /&gt;
 will be destroyed when removed from the &amp;quot;Selected Recipients&amp;quot; list.&lt;br /&gt;
&lt;br /&gt;
Once you are satisfied with your recipient selections, click on &amp;quot;Step 2&amp;quot; in the navigation bar at the top, and you&#039;ll be taken to the Compose Message screen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Compose Message ===&lt;br /&gt;
&lt;br /&gt;
On this slide of the wizard, you will compose the actual message that is to be sent out to course participants. You can utilise pre-saved [[blocks/moodletxt/preferences|templates]] for sending out commonly used messages/notices, or write the message free-hand. You can also customise the message by merging in the recipient&#039;s name, and sign it with your own custom [[blocks/moodletxt/preferences|signature]].&lt;br /&gt;
&lt;br /&gt;
Inside the large textbox marked &amp;quot;Message&amp;quot;, please type your intended text message.  As you type, you should see the number of characters you have used displayed directly above the message box, along with the number of individual SMS messages your text will be broken into.&lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-compose-counters.png|border|center]]&lt;br /&gt;
&lt;br /&gt;
If you wish to use a pre-defined message template, select it from the drop-down list marked “Message Templates”, and it will automatically fill the textbox with the template for you. Message length counters will update automatically.  If you wish to add your own customised signature to the message, checking the &amp;quot;Add Signature&amp;quot; checkbox will append your signature to the end of the message in the textbox.  &lt;br /&gt;
&lt;br /&gt;
Also, underneath the message text box. you will find three buttons, labelled &amp;quot;First Name,&amp;quot; &amp;quot;Last Name,&amp;quot; and &amp;quot;Full Name.&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-compose-tag-buttons.png|border|center]]&lt;br /&gt;
&lt;br /&gt;
Clicking on any of these buttons will insert a &amp;quot;tag&amp;quot; into the message.  This tag will be automatically replaced, for each recipient, with the appropriate name, allowing you to add a personal touch to the message.  For example:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Hello %FIRSTNAME%, welcome to DMU.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Will be converted automatically to:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Hello Jaime, welcome to DMU.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Unicode Messages ====&lt;br /&gt;
&lt;br /&gt;
If you use any characters that do not fit within the standard [http://en.wikipedia.org/wiki/GSM_03.38 GSM alphabet] used by SMS messages, then these will be sent as Unicode messages. This does not affect message delivery in any way, but it does reduce the number of characters allowed per message from 160 to 70. MoodleTxt checks your text automatically as you type, and if you use characters that require a Unicode message, then a warning message will be displayed below the textbox. The &amp;quot;characters per message&amp;quot; field will also change to 70 to reflect this, and &amp;quot;characters/messages used&amp;quot; will be recalculated according to the new message length.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Message Options ===&lt;br /&gt;
&lt;br /&gt;
This step of the wizard allows you to schedule a message to be delivered at a later date, along with any other options that relate to message delivery.&lt;br /&gt;
&lt;br /&gt;
==== Unicode Messaging Options ====&lt;br /&gt;
&lt;br /&gt;
Firstly, if your message contains unicode message characters, as detailed above, you can opt to disable these characters in the outgoing message. If you decide to suppress these characters in the message, they may appear garbled on the recipient&#039;s phone (though the rest of the message should appear OK). However, doing so will restore the 160 character length of the message, and remove the restriction to 70 characters that unicode messages normally have.&lt;br /&gt;
&lt;br /&gt;
To suppress unicode characters, select &amp;quot;Restrict message to GSM character set only&amp;quot; in the first option set, under the heading &amp;quot;Unicode Messaging Options&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Scheduling ====&lt;br /&gt;
&lt;br /&gt;
To schedule your message for delivery at a later point, first you need to select the &amp;quot;Schedule to send later&amp;quot; option under the &amp;quot;Scheduling&amp;quot; heading. Once you have done this, select a time and date using the combo boxes provided. The date and time you enter is according to your own timezone on your Moodle user account; this will be converted automatically by MoodleTxt to Universal Time before sending.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Review &amp;amp; Send ===&lt;br /&gt;
&lt;br /&gt;
The final step of the wizard exists simply to allow you to review all the details of the message in one place, prior to it being sent. The recipients of the message are displayed, along with the message text, how many characters and messages per recipient will be used, and any unicode warnings that are relevant. Once you are happy with the information displayed on this last screen, click the &amp;quot;Send Message&amp;quot; button at the bottom to send the message to ConnectTxt.&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Send]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/sent&amp;diff=154712</id>
		<title>blocks/moodletxt/sent</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/sent&amp;diff=154712"/>
		<updated>2025-11-16T16:30:30Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sent Message Listing ==&lt;br /&gt;
&lt;br /&gt;
This page lists all the messages sent out by the existing Moodle user, as well as (if you have the right permissions enabled) all messages sent out by other Moodle users. Some general statistics regarding messages sent are shown at the top left of the page. The sent message listing contains the following columns:&lt;br /&gt;
&lt;br /&gt;
; User Account : The name of the Moodle user that sent this message out. Clicking on the linked username within this column will take you to that user&#039;s Moodle profile page.&lt;br /&gt;
&lt;br /&gt;
; ConnectTxt Account : The ConnectTxt account through which this message was sent.&lt;br /&gt;
&lt;br /&gt;
; Message Text : A shortened summary of the message sent. Clicking on this text summary will take you to [[blocks/moodletxt/status|a page detailing its current status]].&lt;br /&gt;
&lt;br /&gt;
; Time Sent : The time at which this message was sent from the system, adjusted to your timezone.&lt;br /&gt;
&lt;br /&gt;
; Created by : Whether the message was written by the user or [[#event_gen|generated by a system event]]. (Only displayed when you have selected to view event-generated messages alongside your own created messages.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The listing table can be edited and re-ordered like any other Moodle data table. Once you are happy with the data currently onscreen, you can also export it to a spreadsheet or similar file using the download options at the bottom of the table. Simply select the type of export you would like from the provided drop-down list, and then click the download button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;event_gen&amp;quot;&amp;gt;Viewing Event-Generated Messages&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
As of MoodleTxt 3, messages can be generated by system events (such as those arriving via MoodleTxt Plus), as well as by the user. These messages are recorded like any other message, but are hidden on the sent message listing by default. If you wish to view any event-generated messages that have been sent out automatically from your account to another user, then you can enable them using the drop-down box at the top left of the screen.&lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-sent-type-list.png|frame|center|Allows you to show or hide event-generated messages.]]&lt;br /&gt;
&lt;br /&gt;
The options in this drop-down box are pretty self-explanatory. You can opt to either hide all event-generated messages (the default option), show the event-generated messages inline with your other sent messages, or show the event-generated messages on their own. If you decide to show event-generated messages alongside your own user-created messages, then an additional column is displayed showing whether the message was written by the user or generated by an event.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Viewing Other User&#039;s Messages ===&lt;br /&gt;
&lt;br /&gt;
If you have the correct [[Moodletxt_capabilities|user capabilities]] assigned, you can view messages sent out by other users within the system. An additional drop-down box will be displayed at the top left of the page:&lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-sent-user-list.png|border|center]]&lt;br /&gt;
&lt;br /&gt;
Select the user you wish to view, and the page will reload with that user&#039;s messages listed. Alternatively, you can select &amp;quot;All Users&amp;quot; to view every message sent out via your MoodleTxt installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Sent]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=admin/setting/blocksettingmoodletxt&amp;diff=154711</id>
		<title>admin/setting/blocksettingmoodletxt</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=admin/setting/blocksettingmoodletxt&amp;diff=154711"/>
		<updated>2025-11-16T16:30:24Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MoodleTxt Settings ==&lt;br /&gt;
&lt;br /&gt;
This page contains all the common configuration options for MoodleTxt. At the top of the page you will see two links:&lt;br /&gt;
&lt;br /&gt;
; ConnectTxt Accounts : This link will take you to the ConnectTxt account admin pages, which will allow you to add, update and restrict these accounts. If you have just installed MoodleTxt, this should be your first stop.&lt;br /&gt;
; Inbound Message Filters : This link will take you to the inbound filter management page, which will allow you to create filters for inbound SMS messages, routing them to particular Moodle users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Send/Receive Settings ===&lt;br /&gt;
&lt;br /&gt;
The first 4 settings in this section relate to how MoodleTxt gets both message status updates and new inbound messages from the ConnectTxt system. By default, MoodleTxt pulls these updates on a per-request basis, whenever users visit certain pages. However, it can be configured to get these updates automatically, which improves the performance of the block and results in far fewer outbound connections. The available automatic update methods are [[Moodletxt_cron | cron]] and [[Moodletxt_push | push]]. We &#039;&#039;&#039;highly&#039;&#039;&#039; recommend taking the time to set up push functionality, as it is the fastest and most efficient method of obtaining updates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field Name&lt;br /&gt;
! Field Label&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| Get_Status_On_View&lt;br /&gt;
| Automatically get status updates on &amp;quot;View Message&amp;quot; page&lt;br /&gt;
| If this box is checked, then whenever a user views the current status of a sent message, the block will first connect to the ConnectTxt system in order to fetch updates. You should uncheck this if you have configured an automatic update option as mentioned above.&lt;br /&gt;
|-&lt;br /&gt;
| Get_Inbound_On_View&lt;br /&gt;
| Automatically get inbound messages on Inbox page&lt;br /&gt;
| If this box is checked, then whenever a user views their inbox, the block will first connect to the ConnectTxt system in order to fetch new messages. You should uncheck this if you have configured an automatic update option as mentioned above.&lt;br /&gt;
|-&lt;br /&gt;
| Push_Username&lt;br /&gt;
| XML Push Username&lt;br /&gt;
| If you have set up XML push updates (highly recommended) then this is the username you provided to ConnectTxt as part of that setup. ConnectTxt uses this username to authenticate itself with your MoodleTxt installation when connecting to it.&lt;br /&gt;
|-&lt;br /&gt;
| Push_Password&lt;br /&gt;
| XML Push Password&lt;br /&gt;
| If you have set up XML push updates (highly recommended) then this is the password you provided to ConnectTxt as part of that setup. ConnectTxt uses this password to authenticate itself with your MoodleTxt installation when connecting to it.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The last two settings in this category control other parameters related to message sending via ConnectTxt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field Name&lt;br /&gt;
! Field Label&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| Protocol_Warnings_On&lt;br /&gt;
| Display SSL security warnings&lt;br /&gt;
| If you do not have SSL connections to the ConnectTxt server enabled, MoodleTxt will generally display warnings that your data is being transmitted in an unsecure manner. To disable these warnings, uncheck this box.&lt;br /&gt;
|-&lt;br /&gt;
| Event_Messaging_Account&lt;br /&gt;
| Event Messaging Account&lt;br /&gt;
| This is the ConnectTxt account that MoodleTxt will use when it is asked to send automatic messages out in response to system events. By extension, this is the ConnectTxt account that will be used to send any messages originating via the MoodleTxt Plus message processor plugin. If no account is selected, then MoodleTxt will be unable to send event-generated messages.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recipient Settings ===&lt;br /&gt;
&lt;br /&gt;
The settings in this section relate to how MoodleTxt captures user phone/name information from the Moodle system, and how it processes that information in order to send SMS messages out. (Future versions of the block will feature improvements in international phone number handling.)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field Name&lt;br /&gt;
! Field Label&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| National_Prefix&lt;br /&gt;
| National Prefix&lt;br /&gt;
| This is the default dialling prefix for phone numbers within your country. It is the digit or set of digits that all phone numbers begin with when being dialled within the country. This defaults to 0, the UK domestic dialling prefix. (&#039;&#039;&#039;Note:&#039;&#039;&#039; If the phone numbers you enter into MoodleTxt are already formatted internationally, e.g. +441234567890, then this setting is ignored.)&lt;br /&gt;
|-&lt;br /&gt;
| Default_International_Prefix&lt;br /&gt;
| Default International Prefix&lt;br /&gt;
| This is the international dialling prefix for phone numbers within your country. This usually consists of a plus &#039;+&#039; sign, along with two or three digits, and is used when dialling into your country from another location. This defaults to +44, the UK international dialling prefix. (&#039;&#039;&#039;Note:&#039;&#039;&#039; If the phone numbers you enter into MoodleTxt are already formatted internationally, e.g. +441234567890, then this setting is ignored.)&lt;br /&gt;
|-&lt;br /&gt;
| Phone_Number_Source&lt;br /&gt;
| Take phone numbers from&lt;br /&gt;
| This option allows you to choose the field in your user database table that MoodleTxt will search for mobile phone numbers (phone1 or phone2). This is largely redundant in modern Moodle setups, where phone2 has been standardised as the mobile phone field, and exists for long-running installations where things may be different. If mobile phone numbers are populated to the phone1 field in your system, then select it from this drop-down.&lt;br /&gt;
|-&lt;br /&gt;
| Default_Recipient_Name&lt;br /&gt;
| Default Recipient Name&lt;br /&gt;
| When Moodle cannot find a recipient&#039;s name in the database, or cannot match an incoming phone number to any known contact, this is the name/identifier it will record against that message.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Proxy Settings ===&lt;br /&gt;
&lt;br /&gt;
If connections between your MoodleTxt installation and ConnectTxt need to be routed via a proxy server, then you can enter the details of that proxy server in this section. &#039;&#039;&#039;Please note:&#039;&#039;&#039; MoodleTxt currently only supports proxy servers that use either BASIC authentication, or no authentication at all. Newer versions of Moodle have their own proxy settings within the system, and future versions of the block will migrate to use those settings for proxy support.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field Name&lt;br /&gt;
! Field Label&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| Proxy_Host&lt;br /&gt;
| Proxy Address&lt;br /&gt;
| The host/IP address of your proxy server.&lt;br /&gt;
|-&lt;br /&gt;
| Proxy_Port&lt;br /&gt;
| Proxy Port&lt;br /&gt;
| The TCP/IP port your proxy server listens on for connections.&lt;br /&gt;
|-&lt;br /&gt;
| Proxy_Username&lt;br /&gt;
| Proxy Username&lt;br /&gt;
| If your proxy server requires a username for authentication, then enter it here (BASIC authentication only).&lt;br /&gt;
|-&lt;br /&gt;
| Proxy_Password&lt;br /&gt;
| Proxy Password&lt;br /&gt;
| If your proxy server requires a password for authentication, then enter it here (BASIC authentication only).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous Settings ===&lt;br /&gt;
&lt;br /&gt;
This section contains any other global settings for MoodleTxt that do not fall into one of the earlier categories.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field Name&lt;br /&gt;
! Field Label&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| jQuery_Include_Enabled&lt;br /&gt;
| Include main jQuery package&lt;br /&gt;
| MoodleTxt uses the popular jQuery library within its user interface. Some Moodle installations already include this library within their active themes. If this is the case, then attempting to load both libraries can cause problems with the system. To turn off MoodleTxt&#039;s jQuery installation and have it use the one provided with your theme, uncheck this box. (&#039;&#039;&#039;Note:&#039;&#039;&#039; You will require at least jQuery 1.6 for this to work.)&lt;br /&gt;
|-&lt;br /&gt;
| jQuery_UI_Include_Enabled&lt;br /&gt;
| Include jQuery UI Library&lt;br /&gt;
| MoodleTxt uses the jQuery User Interface library for many common widgets/user interface components. Some Moodle installations already include this library within their active themes. If this is the case, then attempting to load both libraries can cause problems with the system. To turn off MoodleTxt&#039;s jQuery UI installation and have it use the one provided with your theme, uncheck this box. (&#039;&#039;&#039;Note:&#039;&#039;&#039; You will require at least jQuery UI 1.7 for this to work.)&lt;br /&gt;
|-&lt;br /&gt;
| Show_Inbound_Numbers&lt;br /&gt;
| Show source names/numbers in inbox (Default)&lt;br /&gt;
| In a classroom situation, such as a survey, where many people can see the messages that are coming into the system, you may wish to anonymise them by hiding the source of the messages. In current versions of MoodleTxt, inbound messages are anonymised by default. To show those message sources on inbox pages by default, then check this box. Since MoodleTxt 3.0, users can override these settings for their own inboxes, so this setting is now a default.&lt;br /&gt;
|-&lt;br /&gt;
| RSS_Update_Interval&lt;br /&gt;
| RSS Update Interval&lt;br /&gt;
| This setting controls how often MoodleTxt should check with the RSS feed on the ConnectTxt servers for new updates. (This is being retired, as Moodle 2.3 and up can find updates automatically.)&lt;br /&gt;
|-&lt;br /&gt;
| RSS_Expiry_Length&lt;br /&gt;
| RSS items expire after&lt;br /&gt;
| This setting controls how long an update notification from ConnectTxt should be displayed on the MoodleTxt admin panel. (This is being retired, as Moodle 2.3 and up can find updates automatically.)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Settings]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/status&amp;diff=154710</id>
		<title>blocks/moodletxt/status</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=blocks/moodletxt/status&amp;diff=154710"/>
		<updated>2025-11-16T16:30:13Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Message Status Page ==&lt;br /&gt;
&lt;br /&gt;
The message status page gives full details on the recipients of a given message, along with the status of the text messages sent. When the page loads, the details of the message sent will appear at the top left.  This includes the Moodle user from which the message was sent, the time at which it was sent, the time it was scheduled to be sent at, and the actual text of the message.  Below this, the recipients of the message are listed.&lt;br /&gt;
&lt;br /&gt;
For each recipient, the following information is shown:&lt;br /&gt;
&lt;br /&gt;
; Recipient : This field shows the name of the recipient, whether they are a Moodle user or a contact in your address book.&lt;br /&gt;
&lt;br /&gt;
; Destination Number : The phone number to which the text message was sent.&lt;br /&gt;
&lt;br /&gt;
; Time of Update : The time and date at which this message&#039;s status information was last updated by the ConnectTxt system.&lt;br /&gt;
&lt;br /&gt;
; Message Status :  The current status of this text message.  There are three icons that are used to denote the status of a message.  A red icon with a cross through it means that the message has failed.  The recipient will not receive the message, and it should be checked and re-sent to this recipient.  A green icon with no cross or tick means that the message has been sent, and no further information has yet been received.  A green icon with a tick means that the message was received by the recipient.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The listing table can be edited and re-ordered like any other Moodle data table. Once you are happy with the data currently onscreen, you can also export it to a spreadsheet or similar file using the download options at the bottom of the table. Simply select the type of export you would like from the provided drop-down list, and then click the download button. &lt;br /&gt;
&lt;br /&gt;
=== Updating Message Statuses ===&lt;br /&gt;
&lt;br /&gt;
If your MoodleTxt installation has been configured correctly, it will automatically update message statuses in the background, without your intervention. However, if you wish to check for updated information, simply click the &amp;quot;Update&amp;quot; button, above the status listing on the left of the page.  The page will refresh (this may take a moment while the ConnectTxt system is contacted), and the most up-to-date information will be displayed.&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Status Messages]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=admin/setting/moodletxtfilters&amp;diff=154709</id>
		<title>admin/setting/moodletxtfilters</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=admin/setting/moodletxtfilters&amp;diff=154709"/>
		<updated>2025-11-16T16:30:06Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Managing Inbound Filters in MoodleTxt ==&lt;br /&gt;
&lt;br /&gt;
This page allows you to edit MoodleTxt&#039;s inbound message filters. These filters are used when incoming messages are received from the ConnectTxt system, to forward them to the appropriate Moodle user&#039;s inbox. This form uses a step-by-step process to edit the filters in place, and add new ones. Fields within the form that are not ready for use, or depend on user input, will be locked until they are ready, so don&#039;t worry if you can&#039;t immediately access some parts of the form.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a ConnectTxt Account ===&lt;br /&gt;
&lt;br /&gt;
Firstly, select the ConnectTxt account within the system you wish to apply filters on from the first drop-down box in the form.  You will see a loading icon appear for a short period whilst MoodleTxt loads the existing filter structure for that account.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; In terms of filtering, ConnectTxt accounts are independent of one another.  It is quite possible to have the same keyword filter on several different accounts, routing messages to different users.  Similarly, it is possible to set up one keyword across all accounts that is always filtered to the same user.&lt;br /&gt;
&lt;br /&gt;
=== Selecting or Creating a Filter ===&lt;br /&gt;
&lt;br /&gt;
Once the loading icon has disappeared, the two lists of existing filters will be populated and unlocked.  You now have two options.  &lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;To edit an existing filter&#039;&#039;&#039; on the system, select it from either the keyword or phone number filter list.  You will see another loading message while the details of that particular filter are pulled out of the database. When this disappears, you should be able to see the filter&#039;s current recipients in the large select box underneath.&lt;br /&gt;
# &#039;&#039;&#039;To create a new filter&#039;&#039;&#039;, click the green &amp;quot;add&amp;quot; icon to the right of either the keyword or phone number filter lists, depending on which you wish to create.  The filter list will be replaced with a text box.  In this box you enter the operand for your new filter – that is the keyword or phone number on which you wish to filter messages.  Once you have done this, the large recipient list underneath should be unlocked.&lt;br /&gt;
&lt;br /&gt;
You have now specified the filter you wish to edit.  Below the two filter options on the page is a larger select box.  This box holds a list of all the recipients specified for a particular filter.  For a new filter, this will be blank, and for an existing filter, it will show the list of previously selected recipients for that filter.&lt;br /&gt;
&lt;br /&gt;
=== Adding and Removing Filter Recipients ===&lt;br /&gt;
&lt;br /&gt;
To add a new recipient to a filter, locate the textbox labelled &amp;quot;Add users to filter&amp;quot;. This is an auto-completing search box.  As you type in it, it searches the Moodle database for the user you are looking for and displays possible selections onscreen.  You can search by either first name, last name or username.  For example, typing &amp;quot;Pre&amp;quot; into our MoodleTxt test server would display &amp;quot;Preece, Greg J (admin)&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
Once the user you are looking for is displayed, select them by either highlighting them with the arrow keys and hitting return, or by clicking on them with the mouse.  You should see the user being added to the recipient list.&lt;br /&gt;
&lt;br /&gt;
To remove a recipient from a filter, select them from the recipients list and click the &amp;quot;Remove selected users from filter&amp;quot; button below it.  They will be immediately removed from the recipients list. You can remove multiple users at the same time by either holding CTRL to select multiple individual entries, or holding SHIFT to select a consecutive group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the filter has been edited/created to your satisfaction, and the recipients list appears correct, click the &amp;quot;Save the filter&amp;quot; button at the bottom of the form, and it will be saved back to the database.  If you have removed all recipients from an existing filter, then that filter will also be deleted once the recipients have been removed.&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Settings Filters]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=admin/setting/moodletxtaccountsnew&amp;diff=154708</id>
		<title>admin/setting/moodletxtaccountsnew</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=admin/setting/moodletxtaccountsnew&amp;diff=154708"/>
		<updated>2025-11-16T16:29:55Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding a New ConnectTxt Account to MoodleTxt ==&lt;br /&gt;
&lt;br /&gt;
This page allows you to register a new ConnectTxt account with the MoodleTxt block. It should be one of your first stops after installing the block, and you will be redirected to it if you attempt to access other account-related pages when no accounts have been added to MoodleTxt. &lt;br /&gt;
&lt;br /&gt;
If no accounts have been added to MoodleTxt when you go to this page, then some introductory text will be displayed explaining the purpose of the block and providing useful contact information. Beneath this, you will find the form for entering a new ConnectTxt account. Enter the username and password of the ConnectTxt account you wish to add to MoodleTxt.  You may also enter a short description of the account if you wish.  &lt;br /&gt;
&lt;br /&gt;
With this done, please select a user to use as the default inbox for incoming messages on this account. The user with the default inbox is the one that will receive any inbound text messages that do not match any user filters within the MoodleTxt installation. This is to prevent unfiltered messages being lost.  It is required that you select a default inbox owner even if you do not intend to use MoodleTxt for inbound messaging.  Only users with the [[Moodletxt_capabilities|&amp;quot;block/moodletxt:defaultinbox&amp;quot; capability]] can own default inboxes.&lt;br /&gt;
&lt;br /&gt;
Once you are done, click “Add Account.”  The page will refresh.  As it does so, the account details entered will be validated with  the ConnectTxt system.  This ensures that all the ConnectTxt accounts you save in MoodleTxt exist on the ConnectTxt system, that the passwords are correct, and that the accounts have been enabled for use with MoodleTxt.  If no errors are found, you will be taken to the [[admin/setting/moodletxtaccounts|MoodleTxt account listing page]].&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Settings Account New]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=admin/setting/moodletxtaccounts&amp;diff=154707</id>
		<title>admin/setting/moodletxtaccounts</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=admin/setting/moodletxtaccounts&amp;diff=154707"/>
		<updated>2025-11-16T16:29:36Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Moodletxt: ConnectTxt Account Listings ==&lt;br /&gt;
&lt;br /&gt;
On this page, you can get an overview of all the ConnectTxt SMS messaging accounts that have been registered within MoodleTxt. When you first load the page, you will be shown a list of all currently saved ConnectTxt accounts, along with their basic details. You can use this page to edit an account&#039;s details, along with which users can access each account.&lt;br /&gt;
&lt;br /&gt;
=== Adding a New Account ===&lt;br /&gt;
&lt;br /&gt;
[[admin/setting/moodletxtaccountsnew|Adding new accounts]] is handled on a separate page. To add a new ConnectTxt account to the MoodleTxt system, click the &amp;quot;Add New Account&amp;quot; link in the paragraph at the top of the page. If you attempt to view the account listings page, and no ConnectTxt accounts have been added to MoodleTxt, you will be automatically redirected to this link (this only occurs at first installation).&lt;br /&gt;
&lt;br /&gt;
=== Account Listing ===&lt;br /&gt;
&lt;br /&gt;
The onscreen table shows all ConnectTxt accounts currently stored within the MoodleTxt block. At first glance, the following fields are displayed:&lt;br /&gt;
&lt;br /&gt;
; Username : The username of the ConnectTxt account.&lt;br /&gt;
; Description : The description you gave the ConnectTxt account when adding it to MoodleTxt.&lt;br /&gt;
; Messages Sent : The total number of messages sent through this account.&lt;br /&gt;
; Allow Outbound : Whether outbound access (message sending) is enabled on this account. If outbound messaging is enabled, you will see an icon showing 4 outbound arrows. If outbound messaging is disabled, you will see a red cross.&lt;br /&gt;
; Allow Inbound :  Whether inbound access (receiving messages) is enabled on this account. If inbound messaging is enabled, you will see an icon showing 4 inbound arrows. If inbound messaging is disabled, you will see a red cross.&lt;br /&gt;
; Credits Used : The number of credits that have been used on your ConnectTxt account. This includes all messages sent, not just those sent via MoodleTxt. This figure is updated via [[Moodletxt_cron|cron]], or manually [[#updateInfo|via the controls on this page]].&lt;br /&gt;
; Credits Remaining : The number of remaining credits on your ConnectTxt account. If your account is invoiced, this will show as an &amp;amp;infin; infinity symbol.&lt;br /&gt;
; Account Type : What type of account billing this ConnectTxt account has enabled. This is typically either invoiced or pre-paid.&lt;br /&gt;
; Last Update : The time at which this account&#039;s online details (credits used/remaining, account type) were last updated from the ConnectTxt system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Changing an Account&#039;s Password or Description ===&lt;br /&gt;
&lt;br /&gt;
On the far left of an account&#039;s listing, before its username, you will find the edit button. &lt;br /&gt;
[[Image:moodletxt-account-edit-button.png|border|none]]&lt;br /&gt;
Clicking this button will open a modal dialog box containing the account&#039;s description, and a field allowing you to enter a new password. Edit the description as you see fit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The password field is optional, and should only be filled in if you need to change the password on the account.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once the fields in the dialog box are complete, click the &amp;quot;Save&amp;quot; button. The system will contact ConnectTxt to validate the details entered, and to fetch the latest credit data for the account. If the account is successfully validated, the dialog box will close and you will be returned to the main account listing.&lt;br /&gt;
&lt;br /&gt;
=== Changing Which Users can Send Messages Via an Account ===&lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-account-access-button.png|border|none]]&lt;br /&gt;
MoodleTxt allows you to restrict outbound access to ConnectTxt accounts to a given list of Moodle users. If you would like to restrict access to an account, click on the &amp;quot;edit access&amp;quot; icon at the front of the account&#039;s &amp;quot;Allow Outbound&amp;quot; field. A modal dialog box will open containing a form that will allow you to restrict user access.&lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-account-access-form.png|frame|center|Access restriction form]]&lt;br /&gt;
The list labelled &amp;quot;Allowed Users&amp;quot; is the list of Moodle users that this account will be restricted to. If this list is blank, then the account will be unrestricted. To add users to the list, begin typing their name or username in the search box at the top of the form. This is an auto-completion search box, and will automatically perform a background search for the entered name (or partial name) when you stop typing. &lt;br /&gt;
&lt;br /&gt;
When the user you wish to add appears in the auto-complete list, select them using the mouse or arrow and enter keys. They will be added to the list of users allowed to access the account. To remove one or more users from the list, click on their username(s) and then click the &amp;quot;Remove User(s)&amp;quot; button below the list. Removing all users from the list will make the account unrestricted.&lt;br /&gt;
&lt;br /&gt;
Once you are happy with the restrictions applied to (or removed from) the account, click the &amp;quot;Save&amp;quot; button. The account&#039;s restrictions will be updated in the database, and you will be taken back to the account listing.&lt;br /&gt;
&lt;br /&gt;
=== Disabling/Enabling Inbound and Outbound Access on an Account ===&lt;br /&gt;
&lt;br /&gt;
You can completely turn off inbound or outbound access for any given ConnectTxt account. This is a simple matter of toggling the switches displayed under the &amp;quot;Allow Outbound&amp;quot; and &amp;quot;Allow Inbound&amp;quot; fields for an account. If your chosen route is enabled, you will see an icon featuring 4 green arrows. If it is disabled, you will see a red cross. Clicking on an enabled route will turn it off, and vice versa. For example, in this screenshot, the account has outbound messaging enabled, but is disabled for inbound messaging:&lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-access-toggles.png|border|center]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;updateInfo&amp;quot;&amp;gt;Updating Account Information&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
If you have [[Moodletxt_cron|cron-based updates]] enabled, then credit information for all your ConnectTxt accounts will be updated at regular intervals. If not, you can manually fetch updates from the account listing page, simply by clicking the &amp;quot;Update Credit Info&amp;quot; button at the top of the page. When you click this button, a progress bar will appear, and the system will run through each account in turn, updating the information on the page as it goes. Any information that has been updated will be displayed in bold. When the progress bar reaches 100% and all accounts have been processed, it will hide itself again, and the update button will be re-enabled.&lt;br /&gt;
&lt;br /&gt;
[[Image:moodletxt-accounts-updater.png|border|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleTxt|Settings Account Listing]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Webinar_module&amp;diff=154593</id>
		<title>Webinar module</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Webinar_module&amp;diff=154593"/>
		<updated>2025-11-06T08:58:31Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Moodle23]]&lt;br /&gt;
&lt;br /&gt;
==Overview and Installation==&lt;br /&gt;
Download latest version of the plugin from http://moodle.org/plugins/view.php?plugin=mod_webinar.&lt;br /&gt;
===Summary===&lt;br /&gt;
This is an activity module for web conferencing which enables Adobe Connect webinar sessions to be added as an activity to any course.&lt;br /&gt;
===Description===&lt;br /&gt;
The Webinar activity module enables Adobe Connect hosted webinars to be added as an activity to any course. This is intended for hosted Adobe deployments, not on-premise deployments - see http://www.adobe.com/products/adobeconnect.html&lt;br /&gt;
&lt;br /&gt;
The Webinar activity module includes the following functionality:&lt;br /&gt;
&lt;br /&gt;
*Add/edit/delete webinar session&lt;br /&gt;
*Assign a host user to a session - based on &#039;teacher&#039; system role &lt;br /&gt;
*Register for session / assign students to a session&lt;br /&gt;
*Unregistered for session / unassign students from a session&lt;br /&gt;
*Automated email notifications to registered students&lt;br /&gt;
*Join session &lt;br /&gt;
*View / record webinar&lt;br /&gt;
*Run attendance report&lt;br /&gt;
All webinar administration is done from within Moodle from setting up webinar sessions, registering users on webinar sessions and joining sessions. Only when the student clicks on Join Session do they leave Moodle and view the webinar in the Adobe Connect Player window. Upon exiting the webinar session they will be returned to the Moodle course page.&lt;br /&gt;
&lt;br /&gt;
It has been tested using Adobe Connect Pro 8 (and 9) hosted accounts, using the Adobe Connect Web Services API - see http://help.adobe.com/en_US/connect/8.0/webservices/index.html.&lt;br /&gt;
===Requirements===&lt;br /&gt;
*Moodle 2.3 or Moodle 2.2&lt;br /&gt;
*An Adobe Connect account - register for a 30-day free trial at http://www.adobe.com/uk/products/acrobatconnectpro/trial/&lt;br /&gt;
*All users attending session will be required to have Flash Player 10.1 or higher, with the ability to install Adobe Connect Add-Ins in order to share their screen.&lt;br /&gt;
===Installation===&lt;br /&gt;
#Unpack the module into your Moodle install in order to create a mod/webinar directory. &lt;br /&gt;
#Visit the /admin/index.php page to trigger the database installation.&lt;br /&gt;
#(Optional) Change the default options in the activity modules configuration.&lt;br /&gt;
#(Optional) Assign roles of teacher or non-editing teacher to one or more users to be able to assign them as webinar hosts.&lt;br /&gt;
&lt;br /&gt;
==User Guide==&lt;br /&gt;
&lt;br /&gt;
===Adding Webinar activity===&lt;br /&gt;
To add an webinar activity, go to a course you have created and turn editing on and then select add an activity:&lt;br /&gt;
&lt;br /&gt;
This is a two step process.&lt;br /&gt;
&lt;br /&gt;
1. Click the &#039;Add an activity or resource&#039; link:&lt;br /&gt;
[[Image:MoodleDocs add_webinar_activity_1.png|frame|center|1. Add webinar activity]]&lt;br /&gt;
&lt;br /&gt;
2. Select the &#039;Webinar&#039; radio button and then click &#039;Add&#039;:&lt;br /&gt;
[[Image:MoodleDocs add_webinar_activity_2.png|frame|center|2. Add webinar activity]]&lt;br /&gt;
&lt;br /&gt;
You will then be taken to the &#039;Add a new Webinar&#039; screen. Where you need to enter the name of your webinar. There are also fields for &#039;description&#039; and &#039;Agenda&#039; but these are optional.&lt;br /&gt;
[[Image:MoodleDocs adding_new_webinar_screen.png|frame|center|Adding a new webinar screen]]&lt;br /&gt;
&lt;br /&gt;
===Editing Webinar activity===&lt;br /&gt;
To edit the activity you need either turn editing on or select &#039;Edit settings&#039; from the &#039;course settings&#039; panel. You are then taken to the &#039;Updating Webinar&#039; page:&lt;br /&gt;
[[Image:MoodleDocs updating_webinar_screen.png|frame|center|Updating webinar screen]]&lt;br /&gt;
&lt;br /&gt;
===Delete Webinar activity===&lt;br /&gt;
To delete the activity you need to turn editing on and select the &#039;x&#039; symbol and you will then be given the option to confirm the deletion of the activity:&lt;br /&gt;
[[Image:MoodleDocs select_delete_webinar_screen.png|frame|center|Delete webinar]]&lt;br /&gt;
&lt;br /&gt;
===View Webinar activity===&lt;br /&gt;
To view the webinar activity you just need to click on the activity link on your course page. You will then be taken to the view page which displays the title, description and webinar session information:&lt;br /&gt;
&lt;br /&gt;
Manager View:&lt;br /&gt;
[[Image:MoodleDocs view_webinar_page_user.png|frame|center|User view webinar page]]&lt;br /&gt;
&lt;br /&gt;
User View:&lt;br /&gt;
[[Image:MoodleDocs view_webinar_page_manager.png|frame|center|Manager view webinar page]]&lt;br /&gt;
&lt;br /&gt;
===Adding a new session===&lt;br /&gt;
To add a new session click the &#039;Add a new session&#039; link on the &#039;view webinar&#039; page.&lt;br /&gt;
[[Image:MoodleDocs add_new_session_link.png|frame|center|Add a new session link]]&lt;br /&gt;
&lt;br /&gt;
On the &#039;Adding a new session&#039; page you then need to fill in the appropriate details:&lt;br /&gt;
&lt;br /&gt;
#Host - This is a dropdown list of all the people than can be hosts. This will be anyone who has the role of admin, teacher or non editing teacher for the course in question. ** NOTE: for single host license Adobe Connect accounts, the selected host must be the Adobe Connect account holder, and the Moodle user account will need to be registered under the same email address as the Adobe Connect account is registered to. **&lt;br /&gt;
#Capacity - The maximum amount of users you want to be able to attend the webinar&lt;br /&gt;
#Start date/time&lt;br /&gt;
#Finish date/time&lt;br /&gt;
[[Image:MoodleDocs add_a_new_session_page.png|frame|center|Add a new session page]]&lt;br /&gt;
&lt;br /&gt;
===Editing a session===&lt;br /&gt;
To edit a session open the view webinar page and click the edit icon next to any of the sessions listed. You are then taken to the edit page, when you can change the details as needed.&lt;br /&gt;
[[Image:MoodleDocs edit_session_icon_link.png|frame|center|Edit session link]]&lt;br /&gt;
&lt;br /&gt;
[[Image:MoodleDocs edit_session_screen.png|frame|center|Edit session screen]]&lt;br /&gt;
&lt;br /&gt;
===Delete a session===&lt;br /&gt;
To delete a session simply select the &#039;x&#039; icon for the session in question on the view webinar page. You will then be prompted to confirm the deletion.&lt;br /&gt;
[[Image:MoodleDocs delete_session_icon.png|frame|center|Delete session link]]&lt;br /&gt;
&lt;br /&gt;
[[Image:MoodleDocs confirm_delete_session.png|frame|center|Delete session confirmation]]&lt;br /&gt;
&lt;br /&gt;
===View/Add attendees===&lt;br /&gt;
As a manager for the webinar (administrator, teacher or non editing teacher) you can view the users that have registered for the session and also have the option to add users yourself, these users will then be emailed by Moodle to say they have been registered on the session.&lt;br /&gt;
&lt;br /&gt;
First from the view webinar page click on the &#039;Attendees link&#039;:&lt;br /&gt;
[[Image:MoodleDocs attendees_link.png|frame|center|Add attendees link ]]&lt;br /&gt;
&lt;br /&gt;
You are then taken to the &#039;Attendees&#039; page where you can view the attendees and also have the option to add or remove them from the session:&lt;br /&gt;
[[Image:MoodleDocs view_attendees_screen.png|frame|center|View attendees screen]]&lt;br /&gt;
&lt;br /&gt;
Clicking on the &#039;Add/remove attendees&#039; link then takes you to a standard Moodle add and remove users page:&lt;br /&gt;
[[Image:MoodleDocs add_remove_attendees_screen.png|frame|center|Add and Remove attendees screen]]&lt;br /&gt;
&lt;br /&gt;
The users added or deleted are then sent an email Moodle confirming this action. The mail can be configured in the usual way with the language strings:&lt;br /&gt;
[[Image:MoodleDocs example_registration_email.png|frame|center|An example registration email]]&lt;br /&gt;
&lt;br /&gt;
===User registration===&lt;br /&gt;
The logged in user navigates the course with the webinar in it and then clicks on the link, they are then taken to the &#039;View Webinar&#039; page where they can register for any of the available sessions there. &lt;br /&gt;
[[Image:MoodleDocs user_register_for_session_link.png|frame|center|Register on session link]]&lt;br /&gt;
&lt;br /&gt;
Once the user clicks on &#039;Register&#039; they are taken to a confirmation page.&lt;br /&gt;
[[Image:MoodleDocs register_on_session_conformation_screen.png|frame|center|Register on session confirmation screen]]&lt;br /&gt;
&lt;br /&gt;
The user can also cancel their booking here if they wish to buy clicking on the &#039;Cancel booking&#039; link:&lt;br /&gt;
[[Image:MoodleDocs cancel_booking_for_session_link.png|frame|center|Cancel booking link]]&lt;br /&gt;
&lt;br /&gt;
The user is then taken to a cancel booking screen where they can also enter a reason for the cancellation if they so wish:&lt;br /&gt;
[[Image:MoodleDocs cancel_booking_page.png|frame|center|Cancel booking page]]&lt;br /&gt;
&lt;br /&gt;
===Join a session===&lt;br /&gt;
As a user you only get the option to join a session, but if logged in as the session host, you can join the session as the host.&lt;br /&gt;
&lt;br /&gt;
From the &#039;View Webinar&#039; page you can then select the &#039;Join session&#039; link:&lt;br /&gt;
&lt;br /&gt;
User:&lt;br /&gt;
[[Image:MoodleDocs user_join_session.png|frame|center|Join session: user]]&lt;br /&gt;
&lt;br /&gt;
Session Host:&lt;br /&gt;
[[Image:MoodleDocs admin_join_session_as_host.png|frame|center|Join session as host]]&lt;br /&gt;
&lt;br /&gt;
Once you have joined a session Adobe connect will start and you will be logged in. For more information on using Adobe connect please see the documentation available from: http://www.adobe.com/support/connect/gettingstarted/index.html.&lt;br /&gt;
&lt;br /&gt;
Example host screen:&lt;br /&gt;
[[Image:MoodleDocs webinar_adobe_connect_host.png|frame|center|Example host screen]]&lt;br /&gt;
&lt;br /&gt;
Example user screen with the hosts desktop being shared and webcam enabled:&lt;br /&gt;
[[Image:MoodleDocs webinar_user_screen_with_shared_desktop_and_webcam_from_host.png|frame|center|Example user screen with host shared desktop and webcam]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Moodle_LAE&amp;diff=154394</id>
		<title>Moodle LAE</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Moodle_LAE&amp;diff=154394"/>
		<updated>2025-10-17T07:22:12Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: add it to &amp;quot;Contributed code&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Meaning of LAE==&lt;br /&gt;
The &#039;&#039;&#039;LAE&#039;&#039;&#039; in Moodle LAE stand for &#039;Liberal Art Edition&#039;&lt;br /&gt;
&lt;br /&gt;
The goal of the LAE is to provide a coherent package for modules, patches, and code developed (or improved) by the Collaborative Liberal Arts Moodle Project (CLAMP).&lt;br /&gt;
&lt;br /&gt;
This package consists of the code that the developers and instructional technologists at CLAMP schools have deemed essential to their operation of Moodle. A number of other recommend add-ons for Moodle are available through CLAMP web site (http://www.clamp-it.org). These recommended add-ons, however, have certain caveats that you should be aware of, and it is imperative that you read their respective readme files before installing them.&lt;br /&gt;
&lt;br /&gt;
==Project Homepage==&lt;br /&gt;
&lt;br /&gt;
http://www.clamp-it.org/code/moodle-2-5-2liberal-arts-edition-v5-1-0/&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&lt;br /&gt;
Questions about the LAE can be sent to Ken Newquist at newquisk@lafayette.edu or 610-330-5759. CLAMP members may participate in the development of the LAE by joining the Development Project in Redmine (our collaboration web site) at:&lt;br /&gt;
&lt;br /&gt;
http://redmine.clamp-it.org/projects/development&lt;br /&gt;
&lt;br /&gt;
==Contents==&lt;br /&gt;
&lt;br /&gt;
Moodle 2.5.2+LAE5.1.0 consists of the core Moodle 2.5.2 release plus a number of CLAMP-developed features and bug fixes.&lt;br /&gt;
&lt;br /&gt;
The following core features are included:&lt;br /&gt;
&lt;br /&gt;
    Anonymous Forums&lt;br /&gt;
    Auto-creation of groupings for groups&lt;br /&gt;
    Per-course resource display options&lt;br /&gt;
&lt;br /&gt;
Anonymous Forums&lt;br /&gt;
&lt;br /&gt;
A completely new version of the Anonymous Forums option in Moodle. This version introduces a new &amp;quot;Anonymous User&amp;quot; who is attached to forum posts, allowing faculty to back up and restore a forum without losing anonymity. This feature is disabled by default.&lt;br /&gt;
Auto-creation of groupings for groups&lt;br /&gt;
&lt;br /&gt;
This feature creates a grouping for each group in a course. This feature is disabled by default; you must enable the Experimental &amp;quot;Group Members Only&amp;quot; setting to use this feature.&lt;br /&gt;
Per-course resource display options&lt;br /&gt;
&lt;br /&gt;
You may choose a default resource display option at the course level now instead of at the site-level.&lt;br /&gt;
Contributed modules&lt;br /&gt;
&lt;br /&gt;
CLAMP recommends the following contributed modules. If you have downloaded the &amp;quot;Package&amp;quot; version of the LAE then these modules are already available.&lt;br /&gt;
Filtered Course List&lt;br /&gt;
&lt;br /&gt;
This block allows you to list a current term and a future term&#039;s courses first, based on whatever term-based naming convention you use in your Moodle courses&#039; shortname field (e.g. FA11, SP12). It also allows you to specify a course category instead.&amp;quot;&lt;br /&gt;
LAE Grader Report&lt;br /&gt;
&lt;br /&gt;
This is an alternative Grader Report for Moodle. It includes fixed scrolling on the vertical and horizontal axes and a new optional total display.&lt;br /&gt;
OU Dates Report&lt;br /&gt;
&lt;br /&gt;
This course report, developed by Tim Hunt at the Open University, allows teachers to quickly edit date-aware items in course modules such as quizzes and assignments.&lt;br /&gt;
Quickmail&lt;br /&gt;
&lt;br /&gt;
A block used to quickly send emails to members of a class, replicating similar functionality found in other learning management systems. This version is forked from the Quickmail currently maintained by Louisiana State University.&lt;br /&gt;
Roster Report&lt;br /&gt;
&lt;br /&gt;
A course report which displays the user pictures for everyone enrolled in a course.&lt;br /&gt;
&lt;br /&gt;
==Downloading the LAE==&lt;br /&gt;
&lt;br /&gt;
You can get the LAE in two ways:&lt;br /&gt;
&lt;br /&gt;
    Download the tar and zip packages from the CLAMP web site: http://www.clamp-it.org/code/&lt;br /&gt;
&lt;br /&gt;
    Download the current release branch from the CLAMP code repository:&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/CLAMP-IT/moodle v2.5.2-LAE5.1.0 git checkout -b v2.5.2-LAE5.1.0&lt;br /&gt;
&lt;br /&gt;
By default this is the &amp;quot;Package&amp;quot; version which includes the contributed modules. If you just want the core version of the LAE checkout the v2.5.2-LAE5.1.0-base tag instead.&lt;br /&gt;
&lt;br /&gt;
CLAMP maintains two branches for each major version:&lt;br /&gt;
&lt;br /&gt;
    LAE_25_STABLE contains the core code only&lt;br /&gt;
    LAE_25_PACKAGE includes the contributed modules&lt;br /&gt;
&lt;br /&gt;
==Installing the LAE==&lt;br /&gt;
&lt;br /&gt;
If you are installing Moodle for the first time, you can follow the standard Moodle installation instructions (substituting the LAE Moodle package for the regular Moodle one)&lt;br /&gt;
&lt;br /&gt;
https://docs.moodle.org/en/Installing_Moodle&lt;br /&gt;
Upgrading to the LAE&lt;br /&gt;
&lt;br /&gt;
If you are upgrading an existing installation, you can follow your normal procedure for doing an &amp;quot;in-place&amp;quot; upgrade (replacing your old Moodle files with the new LAE ones, then copying over any additional modules or blocks you might have from the old install into the new one)&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
&lt;br /&gt;
    Always backup your original Moodle files and database before doing an upgrade.&lt;br /&gt;
&lt;br /&gt;
    We strongly recommend doing a test upgrade on a development Moodle instance before upgrading your production instance.&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributed code]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Poster_module&amp;diff=153093</id>
		<title>Poster module</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Poster_module&amp;diff=153093"/>
		<updated>2025-05-16T16:32:09Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: adding it to the plugins cat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See [https://moodle.org/plugins/view/mod_poster the module record] in the Plugins directory.&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
There are many useful blocks available for Moodle. Typically, they can be only added to the sides of the Moodle pages, or to the&lt;br /&gt;
user&#039;s dashboard page (also known as My home page). Sometimes, you may want to keep your course main page quite clean, not cluttered&lt;br /&gt;
with blocks on both sides. In such case, you can put useful blocks into a separate Poster page.&lt;br /&gt;
The overall concept is somewhat similar to how pages are created in Mahara - but it is typically the teacher in Moodle who creates&lt;br /&gt;
the Poster for students to view.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
To use the module, you should understand how Moodle sticky blocks work. See [Block&lt;br /&gt;
settings](https://docs.moodle.org/en/Block_settings) page for more details.&lt;br /&gt;
1. Add the module instance into the course.&lt;br /&gt;
2. Keep the editing mode on.&lt;br /&gt;
3. Add the Moodle blocks you want to display on the poster.&lt;br /&gt;
4. Click the icon to configure the block. Set the block instance so that it is displayed in the context of the&lt;br /&gt;
   poster, on page type _Poster module main page_ (`mod-poster-view`), inside the region `mod_poster-pre` or `mod_poster-post`.&lt;br /&gt;
5. Alternatively, use the drag and drop feature to move the block to the regions at the poster content area.&lt;br /&gt;
6. Note that some blocks must be first added to the course main page first, configured to be displayed at any page and then&lt;br /&gt;
   configured again to be displayed at the poster main page only (this is how block positioning works in Moodle generally).&lt;br /&gt;
The poster can be used as for example:&lt;br /&gt;
* Course wall/dashboard (contact teachers, detailed outline of the course, latest news, comments, ...).&lt;br /&gt;
* Project dashboard (project goals, calendar, comments, people, ...)&lt;br /&gt;
* Research report (goals, methods, results, comments, ...)&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
The Poster module uses not so well known feature of the Moodle blocks architecture. In almost all cases, it is the theme that&lt;br /&gt;
defines regions where plugins can be added to. However, in special cases, such as this one, any Moodle plugin can define its custom&lt;br /&gt;
block regions. Within the context of the Poster module instance, when displaying its view.php page, two extra block regions are&lt;br /&gt;
defined - `mod_poster-pre` and `mod_poster-post`. The Poster module itself is just a tiny wrapper for displaying these two regions&lt;br /&gt;
as its content. Simple and clever.&lt;br /&gt;
The module natively supports responsive layout in bootstrap based themes (both 2.x and 3.x versions).&lt;br /&gt;
&lt;br /&gt;
== Licence ==&lt;br /&gt;
Copyright (C) 2023 onwards: bdecent gmbh&lt;br /&gt;
based on the work of 2015 David Mudrák &lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as&lt;br /&gt;
published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=User:Eloy_Lafuente_(stronk7)/Using_OpenAI_API-compatible_providers&amp;diff=149370</id>
		<title>User:Eloy Lafuente (stronk7)/Using OpenAI API-compatible providers</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=User:Eloy_Lafuente_(stronk7)/Using_OpenAI_API-compatible_providers&amp;diff=149370"/>
		<updated>2024-09-24T09:25:35Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Moodle 4.5 and its AI subsystem comes with a basic number of supported LLM providers. One of them is the OpenAI provider.&lt;br /&gt;
&lt;br /&gt;
While it&#039;s a &amp;quot;proprietary&amp;quot; [https://openai.com/index/openai-api/ API], it has become sort of a &#039;&#039;&amp;quot;de facto&amp;quot; standard&#039;&#039;&#039; and many other LLM providers, both open and commercial, or tools like AI proxies or routers, come with an OpenAI API-compatible layer to use their services.&lt;br /&gt;
&lt;br /&gt;
That enables to, virtually, &#039;&#039;&#039;use any model out there&#039;&#039;&#039; (text completions, images, embeddings, ...) as far as the provider has implemented those OpenAI API-compatible entry points. Just search out there for &amp;quot;OpenAI compatible&amp;quot; and you will find them out.&lt;br /&gt;
&lt;br /&gt;
As an example, in this article, &#039;&#039;&#039;we&#039;ll be using [https://ollama.com Ollama]&#039;&#039;&#039; that is one of the most popular open LLM providers that, apart from its own API, also comes with [https://ollama.com/blog/openai-compatibility OpenAI compatibility], supports many [https://ollama.com/library open models], can be installed locally (or remotely) and works on CPUs (slow!), GPUs (faster) and it&#039;s really [https://github.com/ollama/ollama/blob/main/README.md#cli-reference easy to manage].&lt;br /&gt;
&lt;br /&gt;
But, again, don&#039;t forget that &#039;&#039;&#039;this is only an example and the very same applies to any other provider or tool supporting the OpenAI API&#039;&#039;&#039;. And they are legion! Depending of your needs, usage, monitoring, budget, LLM features... you may end using any of them.&lt;br /&gt;
&lt;br /&gt;
== Configuring Moodle to use a locally installed Ollama ==&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
# An instance of Moodle (4.5dev or later) is [https://docs.moodle.org/en/Installing_Moodle installed and running].&lt;br /&gt;
# Ollama is [https://ollama.com/download installed] in the same computer where Moodle is running.&lt;br /&gt;
# Some [https://ollama.com/library LLM model] has been pulled and is available to Ollama, we&#039;ll be using &amp;lt;tt&amp;gt;llama3.1&amp;lt;/tt&amp;gt; in this example.&lt;br /&gt;
# It&#039;s working ok. You can test it by executing this in the terminal:&lt;br /&gt;
 ollama run llama3.1 &amp;quot;I love Moodle&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Or, in a complementary manner, this raw http call can be used to verify that the service is available via OpenAI API by executing:&lt;br /&gt;
 curl --location &#039;http://127.0.0.1:11434/v1/chat/completions&#039; \&lt;br /&gt;
 --header &#039;Content-Type: application/json&#039; \&lt;br /&gt;
 --data &#039;{&lt;br /&gt;
     &amp;quot;model&amp;quot;: &amp;quot;llama3.1&amp;quot;,&lt;br /&gt;
     &amp;quot;messages&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
         &amp;quot;role&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
         &amp;quot;content&amp;quot;: &amp;quot;I love Moodle&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     ]&lt;br /&gt;
 }&#039;&lt;br /&gt;
&lt;br /&gt;
=== Moodle HTTP security configuration ===&lt;br /&gt;
&lt;br /&gt;
By default, as a security measure, Moodle blocks local network hosts to be accessed with Curl. That includes the usual local networks, like 192.168.1.x, or 10.x.y.z, ... and also 127.0.0.1 or localhost. Similarly, by default, only ports 80 and 443 are allowed.&lt;br /&gt;
&lt;br /&gt;
In our case, remember that this is a locally installed Ollama, we need to allow 127.0.0.1 (or localhost) to be accessed. And, also, we need to allow the 11434 port to be used. Note that those details match the &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; command that we used in the previous section.&lt;br /&gt;
&lt;br /&gt;
To do so, just go to Admin -&amp;gt; General -&amp;gt; Security -&amp;gt; HTTP security (or use the admin search utility to find it) and then proceed to apply these changes:&lt;br /&gt;
# In the &amp;quot;cURL blocked hosts list&amp;quot; (curlsecurityblockedhosts) setting, remove both the &amp;lt;tt&amp;gt;127.0.0.1/8&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;localhost&amp;lt;/tt&amp;gt; entries.&lt;br /&gt;
# In the &amp;quot;cURL allowed ports list&amp;quot; (curlsecurityallowedport) setting, add the &amp;lt;tt&amp;gt;11434&amp;lt;/tt&amp;gt; port.&lt;br /&gt;
# Save changes.&lt;br /&gt;
&lt;br /&gt;
Done, now Moodle should be able to connect to 127.0.0.1:11434, that matches our local Ollama installation.&lt;br /&gt;
&lt;br /&gt;
Note that if you&#039;re using any other OpenAI compatible &#039;&#039;&#039;local&#039;&#039;&#039; provider, or if you&#039;re running it in another &#039;&#039;&#039;local&#039;&#039;&#039; server, you may need to allow other addresses (by IP or by name) and ports, but the mechanism is exactly the same.&lt;br /&gt;
&lt;br /&gt;
=== Moodle OpenAI provider configuration ===&lt;br /&gt;
&lt;br /&gt;
Now that we have the local provider (Ollama) running and we have configured Moodle to have access to it, we are going to configure the OpenAI provider, these are the steps to follow:&lt;br /&gt;
# Go to Admin -&amp;gt; General -&amp;gt; AI -&amp;gt; Manage settings for AI providers&lt;br /&gt;
# Enable the &amp;quot;OpenAI API provider&amp;quot; by clicking on the toggle.&lt;br /&gt;
# Click the &amp;quot;OpenAI API provider&amp;quot; settings link. &lt;br /&gt;
# In the &amp;quot;Provider actions&amp;quot;, enable both the &amp;quot;Generate text&amp;quot; and &amp;quot;Summarise text&amp;quot; actions, by clicking their &amp;quot;Enabled&amp;quot; toggle. Note that, in the case of Ollama, it doesn&#039;t provide any LLM able to generate images, so we cannot enable it for our case. Other OpenAI compatible provider may be able to do so.&lt;br /&gt;
# Both for the, now enabled, &amp;quot;Generate text&amp;quot; and &amp;quot;Summarise text&amp;quot; actions, click on their &amp;quot;Settings&amp;quot; link and proceed to configure the following:&lt;br /&gt;
#* Model: llama3.1&lt;br /&gt;
#* API endpoint: http://127.0.0.1:11434/v1/chat/completions&lt;br /&gt;
#* Save changes.&lt;br /&gt;
&lt;br /&gt;
And that&#039;s all. Now we should be able to use our local Ollama provider for the AI placements available in our Moodle instance: HTML Editor and Course Assistance placements. Don&#039;t forget to enable and configure their settings at Admin -&amp;gt; General -&amp;gt; AI -&amp;gt; Manage settings for AI placements.&lt;br /&gt;
&lt;br /&gt;
=== A brief note about security ===&lt;br /&gt;
&lt;br /&gt;
Note that, &#039;&#039;&#039;by default&#039;&#039;&#039;, Ollama only binds (listens) to 127.0.0.1 (or localhost) and port 11434. Or, in other words, its main use is to be installed in the same host where the client (Moodle in this case) is installed. And that&#039;s what the configuration above covers. And &#039;&#039;&#039;can be considered a &amp;quot;secure&amp;quot; configuration&#039;&#039;&#039; as far as nobody else (but the same host) can access to it.&lt;br /&gt;
&lt;br /&gt;
If you want to &#039;&#039;&#039;install Ollama in another host&#039;&#039;&#039;, then you will have to open it for remote access (setting the &amp;lt;tt&amp;gt;OLLAMA_HOST&amp;lt;/tt&amp;gt;, see Ollama documentation). But that opens it for remote access from anywhere by default. And &#039;&#039;&#039;that is an &amp;quot;insecure&amp;quot; configuration&#039;&#039;&#039; at all effects because Ollama doesn&#039;t support any Authorisation schema (say API keys, say auth headers, ...). Be warned about that and ask to the IT experts before allowing such a remote access, sure that they will help you to protect the Ollama installation using different mechanisms (firewalls, reverse proxies, auth layers, ...).&lt;br /&gt;
&lt;br /&gt;
Finally, once again, note that this documentation is 100% focussed on a local (same host) Ollama installation. But &#039;&#039;&#039;there are dozens of alternative OpenAI compatible providers out there&#039;&#039;&#039;, and many of them do support Authorisation or virtual API keys and offer more security for remote access, support for different LLMs, ... so it&#039;s recommended to try a few of them depending on each&#039;s one own requirements and infrastructure availability.&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=User:Eloy_Lafuente_(stronk7)/Using_OpenAI_API-compatible_providers&amp;diff=149369</id>
		<title>User:Eloy Lafuente (stronk7)/Using OpenAI API-compatible providers</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=User:Eloy_Lafuente_(stronk7)/Using_OpenAI_API-compatible_providers&amp;diff=149369"/>
		<updated>2024-09-24T07:11:39Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Moodle 4.5 and its AI subsystem comes with a basic number of supported LLM providers. One of them is the OpenAI provider.&lt;br /&gt;
&lt;br /&gt;
While it&#039;s a &amp;quot;proprietary&amp;quot; [https://openai.com/index/openai-api/ API], it has become sort of a &#039;&#039;&amp;quot;de facto&amp;quot; standard&#039;&#039;&#039; and many other LLM providers, both open and commercial, or tools like AI proxies or routers, come with an OpenAI API-compatible layer to use their services.&lt;br /&gt;
&lt;br /&gt;
That enables to, virtually, &#039;&#039;&#039;use any model out there&#039;&#039;&#039; (text completions, images, embeddings, ...) as far as the provider has implemented those OpenAI API-compatible entry points. Just search out there for &amp;quot;OpenAI compatible&amp;quot; and you will find them out.&lt;br /&gt;
&lt;br /&gt;
As an example, in this article, &#039;&#039;&#039;we&#039;ll be using [https://ollama.com Ollama]&#039;&#039;&#039; that is one of the most popular open LLM providers that, apart from its own API, also comes with [https://ollama.com/blog/openai-compatibility OpenAI compatibility], supports many [https://ollama.com/library open models], can be installed locally (or remotely) and works on CPUs (slow!), GPUs (faster) and it&#039;s really [https://github.com/ollama/ollama/blob/main/README.md#cli-reference easy to manage].&lt;br /&gt;
&lt;br /&gt;
But, again, don&#039;t forget that &#039;&#039;&#039;this is only an example and the very same applies to any other provider or tool supporting the OpenAI API&#039;&#039;&#039;. And they are legion! Depending of your needs, usage, monitoring, budget, LLM features... you may end using any of them.&lt;br /&gt;
&lt;br /&gt;
== Configuring Moodle to use a locally installed Ollama ==&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
# An instance of Moodle (4.5dev or later) is [https://docs.moodle.org/en/Installing_Moodle installed and running].&lt;br /&gt;
# Ollama is [https://ollama.com/download installed] in the same computer where Moodle is running.&lt;br /&gt;
# Some [https://ollama.com/library LLM model] has been pulled and is available to Ollama, we&#039;ll be using &amp;lt;tt&amp;gt;llama3.1&amp;lt;/tt&amp;gt; in this example.&lt;br /&gt;
# It&#039;s working ok. You can test it by executing this in the terminal:&lt;br /&gt;
 ollama run llama3.1 &amp;quot;I love Moodle&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Or, in a complementary manner, this raw http call can be used to verify that the service is available via OpenAI API by executing:&lt;br /&gt;
 curl --location &#039;http://127.0.0.1:11434/v1/chat/completions&#039; \&lt;br /&gt;
 --header &#039;Content-Type: application/json&#039; \&lt;br /&gt;
 --data &#039;{&lt;br /&gt;
     &amp;quot;model&amp;quot;: &amp;quot;llama3.1&amp;quot;,&lt;br /&gt;
     &amp;quot;messages&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
         &amp;quot;role&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
         &amp;quot;content&amp;quot;: &amp;quot;I love Moodle&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     ]&lt;br /&gt;
 }&#039;&lt;br /&gt;
&lt;br /&gt;
=== Moodle HTTP security configuration ===&lt;br /&gt;
&lt;br /&gt;
By default, as a security measure, Moodle blocks local network hosts to be accessed with Curl. That includes the usual local networks, like 192.168.1.x, or 10.x.y.z, ... and also 127.0.0.1 or localhost. Similarly, by default, only ports 80 and 443 are allowed.&lt;br /&gt;
&lt;br /&gt;
In our case, remember that this is a locally installed Ollama, we need to allow 127.0.0.1 (or localhost) to be accessed. And, also, we need to allow the 11434 port to be used. Note that those details match the &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; command that we used in the previous section.&lt;br /&gt;
&lt;br /&gt;
To do so, just go to Admin -&amp;gt; General -&amp;gt; Security -&amp;gt; HTTP security (or use the admin search utility to find it) and then proceed to apply these changes:&lt;br /&gt;
# In the &amp;quot;cURL blocked hosts list&amp;quot; (curlsecurityblockedhosts) setting, remove both the &amp;lt;tt&amp;gt;127.0.0.1/8&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;localhost&amp;lt;/tt&amp;gt; entries.&lt;br /&gt;
# In the &amp;quot;cURL allowed ports list&amp;quot; (curlsecurityallowedport) setting, add the &amp;lt;tt&amp;gt;11434&amp;lt;/tt&amp;gt; port.&lt;br /&gt;
# Save changes.&lt;br /&gt;
&lt;br /&gt;
Done, now Moodle should be able to connect to 127.0.0.1:11434, that matches our local Ollama installation.&lt;br /&gt;
&lt;br /&gt;
Note that if you&#039;re using any other OpenAI compatible &#039;&#039;&#039;local&#039;&#039;&#039; provider, or if you&#039;re running it in another &#039;&#039;&#039;local&#039;&#039;&#039; server, you may need to allow other addresses (by IP or by name) and ports, but the mechanism is exactly the same.&lt;br /&gt;
&lt;br /&gt;
=== Moodle OpenAI provider configuration ===&lt;br /&gt;
&lt;br /&gt;
Now that we have the local provider (Ollama) running and we have configured Moodle to have access to it, we are going to configure the OpenAI provider, these are the steps to follow:&lt;br /&gt;
# Go to Admin -&amp;gt; General -&amp;gt; AI -&amp;gt; Manage settings for AI providers&lt;br /&gt;
# Enable the &amp;quot;OpenAI API provider&amp;quot; by clicking on the toggle.&lt;br /&gt;
# Click the &amp;quot;OpenAI API provider&amp;quot; settings link. &lt;br /&gt;
# In the &amp;quot;Provider actions&amp;quot;, enable both the &amp;quot;Generate text&amp;quot; and &amp;quot;Summarise text&amp;quot; actions, by clicking their &amp;quot;Enabled&amp;quot; toggle. Note that, in the case of Ollama, it doesn&#039;t provide any LLM able to generate images, so we cannot enable it for our case. Other OpenAI compatible provider may be able to do so.&lt;br /&gt;
# Both for the, now enabled, &amp;quot;Generate text&amp;quot; and &amp;quot;Summarise text&amp;quot; actions, click on their &amp;quot;Settings&amp;quot; link and proceed to configure the following:&lt;br /&gt;
#* Model: llama3.1&lt;br /&gt;
#* API endpoint: http://127.0.0.1:11434/v1/chat/completions&lt;br /&gt;
#* Save changes.&lt;br /&gt;
&lt;br /&gt;
And that&#039;s all. Now we should be able to use our local Ollama provider for the available AI placements available in our Moodle instance: HTML Editor and Course Assistance placements. Don&#039;t forget to enable and configure their settings at Admin -&amp;gt; General -&amp;gt; AI -&amp;gt; Manage settings for AI placements.&lt;br /&gt;
&lt;br /&gt;
=== A brief note about security ===&lt;br /&gt;
&lt;br /&gt;
Note that, &#039;&#039;&#039;by default&#039;&#039;&#039;, Ollama only binds (listens) to 127.0.0.1 (or localhost) and port 11434. Or, in other words, its main use is to be installed in the same host where the client (Moodle in this case) is installed. And that&#039;s what the configuration above covers. And &#039;&#039;&#039;can be considered a &amp;quot;secure&amp;quot; configuration&#039;&#039;&#039; as far as nobody else (but the same host) can access to it.&lt;br /&gt;
&lt;br /&gt;
If you want to &#039;&#039;&#039;install Ollama in another host&#039;&#039;&#039;, then you will have to open it for remote access (setting the &amp;lt;tt&amp;gt;OLLAMA_HOST&amp;lt;/tt&amp;gt;, see Ollama documentation). But that opens it for remote access from anywhere by default. And &#039;&#039;&#039;that is an &amp;quot;insecure&amp;quot; configuration&#039;&#039;&#039; at all effects because Ollama doesn&#039;t support any Authorisation schema (say API keys, say auth headers, ...). Be warned about that and ask to the IT experts before allowing such a remote access, sure that they will help you to protect the Ollama installation using different mechanisms (firewalls, reverse proxies, auth layers, ...).&lt;br /&gt;
&lt;br /&gt;
Finally, once again, note that this documentation is 100% focussed on a local (same host) Ollama installation. But &#039;&#039;&#039;there are dozens of alternative OpenAI compatible providers out there&#039;&#039;&#039;, and many of them do support Authorisation or virtual API keys and offer more security for remote access, support for different LLMs, ... so it&#039;s recommended to try a few of them depending on each&#039;s one own requirements and infrastructure availability.&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=User:Eloy_Lafuente_(stronk7)/Using_OpenAI_API-compatible_providers&amp;diff=149368</id>
		<title>User:Eloy Lafuente (stronk7)/Using OpenAI API-compatible providers</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=User:Eloy_Lafuente_(stronk7)/Using_OpenAI_API-compatible_providers&amp;diff=149368"/>
		<updated>2024-09-24T07:09:17Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Moodle 4.5 and its AI subsystem comes with a basic number of supported LLM providers. One of them is the OpenAI provider.&lt;br /&gt;
&lt;br /&gt;
While it&#039;s a &amp;quot;proprietary&amp;quot; [https://openai.com/index/openai-api/ API], it has become sort of a &#039;&#039;&amp;quot;de facto&amp;quot; standard&#039;&#039;&#039; and many other LLM providers, both open and commercial, or tools like AI proxies or routers, come with an OpenAI API-compatible layer to use their services.&lt;br /&gt;
&lt;br /&gt;
That enables to, virtually, &#039;&#039;&#039;use any model out there&#039;&#039;&#039; (text completions, images, embeddings, ...) as far as the provider has implemented those OpenAI API-compatible entry points. Just search out there for &amp;quot;OpenAI compatible&amp;quot; and you will find them out.&lt;br /&gt;
&lt;br /&gt;
As an example, in this article, &#039;&#039;&#039;we&#039;ll be using [https://ollama.com Ollama]&#039;&#039;&#039; that is one of the most popular open LLM providers that, apart from its own API, also comes with [https://ollama.com/blog/openai-compatibility OpenAI compatibility], supports many [https://ollama.com/library open models], can be installed locally (or remotely) and works on CPUs (slow!), GPUs (faster) and it&#039;s really [https://github.com/ollama/ollama/blob/main/README.md#cli-reference easy to manage].&lt;br /&gt;
&lt;br /&gt;
But, again, don&#039;t forget that &#039;&#039;&#039;this is only an example and the very same applies to any other provider or tool supporting the OpenAI API&#039;&#039;&#039;. And they are legion! Depending of your needs, usage, monitoring, budget, LLM features... you may end using any of them.&lt;br /&gt;
&lt;br /&gt;
== Configuring Moodle to use a locally installed Ollama ==&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
# An instance of Moodle (4.5dev or later) is [https://docs.moodle.org/en/Installing_Moodle installed and running].&lt;br /&gt;
# Ollama is [https://ollama.com/download installed] in the same computer where Moodle is running.&lt;br /&gt;
# Some [https://ollama.com/library LLM model] has been pulled and is available to Ollama, we&#039;ll be using &amp;lt;tt&amp;gt;llama3.1&amp;lt;/tt&amp;gt; in this example.&lt;br /&gt;
# It&#039;s working ok. You can test it by executing this in the terminal:&lt;br /&gt;
 ollama run llama3.1 &amp;quot;I love Moodle&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Or, in a complementary manner, this raw http call can be used to verify that the service is available via OpenAI API by executing:&lt;br /&gt;
 curl --location &#039;http://127.0.0.1:11434/v1/chat/completions&#039; \&lt;br /&gt;
 --header &#039;Content-Type: application/json&#039; \&lt;br /&gt;
 --data &#039;{&lt;br /&gt;
     &amp;quot;model&amp;quot;: &amp;quot;llama3.1&amp;quot;,&lt;br /&gt;
     &amp;quot;messages&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
         &amp;quot;role&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
         &amp;quot;content&amp;quot;: &amp;quot;I love Moodle&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     ]&lt;br /&gt;
 }&#039;&lt;br /&gt;
&lt;br /&gt;
=== Moodle HTTP security configuration ===&lt;br /&gt;
&lt;br /&gt;
By default, as a security measure, Moodle blocks local network hosts to be accessed with Curl. That includes the usual local networks, like 192.168.1.x, or 10.x.y.z, ... and also 127.0.0.1 or localhost. Similarly, by default, only ports 80 and 443 are allowed.&lt;br /&gt;
&lt;br /&gt;
In our case, remember that this is a locally installed Ollama, we need to allow 127.0.0.1 (or localhost) to be accessed. And, also, we need to allow the 11434 port to be used. Note that those details match the &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; command that we used in the previous section.&lt;br /&gt;
&lt;br /&gt;
To do so, just go to Admin -&amp;gt; General -&amp;gt; Security -&amp;gt; HTTP security (or use the admin search utility to find it) and then proceed to apply these changes:&lt;br /&gt;
# In the &amp;quot;cURL blocked hosts list&amp;quot; (curlsecurityblockedhosts) setting, remove both the &amp;lt;tt&amp;gt;127.0.0.1/8&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;localhost&amp;lt;/tt&amp;gt; entries.&lt;br /&gt;
# In the &amp;quot;cURL allowed ports list&amp;quot; (curlsecurityallowedport) setting, add the &amp;lt;tt&amp;gt;11434&amp;lt;/tt&amp;gt; port.&lt;br /&gt;
# Save changes.&lt;br /&gt;
&lt;br /&gt;
Done, now Moodle should be able to connect to 127.0.0.1:11434, that matches our local Ollama installation.&lt;br /&gt;
&lt;br /&gt;
Note that if you&#039;re using any other OpenAI compatible &#039;&#039;&#039;local&#039;&#039;&#039; provider, or if you&#039;re running it in another &#039;&#039;&#039;local&#039;&#039;&#039; server, you may need to allow other addresses (by IP or by name) and ports, but the mechanism is exactly the same.&lt;br /&gt;
&lt;br /&gt;
=== Moodle OpenAI provider configuration ===&lt;br /&gt;
&lt;br /&gt;
Now that we have the local provider (Ollama) running and we have configured Moodle to have access to it, we are going to configure the OpenAI provider, these are the steps to follow:&lt;br /&gt;
# Go to Admin -&amp;gt; General -&amp;gt; AI -&amp;gt; Manage settings for AI providers&lt;br /&gt;
# Enable the &amp;quot;OpenAI API provider&amp;quot; by clicking on the toggle.&lt;br /&gt;
# Click the &amp;quot;OpenAI API provider&amp;quot; settings link. &lt;br /&gt;
# In the &amp;quot;Provider actions&amp;quot;, enable both the &amp;quot;Generate text&amp;quot; and &amp;quot;Summarise text&amp;quot; actions, by clicking their &amp;quot;Enabled&amp;quot; toggle. Note that, in the case of Ollama, it doesn&#039;t provide any LLM able to generate images, so we cannot enable it for our case. Other OpenAI compatible provider may be able to do so.&lt;br /&gt;
# Both for the, now enabled, &amp;quot;Generate text&amp;quot; and &amp;quot;Summarise text&amp;quot; actions, click on their &amp;quot;Settings&amp;quot; link and proceed to configure the following:&lt;br /&gt;
#* Model: llama3.1&lt;br /&gt;
#* API endpoint: http://127.0.0.1:11434/v1/chat/completions&lt;br /&gt;
#* Save changes.&lt;br /&gt;
&lt;br /&gt;
And that&#039;s all. Now we should be able to use our local Ollama provider for the available AI placements available in our Moodle instance: HTML Editor and Course Assistance placements. Don&#039;t forget to enable and configure their settings at Admin -&amp;gt; General -&amp;gt; AI -&amp;gt; Manage settings for AI placements.&lt;br /&gt;
&lt;br /&gt;
=== A brief note about security ===&lt;br /&gt;
&lt;br /&gt;
Note that, &#039;&#039;&#039;by default&#039;&#039;&#039;, Ollama only binds (listens) to 127.0.0.1 (or localhost) and port 11434. Or, in other words, its main use is to be installed in the same host where the client (Moodle in this case) is installed. And that&#039;s what the configuration above covers. And &#039;&#039;&#039;can be considered a &amp;quot;secure&amp;quot; configuration&#039;&#039;&#039; as far as nobody else (but the same host) can access to it.&lt;br /&gt;
&lt;br /&gt;
If you want to &#039;&#039;&#039;install Ollama in another host&#039;&#039;&#039;, then you will have to open it for remote access (setting the &amp;lt;tt&amp;gt;OLLAMA_HOST&amp;lt;/tt&amp;gt;, see Ollama documentation). But that opens it for remote access from anywhere by default. And &#039;&#039;&#039;that is an &amp;quot;insecure&amp;quot; configuration&#039;&#039;&#039; and all effects because Ollama doesn&#039;t support any Authorisation schema (say API keys, say auth headers, ...). Be warned about that and ask to the IT experts before allowing such a remote access, sure that they will help you to protect the Ollama installation using different mechanisms (firewalls, reverse proxies, auth layers, ...).&lt;br /&gt;
&lt;br /&gt;
Finally, once again, note that this documentation is 100% focussed on a local (same host) Ollama installation. But &#039;&#039;&#039;there are dozens of alternative OpenAI compatible providers out there&#039;&#039;&#039;, and many of them do support Authorisation or virtual API keys and offer more security for remote access, support for different LLMs, ... so it&#039;s recommended to try a few of them depending on each&#039;s one own requirements and infrastructure availability.&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=User:Eloy_Lafuente_(stronk7)/Using_OpenAI_API-compatible_providers&amp;diff=149367</id>
		<title>User:Eloy Lafuente (stronk7)/Using OpenAI API-compatible providers</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=User:Eloy_Lafuente_(stronk7)/Using_OpenAI_API-compatible_providers&amp;diff=149367"/>
		<updated>2024-09-24T07:08:38Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Moodle 4.5 and its AI subsystem comes with a basic number of supported LLM providers. One of them is the OpenAI provider.&lt;br /&gt;
&lt;br /&gt;
While it&#039;s a &amp;quot;proprietary&amp;quot; [https://openai.com/index/openai-api/ API], it has become sort of a &#039;&#039;&amp;quot;de facto&amp;quot; standard&#039;&#039;&#039; and many other LLM providers, both open and commercial, or tools like AI proxies or routers, come with an OpenAI API-compatible layer to use their services.&lt;br /&gt;
&lt;br /&gt;
That enables to, virtually, &#039;&#039;&#039;use any model out there&#039;&#039;&#039; (text completions, images, embeddings, ...) as far as the provider has implemented those OpenAI API-compatible entry points. Just search out there for &amp;quot;OpenAI compatible&amp;quot; and you will find them out.&lt;br /&gt;
&lt;br /&gt;
As an example, in this article, &#039;&#039;&#039;we&#039;ll be using [https://ollama.com Ollama]&#039;&#039;&#039; that is one of the most popular open LLM providers that, apart from its own API, also comes with [https://ollama.com/blog/openai-compatibility OpenAI compatibility], supports many [https://ollama.com/library open models], can be installed locally (or remotely) and works on CPUs (slow!), GPUs (faster) and it&#039;s really [https://github.com/ollama/ollama/blob/main/README.md#cli-reference easy to manage].&lt;br /&gt;
&lt;br /&gt;
But, again, don&#039;t forget that &#039;&#039;&#039;this is only an example and the very same applies to any other provider or tool supporting the OpenAI API&#039;&#039;&#039;. And they are legion! Depending of your needs, usage, monitoring, budget, LLM features... you may end using any of them.&lt;br /&gt;
&lt;br /&gt;
== Configuring Moodle to use a locally installed Ollama ==&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
# An instance of Moodle (4.5dev or later) is [https://docs.moodle.org/en/Installing_Moodle installed and running].&lt;br /&gt;
# Ollama is [https://ollama.com/download installed] in the same computer where Moodle is running.&lt;br /&gt;
# Some [https://ollama.com/library LLM model] has been pulled and is available to Ollama, we&#039;ll be using &amp;lt;tt&amp;gt;llama3.1&amp;lt;/tt&amp;gt; in this example.&lt;br /&gt;
# It&#039;s working ok. You can test it by executing this in the terminal:&lt;br /&gt;
 ollama run llama3.1 &amp;quot;I love Moodle&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Or, in a complementary manner, this raw http call can be used to verify that the service is available via OpenAI API by executing:&lt;br /&gt;
 curl --location &#039;http://127.0.0.1:11434/v1/chat/completions&#039; \&lt;br /&gt;
 --header &#039;Content-Type: application/json&#039; \&lt;br /&gt;
 --data &#039;{&lt;br /&gt;
     &amp;quot;model&amp;quot;: &amp;quot;llama3.1&amp;quot;,&lt;br /&gt;
     &amp;quot;messages&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
         &amp;quot;role&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
         &amp;quot;content&amp;quot;: &amp;quot;I love Moodle&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     ]&lt;br /&gt;
 }&#039;&lt;br /&gt;
&lt;br /&gt;
=== Moodle HTTP security configuration ===&lt;br /&gt;
&lt;br /&gt;
By default, as a security measure, Moodle blocks local network hosts to be accessed with Curl. That includes the usual local networks, like 192.168.1.x, or 10.x.y.z, ... and also 127.0.0.1 or localhost. Similarly, by default, only ports 80 and 443 are allowed.&lt;br /&gt;
&lt;br /&gt;
In our case, remember that this is a locally installed Ollama, we need to allow 127.0.0.1 (or localhost) to be accessed. And, also, we need to allow the 11434 port to be used. Note that those details match the &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; command that we detailed in the previous section.&lt;br /&gt;
&lt;br /&gt;
To do so, just go to Admin -&amp;gt; General -&amp;gt; Security -&amp;gt; HTTP security (or use the admin search utility to find it) and then proceed to apply these changes:&lt;br /&gt;
# In the &amp;quot;cURL blocked hosts list&amp;quot; (curlsecurityblockedhosts) setting, remove both the &amp;lt;tt&amp;gt;127.0.0.1/8&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;localhost&amp;lt;/tt&amp;gt; entries.&lt;br /&gt;
# In the &amp;quot;cURL allowed ports list&amp;quot; (curlsecurityallowedport) setting, add the &amp;lt;tt&amp;gt;11434&amp;lt;/tt&amp;gt; port.&lt;br /&gt;
# Save changes.&lt;br /&gt;
&lt;br /&gt;
Done, now Moodle should be able to connect to 127.0.0.1:11434, that matches our local Ollama installation.&lt;br /&gt;
&lt;br /&gt;
Note that if you&#039;re using any other OpenAI compatible &#039;&#039;&#039;local&#039;&#039;&#039; provider, or if you&#039;re running it in another &#039;&#039;&#039;local&#039;&#039;&#039; server, you may need to allow other addresses (by IP or by name) and ports, but the mechanism is exactly the same.&lt;br /&gt;
&lt;br /&gt;
=== Moodle OpenAI provider configuration ===&lt;br /&gt;
&lt;br /&gt;
Now that we have the local provider (Ollama) running and we have configured Moodle to have access to it, we are going to configure the OpenAI provider, these are the steps to follow:&lt;br /&gt;
# Go to Admin -&amp;gt; General -&amp;gt; AI -&amp;gt; Manage settings for AI providers&lt;br /&gt;
# Enable the &amp;quot;OpenAI API provider&amp;quot; by clicking on the toggle.&lt;br /&gt;
# Click the &amp;quot;OpenAI API provider&amp;quot; settings link. &lt;br /&gt;
# In the &amp;quot;Provider actions&amp;quot;, enable both the &amp;quot;Generate text&amp;quot; and &amp;quot;Summarise text&amp;quot; actions, by clicking their &amp;quot;Enabled&amp;quot; toggle. Note that, in the case of Ollama, it doesn&#039;t provide any LLM able to generate images, so we cannot enable it for our case. Other OpenAI compatible provider may be able to do so.&lt;br /&gt;
# Both for the, now enabled, &amp;quot;Generate text&amp;quot; and &amp;quot;Summarise text&amp;quot; actions, click on their &amp;quot;Settings&amp;quot; link and proceed to configure the following:&lt;br /&gt;
#* Model: llama3.1&lt;br /&gt;
#* API endpoint: http://127.0.0.1:11434/v1/chat/completions&lt;br /&gt;
#* Save changes.&lt;br /&gt;
&lt;br /&gt;
And that&#039;s all. Now we should be able to use our local Ollama provider for the available AI placements available in our Moodle instance: HTML Editor and Course Assistance placements. Don&#039;t forget to enable and configure their settings at Admin -&amp;gt; General -&amp;gt; AI -&amp;gt; Manage settings for AI placements.&lt;br /&gt;
&lt;br /&gt;
=== A brief note about security ===&lt;br /&gt;
&lt;br /&gt;
Note that, &#039;&#039;&#039;by default&#039;&#039;&#039;, Ollama only binds (listens) to 127.0.0.1 (or localhost) and port 11434. Or, in other words, its main use is to be installed in the same host where the client (Moodle in this case) is installed. And that&#039;s what the configuration above covers. And &#039;&#039;&#039;can be considered a &amp;quot;secure&amp;quot; configuration&#039;&#039;&#039; as far as nobody else (but the same host) can access to it.&lt;br /&gt;
&lt;br /&gt;
If you want to &#039;&#039;&#039;install Ollama in another host&#039;&#039;&#039;, then you will have to open it for remote access (setting the &amp;lt;tt&amp;gt;OLLAMA_HOST&amp;lt;/tt&amp;gt;, see Ollama documentation). But that opens it for remote access from anywhere by default. And &#039;&#039;&#039;that is an &amp;quot;insecure&amp;quot; configuration&#039;&#039;&#039; and all effects because Ollama doesn&#039;t support any Authorisation schema (say API keys, say auth headers, ...). Be warned about that and ask to the IT experts before allowing such a remote access, sure that they will help you to protect the Ollama installation using different mechanisms (firewalls, reverse proxies, auth layers, ...).&lt;br /&gt;
&lt;br /&gt;
Finally, once again, note that this documentation is 100% focussed on a local (same host) Ollama installation. But &#039;&#039;&#039;there are dozens of alternative OpenAI compatible providers out there&#039;&#039;&#039;, and many of them do support Authorisation or virtual API keys and offer more security for remote access, support for different LLMs, ... so it&#039;s recommended to try a few of them depending on each&#039;s one own requirements and infrastructure availability.&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=User:Eloy_Lafuente_(stronk7)/Using_OpenAI_API-compatible_providers&amp;diff=149366</id>
		<title>User:Eloy Lafuente (stronk7)/Using OpenAI API-compatible providers</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=User:Eloy_Lafuente_(stronk7)/Using_OpenAI_API-compatible_providers&amp;diff=149366"/>
		<updated>2024-09-23T21:38:33Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Created page with &amp;quot;== Introduction ==  Moodle 4.5 and its AI subsystem comes with a basic number of supported LLM providers. One of them is the OpenAI provider.  While it&amp;#039;s a &amp;quot;proprietary&amp;quot; [https://openai.com/index/openai-api/ API], it has become sort of a &amp;#039;&amp;#039;&amp;quot;de facto&amp;quot; standard&amp;#039;&amp;#039;&amp;#039; and many other LLM providers, both open and commercial, or tools like AI proxies or routers, come with an OpenAI API-compatible layer to use their services.  That enables to, virtually, &amp;#039;&amp;#039;&amp;#039;use any model out there...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Moodle 4.5 and its AI subsystem comes with a basic number of supported LLM providers. One of them is the OpenAI provider.&lt;br /&gt;
&lt;br /&gt;
While it&#039;s a &amp;quot;proprietary&amp;quot; [https://openai.com/index/openai-api/ API], it has become sort of a &#039;&#039;&amp;quot;de facto&amp;quot; standard&#039;&#039;&#039; and many other LLM providers, both open and commercial, or tools like AI proxies or routers, come with an OpenAI API-compatible layer to use their services.&lt;br /&gt;
&lt;br /&gt;
That enables to, virtually, &#039;&#039;&#039;use any model out there&#039;&#039;&#039; (text completions, images, embeddings, ...) as far as the provider has implemented those OpenAI API-compatible entry points. Just search out there for &amp;quot;OpenAI compatible&amp;quot; and you will find them out.&lt;br /&gt;
&lt;br /&gt;
As an example, in this article, &#039;&#039;&#039;we&#039;ll be using [https://ollama.com Ollama]&#039;&#039;&#039; that is one of the most popular open LLM providers that, apart from its own API, also comes with [https://ollama.com/blog/openai-compatibility OpenAI compatibility], supports many [https://ollama.com/library open models], can be installed locally (or remotely) and works on CPUs (slow!), GPUs (faster) and it&#039;s really [https://github.com/ollama/ollama/blob/main/README.md#cli-reference easy to manage].&lt;br /&gt;
&lt;br /&gt;
But, again, don&#039;t forget that &#039;&#039;&#039;this is only an example and the very same applies to any other provider or tool supporting the OpenAI API&#039;&#039;&#039;. And they are legion! Depending of your needs, usage, monitoring, budget, LLM features... you may end using any of them.&lt;br /&gt;
&lt;br /&gt;
== Configuring Moodle to use a locally installed Ollama ==&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
# An instance of Moodle (4.5dev or later) is [https://docs.moodle.org/en/Installing_Moodle installed and running].&lt;br /&gt;
# Ollama is [https://ollama.com/download installed] in the same computer where Moodle is running.&lt;br /&gt;
# Some [https://ollama.com/library LLM model] has been pulled and is available to Ollama, we&#039;ll be using &amp;lt;tt&amp;gt;llama3.1&amp;lt;/tt&amp;gt; in this example.&lt;br /&gt;
# It&#039;s working ok. You can test it by executing this in the terminal:&lt;br /&gt;
 ollama run llama3.1 &amp;quot;I love Moodle&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Or, in a complementary manner, this raw http call can be used to verify that the service is available via OpenAI API by executing:&lt;br /&gt;
 curl --location &#039;http://127.0.0.1:11434/v1/chat/completions&#039; \&lt;br /&gt;
 --header &#039;Content-Type: application/json&#039; \&lt;br /&gt;
 --data &#039;{&lt;br /&gt;
     &amp;quot;model&amp;quot;: &amp;quot;llama3.1&amp;quot;,&lt;br /&gt;
     &amp;quot;messages&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
         &amp;quot;role&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
         &amp;quot;content&amp;quot;: &amp;quot;I love Moodle&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     ]&lt;br /&gt;
 }&#039;&lt;br /&gt;
&lt;br /&gt;
=== Moodle HTTP security configuration ===&lt;br /&gt;
&lt;br /&gt;
By default, as a security measure, Moodle blocks local network hosts to be accessed with Curl. That includes the usual local networks, like 192.168.1.x, or 10.x.y.z, ... and also 127.0.0.1 or localhost. Similarly, by default, only ports 80 and 443 are allowed.&lt;br /&gt;
&lt;br /&gt;
In our case, remember that this is a locally installed Ollama, we need to allow 127.0.0.1 (or localhost) to be accessed. And, also, we need to allow the 11434 to be used. Note that those details match the &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; command that we detailed in the previous section.&lt;br /&gt;
&lt;br /&gt;
To do so, just go to Admin -&amp;gt; General -&amp;gt; Security -&amp;gt; HTTP security (or use the admin search utility to find it) and then proceed to apply these changes:&lt;br /&gt;
# In the &amp;quot;cURL blocked hosts list&amp;quot; (curlsecurityblockedhosts) setting, remove both the &amp;lt;tt&amp;gt;127.0.0.1/8&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;localhost&amp;lt;/tt&amp;gt; entries.&lt;br /&gt;
# In the &amp;quot;cURL allowed ports list&amp;quot; (curlsecurityallowedport) setting, add the &amp;lt;tt&amp;gt;11434&amp;lt;/tt&amp;gt; port.&lt;br /&gt;
# Save changes.&lt;br /&gt;
&lt;br /&gt;
Done, now Moodle should be able to connect to 127.0.0.1:11434, that matches our local Ollama installation.&lt;br /&gt;
&lt;br /&gt;
Note that if you&#039;re using any other OpenAI compatible &#039;&#039;&#039;local&#039;&#039;&#039; provider, or if you&#039;re running it in another &#039;&#039;&#039;local&#039;&#039;&#039; server, you may need to allow other addresses (by IP or by name) and ports, but the mechanism is exactly the same.&lt;br /&gt;
&lt;br /&gt;
=== Moodle OpenAI provider configuration ===&lt;br /&gt;
&lt;br /&gt;
Now that we have the local provider (Ollama) running and we have configured Moodle to have access to it, we are going to configure the OpenAI provider, these are the steps to follow:&lt;br /&gt;
# Go to Admin -&amp;gt; General -&amp;gt; AI -&amp;gt; Manage settings for AI providers&lt;br /&gt;
# Enable the &amp;quot;OpenAI API provider&amp;quot; by clicking on the toggle.&lt;br /&gt;
# Click the &amp;quot;OpenAI API provider&amp;quot; settings link. &lt;br /&gt;
# In the &amp;quot;Provider actions&amp;quot;, enable both the &amp;quot;Generate text&amp;quot; and &amp;quot;Summarise text&amp;quot; actions, by clicking their &amp;quot;Enabled&amp;quot; toggle. Note that, in the case of Ollama, it doesn&#039;t provide any LLM able to generate images, so we cannot enable it for our case. Other OpenAI compatible provider may be able to do so.&lt;br /&gt;
# Both for the, now enabled, &amp;quot;Generate text&amp;quot; and &amp;quot;Summarise text&amp;quot; actions, click on their &amp;quot;Settings&amp;quot; link and proceed to configure the following:&lt;br /&gt;
#* Model: llama3.1&lt;br /&gt;
#* API endpoint: http://127.0.0.1:11434/v1/chat/completions&lt;br /&gt;
#* Save changes.&lt;br /&gt;
&lt;br /&gt;
And that&#039;s all. Now we should be able to use our local Ollama provider for the available AI placements available in our Moodle instance: HTML Editor and Course Assistance placements. Don&#039;t forget to enable and configure their settings at Admin -&amp;gt; General -&amp;gt; AI -&amp;gt; Manage settings for AI placements.&lt;br /&gt;
&lt;br /&gt;
=== A brief note about security ===&lt;br /&gt;
&lt;br /&gt;
Note that, &#039;&#039;&#039;by default&#039;&#039;&#039;, Ollama only binds (listens) to 127.0.0.1 (or localhost) and port 11434. Or, in other words, its main use is to be installed in the same host where the client (Moodle in this case) is installed. And that&#039;s what the configuration above covers. And &#039;&#039;&#039;can be considered a &amp;quot;secure&amp;quot; configuration&#039;&#039;&#039; as far as nobody else (but the same host) can access to it.&lt;br /&gt;
&lt;br /&gt;
If you want to &#039;&#039;&#039;install Ollama in another host&#039;&#039;&#039;, then you will have to open it for remote access (setting the &amp;lt;tt&amp;gt;OLLAMA_HOST&amp;lt;/tt&amp;gt;, see Ollama documentation). But that opens it for remote access from anywhere by default. And &#039;&#039;&#039;that is an &amp;quot;insecure&amp;quot; configuration&#039;&#039;&#039; and all effects because Ollama doesn&#039;t support any Authorisation schema (say API keys, say auth headers, ...). Be warned about that and ask to the IT experts before allowing such a remote access, sure that they will help you to protect the Ollama installation using different mechanisms (firewalls, reverse proxies, auth layers, ...).&lt;br /&gt;
&lt;br /&gt;
Finally, once again, note that this documentation is 100% focussed on a local (same host) Ollama installation. But &#039;&#039;&#039;there are dozens of alternative OpenAI compatible providers out there&#039;&#039;&#039;, and many of them do support Authorisation or virtual API keys and offer more security for remote access, support for different LLMs, ... so it&#039;s recommended to try a few of them depending on each&#039;s one own requirements and infrastructure availability.&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=148219</id>
		<title>Upgrading</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=148219"/>
		<updated>2024-04-09T14:51:39Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Show only versions that can be upgraded to 4.4 (aka, Moodle 4.1.2 an up)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Installing Moodle}}&lt;br /&gt;
&#039;&#039;This page explains in detail how to upgrade Moodle. For a summary of the process, see [[Upgrade overview]].&#039;&#039;&lt;br /&gt;
==Check the requirements==&lt;br /&gt;
Before upgrading, check that your server meets all requirements for {{Version}} in &#039;&#039;Site administration &amp;gt; Server &amp;gt; [[Environment]]&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
See the [{{Release notes}} release notes] in the dev docs for both [{{Release notes}}#Server_requirements server] and [{{Release notes}}#Client_requirements client] software requirements.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* You can only upgrade to Moodle {{Version}} from Moodle 3.11.8 or later. If upgrading from earlier versions, you must [https://docs.moodle.org/311/en/Upgrading upgrade to 3.11.8] as a first step.&lt;br /&gt;
==Before upgrading==&lt;br /&gt;
&#039;&#039;&#039;We advise that you test the upgrade first on a COPY of your production site, to make sure it works as you expect.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Consider setting the [[Upgrade key|upgrade key]] for your site.&lt;br /&gt;
== Backup important data ==&lt;br /&gt;
There are three areas that should be backed up before any upgrade:&lt;br /&gt;
#Moodle software (For example, everything in server/htdocs/moodle)&lt;br /&gt;
#Moodle uploaded files (For example, server/moodledata)&lt;br /&gt;
#Moodle database (For example, your Postgres or MySQL database dump)&lt;br /&gt;
See [[Site backup]] for more specific information.&lt;br /&gt;
== Check for plugin updates ==&lt;br /&gt;
If you have [[Automatic updates deployment]] enabled, you will be able to update installed plugins automatically during the upgrade. Just make sure you check for available updates (via the button for it) at the Plugins check screen.&lt;br /&gt;
&lt;br /&gt;
If you are updating plugins manually, it is a good moment now to check in the [http://moodle.org/plugins Moodle Plugins directory] whether there is a {{Version}} version available for any plugins (including themes) that you have previously installed on your site. If so, download the plugin package. In the next step, you will copy it to the appropriate location in your Moodle code (see [[Installing plugins]]).&lt;br /&gt;
&lt;br /&gt;
The upgrade of the plugin will then happen as part of the Moodle upgrade process.&lt;br /&gt;
&lt;br /&gt;
If an out-of-date plugin causes your upgrade to fail, you can usually delete the plugin code rather than uninstalling it from within Moodle so that the data associated with it is not deleted.&lt;br /&gt;
==Put your site into maintenance mode==&lt;br /&gt;
Before you begin upgrading your site, you should put it into [[Maintenance_mode | maintenance mode]] to stop any non-admin users from logging in. Then you should wait for any currently running cron processes to complete before proceeding.&lt;br /&gt;
== Install the new Moodle software ==&lt;br /&gt;
You can download the latest release from [https://download.moodle.org/ Moodle downloads].&lt;br /&gt;
=== Standard install package ===&lt;br /&gt;
# Move your old Moodle software program files to another location. &#039;&#039;Do NOT copy new files over the old files.&#039;&#039;&lt;br /&gt;
# Unzip or unpack the upgrade file so that all the new Moodle software program files are in the location the old files used to be in on the server. Moodle will adjust SQL and moodledata if it needs to in the upgrade.&lt;br /&gt;
# Copy your old [[Configuration file|config.php file]] back to the new Moodle directory. &lt;br /&gt;
# As mentioned above, if you had installed any plugins on your site you should add them to the new code tree (Moodle directory structure) now. It is important to check that you get the correct version for your new version of Moodle. Be particularly careful that you do not overwrite any code in the new version of Moodle and that you place the plugin folders in the correct directory (the same directory that they are in in the current installation.)&lt;br /&gt;
# Your moodledata folder should be located separately to your Moodle code folder and, as such, should not need anything done to it. Moodle 3.0 will throw a warning if it is located in a web accessible folder and the moodledata should never be located in the Moodle code folder. If you are moving your installation to a new server or new location on your server, then you will need to follow the [[Migration]] documents.&lt;br /&gt;
====Linux====&lt;br /&gt;
 mv moodle moodle.backup&lt;br /&gt;
 tar xvzf moodle-latest-{{Version}}.tgz&lt;br /&gt;
Next, copy across your config.php, any custom plugins, and your .htaccess file if you created one (&#039;&#039;&#039;check that custom plugins are the correct version for your new Moodle first&#039;&#039;&#039;):&lt;br /&gt;
 cp moodle.backup/config.php moodle&lt;br /&gt;
 cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme&lt;br /&gt;
 cp -pr moodle.backup/mod/mymod moodle/mod/mymod&lt;br /&gt;
Don&#039;t forget to make moodle/config.php (and the rest of the source code) readable by your www server. For maximum security the files should not be writeable by your server. This is especially important on a &#039;production&#039; server open to the public internet. &lt;br /&gt;
 chown -R root:root moodle (Linux debian - or even create a user especially for moodle. &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; use the web server user, e.g. www-data)&lt;br /&gt;
 chmod -R 755 moodle&lt;br /&gt;
If you use cron, take care that cron.php is executeable and uses the correct php command: &lt;br /&gt;
 chmod 740 admin/cli/cron.php (some configurations need chmod 750 or chmod 755)&lt;br /&gt;
 copy the first line from cron.php (if it looks like &#039;#!/usr/local/bin/php&#039; or &#039;#!/usr/local/bin/php5.3&#039;, no need to copy &#039;&amp;lt;?php&#039;) &lt;br /&gt;
if necessary. However, for a simple upgrade, there should be no need to change anything with cron.&lt;br /&gt;
=== Using Git ===&lt;br /&gt;
You can use Git for updating or upgrading your Moodle. See [[Git for Administrators]] for details.&lt;br /&gt;
===Command line upgrade===&lt;br /&gt;
On Linux servers, Moodle {{Version}} supports running the [[CLI|upgrade from the command line]], rather than through a web browser. This is likely to be more reliable, particularly for large sites.&lt;br /&gt;
== Finishing the upgrade ==&lt;br /&gt;
The last step is to trigger the upgrade processes within Moodle. &lt;br /&gt;
&lt;br /&gt;
If you put your site into Maintenance mode earlier; take it out now!&lt;br /&gt;
&lt;br /&gt;
To do this just go to &#039;&#039;Site administration &amp;gt; Notifications&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Moodle will automatically detect the new version and perform all the SQL database or file system upgrades that are necessary. If there is anything it can&#039;t do itself (very rare) then you will see messages telling you what you need to do.&lt;br /&gt;
&lt;br /&gt;
Assuming all goes well (no error messages) then you can start using your new version of Moodle and enjoy the new features!&lt;br /&gt;
&lt;br /&gt;
Note: If you are running multiple servers then you should purge all caches manually (via &#039;&#039;Site administration &amp;gt; Development &amp;gt; Purge all caches&#039;&#039;) after completing the upgrade on all servers.&lt;br /&gt;
===Fatal error: Maximum execution time of 30 seconds exceeded...===&lt;br /&gt;
If your server uses a main language other than English, you may encounter a &#039;Fatal error: Maximum execution time of 30 seconds exceeded&#039; when you try to upgrade it. You can increase max_execution_time = 160 on php.ini to allow the scripts enough time to process the language update. Otherwise, you can switch to English as the default language before doing the upgrade and back to your original language after a successful upgrade. See the forum discussion at https://moodle.org/mod/forum/discuss.php?d=119598.&lt;br /&gt;
&lt;br /&gt;
==Possible issues that may affect you in Moodle {{Version}}==&lt;br /&gt;
&lt;br /&gt;
===LTI External tool improvements===&lt;br /&gt;
&lt;br /&gt;
External tool is no longer available in the activity chooser. Instead, teachers can create a tool via a new page [[LTI External tools]] in the More menu of their course, then choose to make it available in the activity chooser. Existing tools created at site level and set to show as a preconfigured tool or show in the activity chooser are listed on the LTI External tools page.&lt;br /&gt;
&lt;br /&gt;
There&#039;s also a new option to restrict site-level tools to courses in specific categories only.&lt;br /&gt;
&lt;br /&gt;
===Site-level default settings for activity completion===&lt;br /&gt;
&lt;br /&gt;
You can set default [[Activity completion settings]] for all courses on the site in &#039;&#039;Site administration &amp;gt; Courses &amp;gt; Default activity completion&#039;&#039;. Previously, the default at course level was &#039;Student must manually mark the activity as done&#039; for all activities. After upgrading, the default at site and course level is &#039;None&#039;, with the exception of any changed course level defaults, which are retained.&lt;br /&gt;
&lt;br /&gt;
===Communication===&lt;br /&gt;
&lt;br /&gt;
To use the new feature [[Communication]], which includes an integration with Matrix, you must enable communication providers in &#039;&#039;Site administration &amp;gt; Development &amp;gt; Experimental settings&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Sharing courses to MoodleNet===&lt;br /&gt;
&lt;br /&gt;
If [[Share to MoodleNet|sharing to MoodleNet]] is enabled on the site, in 4.3 teachers can also share courses or selected items from the course to MoodleNet.&lt;br /&gt;
&lt;br /&gt;
===Multi-factor authentication===&lt;br /&gt;
&lt;br /&gt;
To increase site security, you can enable [[Multi-factor authentication]] in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Manage multi-factor authentication&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===SCORM database structure improvements===&lt;br /&gt;
&lt;br /&gt;
If your site has a large amount of SCORM tracking data, the 4.3 upgrade may take longer than usual. However, after upgrading you should see some performance improvements.&lt;br /&gt;
&lt;br /&gt;
===New user tour===&lt;br /&gt;
&lt;br /&gt;
Moodle 4.3 includes a new [[User tours|user tour]] for the Grader report, highlighting features added in Moodle 4.2. If desired, you can disable it in Site administration / Appearance / User tours.&lt;br /&gt;
&lt;br /&gt;
===Creative Commons 4.0 licences===&lt;br /&gt;
&lt;br /&gt;
Creative Commons 4.0 licences are available. Creative Commons 3.0 licences are disabled - this prevents future use while not affecting existing use.&lt;br /&gt;
&lt;br /&gt;
===HTTP only cookies default set to on===&lt;br /&gt;
&lt;br /&gt;
HTTP only cookies (cookiehttponly) is set to on for new installs and the UI setting is removed. For upgraded sites, the current setting persists. Unless your site is using old SCORM packages or similar, HTTP only cookies should be on. If required, it can be changed in config.php.&lt;br /&gt;
&lt;br /&gt;
===Role renaming settings move===&lt;br /&gt;
&lt;br /&gt;
Role renaming settings are no longer in the course settings but instead can be found in &#039;&#039;Course &amp;gt; Participants &amp;gt; Role renaming&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Scrolling on mobile devices issue when using Atto===&lt;br /&gt;
&lt;br /&gt;
To avoid a bug affecting mobile device users using Atto (MDL-79636), users need to change their text editor to TinyMCE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also the list of [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%204.3%20AND%20labels%20%3D%20upgrade_notes upgrade_notes-labelled issues] and [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%204.3%20AND%20labels%20%3D%20ui_change ui_change-labelled issues].&lt;br /&gt;
&lt;br /&gt;
===New capabilities in Moodle {{Version}}===&lt;br /&gt;
&lt;br /&gt;
* communication/matrix:moderator  &lt;br /&gt;
* factor/capability:cannotpassfactor  &lt;br /&gt;
* mod/forum:canmailnow    &lt;br /&gt;
* moodle/contentbank:copyanycontent   &lt;br /&gt;
* moodle/contentbank:copycontent  &lt;br /&gt;
* moodle/course:configurecoursecommunication  &lt;br /&gt;
* moodle/group:configurecustomfields  &lt;br /&gt;
* moodle/moodlenet:sharecourse    &lt;br /&gt;
* tool/mfa:mfaaccess&lt;br /&gt;
&lt;br /&gt;
===Removed capabilities===&lt;br /&gt;
&lt;br /&gt;
* mod/lti:addmanualinstance&lt;br /&gt;
&lt;br /&gt;
== Moodle 4.1, 4.2 and 4.3 upgrading notes ==&lt;br /&gt;
Depending on which version you are upgrading from, please see the section &#039;Possible issues that may affect you&#039; in the documentation:&lt;br /&gt;
* [https://docs.moodle.org/401/en/Upgrading Upgrading to Moodle 4.1]&lt;br /&gt;
* [https://docs.moodle.org/402/en/Upgrading Upgrading to Moodle 4.2]&lt;br /&gt;
* [https://docs.moodle.org/403/en/Upgrading Upgrading to Moodle 4.3]&lt;br /&gt;
&lt;br /&gt;
==Any questions about the process?==&lt;br /&gt;
Please post in the [https://moodle.org/mod/forum/view.php?id=28 Installing and upgrading help forum] on moodle.org.&lt;br /&gt;
==See also==&lt;br /&gt;
* [https://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;version=17960 Moodle 4.2 release notes]&lt;br /&gt;
[[es:Actualización de moodle]]&lt;br /&gt;
[[fr:Mise à jour]]&lt;br /&gt;
[[ja:Moodleをアップグレードする]]&lt;br /&gt;
[[de:Aktualisierung von Moodle]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=PHP&amp;diff=147769</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=PHP&amp;diff=147769"/>
		<updated>2024-02-02T10:44:04Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Updating versions to actual ones.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Installing Moodle}}&lt;br /&gt;
PHP is the scripting language in which Moodle is developed. It is integrated with your web server. The web server detects php pages (by their extension) and sends them to PHP for execution. PHP must be installed and configured properly for Moodle to work effectively (or at all).&lt;br /&gt;
==PHP Versions==&lt;br /&gt;
* Moodle 3.0.1 and later support PHP 7, however&lt;br /&gt;
** Moodle 3.1 and earlier does not support PHP 7.1 or later (this means that there is currently no combination of releases of Moodle and PHP that are still supported before Moodle 3.4);&lt;br /&gt;
* Moodle 3.4 and Moodle 3.5 &#039;&#039;&#039;require&#039;&#039;&#039; PHP 7.0 or PHP 7.1 or PHP 7.2&lt;br /&gt;
* Moodle 3.6 &#039;&#039;&#039;requires&#039;&#039;&#039; PHP 7.0 or later&lt;br /&gt;
* Moodle 3.7 &#039;&#039;&#039;requires&#039;&#039;&#039; PHP 7.1 or later&lt;br /&gt;
* Moodle 3.9 &#039;&#039;&#039;requires&#039;&#039;&#039; PHP 7.2 to 7.4&lt;br /&gt;
* Moodle 3.11 and 4.0 &#039;&#039;&#039;requires&#039;&#039;&#039; PHP 7.3 to 8.0&lt;br /&gt;
* Moodle 4.1 (LTS) &#039;&#039;&#039;requires&#039;&#039;&#039; PHP 7.4 to 8.1&lt;br /&gt;
* Moodle 4.2 &#039;&#039;&#039;requires&#039;&#039;&#039; PHP 8.0 to 8.2&lt;br /&gt;
* Moodle 4.3 &#039;&#039;&#039;requires&#039;&#039;&#039; PHP 8.0 to 8.2&lt;br /&gt;
&lt;br /&gt;
==PHP Settings==&lt;br /&gt;
Check these settings in your php.ini or .htaccess file (if you&#039;re using Apache). For settings which use ON/OFF as their values, you can substitute 1 for ON and 0 for OFF if you prefer. If you change php.ini, don&#039;t forget to restart the server. &lt;br /&gt;
* &#039;&#039;memory_limit&#039;&#039; needs to be at least 96M (although some functions may not work if this low). Moodle will refuse to install if lower. 128M is recommended. Large systems may need an even higher setting.&lt;br /&gt;
* &#039;&#039;session.save_handler&#039;&#039; needs to be set to FILES.&lt;br /&gt;
* &#039;&#039;magic_quotes_runtime&#039;&#039; needs to be OFF. (DEPRECATED in PHP 5.3.0, and REMOVED as of PHP 7.0.0.)&lt;br /&gt;
* &#039;&#039;file_uploads&#039;&#039; needs to be ON.&lt;br /&gt;
* &#039;&#039;session.auto_start&#039;&#039; needs to be OFF.&lt;br /&gt;
* The temp folder must be defined and writeable by your webserver user&lt;br /&gt;
* Check the error display/logging section. Make sure the settings are appropriate for your server use.&lt;br /&gt;
* &#039;&#039;post_max_size&#039;&#039; and &#039;&#039;upload_max_filesize&#039;&#039; restrict the maximum file size that can be uploaded.&lt;br /&gt;
* Check the &#039;&#039;[mail function]&#039;&#039; and database section (for your chosen database) to make sure they match your server configuration.&lt;br /&gt;
==HTTP_RAW_POST_DATA errors==&lt;br /&gt;
Some users are experiencing $HTTP_RAW_POST_DATA related errors, when establishing connection between MNET servers or making AJAX web services requests.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Request for server name returned empty response&lt;br /&gt;
 &lt;br /&gt;
    line 134 of /mnet/lib.php: call to debugging()&lt;br /&gt;
    line 115 of /admin/mnet/peers.php: call to mnet_get_public_key()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
These errors are affecting installations running moodle on PHP 5.6 version and it&#039;s a PHP bug on the &#039;&#039;&#039;always_populate_raw_post_data&#039;&#039;&#039; setting the default value to 0.&lt;br /&gt;
&lt;br /&gt;
To avoid the error messages above, please change the value following setting on your php.ini file:&lt;br /&gt;
* &#039;&#039;&#039;always_populate_raw_post_data&#039;&#039;&#039; should be changed to &#039;&#039;&#039;-1&#039;&#039;&#039;.&lt;br /&gt;
For more information about this bug, see: https://bugs.php.net/bug.php?id=66763&lt;br /&gt;
==Finding the correct php.ini==&lt;br /&gt;
Sometimes it is not obvious where the php.ini file is located or you may even find more than one. To be certain run &#039;phpinfo&#039; - see below. The path of the php.ini file is a few lines down in the top section. &lt;br /&gt;
&lt;br /&gt;
Note that if you are using command-line (CLI) PHP for running cron (or anything else) it may be configured with a &#039;&#039;different&#039;&#039; php.ini file. To check, run the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php -i | grep php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==PHP Extensions and libraries==&lt;br /&gt;
The following PHP extensions are required or recommended (some, e.g. iconv, ctype and tokenizer are now included in PHP by default). Others will need to be installed or selected.&lt;br /&gt;
==== Required extensions ====&lt;br /&gt;
* &#039;&#039;&#039;ctype&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;curl&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dom&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;gd&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;iconv&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;intl&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;json&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;mbstring&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;pcre&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;simplexml&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;spl&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;xml&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;zip&#039;&#039;&#039;&lt;br /&gt;
* The appropriate extension for your chosen database is also required (&#039;&#039;&#039;pgsql&#039;&#039;&#039;, &#039;&#039;&#039;mysqli&#039;&#039;&#039;, &#039;&#039;&#039;sqlsrv&#039;&#039;&#039;, &#039;&#039;&#039;oci8&#039;&#039;&#039;, or &#039;&#039;&#039;pdo&#039;&#039;&#039;)&lt;br /&gt;
* Other PHP extensions may be required to support optional Moodle functionality, especially external authentication and/or enrolment (e.g. LDAP extension for LDAP authentication and the sockets extension for Chat server).&lt;br /&gt;
==== Recommended extensions ====&lt;br /&gt;
* &#039;&#039;&#039;openssl&#039;&#039;&#039; (required for networking and web services)&lt;br /&gt;
* &#039;&#039;&#039;soap&#039;&#039;&#039; (required for web services)&lt;br /&gt;
* &#039;&#039;&#039;sodium&#039;&#039;&#039; (required on PHP 8 and above)&lt;br /&gt;
* &#039;&#039;&#039;tokenizer&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;xmlrpc&#039;&#039;&#039; (required for networking and web services)&lt;br /&gt;
==Installing (missing) extensions==&lt;br /&gt;
This depends on how PHP was installed on your machine and what access you have. Here are some possibilities:&lt;br /&gt;
* The extension might be installed but not enabled; you can enable it in php.ini with the &amp;lt;code&amp;gt;extension=&amp;lt;extension-name&amp;gt;&amp;lt;/code&amp;gt; [https://www.php.net/manual/en/ini.core.php#ini.extension directive].&lt;br /&gt;
* If this is a hosted server you are likely to have to ask the administrator or hosting company.&lt;br /&gt;
* If PHP was compiled from source you will need to recompile, changing the &#039;configure&#039; settings - see [[Compiling PHP from source]].&lt;br /&gt;
* If it was installed using packages (typically Linux) you can install the required package (see your Linux distribution&#039;s documentation)&lt;br /&gt;
* If you are using Windows you just need to uncomment the appropriate DLL files in php.ini&lt;br /&gt;
After making any changes or additions, don&#039;t forget to re-start your web server.&lt;br /&gt;
== .htaccess files ==&lt;br /&gt;
If you don&#039;t have access to the php.ini file or there are conflicting requirements with other PHP applications on the same server you may be able to change PHP settings in an .htaccess file. This should be placed in the &#039;root&#039; of your Moodle installation (i.e. the same place as the config.php file). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The file isn&#039;t always called .htaccess and may not work at all. Contact your server administrator to be sure&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Settings are made by adding lines in one of two formats:&lt;br /&gt;
* php_value &#039;&#039;name value&#039;&#039;&lt;br /&gt;
* php_flag &#039;&#039;name on/off&#039;&#039;&lt;br /&gt;
Examples:&lt;br /&gt;
* &#039;&#039;&#039;php_value memory_limit 128M&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;php_flag register_globals off&#039;&#039;&#039;&lt;br /&gt;
==PHP info==&lt;br /&gt;
The phpinfo display contains information about the configuration of your PHP installation. This is useful for checking:&lt;br /&gt;
* that your PHP installation meets Moodle&#039;s system requirements.&lt;br /&gt;
* the values that are currently applied to your server&#039;s PHP install, e.g. File upload limits&lt;br /&gt;
* that you have installed the required modules needed for Moodle to work, e.g. the LDAP module for LDAP authentication.&lt;br /&gt;
=== Displaying phpinfo in Moodle===&lt;br /&gt;
An administrator can find PHP info in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Server &amp;gt; PHP info&#039;&#039;.&lt;br /&gt;
=== Displaying phpinfo outside of Moodle ===&lt;br /&gt;
To view the phpinfo information:&lt;br /&gt;
* Create a file called info.php using your text editor, containing this single line:&lt;br /&gt;
 &amp;lt;code php&amp;gt;&lt;br /&gt;
 &amp;lt;?php phpinfo(); ?&amp;gt;&lt;br /&gt;
 &amp;lt;/code&amp;gt;&lt;br /&gt;
* Save this file as info.php&lt;br /&gt;
* Upload this file into the root web accessible folder on your server.&lt;br /&gt;
* Now open this file in your browser. For example &amp;lt;nowiki&amp;gt;http://&amp;lt;server-name&amp;gt;/info.php&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Compiling PHP from source]]&lt;br /&gt;
* [https://docs.moodle.org/dev/Moodle_and_PHP7 Moodle and PHP7] in the developers documentation&lt;br /&gt;
*http://www.php.net/ - the PHP web site&lt;br /&gt;
*[https://php.iis.net/ http://php.iis.net/] - Microsoft PHP Installer for IIS&lt;br /&gt;
* [[MoodleDocs:Style_guide#PHP_syntax_highlighting]] to highlight PHP syntax&lt;br /&gt;
* [[Code syntax highlighting]] that uses the GeSHi (Generic Syntax Highlighter) filter. &lt;br /&gt;
[[de:PHP]]&lt;br /&gt;
[[es:PHP]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=User_talk:Eloy_Lafuente_(stronk7)&amp;diff=147594</id>
		<title>User talk:Eloy Lafuente (stronk7)</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=User_talk:Eloy_Lafuente_(stronk7)&amp;diff=147594"/>
		<updated>2024-01-06T16:53:14Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Created page with &amp;quot;test talk page&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test talk page&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=admin/environment/custom_check/db_prefix_too_long&amp;diff=146691</id>
		<title>admin/environment/custom check/db prefix too long</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=admin/environment/custom_check/db_prefix_too_long&amp;diff=146691"/>
		<updated>2023-09-10T15:30:30Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Created page with &amp;quot;Since Moodle 4.3, the max allowed length for the database tables prefix (&amp;lt;tt&amp;gt;$CFG-&amp;gt;prefix&amp;lt;/tt&amp;gt;) are 10 characters.  If your database is using longer prefixes, you will need to...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since Moodle 4.3, the max allowed length for the database tables prefix (&amp;lt;tt&amp;gt;$CFG-&amp;gt;prefix&amp;lt;/tt&amp;gt;) are 10 characters.&lt;br /&gt;
&lt;br /&gt;
If your database is using longer prefixes, you will need to rename all the tables to use a new, shorter, prefix.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [https://moodledev.io/general/releases/4.3#database-requirements Moodle 4.3 release page database requirements].&lt;br /&gt;
* MDL-76459&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=admin/environment/custom_check/php_not_64_bits&amp;diff=145338</id>
		<title>admin/environment/custom check/php not 64 bits</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=admin/environment/custom_check/php_not_64_bits&amp;diff=145338"/>
		<updated>2023-01-02T15:42:55Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: amend&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This message means that your current [[PHP]] version is not 64 bits.&lt;br /&gt;
&lt;br /&gt;
A new feature of PHP7 is it has now 64-bit version so it can use more than 4GB RAM and code performance can be potentially two times faster depending on the application design.&lt;br /&gt;
&lt;br /&gt;
{{Note|Since Moodle 4.2 it&#039;s required to use a 64-bit version of PHP and the underlying Operating System.}}&lt;br /&gt;
&lt;br /&gt;
[[es:admin/environment/custom check/php not 64 bits]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=admin/environment/custom_check/php_not_64_bits&amp;diff=145337</id>
		<title>admin/environment/custom check/php not 64 bits</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=admin/environment/custom_check/php_not_64_bits&amp;diff=145337"/>
		<updated>2023-01-02T15:40:02Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This message means that your current [[PHP]] version is not 64 bits.&lt;br /&gt;
&lt;br /&gt;
A new feature of PHP7 is it has now 64-bit version so it can use more than 4GB RAM and code performance can be potentially two times faster depending on the application design.&lt;br /&gt;
&lt;br /&gt;
{{Note|Starting with Moodle 4.2 only 64bits Operating Systems and PHP installations are supported.}}&lt;br /&gt;
&lt;br /&gt;
[[es:admin/environment/custom check/php not 64 bits]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=144912</id>
		<title>Upgrading</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=144912"/>
		<updated>2022-11-15T18:10:00Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Update the information to the versions that may be involved in the upgrades (3.9 and up)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Installing Moodle}}&lt;br /&gt;
&#039;&#039;This page explains in detail how to upgrade Moodle. For a summary of the process, see [[Upgrade overview]].&#039;&#039;&lt;br /&gt;
==Check the requirements==&lt;br /&gt;
Before upgrading, check that your server meets all requirements for {{Version}} in &#039;&#039;Site administration &amp;gt; Server &amp;gt; [[Environment]]&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
See the [{{Release notes}} release notes] in the dev docs for both [{{Release notes}}#Server_requirements server] and [{{Release notes}}#Client_requirements client] software requirements.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* You can only upgrade to Moodle {{Version}} from Moodle 3.9 or later. If upgrading from earlier versions, you must [https://docs.moodle.org/39/en/Upgrading_to_Moodle_3.9 upgrade to 3.9] as a first step.&lt;br /&gt;
&lt;br /&gt;
==Before upgrading==&lt;br /&gt;
&#039;&#039;&#039;We advise that you test the upgrade first on a COPY of your production site, to make sure it works as you expect.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Consider setting the [[Upgrade key|upgrade key]] for your site.&lt;br /&gt;
== Backup important data ==&lt;br /&gt;
There are three areas that should be backed up before any upgrade:&lt;br /&gt;
#Moodle software (For example, everything in server/htdocs/moodle)&lt;br /&gt;
#Moodle uploaded files (For example, server/moodledata)&lt;br /&gt;
#Moodle database (For example, your Postgres or MySQL database dump)&lt;br /&gt;
See [[Site backup]] for more specific information.&lt;br /&gt;
== Check for plugin updates ==&lt;br /&gt;
If you have [[Automatic updates deployment]] enabled, you will be able to update installed plugins automatically during the upgrade. Just make sure you check for available updates (via the button for it) at the Plugins check screen.&lt;br /&gt;
&lt;br /&gt;
If you are updating plugins manually, it is a good moment now to check in the [http://moodle.org/plugins Moodle Plugins directory] whether there is a {{Version}} version available for any plugins (including themes) that you have previously installed on your site. If so, download the plugin package. In the next step, you will copy it to the appropriate location in your Moodle code (see [[Installing plugins]]).&lt;br /&gt;
&lt;br /&gt;
The upgrade of the plugin will then happen as part of the Moodle upgrade process.&lt;br /&gt;
&lt;br /&gt;
If an out-of-date plugin causes your upgrade to fail, you can usually delete the plugin code rather than uninstalling it from within Moodle so that the data associated with it is not deleted.&lt;br /&gt;
==Put your site into maintenance mode==&lt;br /&gt;
Before you begin upgrading your site, you should put it into [[Maintenance_mode | maintenance mode]] to stop any non-admin users from logging in. Then you should wait for any currently running cron processes to complete before proceeding.&lt;br /&gt;
== Install the new Moodle software ==&lt;br /&gt;
You can download the latest release from [https://download.moodle.org/ Moodle downloads].&lt;br /&gt;
=== Standard install package ===&lt;br /&gt;
# Move your old Moodle software program files to another location. &#039;&#039;Do NOT copy new files over the old files.&#039;&#039;&lt;br /&gt;
# Unzip or unpack the upgrade file so that all the new Moodle software program files are in the location the old files used to be in on the server. Moodle will adjust SQL and moodledata if it needs to in the upgrade.&lt;br /&gt;
# Copy your old [[Configuration file|config.php file]] back to the new Moodle directory. &lt;br /&gt;
# As mentioned above, if you had installed any plugins on your site you should add them to the new code tree (Moodle directory structure) now. It is important to check that you get the correct version for your new version of Moodle. Be particularly careful that you do not overwrite any code in the new version of Moodle and that you place the plugin folders in the correct directory (the same directory that they are in in the current installation.)&lt;br /&gt;
# Your moodledata folder should be located separately to your Moodle code folder and, as such, should not need anything done to it. Moodle 3.0 will throw a warning if it is located in a web accessible folder and the moodledata should never be located in the Moodle code folder. If you are moving your installation to a new server or new location on your server, then you will need to follow the [[Migration]] documents.&lt;br /&gt;
====Linux====&lt;br /&gt;
 mv moodle moodle.backup&lt;br /&gt;
 tar xvzf moodle-latest-{{Version}}.tgz&lt;br /&gt;
Next, copy across your config.php, any custom plugins, and your .htaccess file if you created one (&#039;&#039;&#039;check that custom plugins are the correct version for your new Moodle first&#039;&#039;&#039;):&lt;br /&gt;
 cp moodle.backup/config.php moodle&lt;br /&gt;
 cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme&lt;br /&gt;
 cp -pr moodle.backup/mod/mymod moodle/mod/mymod&lt;br /&gt;
Don&#039;t forget to make moodle/config.php (and the rest of the source code) readable by your www server. For maximum security the files should not be writeable by your server. This is especially important on a &#039;production&#039; server open to the public internet. &lt;br /&gt;
 chown -R root:root moodle (Linux debian - or even create a user especially for moodle. &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; use the web server user, e.g. www-data)&lt;br /&gt;
 chmod -R 755 moodle&lt;br /&gt;
If you use cron, take care that cron.php is executeable and uses the correct php command: &lt;br /&gt;
 chmod 740 admin/cli/cron.php (some configurations need chmod 750 or chmod 755)&lt;br /&gt;
 copy the first line from cron.php (if it looks like &#039;#!/usr/local/bin/php&#039; or &#039;#!/usr/local/bin/php5.3&#039;, no need to copy &#039;&amp;lt;?php&#039;) &lt;br /&gt;
if necessary. However, for a simple upgrade, there should be no need to change anything with cron.&lt;br /&gt;
=== Using Git ===&lt;br /&gt;
You can use Git for updating or upgrading your Moodle. See [[Git for Administrators]] for details.&lt;br /&gt;
===Command line upgrade===&lt;br /&gt;
On Linux servers, Moodle {{Version}} supports running the [[CLI|upgrade from the command line]], rather than through a web browser. This is likely to be more reliable, particularly for large sites.&lt;br /&gt;
== Finishing the upgrade ==&lt;br /&gt;
The last step is to trigger the upgrade processes within Moodle. &lt;br /&gt;
&lt;br /&gt;
If you put your site into Maintenance mode earlier; take it out now!&lt;br /&gt;
&lt;br /&gt;
To do this just go to &#039;&#039;Site administration &amp;gt; Notifications&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Moodle will automatically detect the new version and perform all the SQL database or file system upgrades that are necessary. If there is anything it can&#039;t do itself (very rare) then you will see messages telling you what you need to do.&lt;br /&gt;
&lt;br /&gt;
Assuming all goes well (no error messages) then you can start using your new version of Moodle and enjoy the new features!&lt;br /&gt;
&lt;br /&gt;
Note: If you are running multiple servers then you should purge all caches manually (via &#039;&#039;Site administration &amp;gt; Development &amp;gt; Purge all caches&#039;&#039;) after completing the upgrade on all servers.&lt;br /&gt;
===Fatal error: Maximum execution time of 30 seconds exceeded...===&lt;br /&gt;
If your server uses a main language other than English, you may encounter a &#039;Fatal error: Maximum execution time of 30 seconds exceeded&#039; when you try to upgrade it. You can increase max_execution_time = 160 on php.ini to allow the scripts enough time to process the language update. Otherwise, you can switch to English as the default language before doing the upgrade and back to your original language after a successful upgrade. See the forum discussion at https://moodle.org/mod/forum/discuss.php?d=119598.&lt;br /&gt;
==After upgrading==&lt;br /&gt;
{{Note|If BigBlueButtonBN was previously installed, because the recordings are processed asynchronously in the background, the data migration starts after the Moodle upgrade has been completed.&lt;br /&gt;
&lt;br /&gt;
This means that in large deployments (with many recordings), the process may take some time (it can be hours) and therefore recordings may not be displayed immediately. But they are still there.}}&lt;br /&gt;
==Possible issues that may affect you in Moodle {{Version}}==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
See the list of [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%204.1%20AND%20labels%20%3D%20upgrade_notes upgrade_notes-labelled issues] and [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%204.1%20AND%20labels%20%3D%20ui_change ui_change-labelled issues].&lt;br /&gt;
&lt;br /&gt;
=== XMLRPC ===&lt;br /&gt;
* The installation of the &#039;&#039;&#039;XMLRPC PHP extension&#039;&#039;&#039; is not needed for Moodle 4.1 core anymore. All [[MNet]] features continue working exactly the same, but using a PHP library instead (see MDL-76055 for details).&lt;br /&gt;
* If you were using the &#039;&#039;&#039;webservice_xmlrpc&#039;&#039;&#039; plugin for integrations with other systems, be warned that it has been removed from core for Moodle 4.1 (see MDL-76052 for details). It&#039;s now available @ https://github.com/moodlehq/moodle-webservice_xmlrpc and has been also published in the [https://moodle.org/plugins/webservice_xmlrpc Plugins directory]. Note that, if you want to continue using this plugin, then you will need, &#039;&#039;&#039;before starting the upgrade process&#039;&#039;&#039;, to:&lt;br /&gt;
*# Install the &#039;&#039;&#039;XMLRPC PHP extension&#039;&#039;&#039;, the webservice requires it.&lt;br /&gt;
*# Install the &#039;&#039;&#039;webservice_xmlrpc plugin&#039;&#039;&#039;, from the links in the previous paragraph, into the &amp;lt;tt&amp;gt;webservice/xmlrpc&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
*# Then, and only then, start the upgrade process.&lt;br /&gt;
&lt;br /&gt;
=== New plugins in Moodle {{Version}} ===&lt;br /&gt;
====BigBlueButton====&lt;br /&gt;
{{Note|For recordings to work properly, [https://docs.moodle.org/501/en/Cron Cron] Jobs must be enabled.  Also, if you are using [https://github.com/blindsidenetworks/scalelite ScaleLite] for load balancing your BigBlueButton servers, make sure you are running the latest release of ScaleLite.}}&lt;br /&gt;
BigBlueButtonBN has been [https://moodle.org/plugins/mod_bigbluebuttonbn contributed plugin] for more than 10 years. It enables Moodle to interoperate with a BigBlueButton server and it is part of Moodle 4.0 as a core plugin. For more details see [https://docs.moodle.org/501/en/BigBlueButton BigBlueButton in Moodle 4.0]&lt;br /&gt;
When upgrading to Moodle 4.0, there are two possible scenarios.&lt;br /&gt;
===== BigBlueButtonBN was not installed =====&lt;br /&gt;
If the plugin was never installed, there are only two considerations to make.&lt;br /&gt;
* BigBlueButton is disabled by default. Administrators must enable it from Site administration &amp;gt; Plugins &amp;gt; Manage activities and then check the box to accept the data processing agreement.&lt;br /&gt;
* BigBlueButton is an external service. The plugin comes pre-configured with a Free Tier Hosting that comes with some restrictions.&lt;br /&gt;
===== BigBlueButtonBN was already installed =====&lt;br /&gt;
If the plugin was already installed, and the steps were followed correctly, the upgrade should be completed normally. But there are also some considerations to make.&lt;br /&gt;
* BigBlueButton may be disabled by default. If this is the case Administrators must enable it from Site administration &amp;gt; Plugins &amp;gt; Manage activities and then check the box to accept the data processing agreement.&lt;br /&gt;
* BigBlueButton is an external service. The plugin will only change the BigBlueButton credentials if the former Free Tier Hosting `https://test-install.blindsidenetworks.com/bigbluebutton/` was used. If it was not, then the existing service will still be the same.&lt;br /&gt;
===== General consideration =====&lt;br /&gt;
Regardless of the scenario, there is one general consideration&lt;br /&gt;
&lt;br /&gt;
BigBlueButton is still the repository for recordings, but the metadata is now stored in Moodle, so instead of making a getRecording requests each time a BigBlueButton activity is displayed, the view is entirely populated with Moodle data. While this makes the code more efficient, it also means that every recording needs to be processed as part of the upgrade.&lt;br /&gt;
# For recordings to work properly, cron jobs must be enabled&lt;br /&gt;
# Since the recording are processed asynchronously in the background, the data migration starts after the Moodle upgrade has been completed. This means that in in large deployments (with many recordings), the recordings may take some time (it can be hours) to be processed and therefore to be displayed as part of the activities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The details of the process can be checked in the cron job logs.&lt;br /&gt;
&lt;br /&gt;
And remember that if the Plugin was not uninstalled, and the pre-existing rooms are there, the recordings are still referenced. Nothing is lost even if they are not shown immediately. They only need to be migrated.&lt;br /&gt;
&lt;br /&gt;
Additionally, when using Scalelite as the Load Balancer for BigBlueButton, make sure the [https://github.com/blindsidenetworks/scalelite/releases/tag/v1.3.4 latest version] is deployed. With any other Load Balancer, make sure the BigBlueButton service updateRecordings is correctly implemented. Otherwise the migration will not be completed.&lt;br /&gt;
===Custom user tours===&lt;br /&gt;
If you have created any custom user tours where the URLs do not end in a % symbol (for example &#039;/course/view.php&#039;), these will no longer appear when viewing a page which has extra text at the end of the URL, such as /course/view.php?id=123. To make these tours work again, add a % to the end of the URL (&#039;/course/view.php%&#039;). The % symbol was always supposed to be necessary, but due to a bug in earlier versions, was previously not required.&lt;br /&gt;
===New capabilities in Moodle {{Version}}===&lt;br /&gt;
* mod/bigbluebuttonbn:addinstance&lt;br /&gt;
* mod/bigbluebuttonbn:addinstancewithmeeting&lt;br /&gt;
* mod/bigbluebuttonbn:addinstancewithrecording&lt;br /&gt;
* mod/bigbluebuttonbn:deleterecordings   &lt;br /&gt;
* mod/bigbluebuttonbn:importrecordings   &lt;br /&gt;
* mod/bigbluebuttonbn:join   &lt;br /&gt;
* mod/bigbluebuttonbn:managerecordings   &lt;br /&gt;
* mod/bigbluebuttonbn:protectrecordings  &lt;br /&gt;
* mod/bigbluebuttonbn:publishrecordings  &lt;br /&gt;
* mod/bigbluebuttonbn:unprotectrecordings    &lt;br /&gt;
* mod/bigbluebuttonbn:unpublishrecordings    &lt;br /&gt;
* mod/bigbluebuttonbn:view   &lt;br /&gt;
&lt;br /&gt;
* mod/quiz:emailnotifyattemptgraded&lt;br /&gt;
&lt;br /&gt;
* moodle/question:commentall&lt;br /&gt;
* moodle/question:commentmine&lt;br /&gt;
&lt;br /&gt;
* moodle/reportbuilder:edit&lt;br /&gt;
* moodle/reportbuilder:editall&lt;br /&gt;
* moodle/reportbuilder:scheduleviewas&lt;br /&gt;
* moodle/reportbuilder:view&lt;br /&gt;
&lt;br /&gt;
* qbank/customfields:changelockedcustomfields &lt;br /&gt;
* qbank/customfields:configurecustomfields   &lt;br /&gt;
* qbank/customfields:viewhiddencustomfields&lt;br /&gt;
=== Moodle 3.9, 3.10, 3.11 and 4.0 upgrading notes ===&lt;br /&gt;
Depending on which version you are upgrading from, please see the section &#039;Possible issues that may affect you&#039; in the documentation:&lt;br /&gt;
* [https://docs.moodle.org/39/en/Upgrading Upgrading to Moodle 3.9]&lt;br /&gt;
* [https://docs.moodle.org/310/en/Upgrading Upgrading to Moodle 3.10]&lt;br /&gt;
* [https://docs.moodle.org/311/en/Upgrading Upgrading to Moodle 3.11]&lt;br /&gt;
* [https://docs.moodle.org/400/en/Upgrading Upgrading to Moodle 4.0]&lt;br /&gt;
&lt;br /&gt;
==Any questions about the process?==&lt;br /&gt;
Please post in the [https://moodle.org/mod/forum/view.php?id=28 Installing and upgrading help forum] on moodle.org.&lt;br /&gt;
==See also==&lt;br /&gt;
* [[dev:Moodle {{Version}} release notes|Moodle {{Version}} release notes]]&lt;br /&gt;
* [https://moodle.org/mod/forum/discuss.php?d=393570 Problem accessing dropdown such as personal profile since 3.8 (20191118) update] forum discussion&lt;br /&gt;
[[es:Actualización de moodle]]&lt;br /&gt;
[[fr:Mise à jour]]&lt;br /&gt;
[[ja:Moodleをアップグレードする]]&lt;br /&gt;
[[de:Aktualisierung von Moodle]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=144911</id>
		<title>Upgrading</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=144911"/>
		<updated>2022-11-15T14:22:33Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Fixed a couple of links to point to 4.1 issues in the tracker&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Installing Moodle}}&lt;br /&gt;
&#039;&#039;This page explains in detail how to upgrade Moodle. For a summary of the process, see [[Upgrade overview]].&#039;&#039;&lt;br /&gt;
==Check the requirements==&lt;br /&gt;
Before upgrading, check that your server meets all requirements for {{Version}} in &#039;&#039;Site administration &amp;gt; Server &amp;gt; [[Environment]]&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
See the [{{Release notes}} release notes] in the dev docs for both [{{Release notes}}#Server_requirements server] and [{{Release notes}}#Client_requirements client] software requirements.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* You can only upgrade to Moodle {{Version}} from Moodle 3.9 or later. If upgrading from earlier versions, you must [https://docs.moodle.org/39/en/Upgrading_to_Moodle_3.9 upgrade to 3.9] as a first step.&lt;br /&gt;
&lt;br /&gt;
==Before upgrading==&lt;br /&gt;
&#039;&#039;&#039;We advise that you test the upgrade first on a COPY of your production site, to make sure it works as you expect.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Consider setting the [[Upgrade key|upgrade key]] for your site.&lt;br /&gt;
== Backup important data ==&lt;br /&gt;
There are three areas that should be backed up before any upgrade:&lt;br /&gt;
#Moodle software (For example, everything in server/htdocs/moodle)&lt;br /&gt;
#Moodle uploaded files (For example, server/moodledata)&lt;br /&gt;
#Moodle database (For example, your Postgres or MySQL database dump)&lt;br /&gt;
See [[Site backup]] for more specific information.&lt;br /&gt;
== Check for plugin updates ==&lt;br /&gt;
If you have [[Automatic updates deployment]] enabled, you will be able to update installed plugins automatically during the upgrade. Just make sure you check for available updates (via the button for it) at the Plugins check screen.&lt;br /&gt;
&lt;br /&gt;
If you are updating plugins manually, it is a good moment now to check in the [http://moodle.org/plugins Moodle Plugins directory] whether there is a {{Version}} version available for any plugins (including themes) that you have previously installed on your site. If so, download the plugin package. In the next step, you will copy it to the appropriate location in your Moodle code (see [[Installing plugins]]).&lt;br /&gt;
&lt;br /&gt;
The upgrade of the plugin will then happen as part of the Moodle upgrade process.&lt;br /&gt;
&lt;br /&gt;
If an out-of-date plugin causes your upgrade to fail, you can usually delete the plugin code rather than uninstalling it from within Moodle so that the data associated with it is not deleted.&lt;br /&gt;
==Put your site into maintenance mode==&lt;br /&gt;
Before you begin upgrading your site, you should put it into [[Maintenance_mode | maintenance mode]] to stop any non-admin users from logging in. Then you should wait for any currently running cron processes to complete before proceeding.&lt;br /&gt;
== Install the new Moodle software ==&lt;br /&gt;
You can download the latest release from [https://download.moodle.org/ Moodle downloads].&lt;br /&gt;
=== Standard install package ===&lt;br /&gt;
# Move your old Moodle software program files to another location. &#039;&#039;Do NOT copy new files over the old files.&#039;&#039;&lt;br /&gt;
# Unzip or unpack the upgrade file so that all the new Moodle software program files are in the location the old files used to be in on the server. Moodle will adjust SQL and moodledata if it needs to in the upgrade.&lt;br /&gt;
# Copy your old [[Configuration file|config.php file]] back to the new Moodle directory. &lt;br /&gt;
# As mentioned above, if you had installed any plugins on your site you should add them to the new code tree (Moodle directory structure) now. It is important to check that you get the correct version for your new version of Moodle. Be particularly careful that you do not overwrite any code in the new version of Moodle and that you place the plugin folders in the correct directory (the same directory that they are in in the current installation.)&lt;br /&gt;
# Your moodledata folder should be located separately to your Moodle code folder and, as such, should not need anything done to it. Moodle 3.0 will throw a warning if it is located in a web accessible folder and the moodledata should never be located in the Moodle code folder. If you are moving your installation to a new server or new location on your server, then you will need to follow the [[Migration]] documents.&lt;br /&gt;
====Linux====&lt;br /&gt;
 mv moodle moodle.backup&lt;br /&gt;
 tar xvzf moodle-latest-{{Version}}.tgz&lt;br /&gt;
Next, copy across your config.php, any custom plugins, and your .htaccess file if you created one (&#039;&#039;&#039;check that custom plugins are the correct version for your new Moodle first&#039;&#039;&#039;):&lt;br /&gt;
 cp moodle.backup/config.php moodle&lt;br /&gt;
 cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme&lt;br /&gt;
 cp -pr moodle.backup/mod/mymod moodle/mod/mymod&lt;br /&gt;
Don&#039;t forget to make moodle/config.php (and the rest of the source code) readable by your www server. For maximum security the files should not be writeable by your server. This is especially important on a &#039;production&#039; server open to the public internet. &lt;br /&gt;
 chown -R root:root moodle (Linux debian - or even create a user especially for moodle. &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; use the web server user, e.g. www-data)&lt;br /&gt;
 chmod -R 755 moodle&lt;br /&gt;
If you use cron, take care that cron.php is executeable and uses the correct php command: &lt;br /&gt;
 chmod 740 admin/cli/cron.php (some configurations need chmod 750 or chmod 755)&lt;br /&gt;
 copy the first line from cron.php (if it looks like &#039;#!/usr/local/bin/php&#039; or &#039;#!/usr/local/bin/php5.3&#039;, no need to copy &#039;&amp;lt;?php&#039;) &lt;br /&gt;
if necessary. However, for a simple upgrade, there should be no need to change anything with cron.&lt;br /&gt;
=== Using Git ===&lt;br /&gt;
You can use Git for updating or upgrading your Moodle. See [[Git for Administrators]] for details.&lt;br /&gt;
===Command line upgrade===&lt;br /&gt;
On Linux servers, Moodle {{Version}} supports running the [[CLI|upgrade from the command line]], rather than through a web browser. This is likely to be more reliable, particularly for large sites.&lt;br /&gt;
== Finishing the upgrade ==&lt;br /&gt;
The last step is to trigger the upgrade processes within Moodle. &lt;br /&gt;
&lt;br /&gt;
If you put your site into Maintenance mode earlier; take it out now!&lt;br /&gt;
&lt;br /&gt;
To do this just go to &#039;&#039;Site administration &amp;gt; Notifications&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Moodle will automatically detect the new version and perform all the SQL database or file system upgrades that are necessary. If there is anything it can&#039;t do itself (very rare) then you will see messages telling you what you need to do.&lt;br /&gt;
&lt;br /&gt;
Assuming all goes well (no error messages) then you can start using your new version of Moodle and enjoy the new features!&lt;br /&gt;
&lt;br /&gt;
Note: If you are running multiple servers then you should purge all caches manually (via &#039;&#039;Site administration &amp;gt; Development &amp;gt; Purge all caches&#039;&#039;) after completing the upgrade on all servers.&lt;br /&gt;
===Fatal error: Maximum execution time of 30 seconds exceeded...===&lt;br /&gt;
If your server uses a main language other than English, you may encounter a &#039;Fatal error: Maximum execution time of 30 seconds exceeded&#039; when you try to upgrade it. You can increase max_execution_time = 160 on php.ini to allow the scripts enough time to process the language update. Otherwise, you can switch to English as the default language before doing the upgrade and back to your original language after a successful upgrade. See the forum discussion at https://moodle.org/mod/forum/discuss.php?d=119598.&lt;br /&gt;
==After upgrading==&lt;br /&gt;
{{Note|If BigBlueButtonBN was previously installed, because the recordings are processed asynchronously in the background, the data migration starts after the Moodle upgrade has been completed.&lt;br /&gt;
&lt;br /&gt;
This means that in large deployments (with many recordings), the process may take some time (it can be hours) and therefore recordings may not be displayed immediately. But they are still there.}}&lt;br /&gt;
==Possible issues that may affect you in Moodle {{Version}}==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
See the list of [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%204.1%20AND%20labels%20%3D%20upgrade_notes upgrade_notes-labelled issues] and [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%204.1%20AND%20labels%20%3D%20ui_change ui_change-labelled issues].&lt;br /&gt;
&lt;br /&gt;
=== XMLRPC ===&lt;br /&gt;
* The installation of the &#039;&#039;&#039;XMLRPC PHP extension&#039;&#039;&#039; is not needed for Moodle 4.1 core anymore. All [[MNet]] features continue working exactly the same, but using a PHP library instead (see MDL-76055 for details).&lt;br /&gt;
* If you were using the &#039;&#039;&#039;webservice_xmlrpc&#039;&#039;&#039; plugin for integrations with other systems, be warned that it has been removed from core for Moodle 4.1 (see MDL-76052 for details). It&#039;s now available @ https://github.com/moodlehq/moodle-webservice_xmlrpc and has been also published in the [https://moodle.org/plugins/webservice_xmlrpc Plugins directory]. Note that, if you want to continue using this plugin, then you will need, &#039;&#039;&#039;before starting the upgrade process&#039;&#039;&#039;, to:&lt;br /&gt;
*# Install the &#039;&#039;&#039;XMLRPC PHP extension&#039;&#039;&#039;, the webservice requires it.&lt;br /&gt;
*# Install the &#039;&#039;&#039;webservice_xmlrpc plugin&#039;&#039;&#039;, from the links in the previous paragraph, into the &amp;lt;tt&amp;gt;webservice/xmlrpc&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
*# Then, and only then, start the upgrade process.&lt;br /&gt;
&lt;br /&gt;
=== New plugins in Moodle {{Version}} ===&lt;br /&gt;
====BigBlueButton====&lt;br /&gt;
{{Note|For recordings to work properly, [https://docs.moodle.org/501/en/Cron Cron] Jobs must be enabled.  Also, if you are using [https://github.com/blindsidenetworks/scalelite ScaleLite] for load balancing your BigBlueButton servers, make sure you are running the latest release of ScaleLite.}}&lt;br /&gt;
BigBlueButtonBN has been [https://moodle.org/plugins/mod_bigbluebuttonbn contributed plugin] for more than 10 years. It enables Moodle to interoperate with a BigBlueButton server and it is part of Moodle 4.0 as a core plugin. For more details see [https://docs.moodle.org/501/en/BigBlueButton BigBlueButton in Moodle 4.0]&lt;br /&gt;
When upgrading to Moodle 4.0, there are two possible scenarios.&lt;br /&gt;
===== BigBlueButtonBN was not installed =====&lt;br /&gt;
If the plugin was never installed, there are only two considerations to make.&lt;br /&gt;
* BigBlueButton is disabled by default. Administrators must enable it from Site administration &amp;gt; Plugins &amp;gt; Manage activities and then check the box to accept the data processing agreement.&lt;br /&gt;
* BigBlueButton is an external service. The plugin comes pre-configured with a Free Tier Hosting that comes with some restrictions.&lt;br /&gt;
===== BigBlueButtonBN was already installed =====&lt;br /&gt;
If the plugin was already installed, and the steps were followed correctly, the upgrade should be completed normally. But there are also some considerations to make.&lt;br /&gt;
* BigBlueButton may be disabled by default. If this is the case Administrators must enable it from Site administration &amp;gt; Plugins &amp;gt; Manage activities and then check the box to accept the data processing agreement.&lt;br /&gt;
* BigBlueButton is an external service. The plugin will only change the BigBlueButton credentials if the former Free Tier Hosting `https://test-install.blindsidenetworks.com/bigbluebutton/` was used. If it was not, then the existing service will still be the same.&lt;br /&gt;
===== General consideration =====&lt;br /&gt;
Regardless of the scenario, there is one general consideration&lt;br /&gt;
&lt;br /&gt;
BigBlueButton is still the repository for recordings, but the metadata is now stored in Moodle, so instead of making a getRecording requests each time a BigBlueButton activity is displayed, the view is entirely populated with Moodle data. While this makes the code more efficient, it also means that every recording needs to be processed as part of the upgrade.&lt;br /&gt;
# For recordings to work properly, cron jobs must be enabled&lt;br /&gt;
# Since the recording are processed asynchronously in the background, the data migration starts after the Moodle upgrade has been completed. This means that in in large deployments (with many recordings), the recordings may take some time (it can be hours) to be processed and therefore to be displayed as part of the activities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The details of the process can be checked in the cron job logs.&lt;br /&gt;
&lt;br /&gt;
And remember that if the Plugin was not uninstalled, and the pre-existing rooms are there, the recordings are still referenced. Nothing is lost even if they are not shown immediately. They only need to be migrated.&lt;br /&gt;
&lt;br /&gt;
Additionally, when using Scalelite as the Load Balancer for BigBlueButton, make sure the [https://github.com/blindsidenetworks/scalelite/releases/tag/v1.3.4 latest version] is deployed. With any other Load Balancer, make sure the BigBlueButton service updateRecordings is correctly implemented. Otherwise the migration will not be completed.&lt;br /&gt;
===Custom user tours===&lt;br /&gt;
If you have created any custom user tours where the URLs do not end in a % symbol (for example &#039;/course/view.php&#039;), these will no longer appear when viewing a page which has extra text at the end of the URL, such as /course/view.php?id=123. To make these tours work again, add a % to the end of the URL (&#039;/course/view.php%&#039;). The % symbol was always supposed to be necessary, but due to a bug in earlier versions, was previously not required.&lt;br /&gt;
===New capabilities in Moodle {{Version}}===&lt;br /&gt;
* mod/bigbluebuttonbn:addinstance&lt;br /&gt;
* mod/bigbluebuttonbn:addinstancewithmeeting&lt;br /&gt;
* mod/bigbluebuttonbn:addinstancewithrecording&lt;br /&gt;
* mod/bigbluebuttonbn:deleterecordings   &lt;br /&gt;
* mod/bigbluebuttonbn:importrecordings   &lt;br /&gt;
* mod/bigbluebuttonbn:join   &lt;br /&gt;
* mod/bigbluebuttonbn:managerecordings   &lt;br /&gt;
* mod/bigbluebuttonbn:protectrecordings  &lt;br /&gt;
* mod/bigbluebuttonbn:publishrecordings  &lt;br /&gt;
* mod/bigbluebuttonbn:unprotectrecordings    &lt;br /&gt;
* mod/bigbluebuttonbn:unpublishrecordings    &lt;br /&gt;
* mod/bigbluebuttonbn:view   &lt;br /&gt;
&lt;br /&gt;
* mod/quiz:emailnotifyattemptgraded&lt;br /&gt;
&lt;br /&gt;
* moodle/question:commentall&lt;br /&gt;
* moodle/question:commentmine&lt;br /&gt;
&lt;br /&gt;
* moodle/reportbuilder:edit&lt;br /&gt;
* moodle/reportbuilder:editall&lt;br /&gt;
* moodle/reportbuilder:scheduleviewas&lt;br /&gt;
* moodle/reportbuilder:view&lt;br /&gt;
&lt;br /&gt;
* qbank/customfields:changelockedcustomfields &lt;br /&gt;
* qbank/customfields:configurecustomfields   &lt;br /&gt;
* qbank/customfields:viewhiddencustomfields&lt;br /&gt;
=== Moodle 3.6, 3.7, 3.8, 3.9, 3.10 and 3.11 improvements ===&lt;br /&gt;
Depending on which version you are upgrading from, please see the section &#039;Possible issues that may affect you&#039; in the documentation&lt;br /&gt;
* [https://docs.moodle.org/36/en/Upgrading Upgrading to Moodle 3.6]&lt;br /&gt;
* [https://docs.moodle.org/37/en/Upgrading Upgrading to Moodle 3.7]&lt;br /&gt;
* [https://docs.moodle.org/38/en/Upgrading Upgrading to Moodle 3.8]&lt;br /&gt;
* [https://docs.moodle.org/39/en/Upgrading Upgrading to Moodle 3.9]&lt;br /&gt;
* [https://docs.moodle.org/310/en/Upgrading Upgrading to Moodle 3.10]&lt;br /&gt;
* [https://docs.moodle.org/311/en/Upgrading Upgrading to Moodle 3.11]&lt;br /&gt;
&lt;br /&gt;
==Any questions about the process?==&lt;br /&gt;
Please post in the [https://moodle.org/mod/forum/view.php?id=28 Installing and upgrading help forum] on moodle.org.&lt;br /&gt;
==See also==&lt;br /&gt;
* [[dev:Moodle {{Version}} release notes|Moodle {{Version}} release notes]]&lt;br /&gt;
* [https://moodle.org/mod/forum/discuss.php?d=393570 Problem accessing dropdown such as personal profile since 3.8 (20191118) update] forum discussion&lt;br /&gt;
[[es:Actualización de moodle]]&lt;br /&gt;
[[fr:Mise à jour]]&lt;br /&gt;
[[ja:Moodleをアップグレードする]]&lt;br /&gt;
[[de:Aktualisierung von Moodle]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=144910</id>
		<title>Upgrading</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=144910"/>
		<updated>2022-11-15T14:21:19Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Upgrade notes about XMLRPC added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Installing Moodle}}&lt;br /&gt;
&#039;&#039;This page explains in detail how to upgrade Moodle. For a summary of the process, see [[Upgrade overview]].&#039;&#039;&lt;br /&gt;
==Check the requirements==&lt;br /&gt;
Before upgrading, check that your server meets all requirements for {{Version}} in &#039;&#039;Site administration &amp;gt; Server &amp;gt; [[Environment]]&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
See the [{{Release notes}} release notes] in the dev docs for both [{{Release notes}}#Server_requirements server] and [{{Release notes}}#Client_requirements client] software requirements.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* You can only upgrade to Moodle {{Version}} from Moodle 3.9 or later. If upgrading from earlier versions, you must [https://docs.moodle.org/39/en/Upgrading_to_Moodle_3.9 upgrade to 3.9] as a first step.&lt;br /&gt;
&lt;br /&gt;
==Before upgrading==&lt;br /&gt;
&#039;&#039;&#039;We advise that you test the upgrade first on a COPY of your production site, to make sure it works as you expect.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Consider setting the [[Upgrade key|upgrade key]] for your site.&lt;br /&gt;
== Backup important data ==&lt;br /&gt;
There are three areas that should be backed up before any upgrade:&lt;br /&gt;
#Moodle software (For example, everything in server/htdocs/moodle)&lt;br /&gt;
#Moodle uploaded files (For example, server/moodledata)&lt;br /&gt;
#Moodle database (For example, your Postgres or MySQL database dump)&lt;br /&gt;
See [[Site backup]] for more specific information.&lt;br /&gt;
== Check for plugin updates ==&lt;br /&gt;
If you have [[Automatic updates deployment]] enabled, you will be able to update installed plugins automatically during the upgrade. Just make sure you check for available updates (via the button for it) at the Plugins check screen.&lt;br /&gt;
&lt;br /&gt;
If you are updating plugins manually, it is a good moment now to check in the [http://moodle.org/plugins Moodle Plugins directory] whether there is a {{Version}} version available for any plugins (including themes) that you have previously installed on your site. If so, download the plugin package. In the next step, you will copy it to the appropriate location in your Moodle code (see [[Installing plugins]]).&lt;br /&gt;
&lt;br /&gt;
The upgrade of the plugin will then happen as part of the Moodle upgrade process.&lt;br /&gt;
&lt;br /&gt;
If an out-of-date plugin causes your upgrade to fail, you can usually delete the plugin code rather than uninstalling it from within Moodle so that the data associated with it is not deleted.&lt;br /&gt;
==Put your site into maintenance mode==&lt;br /&gt;
Before you begin upgrading your site, you should put it into [[Maintenance_mode | maintenance mode]] to stop any non-admin users from logging in. Then you should wait for any currently running cron processes to complete before proceeding.&lt;br /&gt;
== Install the new Moodle software ==&lt;br /&gt;
You can download the latest release from [https://download.moodle.org/ Moodle downloads].&lt;br /&gt;
=== Standard install package ===&lt;br /&gt;
# Move your old Moodle software program files to another location. &#039;&#039;Do NOT copy new files over the old files.&#039;&#039;&lt;br /&gt;
# Unzip or unpack the upgrade file so that all the new Moodle software program files are in the location the old files used to be in on the server. Moodle will adjust SQL and moodledata if it needs to in the upgrade.&lt;br /&gt;
# Copy your old [[Configuration file|config.php file]] back to the new Moodle directory. &lt;br /&gt;
# As mentioned above, if you had installed any plugins on your site you should add them to the new code tree (Moodle directory structure) now. It is important to check that you get the correct version for your new version of Moodle. Be particularly careful that you do not overwrite any code in the new version of Moodle and that you place the plugin folders in the correct directory (the same directory that they are in in the current installation.)&lt;br /&gt;
# Your moodledata folder should be located separately to your Moodle code folder and, as such, should not need anything done to it. Moodle 3.0 will throw a warning if it is located in a web accessible folder and the moodledata should never be located in the Moodle code folder. If you are moving your installation to a new server or new location on your server, then you will need to follow the [[Migration]] documents.&lt;br /&gt;
====Linux====&lt;br /&gt;
 mv moodle moodle.backup&lt;br /&gt;
 tar xvzf moodle-latest-{{Version}}.tgz&lt;br /&gt;
Next, copy across your config.php, any custom plugins, and your .htaccess file if you created one (&#039;&#039;&#039;check that custom plugins are the correct version for your new Moodle first&#039;&#039;&#039;):&lt;br /&gt;
 cp moodle.backup/config.php moodle&lt;br /&gt;
 cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme&lt;br /&gt;
 cp -pr moodle.backup/mod/mymod moodle/mod/mymod&lt;br /&gt;
Don&#039;t forget to make moodle/config.php (and the rest of the source code) readable by your www server. For maximum security the files should not be writeable by your server. This is especially important on a &#039;production&#039; server open to the public internet. &lt;br /&gt;
 chown -R root:root moodle (Linux debian - or even create a user especially for moodle. &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; use the web server user, e.g. www-data)&lt;br /&gt;
 chmod -R 755 moodle&lt;br /&gt;
If you use cron, take care that cron.php is executeable and uses the correct php command: &lt;br /&gt;
 chmod 740 admin/cli/cron.php (some configurations need chmod 750 or chmod 755)&lt;br /&gt;
 copy the first line from cron.php (if it looks like &#039;#!/usr/local/bin/php&#039; or &#039;#!/usr/local/bin/php5.3&#039;, no need to copy &#039;&amp;lt;?php&#039;) &lt;br /&gt;
if necessary. However, for a simple upgrade, there should be no need to change anything with cron.&lt;br /&gt;
=== Using Git ===&lt;br /&gt;
You can use Git for updating or upgrading your Moodle. See [[Git for Administrators]] for details.&lt;br /&gt;
===Command line upgrade===&lt;br /&gt;
On Linux servers, Moodle {{Version}} supports running the [[CLI|upgrade from the command line]], rather than through a web browser. This is likely to be more reliable, particularly for large sites.&lt;br /&gt;
== Finishing the upgrade ==&lt;br /&gt;
The last step is to trigger the upgrade processes within Moodle. &lt;br /&gt;
&lt;br /&gt;
If you put your site into Maintenance mode earlier; take it out now!&lt;br /&gt;
&lt;br /&gt;
To do this just go to &#039;&#039;Site administration &amp;gt; Notifications&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Moodle will automatically detect the new version and perform all the SQL database or file system upgrades that are necessary. If there is anything it can&#039;t do itself (very rare) then you will see messages telling you what you need to do.&lt;br /&gt;
&lt;br /&gt;
Assuming all goes well (no error messages) then you can start using your new version of Moodle and enjoy the new features!&lt;br /&gt;
&lt;br /&gt;
Note: If you are running multiple servers then you should purge all caches manually (via &#039;&#039;Site administration &amp;gt; Development &amp;gt; Purge all caches&#039;&#039;) after completing the upgrade on all servers.&lt;br /&gt;
===Fatal error: Maximum execution time of 30 seconds exceeded...===&lt;br /&gt;
If your server uses a main language other than English, you may encounter a &#039;Fatal error: Maximum execution time of 30 seconds exceeded&#039; when you try to upgrade it. You can increase max_execution_time = 160 on php.ini to allow the scripts enough time to process the language update. Otherwise, you can switch to English as the default language before doing the upgrade and back to your original language after a successful upgrade. See the forum discussion at https://moodle.org/mod/forum/discuss.php?d=119598.&lt;br /&gt;
==After upgrading==&lt;br /&gt;
{{Note|If BigBlueButtonBN was previously installed, because the recordings are processed asynchronously in the background, the data migration starts after the Moodle upgrade has been completed.&lt;br /&gt;
&lt;br /&gt;
This means that in large deployments (with many recordings), the process may take some time (it can be hours) and therefore recordings may not be displayed immediately. But they are still there.}}&lt;br /&gt;
==Possible issues that may affect you in Moodle {{Version}}==&lt;br /&gt;
&lt;br /&gt;
=== XMLRPC ===&lt;br /&gt;
* The installation of the &#039;&#039;&#039;XMLRPC PHP extension&#039;&#039;&#039; is not needed for Moodle 4.1 core anymore. All [[MNet]] features continue working exactly the same, but using a PHP library instead (see MDL-76055 for details).&lt;br /&gt;
* If you were using the &#039;&#039;&#039;webservice_xmlrpc&#039;&#039;&#039; plugin for integrations with other systems, be warned that it has been removed from core for Moodle 4.1 (see MDL-76052 for details). It&#039;s now available @ https://github.com/moodlehq/moodle-webservice_xmlrpc and has been also published in the [https://moodle.org/plugins/webservice_xmlrpc Plugins directory]. Note that, if you want to continue using this plugin, then you will need, &#039;&#039;&#039;before starting the upgrade process&#039;&#039;&#039;, to:&lt;br /&gt;
*# Install the &#039;&#039;&#039;XMLRPC PHP extension&#039;&#039;&#039;, the webservice requires it.&lt;br /&gt;
*# Install the &#039;&#039;&#039;webservice_xmlrpc plugin&#039;&#039;&#039;, from the links in the previous paragraph, into the &amp;lt;tt&amp;gt;webservice/xmlrpc&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
*# Then, and only then, start the upgrade process.&lt;br /&gt;
&lt;br /&gt;
See also the list of [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%204.0%20AND%20labels%20%3D%20upgrade_notes upgrade_notes-labelled issues] and [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%204.0%20AND%20labels%20%3D%20ui_change ui_change-labelled issues].&lt;br /&gt;
&lt;br /&gt;
=== New plugins in Moodle {{Version}} ===&lt;br /&gt;
====BigBlueButton====&lt;br /&gt;
{{Note|For recordings to work properly, [https://docs.moodle.org/501/en/Cron Cron] Jobs must be enabled.  Also, if you are using [https://github.com/blindsidenetworks/scalelite ScaleLite] for load balancing your BigBlueButton servers, make sure you are running the latest release of ScaleLite.}}&lt;br /&gt;
BigBlueButtonBN has been [https://moodle.org/plugins/mod_bigbluebuttonbn contributed plugin] for more than 10 years. It enables Moodle to interoperate with a BigBlueButton server and it is part of Moodle 4.0 as a core plugin. For more details see [https://docs.moodle.org/501/en/BigBlueButton BigBlueButton in Moodle 4.0]&lt;br /&gt;
When upgrading to Moodle 4.0, there are two possible scenarios.&lt;br /&gt;
===== BigBlueButtonBN was not installed =====&lt;br /&gt;
If the plugin was never installed, there are only two considerations to make.&lt;br /&gt;
* BigBlueButton is disabled by default. Administrators must enable it from Site administration &amp;gt; Plugins &amp;gt; Manage activities and then check the box to accept the data processing agreement.&lt;br /&gt;
* BigBlueButton is an external service. The plugin comes pre-configured with a Free Tier Hosting that comes with some restrictions.&lt;br /&gt;
===== BigBlueButtonBN was already installed =====&lt;br /&gt;
If the plugin was already installed, and the steps were followed correctly, the upgrade should be completed normally. But there are also some considerations to make.&lt;br /&gt;
* BigBlueButton may be disabled by default. If this is the case Administrators must enable it from Site administration &amp;gt; Plugins &amp;gt; Manage activities and then check the box to accept the data processing agreement.&lt;br /&gt;
* BigBlueButton is an external service. The plugin will only change the BigBlueButton credentials if the former Free Tier Hosting `https://test-install.blindsidenetworks.com/bigbluebutton/` was used. If it was not, then the existing service will still be the same.&lt;br /&gt;
===== General consideration =====&lt;br /&gt;
Regardless of the scenario, there is one general consideration&lt;br /&gt;
&lt;br /&gt;
BigBlueButton is still the repository for recordings, but the metadata is now stored in Moodle, so instead of making a getRecording requests each time a BigBlueButton activity is displayed, the view is entirely populated with Moodle data. While this makes the code more efficient, it also means that every recording needs to be processed as part of the upgrade.&lt;br /&gt;
# For recordings to work properly, cron jobs must be enabled&lt;br /&gt;
# Since the recording are processed asynchronously in the background, the data migration starts after the Moodle upgrade has been completed. This means that in in large deployments (with many recordings), the recordings may take some time (it can be hours) to be processed and therefore to be displayed as part of the activities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The details of the process can be checked in the cron job logs.&lt;br /&gt;
&lt;br /&gt;
And remember that if the Plugin was not uninstalled, and the pre-existing rooms are there, the recordings are still referenced. Nothing is lost even if they are not shown immediately. They only need to be migrated.&lt;br /&gt;
&lt;br /&gt;
Additionally, when using Scalelite as the Load Balancer for BigBlueButton, make sure the [https://github.com/blindsidenetworks/scalelite/releases/tag/v1.3.4 latest version] is deployed. With any other Load Balancer, make sure the BigBlueButton service updateRecordings is correctly implemented. Otherwise the migration will not be completed.&lt;br /&gt;
===Custom user tours===&lt;br /&gt;
If you have created any custom user tours where the URLs do not end in a % symbol (for example &#039;/course/view.php&#039;), these will no longer appear when viewing a page which has extra text at the end of the URL, such as /course/view.php?id=123. To make these tours work again, add a % to the end of the URL (&#039;/course/view.php%&#039;). The % symbol was always supposed to be necessary, but due to a bug in earlier versions, was previously not required.&lt;br /&gt;
===New capabilities in Moodle {{Version}}===&lt;br /&gt;
* mod/bigbluebuttonbn:addinstance&lt;br /&gt;
* mod/bigbluebuttonbn:addinstancewithmeeting&lt;br /&gt;
* mod/bigbluebuttonbn:addinstancewithrecording&lt;br /&gt;
* mod/bigbluebuttonbn:deleterecordings   &lt;br /&gt;
* mod/bigbluebuttonbn:importrecordings   &lt;br /&gt;
* mod/bigbluebuttonbn:join   &lt;br /&gt;
* mod/bigbluebuttonbn:managerecordings   &lt;br /&gt;
* mod/bigbluebuttonbn:protectrecordings  &lt;br /&gt;
* mod/bigbluebuttonbn:publishrecordings  &lt;br /&gt;
* mod/bigbluebuttonbn:unprotectrecordings    &lt;br /&gt;
* mod/bigbluebuttonbn:unpublishrecordings    &lt;br /&gt;
* mod/bigbluebuttonbn:view   &lt;br /&gt;
&lt;br /&gt;
* mod/quiz:emailnotifyattemptgraded&lt;br /&gt;
&lt;br /&gt;
* moodle/question:commentall&lt;br /&gt;
* moodle/question:commentmine&lt;br /&gt;
&lt;br /&gt;
* moodle/reportbuilder:edit&lt;br /&gt;
* moodle/reportbuilder:editall&lt;br /&gt;
* moodle/reportbuilder:scheduleviewas&lt;br /&gt;
* moodle/reportbuilder:view&lt;br /&gt;
&lt;br /&gt;
* qbank/customfields:changelockedcustomfields &lt;br /&gt;
* qbank/customfields:configurecustomfields   &lt;br /&gt;
* qbank/customfields:viewhiddencustomfields&lt;br /&gt;
=== Moodle 3.6, 3.7, 3.8, 3.9, 3.10 and 3.11 improvements ===&lt;br /&gt;
Depending on which version you are upgrading from, please see the section &#039;Possible issues that may affect you&#039; in the documentation&lt;br /&gt;
* [https://docs.moodle.org/36/en/Upgrading Upgrading to Moodle 3.6]&lt;br /&gt;
* [https://docs.moodle.org/37/en/Upgrading Upgrading to Moodle 3.7]&lt;br /&gt;
* [https://docs.moodle.org/38/en/Upgrading Upgrading to Moodle 3.8]&lt;br /&gt;
* [https://docs.moodle.org/39/en/Upgrading Upgrading to Moodle 3.9]&lt;br /&gt;
* [https://docs.moodle.org/310/en/Upgrading Upgrading to Moodle 3.10]&lt;br /&gt;
* [https://docs.moodle.org/311/en/Upgrading Upgrading to Moodle 3.11]&lt;br /&gt;
&lt;br /&gt;
==Any questions about the process?==&lt;br /&gt;
Please post in the [https://moodle.org/mod/forum/view.php?id=28 Installing and upgrading help forum] on moodle.org.&lt;br /&gt;
==See also==&lt;br /&gt;
* [[dev:Moodle {{Version}} release notes|Moodle {{Version}} release notes]]&lt;br /&gt;
* [https://moodle.org/mod/forum/discuss.php?d=393570 Problem accessing dropdown such as personal profile since 3.8 (20191118) update] forum discussion&lt;br /&gt;
[[es:Actualización de moodle]]&lt;br /&gt;
[[fr:Mise à jour]]&lt;br /&gt;
[[ja:Moodleをアップグレードする]]&lt;br /&gt;
[[de:Aktualisierung von Moodle]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=144909</id>
		<title>Upgrading</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=144909"/>
		<updated>2022-11-15T13:54:19Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Moodle 4.1 requires Moodle 3.9 to upgrade&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Installing Moodle}}&lt;br /&gt;
&#039;&#039;This page explains in detail how to upgrade Moodle. For a summary of the process, see [[Upgrade overview]].&#039;&#039;&lt;br /&gt;
==Check the requirements==&lt;br /&gt;
Before upgrading, check that your server meets all requirements for {{Version}} in &#039;&#039;Site administration &amp;gt; Server &amp;gt; [[Environment]]&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
See the [{{Release notes}} release notes] in the dev docs for both [{{Release notes}}#Server_requirements server] and [{{Release notes}}#Client_requirements client] software requirements.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* You can only upgrade to Moodle {{Version}} from Moodle 3.9 or later. If upgrading from earlier versions, you must [https://docs.moodle.org/39/en/Upgrading_to_Moodle_3.9 upgrade to 3.9] as a first step.&lt;br /&gt;
&lt;br /&gt;
==Before upgrading==&lt;br /&gt;
&#039;&#039;&#039;We advise that you test the upgrade first on a COPY of your production site, to make sure it works as you expect.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Consider setting the [[Upgrade key|upgrade key]] for your site.&lt;br /&gt;
== Backup important data ==&lt;br /&gt;
There are three areas that should be backed up before any upgrade:&lt;br /&gt;
#Moodle software (For example, everything in server/htdocs/moodle)&lt;br /&gt;
#Moodle uploaded files (For example, server/moodledata)&lt;br /&gt;
#Moodle database (For example, your Postgres or MySQL database dump)&lt;br /&gt;
See [[Site backup]] for more specific information.&lt;br /&gt;
== Check for plugin updates ==&lt;br /&gt;
If you have [[Automatic updates deployment]] enabled, you will be able to update installed plugins automatically during the upgrade. Just make sure you check for available updates (via the button for it) at the Plugins check screen.&lt;br /&gt;
&lt;br /&gt;
If you are updating plugins manually, it is a good moment now to check in the [http://moodle.org/plugins Moodle Plugins directory] whether there is a {{Version}} version available for any plugins (including themes) that you have previously installed on your site. If so, download the plugin package. In the next step, you will copy it to the appropriate location in your Moodle code (see [[Installing plugins]]).&lt;br /&gt;
&lt;br /&gt;
The upgrade of the plugin will then happen as part of the Moodle upgrade process.&lt;br /&gt;
&lt;br /&gt;
If an out-of-date plugin causes your upgrade to fail, you can usually delete the plugin code rather than uninstalling it from within Moodle so that the data associated with it is not deleted.&lt;br /&gt;
==Put your site into maintenance mode==&lt;br /&gt;
Before you begin upgrading your site, you should put it into [[Maintenance_mode | maintenance mode]] to stop any non-admin users from logging in. Then you should wait for any currently running cron processes to complete before proceeding.&lt;br /&gt;
== Install the new Moodle software ==&lt;br /&gt;
You can download the latest release from [https://download.moodle.org/ Moodle downloads].&lt;br /&gt;
=== Standard install package ===&lt;br /&gt;
# Move your old Moodle software program files to another location. &#039;&#039;Do NOT copy new files over the old files.&#039;&#039;&lt;br /&gt;
# Unzip or unpack the upgrade file so that all the new Moodle software program files are in the location the old files used to be in on the server. Moodle will adjust SQL and moodledata if it needs to in the upgrade.&lt;br /&gt;
# Copy your old [[Configuration file|config.php file]] back to the new Moodle directory. &lt;br /&gt;
# As mentioned above, if you had installed any plugins on your site you should add them to the new code tree (Moodle directory structure) now. It is important to check that you get the correct version for your new version of Moodle. Be particularly careful that you do not overwrite any code in the new version of Moodle and that you place the plugin folders in the correct directory (the same directory that they are in in the current installation.)&lt;br /&gt;
# Your moodledata folder should be located separately to your Moodle code folder and, as such, should not need anything done to it. Moodle 3.0 will throw a warning if it is located in a web accessible folder and the moodledata should never be located in the Moodle code folder. If you are moving your installation to a new server or new location on your server, then you will need to follow the [[Migration]] documents.&lt;br /&gt;
====Linux====&lt;br /&gt;
 mv moodle moodle.backup&lt;br /&gt;
 tar xvzf moodle-latest-{{Version}}.tgz&lt;br /&gt;
Next, copy across your config.php, any custom plugins, and your .htaccess file if you created one (&#039;&#039;&#039;check that custom plugins are the correct version for your new Moodle first&#039;&#039;&#039;):&lt;br /&gt;
 cp moodle.backup/config.php moodle&lt;br /&gt;
 cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme&lt;br /&gt;
 cp -pr moodle.backup/mod/mymod moodle/mod/mymod&lt;br /&gt;
Don&#039;t forget to make moodle/config.php (and the rest of the source code) readable by your www server. For maximum security the files should not be writeable by your server. This is especially important on a &#039;production&#039; server open to the public internet. &lt;br /&gt;
 chown -R root:root moodle (Linux debian - or even create a user especially for moodle. &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; use the web server user, e.g. www-data)&lt;br /&gt;
 chmod -R 755 moodle&lt;br /&gt;
If you use cron, take care that cron.php is executeable and uses the correct php command: &lt;br /&gt;
 chmod 740 admin/cli/cron.php (some configurations need chmod 750 or chmod 755)&lt;br /&gt;
 copy the first line from cron.php (if it looks like &#039;#!/usr/local/bin/php&#039; or &#039;#!/usr/local/bin/php5.3&#039;, no need to copy &#039;&amp;lt;?php&#039;) &lt;br /&gt;
if necessary. However, for a simple upgrade, there should be no need to change anything with cron.&lt;br /&gt;
=== Using Git ===&lt;br /&gt;
You can use Git for updating or upgrading your Moodle. See [[Git for Administrators]] for details.&lt;br /&gt;
===Command line upgrade===&lt;br /&gt;
On Linux servers, Moodle {{Version}} supports running the [[CLI|upgrade from the command line]], rather than through a web browser. This is likely to be more reliable, particularly for large sites.&lt;br /&gt;
== Finishing the upgrade ==&lt;br /&gt;
The last step is to trigger the upgrade processes within Moodle. &lt;br /&gt;
&lt;br /&gt;
If you put your site into Maintenance mode earlier; take it out now!&lt;br /&gt;
&lt;br /&gt;
To do this just go to &#039;&#039;Site administration &amp;gt; Notifications&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Moodle will automatically detect the new version and perform all the SQL database or file system upgrades that are necessary. If there is anything it can&#039;t do itself (very rare) then you will see messages telling you what you need to do.&lt;br /&gt;
&lt;br /&gt;
Assuming all goes well (no error messages) then you can start using your new version of Moodle and enjoy the new features!&lt;br /&gt;
&lt;br /&gt;
Note: If you are running multiple servers then you should purge all caches manually (via &#039;&#039;Site administration &amp;gt; Development &amp;gt; Purge all caches&#039;&#039;) after completing the upgrade on all servers.&lt;br /&gt;
===Fatal error: Maximum execution time of 30 seconds exceeded...===&lt;br /&gt;
If your server uses a main language other than English, you may encounter a &#039;Fatal error: Maximum execution time of 30 seconds exceeded&#039; when you try to upgrade it. You can increase max_execution_time = 160 on php.ini to allow the scripts enough time to process the language update. Otherwise, you can switch to English as the default language before doing the upgrade and back to your original language after a successful upgrade. See the forum discussion at https://moodle.org/mod/forum/discuss.php?d=119598.&lt;br /&gt;
==After upgrading==&lt;br /&gt;
{{Note|If BigBlueButtonBN was previously installed, because the recordings are processed asynchronously in the background, the data migration starts after the Moodle upgrade has been completed.&lt;br /&gt;
&lt;br /&gt;
This means that in large deployments (with many recordings), the process may take some time (it can be hours) and therefore recordings may not be displayed immediately. But they are still there.}}&lt;br /&gt;
==Possible issues that may affect you in Moodle {{Version}}==&lt;br /&gt;
&#039;&#039;Please add items here...&#039;&#039;&lt;br /&gt;
* [[:dev:Core plugins review for Moodle 4.0]]&lt;br /&gt;
* [[:dev:Add a block cleanup]]&lt;br /&gt;
&lt;br /&gt;
See also the list of [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%204.0%20AND%20labels%20%3D%20upgrade_notes upgrade_notes-labelled issues] and [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%204.0%20AND%20labels%20%3D%20ui_change ui_change-labelled issues].&lt;br /&gt;
&lt;br /&gt;
=== New plugins in Moodle {{Version}} ===&lt;br /&gt;
====BigBlueButton====&lt;br /&gt;
{{Note|For recordings to work properly, [https://docs.moodle.org/501/en/Cron Cron] Jobs must be enabled.  Also, if you are using [https://github.com/blindsidenetworks/scalelite ScaleLite] for load balancing your BigBlueButton servers, make sure you are running the latest release of ScaleLite.}}&lt;br /&gt;
BigBlueButtonBN has been [https://moodle.org/plugins/mod_bigbluebuttonbn contributed plugin] for more than 10 years. It enables Moodle to interoperate with a BigBlueButton server and it is part of Moodle 4.0 as a core plugin. For more details see [https://docs.moodle.org/501/en/BigBlueButton BigBlueButton in Moodle 4.0]&lt;br /&gt;
When upgrading to Moodle 4.0, there are two possible scenarios.&lt;br /&gt;
===== BigBlueButtonBN was not installed =====&lt;br /&gt;
If the plugin was never installed, there are only two considerations to make.&lt;br /&gt;
* BigBlueButton is disabled by default. Administrators must enable it from Site administration &amp;gt; Plugins &amp;gt; Manage activities and then check the box to accept the data processing agreement.&lt;br /&gt;
* BigBlueButton is an external service. The plugin comes pre-configured with a Free Tier Hosting that comes with some restrictions.&lt;br /&gt;
===== BigBlueButtonBN was already installed =====&lt;br /&gt;
If the plugin was already installed, and the steps were followed correctly, the upgrade should be completed normally. But there are also some considerations to make.&lt;br /&gt;
* BigBlueButton may be disabled by default. If this is the case Administrators must enable it from Site administration &amp;gt; Plugins &amp;gt; Manage activities and then check the box to accept the data processing agreement.&lt;br /&gt;
* BigBlueButton is an external service. The plugin will only change the BigBlueButton credentials if the former Free Tier Hosting `https://test-install.blindsidenetworks.com/bigbluebutton/` was used. If it was not, then the existing service will still be the same.&lt;br /&gt;
===== General consideration =====&lt;br /&gt;
Regardless of the scenario, there is one general consideration&lt;br /&gt;
&lt;br /&gt;
BigBlueButton is still the repository for recordings, but the metadata is now stored in Moodle, so instead of making a getRecording requests each time a BigBlueButton activity is displayed, the view is entirely populated with Moodle data. While this makes the code more efficient, it also means that every recording needs to be processed as part of the upgrade.&lt;br /&gt;
# For recordings to work properly, cron jobs must be enabled&lt;br /&gt;
# Since the recording are processed asynchronously in the background, the data migration starts after the Moodle upgrade has been completed. This means that in in large deployments (with many recordings), the recordings may take some time (it can be hours) to be processed and therefore to be displayed as part of the activities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The details of the process can be checked in the cron job logs.&lt;br /&gt;
&lt;br /&gt;
And remember that if the Plugin was not uninstalled, and the pre-existing rooms are there, the recordings are still referenced. Nothing is lost even if they are not shown immediately. They only need to be migrated.&lt;br /&gt;
&lt;br /&gt;
Additionally, when using Scalelite as the Load Balancer for BigBlueButton, make sure the [https://github.com/blindsidenetworks/scalelite/releases/tag/v1.3.4 latest version] is deployed. With any other Load Balancer, make sure the BigBlueButton service updateRecordings is correctly implemented. Otherwise the migration will not be completed.&lt;br /&gt;
===Custom user tours===&lt;br /&gt;
If you have created any custom user tours where the URLs do not end in a % symbol (for example &#039;/course/view.php&#039;), these will no longer appear when viewing a page which has extra text at the end of the URL, such as /course/view.php?id=123. To make these tours work again, add a % to the end of the URL (&#039;/course/view.php%&#039;). The % symbol was always supposed to be necessary, but due to a bug in earlier versions, was previously not required.&lt;br /&gt;
===New capabilities in Moodle {{Version}}===&lt;br /&gt;
* mod/bigbluebuttonbn:addinstance&lt;br /&gt;
* mod/bigbluebuttonbn:addinstancewithmeeting&lt;br /&gt;
* mod/bigbluebuttonbn:addinstancewithrecording&lt;br /&gt;
* mod/bigbluebuttonbn:deleterecordings   &lt;br /&gt;
* mod/bigbluebuttonbn:importrecordings   &lt;br /&gt;
* mod/bigbluebuttonbn:join   &lt;br /&gt;
* mod/bigbluebuttonbn:managerecordings   &lt;br /&gt;
* mod/bigbluebuttonbn:protectrecordings  &lt;br /&gt;
* mod/bigbluebuttonbn:publishrecordings  &lt;br /&gt;
* mod/bigbluebuttonbn:unprotectrecordings    &lt;br /&gt;
* mod/bigbluebuttonbn:unpublishrecordings    &lt;br /&gt;
* mod/bigbluebuttonbn:view   &lt;br /&gt;
&lt;br /&gt;
* mod/quiz:emailnotifyattemptgraded&lt;br /&gt;
&lt;br /&gt;
* moodle/question:commentall&lt;br /&gt;
* moodle/question:commentmine&lt;br /&gt;
&lt;br /&gt;
* moodle/reportbuilder:edit&lt;br /&gt;
* moodle/reportbuilder:editall&lt;br /&gt;
* moodle/reportbuilder:scheduleviewas&lt;br /&gt;
* moodle/reportbuilder:view&lt;br /&gt;
&lt;br /&gt;
* qbank/customfields:changelockedcustomfields &lt;br /&gt;
* qbank/customfields:configurecustomfields   &lt;br /&gt;
* qbank/customfields:viewhiddencustomfields&lt;br /&gt;
=== Moodle 3.6, 3.7, 3.8, 3.9, 3.10 and 3.11 improvements ===&lt;br /&gt;
Depending on which version you are upgrading from, please see the section &#039;Possible issues that may affect you&#039; in the documentation&lt;br /&gt;
* [https://docs.moodle.org/36/en/Upgrading Upgrading to Moodle 3.6]&lt;br /&gt;
* [https://docs.moodle.org/37/en/Upgrading Upgrading to Moodle 3.7]&lt;br /&gt;
* [https://docs.moodle.org/38/en/Upgrading Upgrading to Moodle 3.8]&lt;br /&gt;
* [https://docs.moodle.org/39/en/Upgrading Upgrading to Moodle 3.9]&lt;br /&gt;
* [https://docs.moodle.org/310/en/Upgrading Upgrading to Moodle 3.10]&lt;br /&gt;
* [https://docs.moodle.org/311/en/Upgrading Upgrading to Moodle 3.11]&lt;br /&gt;
&lt;br /&gt;
==Any questions about the process?==&lt;br /&gt;
Please post in the [https://moodle.org/mod/forum/view.php?id=28 Installing and upgrading help forum] on moodle.org.&lt;br /&gt;
==See also==&lt;br /&gt;
* [[dev:Moodle {{Version}} release notes|Moodle {{Version}} release notes]]&lt;br /&gt;
* [https://moodle.org/mod/forum/discuss.php?d=393570 Problem accessing dropdown such as personal profile since 3.8 (20191118) update] forum discussion&lt;br /&gt;
[[es:Actualización de moodle]]&lt;br /&gt;
[[fr:Mise à jour]]&lt;br /&gt;
[[ja:Moodleをアップグレードする]]&lt;br /&gt;
[[de:Aktualisierung von Moodle]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Analytics_settings&amp;diff=142522</id>
		<title>Analytics settings</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Analytics_settings&amp;diff=142522"/>
		<updated>2021-11-11T18:16:26Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: tidy up some code and information making reference to mlbackend versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Analytics}}&lt;br /&gt;
The Moodle learning analytics system requires some initial configuration before it can be used. You can access &#039;&#039;Analytics settings&#039;&#039; from &#039;&#039;Site administration &amp;gt; Analytics &amp;gt; Analytics settings&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Site information ==&lt;br /&gt;
&lt;br /&gt;
Site information will be used to help learning analytics models take characteristics of the institution into account. This information is also reported as part of site data collection when you register your site. This will allow HQ to understand which areas in learning analytics are seeing the most use and prioritize development resources appropriately.&lt;br /&gt;
&lt;br /&gt;
== Configure learning analytics settings ==&lt;br /&gt;
&lt;br /&gt;
Analytics may be disabled from Site administration / Advanced features&lt;br /&gt;
&lt;br /&gt;
They may then be configured from Site administration / Analytics. &lt;br /&gt;
&lt;br /&gt;
=== Predictions processor ===&lt;br /&gt;
&lt;br /&gt;
 [[Image:analytics01_predictions_processor34.png|frame|center|Predictions processor selection]]&lt;br /&gt;
&lt;br /&gt;
Prediction processors are the machine learning backends that process the datasets generated from the calculated indicators and targets and return predictions. Moodle core includes 2 prediction processors:&lt;br /&gt;
&lt;br /&gt;
==== PHP predictions processor ====&lt;br /&gt;
&lt;br /&gt;
The PHP processor is the default. There are no other system requirements to use this processor.&lt;br /&gt;
&lt;br /&gt;
==== Python predictions processor ====&lt;br /&gt;
&lt;br /&gt;
The Python processor is more powerful and it generates [https://www.tensorflow.org/get_started/summaries_and_tensorboard graphs that explain the model performance]. It requires setting up extra tools: Python itself (https://wiki.python.org/moin/BeginnersGuide/Download) and the moodlemlbackend python package. The package can be installed in the web server (in all the nodes if in a clustered environment) or in a separate server.&lt;br /&gt;
&lt;br /&gt;
===== Versions =====&lt;br /&gt;
&lt;br /&gt;
* Moodle 3.8 and up uses package 2.3.* (minimum 2.3.1)&lt;br /&gt;
* Moodle 3.9.11 and up uses package 2.6.* (minimum 2.6.4)&lt;br /&gt;
* Moodle 3.10.8 and up uses package 2.6.* (minimum 2.6.4)&lt;br /&gt;
* Moodle 3.11.4 and up uses package 2.6.* (minimum 2.6.4)&lt;br /&gt;
* Moodle 4.0 and up uses package 3.0.* (minimum 3.0.2)&lt;br /&gt;
&lt;br /&gt;
===== Installed in the web server ===== &lt;br /&gt;
&lt;br /&gt;
The latest version of the [https://pypi.org/project/moodlemlbackend/ packages for &#039;&#039;&#039;Moodle 3.8&#039;&#039;&#039; and up] are compatible with &#039;&#039;&#039;Python 3.4, 3.5, 3.6 and 3.7&#039;&#039;&#039;. Note that the package should be available for both the Command Line Interface (CLI) user and the user who runs the web server (e.g. www-data).&lt;br /&gt;
&lt;br /&gt;
# If necessary, install Python 3 (and pip for Python 3)&lt;br /&gt;
# Ensure that you use Python 3 to install the moodlemlbackend package (for VERSION, see the previous section):&lt;br /&gt;
&lt;br /&gt;
    sudo -H python3 -m pip install &amp;quot;moodlemlbackend==VERSION&amp;quot;&lt;br /&gt;
# You must also enter the path to the Python 3 executable in Site administration -&amp;gt; Server -&amp;gt; System paths:&lt;br /&gt;
[[File:path_to_python_3.png|frame|center|Enter system path for Python 3]]&lt;br /&gt;
&lt;br /&gt;
===== Installed in a separate server =====&lt;br /&gt;
&lt;br /&gt;
To install the python package in a separate server instead of installing it on the web server/s have some advantages:&lt;br /&gt;
* Keeps the python ML backend as an external service&lt;br /&gt;
* To keep a separated control of the resources the web server/s dedicate to serving Moodle and the resources dedicated to the python ML backend&lt;br /&gt;
* You can reuse the same ML server for multiple Moodle sites. Easier to setup and maintain than to install/upgrade the python package in all nodes in the cluster&lt;br /&gt;
* You can install the package as a new docker container in your dockerized environment&lt;br /&gt;
* You can serve the ML backend from AWS through the API gateway and AWS lambda, storing the trained model files in S3&lt;br /&gt;
&lt;br /&gt;
On the other hand, it is expected that there can be some added latency in connecting to the python ML backend server.&lt;br /&gt;
&lt;br /&gt;
The python backend is exposed as a Flask application. The Flask application is part of the official &#039;moodlemlbackend&#039; Python package and its FLASK_APP script is &#039;webapp&#039;, in the root of the package. You are free to use the setup that better suits your existing infrastructure.&lt;br /&gt;
&lt;br /&gt;
====== New server in your infrastructure ======&lt;br /&gt;
&lt;br /&gt;
The python ML backend is exposed as a Flask application, which uses a WSGI server (https://wsgi.readthedocs.io/en/latest/what.html) to be exposed to the www. The official documentation on how to deploy a Flask app can be found in https://flask.palletsprojects.com/en/1.0.x/tutorial/deploy/.&lt;br /&gt;
&lt;br /&gt;
* Use MOODLE_MLBACKEND_PYTHON_USERS environment var to set a list of users and password (comma-separated). The value is &#039;default:sshhhh&#039; (user: default, password: sshhhh).&lt;br /&gt;
* Set MOODLE_MLBACKEND_PYTHON_DIR to the path you want to use to store the data generated by the package&lt;br /&gt;
&lt;br /&gt;
====== Docker ======&lt;br /&gt;
&lt;br /&gt;
https://hub.docker.com/r/moodlehq/moodle-mlbackend-python is the official moodle-mlbackend-python docker image. We use it internally at Moodle HQ for internal testing and you can use it as well. You may want more control over the image, if that is the case https://github.com/moodlehq/moodle-docker-mlbackend-python/blob/master/Dockerfile can serve as an example of what is needed to get the python moodlemlbackend package working.&lt;br /&gt;
&lt;br /&gt;
* Use MOODLE_MLBACKEND_PYTHON_USERS environment var to set a list of users and passwords (comma-separated). The value is &#039;default:sshhhh&#039; (user: default, password: sshhhh).&lt;br /&gt;
&lt;br /&gt;
To run the docker container locally you can execute (For &amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt;, see the Versions section above):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker pull moodlehq/moodle-mlbackend-python:VERSION-python3.7.5&lt;br /&gt;
docker run -d -p 5000:5000 --name=mlbackendpython --rm --add-host=mlbackendpython:0.0.0.0 moodlehq/moodle-mlbackend-python:VERSION-python3.7.5&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; that you need to add &amp;lt;tt&amp;gt;--network=moodledocker_default&amp;lt;/tt&amp;gt; if your are using moodle-docker and you want this container to be visible from the web server.&lt;br /&gt;
&lt;br /&gt;
Then add this to your config.php file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;pathtopython = &#039;python&#039;;&lt;br /&gt;
define(&#039;TEST_MLBACKEND_PYTHON_HOST&#039;, &#039;localhost&#039;); // Change to &amp;quot;mlbackendpython&amp;quot; if your are using moodle-docker.&lt;br /&gt;
define(&#039;TEST_MLBACKEND_PYTHON_PORT&#039;, 5000);&lt;br /&gt;
define(&#039;TEST_MLBACKEND_PYTHON_USERNAME&#039;, &#039;default&#039;);&lt;br /&gt;
define(&#039;TEST_MLBACKEND_PYTHON_PASSWORD&#039;, &#039;sshhhh&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To check if it works, this command should not Skip any test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vendor/bin/phpunit analytics/tests/prediction_test.php --verbose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== AWS serverless service ======&lt;br /&gt;
&lt;br /&gt;
You can serve the Flask application as a serverless application using the AWS API gateway and AWS lambda. The easiest way to do it is using Zappa https://github.com/Miserlou/Zappa to deploy the Flask application contained in the python ML package.&lt;br /&gt;
&lt;br /&gt;
* Use MOODLE_MLBACKEND_PYTHON_USERS environment var to set a list of users and password (comma-separated). The value is &#039;default:sshhhh&#039; (user: default, password: sshhhh).&lt;br /&gt;
* Set MOODLE_MLBACKEND_PYTHON_DIR to the path you want to use to store the data generated by the package&lt;br /&gt;
* Set these environment variables below to setup the S3 access:&lt;br /&gt;
** MOODLE_MLBACKEND_PYTHON_S3_BUCKET_NAME to the bucket name&lt;br /&gt;
**AWS_ACCESS_KEY_ID as usual&lt;br /&gt;
** AWS_SECRET_ACCESS_KEY as usual&lt;br /&gt;
&lt;br /&gt;
Once this has been done, you can select the Python prediction processor as the default or for an individual model:&lt;br /&gt;
[[File:python_backend.png|frame|center|Predictions processor default]]&lt;br /&gt;
&lt;br /&gt;
[[File:python_backend_at_model.png|frame|center|Predictions processor selection for an individual model]]&lt;br /&gt;
&lt;br /&gt;
=== Log store ===&lt;br /&gt;
From Moodle version 2.7 and up, the “Standard logstore” is the default. If for some reason you also have data in the older “legacy logs,” you can enable the Moodle Learning Analytics system to access them instead.&lt;br /&gt;
&lt;br /&gt;
=== Analysis intervals ===&lt;br /&gt;
&lt;br /&gt;
Analysis intervals determine how often insights will be generated, and how much information to use for each calculation. Using proportional analysis intervals allows courses of different lengths to be used to train a single model.&lt;br /&gt;
&lt;br /&gt;
Several analysis intervals are available for models in the system. In this setting, the analysis intervals that will be used to evaluate models are defined, e.g. so the best analysis interval identified by the evaluation process can be selected for the model. This setting does not restrict the analysis intervals that can be used for specific models.&lt;br /&gt;
&lt;br /&gt;
[[Image:06_timesplitting.png|frame|center|Analysis intervals]]&lt;br /&gt;
&lt;br /&gt;
Each analysis interval divides the course duration into segments. At the end of each defined segment, the predictions engine will run and generate insights. It is recommended that you only enable the analysis intervals you are interested in using; the evaluation process will iterate through all enabled analysis intervals, so the more analysis intervals enabled, the slower the evaluation process will be.&lt;br /&gt;
&lt;br /&gt;
=== Models output directory ===&lt;br /&gt;
&lt;br /&gt;
 [[Image:03_models_output_directory.png|frame|center|Models output directory]]&lt;br /&gt;
&lt;br /&gt;
This setting allows you to define a directory where machine learning backends data is stored. Be sure this directory exists and is writable by the web server. This setting can be used by Moodle sites with multiple frontend nodes (a cluster) to specify a shared directory across nodes. This directory can be used by machine learning backends to store trained algorithms (its internal variables weights and stuff like that) to use them later to get predictions. Moodle cron lock will prevent multiple executions of the analytics tasks that train machine learning algorithms and get predictions from them.&lt;br /&gt;
&lt;br /&gt;
== Scheduled tasks ==&lt;br /&gt;
&lt;br /&gt;
Most analytics API processes are executed through [[Scheduled_tasks|scheduled tasks]]. These processes usually read the activity log table and can require some time to finish. You can find &#039;&#039;Train models&#039;&#039; and &#039;&#039;Predict models&#039;&#039; scheduled tasks listed in &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Server &amp;gt; Scheduled tasks.&#039;&#039; It is recommended to edit the tasks schedule so they run nightly.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
There are two analytics capabilities:&lt;br /&gt;
&lt;br /&gt;
* [[Capabilities/moodle/analytics:managemodels|Manage models]] - allowed for the default role of manager only&lt;br /&gt;
* [[Capabilities/moodle/analytics:listinsights|List insights]] - allowed for the default roles of manager, teacher and non-editing teacher&lt;br /&gt;
&lt;br /&gt;
To receive notifications and view insights, a user must have the list insights capability within the context used as the &amp;quot;Analysable&amp;quot; for the model. For example, the [[Students at risk of dropping out]] model operates within the context of a course. Insights will be generated for each enrolment within any course matching the criteria of the model (courses with a start date in the past and an end date in the future, with at least one teacher and student), and these insights will be sent to anyone with the list insights capability in that course. &lt;br /&gt;
&lt;br /&gt;
Some models (e.g. the &#039;&#039;No teaching&#039;&#039; model) generate insights at the Site level. To receive insights from these models, the user must have a role assignment at the System level which includes the list insights capability. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Site administrators do &#039;&#039;&#039;not&#039;&#039;&#039; automatically receive insight notifications, though they can choose to view details of any insight notifications on the system. To enable site administrators to receive notifications of insights, assign an additional role that includes the list insights capability to the site administrator at the system level.&lt;br /&gt;
&lt;br /&gt;
[[Category:Analytics]]&lt;br /&gt;
&lt;br /&gt;
[[es:Configuraciones de analítica]]&lt;br /&gt;
[[de:Analytics-Einstellungen]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Analytics_settings&amp;diff=142521</id>
		<title>Analytics settings</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Analytics_settings&amp;diff=142521"/>
		<updated>2021-11-11T17:46:37Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Specify the versions to be used by different Moodle branches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Analytics}}&lt;br /&gt;
The Moodle learning analytics system requires some initial configuration before it can be used. You can access &#039;&#039;Analytics settings&#039;&#039; from &#039;&#039;Site administration &amp;gt; Analytics &amp;gt; Analytics settings&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Site information ==&lt;br /&gt;
&lt;br /&gt;
Site information will be used to help learning analytics models take characteristics of the institution into account. This information is also reported as part of site data collection when you register your site. This will allow HQ to understand which areas in learning analytics are seeing the most use and prioritize development resources appropriately.&lt;br /&gt;
&lt;br /&gt;
== Configure learning analytics settings ==&lt;br /&gt;
&lt;br /&gt;
Analytics may be disabled from Site administration / Advanced features&lt;br /&gt;
&lt;br /&gt;
They may then be configured from Site administration / Analytics. &lt;br /&gt;
&lt;br /&gt;
=== Predictions processor ===&lt;br /&gt;
&lt;br /&gt;
 [[Image:analytics01_predictions_processor34.png|frame|center|Predictions processor selection]]&lt;br /&gt;
&lt;br /&gt;
Prediction processors are the machine learning backends that process the datasets generated from the calculated indicators and targets and return predictions. Moodle core includes 2 prediction processors:&lt;br /&gt;
&lt;br /&gt;
==== PHP predictions processor ====&lt;br /&gt;
&lt;br /&gt;
The PHP processor is the default. There are no other system requirements to use this processor.&lt;br /&gt;
&lt;br /&gt;
==== Python predictions processor ====&lt;br /&gt;
&lt;br /&gt;
The Python processor is more powerful and it generates [https://www.tensorflow.org/get_started/summaries_and_tensorboard graphs that explain the model performance]. It requires setting up extra tools: Python itself (https://wiki.python.org/moin/BeginnersGuide/Download) and the moodlemlbackend python package. The package can be installed in the web server (in all the nodes if in a clustered environment) or in a separate server.&lt;br /&gt;
&lt;br /&gt;
===== Versions =====&lt;br /&gt;
&lt;br /&gt;
* Moodle 3.8 and up uses package 2.3.* (minimum 2.3.1)&lt;br /&gt;
* Moodle 3.9.11 and up uses package 2.6.* (minimum 2.6.4)&lt;br /&gt;
* Moodle 3.10.8 and up uses package 2.6.* (minimum 2.6.4)&lt;br /&gt;
* Moodle 3.11.4 and up uses package 2.6.* (minimum 2.6.4)&lt;br /&gt;
* Moodle 4.0 and up uses package 3.0.* (minimum 3.0.2)&lt;br /&gt;
&lt;br /&gt;
===== Installed in the web server ===== &lt;br /&gt;
&lt;br /&gt;
The latest version of the [https://pypi.org/project/moodlemlbackend/ packages for &#039;&#039;&#039;Moodle 3.8&#039;&#039;&#039; and up] are compatible with &#039;&#039;&#039;Python 3.4, 3.5, 3.6 and 3.7&#039;&#039;&#039;. Note that the package should be available for both the Command Line Interface (CLI) user and the user who runs the web server (e.g. www-data).&lt;br /&gt;
&lt;br /&gt;
# If necessary, install Python 3 (and pip for Python 3)&lt;br /&gt;
# Ensure that you use Python 3 to install the moodlemlbackend package (for VERSION, see the previous section):&lt;br /&gt;
&lt;br /&gt;
    sudo -H python3 -m pip install &amp;quot;moodlemlbackend==VERSION&amp;quot;&lt;br /&gt;
# You must also enter the path to the Python 3 executable in Site administration -&amp;gt; Server -&amp;gt; System paths:&lt;br /&gt;
[[File:path_to_python_3.png|frame|center|Enter system path for Python 3]]&lt;br /&gt;
&lt;br /&gt;
===== Installed in a separate server =====&lt;br /&gt;
&lt;br /&gt;
To install the python package in a separate server instead of installing it on the web server/s have some advantages:&lt;br /&gt;
* Keeps the python ML backend as an external service&lt;br /&gt;
* To keep a separated control of the resources the web server/s dedicate to serving Moodle and the resources dedicated to the python ML backend&lt;br /&gt;
* You can reuse the same ML server for multiple Moodle sites. Easier to setup and maintain than to install/upgrade the python package in all nodes in the cluster&lt;br /&gt;
* You can install the package as a new docker container in your dockerized environment&lt;br /&gt;
* You can serve the ML backend from AWS through the API gateway and AWS lambda, storing the trained model files in S3&lt;br /&gt;
&lt;br /&gt;
On the other hand, it is expected that there can be some added latency in connecting to the python ML backend server.&lt;br /&gt;
&lt;br /&gt;
The python backend is exposed as a Flask application. The Flask application is part of the official &#039;moodlemlbackend&#039; Python package and its FLASK_APP script is &#039;webapp&#039;, in the root of the package. You are free to use the setup that better suits your existing infrastructure.&lt;br /&gt;
&lt;br /&gt;
====== New server in your infrastructure ======&lt;br /&gt;
&lt;br /&gt;
The python ML backend is exposed as a Flask application, which uses a WSGI server (https://wsgi.readthedocs.io/en/latest/what.html) to be exposed to the www. The official documentation on how to deploy a Flask app can be found in https://flask.palletsprojects.com/en/1.0.x/tutorial/deploy/.&lt;br /&gt;
&lt;br /&gt;
* Use MOODLE_MLBACKEND_PYTHON_USERS environment var to set a list of users and password (comma-separated). The value is &#039;default:sshhhh&#039; (user: default, password: sshhhh).&lt;br /&gt;
* Set MOODLE_MLBACKEND_PYTHON_DIR to the path you want to use to store the data generated by the package&lt;br /&gt;
&lt;br /&gt;
====== Docker ======&lt;br /&gt;
&lt;br /&gt;
https://hub.docker.com/r/moodlehq/moodle-mlbackend-python is the official moodle-mlbackend-python docker image. We use it internally at Moodle HQ for internal testing and you can use it as well. You may want more control over the image, if that is the case https://github.com/moodlehq/moodle-docker-mlbackend-python/blob/master/Dockerfile can serve as an example of what is needed to get the python moodlemlbackend package working.&lt;br /&gt;
&lt;br /&gt;
* Use MOODLE_MLBACKEND_PYTHON_USERS environment var to set a list of users and passwords (comma-separated). The value is &#039;default:sshhhh&#039; (user: default, password: sshhhh).&lt;br /&gt;
&lt;br /&gt;
To run the docker container locally you can execute:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
docker pull moodlehq/moodle-mlbackend-python:2.4.0-python3.7.5&lt;br /&gt;
# Note that you need to add --network=moodledocker_default if your are using moodle-docker and you want this container to be visible from the web server.&lt;br /&gt;
docker run -d -p 5000:5000 --name=mlbackendpython --rm --add-host=mlbackendpython:0.0.0.0 moodlehq/moodle-mlbackend-python:2.4.0-python3.7.5&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add this to your config.php file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;pathtopython = &#039;python&#039;;&lt;br /&gt;
define(&#039;TEST_MLBACKEND_PYTHON_HOST&#039;, &#039;localhost&#039;); // Change to &amp;quot;mlbackendpython&amp;quot; if your are using moodle-docker.&lt;br /&gt;
define(&#039;TEST_MLBACKEND_PYTHON_PORT&#039;, 5000);&lt;br /&gt;
define(&#039;TEST_MLBACKEND_PYTHON_USERNAME&#039;, &#039;default&#039;);&lt;br /&gt;
define(&#039;TEST_MLBACKEND_PYTHON_PASSWORD&#039;, &#039;sshhhh&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To check if it works, this command should not Skip any test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
vendor/bin/phpunit analytics/tests/prediction_test.php --verbose&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== AWS serverless service ======&lt;br /&gt;
&lt;br /&gt;
You can serve the Flask application as a serverless application using the AWS API gateway and AWS lambda. The easiest way to do it is using Zappa https://github.com/Miserlou/Zappa to deploy the Flask application contained in the python ML package.&lt;br /&gt;
&lt;br /&gt;
* Use MOODLE_MLBACKEND_PYTHON_USERS environment var to set a list of users and password (comma-separated). The value is &#039;default:sshhhh&#039; (user: default, password: sshhhh).&lt;br /&gt;
* Set MOODLE_MLBACKEND_PYTHON_DIR to the path you want to use to store the data generated by the package&lt;br /&gt;
* Set these environment variables below to setup the S3 access:&lt;br /&gt;
** MOODLE_MLBACKEND_PYTHON_S3_BUCKET_NAME to the bucket name&lt;br /&gt;
**AWS_ACCESS_KEY_ID as usual&lt;br /&gt;
** AWS_SECRET_ACCESS_KEY as usual&lt;br /&gt;
&lt;br /&gt;
Once this has been done, you can select the Python prediction processor as the default or for an individual model:&lt;br /&gt;
[[File:python_backend.png|frame|center|Predictions processor default]]&lt;br /&gt;
&lt;br /&gt;
[[File:python_backend_at_model.png|frame|center|Predictions processor selection for an individual model]]&lt;br /&gt;
&lt;br /&gt;
=== Log store ===&lt;br /&gt;
From Moodle version 2.7 and up, the “Standard logstore” is the default. If for some reason you also have data in the older “legacy logs,” you can enable the Moodle Learning Analytics system to access them instead.&lt;br /&gt;
&lt;br /&gt;
=== Analysis intervals ===&lt;br /&gt;
&lt;br /&gt;
Analysis intervals determine how often insights will be generated, and how much information to use for each calculation. Using proportional analysis intervals allows courses of different lengths to be used to train a single model.&lt;br /&gt;
&lt;br /&gt;
Several analysis intervals are available for models in the system. In this setting, the analysis intervals that will be used to evaluate models are defined, e.g. so the best analysis interval identified by the evaluation process can be selected for the model. This setting does not restrict the analysis intervals that can be used for specific models.&lt;br /&gt;
&lt;br /&gt;
[[Image:06_timesplitting.png|frame|center|Analysis intervals]]&lt;br /&gt;
&lt;br /&gt;
Each analysis interval divides the course duration into segments. At the end of each defined segment, the predictions engine will run and generate insights. It is recommended that you only enable the analysis intervals you are interested in using; the evaluation process will iterate through all enabled analysis intervals, so the more analysis intervals enabled, the slower the evaluation process will be.&lt;br /&gt;
&lt;br /&gt;
=== Models output directory ===&lt;br /&gt;
&lt;br /&gt;
 [[Image:03_models_output_directory.png|frame|center|Models output directory]]&lt;br /&gt;
&lt;br /&gt;
This setting allows you to define a directory where machine learning backends data is stored. Be sure this directory exists and is writable by the web server. This setting can be used by Moodle sites with multiple frontend nodes (a cluster) to specify a shared directory across nodes. This directory can be used by machine learning backends to store trained algorithms (its internal variables weights and stuff like that) to use them later to get predictions. Moodle cron lock will prevent multiple executions of the analytics tasks that train machine learning algorithms and get predictions from them.&lt;br /&gt;
&lt;br /&gt;
== Scheduled tasks ==&lt;br /&gt;
&lt;br /&gt;
Most analytics API processes are executed through [[Scheduled_tasks|scheduled tasks]]. These processes usually read the activity log table and can require some time to finish. You can find &#039;&#039;Train models&#039;&#039; and &#039;&#039;Predict models&#039;&#039; scheduled tasks listed in &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Server &amp;gt; Scheduled tasks.&#039;&#039; It is recommended to edit the tasks schedule so they run nightly.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
There are two analytics capabilities:&lt;br /&gt;
&lt;br /&gt;
* [[Capabilities/moodle/analytics:managemodels|Manage models]] - allowed for the default role of manager only&lt;br /&gt;
* [[Capabilities/moodle/analytics:listinsights|List insights]] - allowed for the default roles of manager, teacher and non-editing teacher&lt;br /&gt;
&lt;br /&gt;
To receive notifications and view insights, a user must have the list insights capability within the context used as the &amp;quot;Analysable&amp;quot; for the model. For example, the [[Students at risk of dropping out]] model operates within the context of a course. Insights will be generated for each enrolment within any course matching the criteria of the model (courses with a start date in the past and an end date in the future, with at least one teacher and student), and these insights will be sent to anyone with the list insights capability in that course. &lt;br /&gt;
&lt;br /&gt;
Some models (e.g. the &#039;&#039;No teaching&#039;&#039; model) generate insights at the Site level. To receive insights from these models, the user must have a role assignment at the System level which includes the list insights capability. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Site administrators do &#039;&#039;&#039;not&#039;&#039;&#039; automatically receive insight notifications, though they can choose to view details of any insight notifications on the system. To enable site administrators to receive notifications of insights, assign an additional role that includes the list insights capability to the site administrator at the system level.&lt;br /&gt;
&lt;br /&gt;
[[Category:Analytics]]&lt;br /&gt;
&lt;br /&gt;
[[es:Configuraciones de analítica]]&lt;br /&gt;
[[de:Analytics-Einstellungen]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Configuration_file&amp;diff=141664</id>
		<title>Configuration file</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Configuration_file&amp;diff=141664"/>
		<updated>2021-09-09T14:22:48Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: fix filter_tex plugin name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Installing Moodle}}&lt;br /&gt;
The name for Moodle&#039;s configuration file is config.php. The file is located in the moodle directory. It is not included in the Moodle download packages and is created by the installation process from the template file config-dist.php (which is included in Moodle packages).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==config-dist.php==&lt;br /&gt;
Although the installation process creates the config.php file for you, there may be times when you want to do this yourself. A sample config file, called config-dist.php, is shipped with Moodle.&lt;br /&gt;
&lt;br /&gt;
To get started simply copy config-dist.php to config.php, then edit config.php with you favourite editor. The file is very well commented. The important options (which you must supply) are all nearer the top. Other less common options are further down.&lt;br /&gt;
&lt;br /&gt;
==Setting $CFG-&amp;gt;wwwroot correctly==&lt;br /&gt;
This setting must be a fixed URL (a string constant) that points to your site. Do not try to set this with any PHP code that can generate a variable URL. This is not supported, can cause strange problems and will stop command line scripts working completely. If your site is accessed from different IP addresses this should be done with a split DNS, see [[Masquerading]]&lt;br /&gt;
&lt;br /&gt;
If you change your site from http to https, you &#039;&#039;&#039;MUST&#039;&#039;&#039; update this setting. If you don’t, you will have problems - for example (but not limited to) css scripts won’t load properly and you will also experience problems with logging in to your site. Also see [[Transitioning_to_HTTPS]]&lt;br /&gt;
&lt;br /&gt;
==Enabling password salting==&lt;br /&gt;
&lt;br /&gt;
See [[Password salting]].&lt;br /&gt;
&lt;br /&gt;
==Including passwords in backups==&lt;br /&gt;
&lt;br /&gt;
Hashed user passwords are no longer saved in backup files containing user data.&lt;br /&gt;
&lt;br /&gt;
If you really need passwords to be saved (in the rare case of restoring a [[Backup of user data|backup with user data]] to a different site), the following line may be added to config.php:&lt;br /&gt;
&lt;br /&gt;
 $CFG-&amp;gt;includeuserpasswordsinbackup = true;&lt;br /&gt;
&lt;br /&gt;
Note regarding restoring Moodle 2.5 backups to sites with old PHP versions:&lt;br /&gt;
&lt;br /&gt;
Because bcrypt is not supported in PHP versions below 5.3.7, course backups made using the $CFG-&amp;gt;includeuserpasswordsinbackup setting on a site using PHP version 5.3.7+ that are subsequently restored to a site with PHP version &amp;lt; 5.3.7 will require a password reset.&lt;br /&gt;
&lt;br /&gt;
==Changing default block layout for new courses==&lt;br /&gt;
&lt;br /&gt;
See [[Block layout]].&lt;br /&gt;
&lt;br /&gt;
==Adding extra theme directory location==&lt;br /&gt;
It is possible to add an extra themes directory stored outside of $CFG-&amp;gt;dirroot. This local directory does not have to be accessible from internet. Themes placed in the directory specified by these variables will then be available for selection using the theme selector.&lt;br /&gt;
&lt;br /&gt;
For example, should you wish to place extra themes in a subdirectory called &#039;my_moodle_themes&#039;, your config.php might look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;wwwroot   = &#039;http://my.moodle.site.edu&#039;;&lt;br /&gt;
$CFG-&amp;gt;dirroot   = &#039;/var/www/my.moodle.site.edu/public_html&#039;;&lt;br /&gt;
$CFG-&amp;gt;themedir  = $CFG-&amp;gt;dirroot . &#039;/my_moodle_themes&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Disabling update notifications==&lt;br /&gt;
&lt;br /&gt;
See [[Notifications]].&lt;br /&gt;
&lt;br /&gt;
==Enabling debugging==&lt;br /&gt;
&lt;br /&gt;
See [[Debugging]].&lt;br /&gt;
&lt;br /&gt;
==Forcing the value of admin settings==&lt;br /&gt;
&lt;br /&gt;
As explained in config-dist.php, it is possible to specify normal admin settings here, the point is that they can not be changed through the standard admin settings pages any more. Just set the value in config.php like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;showuseridentity = &#039;email,idnumber,username&#039;;&lt;br /&gt;
$CFG-&amp;gt;preventexecpath = true;&lt;br /&gt;
$CFG-&amp;gt;pathtodu = &amp;quot;/usr/bin/du&amp;quot;;&lt;br /&gt;
$CFG-&amp;gt;pathtodot = &amp;quot;/usr/bin/dot&amp;quot;;&lt;br /&gt;
$CFG-&amp;gt;pathtogs = &amp;quot;/usr/bin/gs&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration for plugins can also be forced by the syntax is different, eg continuing the example above for security to always hard coded paths to all executable files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;forced_plugin_settings[&#039;filter_tex&#039;][&#039;pathconvert&#039;] = &#039;/usr/bin/convert&#039;;&lt;br /&gt;
$CFG-&amp;gt;forced_plugin_settings[&#039;filter_tex&#039;][&#039;pathdvips&#039;]   = &#039;/usr/bin/dvips&#039;;&lt;br /&gt;
$CFG-&amp;gt;forced_plugin_settings[&#039;filter_tex&#039;][&#039;pathdvisvgm&#039;] = &#039;/usr/bin/dvisvgm&#039;;&lt;br /&gt;
$CFG-&amp;gt;forced_plugin_settings[&#039;filter_tex&#039;][&#039;pathlatex&#039;]   = &#039;/usr/bin/latex&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/discuss.php?d=137889 Moodle Salting] forum discussion&lt;br /&gt;
&lt;br /&gt;
[[de:Konfigurationsdatei]]&lt;br /&gt;
[[es:config.php]]&lt;br /&gt;
[[fr:Fichier de configuration]]&lt;br /&gt;
[[ja:設定ファイル]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Administration_via_command_line&amp;diff=140558</id>
		<title>Administration via command line</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Administration_via_command_line&amp;diff=140558"/>
		<updated>2021-06-02T22:06:12Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Content only applicable to previous version: Removing this from stable versions following the removal of code for 4.0 - MDL-71476&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Installing Moodle}}&lt;br /&gt;
==Running CLI scripts==&lt;br /&gt;
If you have shell access to your web server, you may find various CLI (command line interface) scripts useful during Moodle administration. Core admin CLI tools are located in the &amp;lt;code&amp;gt;admin/cli/*&amp;lt;/code&amp;gt; folder. Other plugins provide their CLI functionality via scripts in their own cli folder. For example, the enrol_db sync script is located in &amp;lt;code&amp;gt;enrol/db/cli/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To avoid problems with access control, you should run them as the owner of the web server process. It is especially important for CLI installation and upgrade as they create new files in moodledata directory and the web server has to have write access to them. In Linux distributions, the user that runs the web server is usually apache or wwrun or httpd or something similar. As a root, you will probably want to execute Moodle CLI scripts like this:&lt;br /&gt;
&lt;br /&gt;
    $ cd /path/to/your/moodle/dir&lt;br /&gt;
    $ sudo -u apache /usr/bin/php admin/cli/somescript.php --params&lt;br /&gt;
&lt;br /&gt;
Most of the scripts accept common --help (or -h) parameter to display the full usage information, for example:&lt;br /&gt;
&lt;br /&gt;
    $ sudo -u apache /usr/bin/php admin/cli/install.php --help&lt;br /&gt;
&lt;br /&gt;
{{Note|These scripts are supposed to be run under the identity of the web server user. Examples on this page use the &amp;lt;tt&amp;gt;apache&amp;lt;/tt&amp;gt; user for illustration. The particular value depends on your OS distribution and local set-up. Typical values may be &amp;lt;tt&amp;gt;apache&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;www-data&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;httpd&amp;lt;/tt&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
== Upgrading ==&lt;br /&gt;
&lt;br /&gt;
Moodle can be upgraded from the command line. As with the installation script, there is either interactive or non-interactive mode of the upgrade. The script itself does not put the site into the maintenance mode, you have to do it on your own. Also, the script does not backup any data (if you read this page, you probably have some own scripts to backup your moodledata and the database, right?)&lt;br /&gt;
&lt;br /&gt;
    $ sudo -u apache /usr/bin/php admin/cli/upgrade.php&lt;br /&gt;
&lt;br /&gt;
Upgrading via command line is a very comfortable way of Moodle upgrade if you use Git checkout of the Moodle source code (see [[Git for Administrators]]). See the following procedure how to upgrade your site within several seconds to the most recent version while preserving your eventual local customizations tracked in git repository:&lt;br /&gt;
&lt;br /&gt;
    $ cd /var/www/sites/moodle/htdocs/&lt;br /&gt;
    $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable&lt;br /&gt;
    $ git pull&lt;br /&gt;
    $ sudo -u apache /usr/bin/php admin/cli/upgrade.php&lt;br /&gt;
    $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --disable&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
There are two modes of installing Moodle from the command line. In interactive mode, the install script asks you for all data needed to properly set up new Moodle site. In non-interactive mode, you must provide all required data as the script parameters and then the new site is installed silently. The parameters can be passed in the interactive mode, too. The provided values are then used as the default values during the interactive session.&lt;br /&gt;
&lt;br /&gt;
    $ sudo -u apache /usr/bin/php admin/cli/install.php --lang=cs&lt;br /&gt;
&lt;br /&gt;
If your arguments contain some specials characters for Linux based systems, don&#039;t forget to &#039;&#039;escape&#039;&#039; them with a backslash. For example, if you want to create an admin with &#039;&#039;pa$sword&#039;&#039; as password you should wrote &#039;&#039;pa\$sword&#039;&#039; instead!&lt;br /&gt;
&lt;br /&gt;
If required, the database install may be skipped, with just config.php populated.&lt;br /&gt;
&lt;br /&gt;
   $ sudo -u apache /usr/bin/php admin/cli/install.php --skip-database&lt;br /&gt;
&lt;br /&gt;
== Maintenance mode ==&lt;br /&gt;
&lt;br /&gt;
To switch your site into the maintenance mode via CLI, you can use&lt;br /&gt;
&lt;br /&gt;
    $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable&lt;br /&gt;
&lt;br /&gt;
To turn maintenance mode off, execute the same script with the --disable parameter:&lt;br /&gt;
&lt;br /&gt;
    $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --disable&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to enable maintenance mode immediately, but show a countdown to your users, execute the same script with the --enablelater parameter and the number of minutes which the countdown should run:&lt;br /&gt;
&lt;br /&gt;
    $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enablelater=10&lt;br /&gt;
&lt;br /&gt;
This script will also create and remove the climaintenance.html file for &amp;quot;Offline&amp;quot; mode.&lt;br /&gt;
&lt;br /&gt;
== Offline mode ==&lt;br /&gt;
&lt;br /&gt;
In some situations, you may want to switch your Moodle site into offline mode so that it is not accessible via the web but you can not stop the web server completely (typically because there are other web pages and applications running there). If a file called &amp;lt;code&amp;gt;climaintenance.html&amp;lt;/code&amp;gt; exists in the root folder of moodledata directory, Moodle will automatically display the contents of that file instead of any other page.&lt;br /&gt;
&lt;br /&gt;
    $ cd /var/www/sites/moodle/moodledata/&lt;br /&gt;
    $ echo &#039;&amp;amp;lt;h1&amp;amp;gt;Sorry, maintenance in progress&amp;amp;lt;/h1&amp;amp;gt;&#039; &amp;amp;gt; climaintenance.html&lt;br /&gt;
&lt;br /&gt;
You can prepare a nice formatted HTML page to inform your users about the server being down and keep in the moodledata directory under a name like &amp;lt;code&amp;gt;climaintenance.off&amp;lt;/code&amp;gt; and rename it to the &amp;lt;code&amp;gt;climaintenance.html&amp;lt;/code&amp;gt; if needed.&lt;br /&gt;
&lt;br /&gt;
== Custom site defaults ==&lt;br /&gt;
&lt;br /&gt;
During the install and upgrade via CLI, Moodle sets the administration variables to the default values. You can use different defaults. See MDL-17850 for details. Shortly, all you need to do is to add a file &amp;lt;code&amp;gt;local/defaults.php&amp;lt;/code&amp;gt; into your Moodle installation. The format of the file is like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$defaults[&#039;pluginname&#039;][&#039;settingname&#039;] = &#039;settingvalue&#039;; // for plugins&lt;br /&gt;
$defaults[&#039;moodle&#039;][&#039;settingname&#039;] = &#039;settingvalue&#039;;     // for core settings&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These defaults are used during install, upgrade and are also displayed as defaults on Site administration pages.&lt;br /&gt;
&lt;br /&gt;
== Reset user password ==&lt;br /&gt;
&lt;br /&gt;
If you happen to forget your admin password (or you want to set a password for any other user on the site), you can use reset_password.php script. The script sets the correctly salted password for the given user.&lt;br /&gt;
&lt;br /&gt;
    $ sudo -u apache /usr/bin/php admin/cli/reset_password.php&lt;br /&gt;
&lt;br /&gt;
==Converting InnoDB tables to Barracuda==&lt;br /&gt;
&lt;br /&gt;
Sites using MySQL with database tables using Antelope as the file format are recommended to convert the tables to the Barracuda file format.&lt;br /&gt;
&lt;br /&gt;
This is because tables using Antelope as the file format cannot handle more than 10 text columns. This file formats only supports &#039;&#039;compact&#039;&#039; and &#039;&#039;redundant&#039;&#039; row formats for backward compatibility reasons. This may cause a problem on larger sites when restoring a course, in which case the following error will be displayed: &lt;br /&gt;
&lt;br /&gt;
 Row size too large (&amp;gt;8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help.&lt;br /&gt;
&lt;br /&gt;
Barracuda is the newest innoDB file format. In addition to supporting &#039;&#039;compact&#039;&#039; and &#039;&#039;redundant&#039;&#039; row formats, Barracuda also supports &#039;&#039;compressed&#039;&#039; and &#039;&#039;dynamic&#039;&#039; row formats. &lt;br /&gt;
&lt;br /&gt;
However, converting tables to Barracuda is only recommended, and not required, since not all MySQL users are affected. (It may only be a problem for larger sites.)&lt;br /&gt;
&lt;br /&gt;
===Tool for converting tables===&lt;br /&gt;
&lt;br /&gt;
A command line tool is included in Moodle for converting tables to Barracuda.&lt;br /&gt;
&lt;br /&gt;
To view tables requiring conversion, use the list option:&lt;br /&gt;
&lt;br /&gt;
 $ php admin/cli/mysql_compressed_rows.php --list&lt;br /&gt;
&lt;br /&gt;
Here is an example output:&lt;br /&gt;
&lt;br /&gt;
 mdl_data                            Compact     (needs fixing) &lt;br /&gt;
 mdl_data_fields                     Compact     (needs fixing)&lt;br /&gt;
 mdl_enrol_paypal                    Compact     (needs fixing)&lt;br /&gt;
&lt;br /&gt;
To proceed with the conversion, run the command using the fix option:&lt;br /&gt;
&lt;br /&gt;
 $ php admin/cli/mysql_compressed_rows.php --fix&lt;br /&gt;
&lt;br /&gt;
Successful table conversion will be reported in the output, for example:&lt;br /&gt;
&lt;br /&gt;
 mdl_data                   ... Compressed&lt;br /&gt;
 mdl_data_fields            ... Compressed&lt;br /&gt;
 mdl_enrol_paypal           ... Compressed&lt;br /&gt;
&lt;br /&gt;
Please note that the commands must be executed on your moodle directory. Once tables are fixed, the warning message will no longer be displayed.&lt;br /&gt;
 &lt;br /&gt;
For further information on InnoDB file formats see the [http://dev.mysql.com/doc/innodb/1.1/en/glossary.html#glos_antelope MySQL InnoDB glossary - Antelope] and the [http://dev.mysql.com/doc/innodb/1.1/en/glossary.html#glos_barracuda MySQL InnoDB glossary - Barracuda].&lt;br /&gt;
&lt;br /&gt;
If you get errors due to having insufficient privileges to run these commands (this is quite likely) then the easiest solution is to generate the required SQL commands using,&lt;br /&gt;
&lt;br /&gt;
 $ php admin/cli/mysql_compressed_rows.php --showsql&lt;br /&gt;
&lt;br /&gt;
You can then copy the generated SQL into your mysql client running as the &#039;root&#039; user.&lt;br /&gt;
&lt;br /&gt;
==Converting to the new character set and collation==&lt;br /&gt;
&lt;br /&gt;
 $ php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci&lt;br /&gt;
&lt;br /&gt;
== Running cron via command line ==&lt;br /&gt;
&lt;br /&gt;
In versions 1.x, you could execute admin/cron.php either from command line or via the web. Since Moodle 2.0, only admin/cli/cron.php script can be run via command line.&lt;br /&gt;
&lt;br /&gt;
== Scheduled tasks ==&lt;br /&gt;
&lt;br /&gt;
Scheduled tasks are automatically run by the cron script, but the specific tasks which run on each cron iteration are determined by the scheduled tasks configuration. It is possible to override the scheduled tasks configuration and run a single scheduled task immediately using the admin/tool/task/cli/schedule_task.php script. &lt;br /&gt;
&lt;br /&gt;
This script accepts the following arguments:&lt;br /&gt;
&lt;br /&gt;
 --list - list all the known scheduled tasks. The tasks are listed by the class name used to run the task. This class name is required as the argument to the next option in order to run a specific task immediately.&lt;br /&gt;
&lt;br /&gt;
 --execute=&amp;lt;task&amp;gt; - Runs a single scheduled task immediately - regardless of scheduling settings. This will even run disabled tasks. Tasks will still use locking to prevent concurrent execution of the same task - even on clusters. The format of the &amp;lt;task&amp;gt; argument must be the same as returned by the --list option above.&lt;br /&gt;
&lt;br /&gt;
 --showsql - Shows sql queries before they are execute&lt;br /&gt;
&lt;br /&gt;
 --showdebugging - Shows developer debugging info&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; You must escape the &amp;quot;\&amp;quot; with an extra \ when using the --execute command. Take the following for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;php admin/tool/task/cli/schedule_task.php --list&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will return something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
== List of scheduled tasks (http://yourserver.com/moodle) ==&lt;br /&gt;
\enrol_imsenterprise\task\cron_task                10 * * * * *      ASAP&lt;br /&gt;
\logstore_legacy\task\cleanup_task                 * 5 * * * *       ASAP&lt;br /&gt;
\logstore_standard\task\cleanup_task               * 4 * * * *       Wednesday, November 12, 2014, 4:35 AM&lt;br /&gt;
\mod_forum\task\cron_task                          * * * * * *       ASAP&lt;br /&gt;
\core\task\automated_backup_task                   50 * * * * *      ASAP&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the first task in that list, you would execute&lt;br /&gt;
&lt;br /&gt;
 php admin/tool/task/cli/schedule_task.php --execute=&#039;\enrol_imsenterprise\task\cron_task&#039;&lt;br /&gt;
&lt;br /&gt;
Be aware of the single quotes. Without them, you would need to use double backlashes to avoid escaping by the shell.&lt;br /&gt;
&lt;br /&gt;
==Database transfer==&lt;br /&gt;
&lt;br /&gt;
A command line script for [[Database transfer]] may be found in &#039;&#039;admin/tool/dbtransfer/cli/migrate.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Purge caches==&lt;br /&gt;
&lt;br /&gt;
You can purge caches using this script:&lt;br /&gt;
&lt;br /&gt;
  php admin/cli/purge_caches.php&lt;br /&gt;
&lt;br /&gt;
==Kill all sessions==&lt;br /&gt;
If needed for administrative reasons, you can kill all user sessions using this script:&lt;br /&gt;
&lt;br /&gt;
 php admin/cli/kill_all_sessions.php&lt;br /&gt;
&lt;br /&gt;
As a result, all users will be logged out from Moodle.&lt;br /&gt;
&lt;br /&gt;
==Backup and restore of large courses==&lt;br /&gt;
&lt;br /&gt;
See Backup via CLI in [[Course backup]] and Restore via CLI in [[Course restore]] (new in 3.10 onwards).&lt;br /&gt;
&lt;br /&gt;
==Fix course / module sequences==&lt;br /&gt;
&lt;br /&gt;
In rare cases (such as after upgrading from a very old version of Moodle), the course / section / module sequence data can be out of sync. This can cause various problems for affected courses, such as sections not appearing, backups failing, pages not displaying etc. There is a specific check to check for errors caused by this problem, and to fix the data in the database if they are found. To run this script please use the command below:&lt;br /&gt;
&lt;br /&gt;
  php admin/cli/fix_course_sequence.php -c=* --fix&lt;br /&gt;
&lt;br /&gt;
This will check every course in Moodle and report which ones had errors and were fixed.&lt;br /&gt;
&lt;br /&gt;
==Fix orphaned question categories==&lt;br /&gt;
&lt;br /&gt;
When a quiz is created, a new question category for the quiz is automatically created. In versions of Moodle prior to 2.9.1, if the quiz is deleted, the question category and any questions in the category remain in database. These orphaned question categories may be fixed by running the admin/cli/fix_orphaned_question_categories.php script with the --fix option.&lt;br /&gt;
&lt;br /&gt;
==Search and replace text==&lt;br /&gt;
&lt;br /&gt;
This script can be used to search and replace text throughout the whole database. Use carefully and backup first always. More info in [[Search and replace tool]].&lt;br /&gt;
&lt;br /&gt;
  php admin/tool/replace/cli/replace.php --search=//oldsitehost --replace=//newsitehost&lt;br /&gt;
&lt;br /&gt;
==Build theme CSS cache==&lt;br /&gt;
&lt;br /&gt;
If Moodle is not running in theme designer mode it will keep a copy of the compiled CSS on local disk and serve that to the browser when it requests a page. If there isn&#039;t a copy on local disk then a copy will be built the first time a page within Moodle is requested. &lt;br /&gt;
&lt;br /&gt;
With this script you can pre-compile the cached CSS files for themes within Moodle to avoid having a user wait for the theme to compile during the first page request.&lt;br /&gt;
&lt;br /&gt;
  php admin/cli/build_theme_css.php --themes=boost&lt;br /&gt;
&lt;br /&gt;
==Get and set configuration values==&lt;br /&gt;
&lt;br /&gt;
Displays the current value of the given setting, or set the given setting to the specified value.&lt;br /&gt;
&lt;br /&gt;
 $ php admin/cli/cfg.php [--component=&amp;lt;componentname&amp;gt;] [--json] [--shell-arg]&lt;br /&gt;
 $ php admin/cli/cfg.php --name=&amp;lt;configname&amp;gt; [--component=&amp;lt;componentname&amp;gt;] [--shell-arg] [--no-eol]&lt;br /&gt;
 $ php admin/cli/cfg.php --name=&amp;lt;configname&amp;gt; [--component=&amp;lt;componentname&amp;gt;] --set=&amp;lt;value&amp;gt;&lt;br /&gt;
 $ php admin/cli/cfg.php --name=&amp;lt;configname&amp;gt; [--component=&amp;lt;componentname&amp;gt;] --unset&lt;br /&gt;
 $ php admin/cli/cfg.php [--help|-h]&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 $ php admin/cli/cfg.php --name=langmenu&lt;br /&gt;
will display the value of &#039;&#039;Display language menu&#039;&#039; in &#039;&#039;Site administration &amp;gt; Language &amp;gt; Language settings&#039;&#039; (0 for &#039;&#039;No&#039;&#039; or 1 for &#039;&#039;Yes&#039;&#039;).&lt;br /&gt;
 $ php cfg.php --name=maxsizetodownload --component=folder&lt;br /&gt;
will display the value of &#039;&#039;Maximum folder download size (MB)&#039;&#039; accessible from &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Activity modules &amp;gt; Folder&#039;&#039;.&lt;br /&gt;
 $ php admin/cli/cfg.php --name=langmenu --set=0&lt;br /&gt;
will disable the &#039;&#039;Language menu&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* MDL-35736 - Manage plugins via command line&lt;br /&gt;
* MDL-36237 - Resort course list via CLI&lt;br /&gt;
* [http://moosh-online.com/ MOOSH] - MOOdle SHell. It is a commandline tool that will allow you to perform most common Moodle tasks.&lt;br /&gt;
&lt;br /&gt;
[[fr:Administration en ligne de commande]]&lt;br /&gt;
[[de:Administration über Kommandozeile]]&lt;br /&gt;
[[es:Administración por línea de comando]]&lt;br /&gt;
[[it:Amministrazione via linea di comando]]&lt;br /&gt;
[[ja:コマンドライン経由の管理]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=140371</id>
		<title>Upgrading</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=140371"/>
		<updated>2021-05-17T00:09:47Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Moodle 3.11 required Moodle 3.6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Installing Moodle}}	&lt;br /&gt;
&#039;&#039;This page explains in detail how to upgrade Moodle. For a summary of the process, see [[Upgrade overview]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Check the requirements==&lt;br /&gt;
&lt;br /&gt;
Before upgrading, check that your server meets all requirements for {{Version}} in &#039;&#039;Site administration &amp;gt; Server &amp;gt; [[Environment]]&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
See the [{{Release notes}} release notes] in the dev docs for both [{{Release notes}}#Server_requirements server] and [{{Release notes}}#Client_requirements client] software requirements.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* You can only upgrade to Moodle {{Version}} from Moodle 3.6 or later. If upgrading from earlier versions, you must [https://docs.moodle.org/36/en/Upgrading_to_Moodle_3.6 upgrade to 3.6] as a first step.&lt;br /&gt;
&lt;br /&gt;
==Before upgrading==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;We advise that you test the upgrade first on a COPY of your production site, to make sure it works as you expect.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Consider setting the [[Upgrade key|upgrade key]] for your site.&lt;br /&gt;
&lt;br /&gt;
== Backup important data ==&lt;br /&gt;
&lt;br /&gt;
There are three areas that should be backed up before any upgrade:&lt;br /&gt;
#Moodle software (For example, everything in server/htdocs/moodle)&lt;br /&gt;
#Moodle uploaded files (For example, server/moodledata)&lt;br /&gt;
#Moodle database (For example, your Postgres or MySQL database dump)&lt;br /&gt;
&lt;br /&gt;
See [[Site backup]] for more specific information.&lt;br /&gt;
&lt;br /&gt;
== Check for plugin updates ==&lt;br /&gt;
&lt;br /&gt;
If you have [[Automatic updates deployment]] enabled, you will be able to update installed plugins automatically during the upgrade. Just make sure you check for available updates (via the button for it) at the Plugins check screen.&lt;br /&gt;
&lt;br /&gt;
If you are updating plugins manually, it is a good moment now to check in the [http://moodle.org/plugins Moodle Plugins directory] whether there is a {{Version}} version available for any plugins (including themes) that you have previously installed on your site. If so, download the plugin package. In the next step, you will copy it to the appropriate location in your Moodle code (see [[Installing plugins]]).&lt;br /&gt;
&lt;br /&gt;
The upgrade of the plugin will then happen as part of the Moodle upgrade process.&lt;br /&gt;
&lt;br /&gt;
If an out-of-date plugin causes your upgrade to fail, you can usually delete the plugin code rather than uninstalling it from within Moodle so that the data associated with it is not deleted.&lt;br /&gt;
&lt;br /&gt;
==Put your site into maintenance mode==&lt;br /&gt;
Before you begin upgrading your site, you should put it into [[Maintenance_mode | maintenance mode]] to stop any non-admin users from logging in. Then you should wait for any currently running cron processes to complete before proceeding.&lt;br /&gt;
&lt;br /&gt;
== Install the new Moodle software ==&lt;br /&gt;
You can fetch the current version of the software at&lt;br /&gt;
&lt;br /&gt;
wget http://sourceforge.net/projects/moodle/files/Moodle/stable39/moodle-latest-39.tgz&lt;br /&gt;
&lt;br /&gt;
=== Standard install package ===&lt;br /&gt;
&lt;br /&gt;
# Move your old Moodle software program files to another location. &#039;&#039;Do NOT copy new files over the old files.&#039;&#039;&lt;br /&gt;
# Unzip or unpack the upgrade file so that all the new Moodle software program files are in the location the old files used to be in on the server. Moodle will adjust SQL and moodledata if it needs to in the upgrade.&lt;br /&gt;
# Copy your old [[Configuration file|config.php file]] back to the new Moodle directory. &lt;br /&gt;
# As mentioned above, if you had installed any plugins on your site you should add them to the new code tree (Moodle directory structure) now. It is important to check that you get the correct version for your new version of Moodle. Be particularly careful that you do not overwrite any code in the new version of Moodle and that you place the plugin folders in the correct directory (the same directory that they are in in the current installation.)&lt;br /&gt;
# Your moodledata folder should be located separately to your Moodle code folder and, as such, should not need anything done to it.  Moodle 3.0 will throw a warning if it is located in a web accessible folder and the moodledata should never be located in the Moodle code folder.  If you are moving your installation to a new server or new location on your server, then you will need to follow the [[Migration]] documents.&lt;br /&gt;
&lt;br /&gt;
====Linux====&lt;br /&gt;
 mv moodle moodle.backup&lt;br /&gt;
 tar xvzf moodle-latest-{{Version}}.tgz&lt;br /&gt;
&lt;br /&gt;
Next, copy across your config.php, any custom plugins, and your .htaccess file if you created one (&#039;&#039;&#039;check that custom plugins are the correct version for your new Moodle first&#039;&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
 cp moodle.backup/config.php moodle&lt;br /&gt;
 cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme&lt;br /&gt;
 cp -pr moodle.backup/mod/mymod moodle/mod/mymod&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to make moodle/config.php (and the rest of the source code) readable by your www server. For maximum security the files should not be writeable by your server. This is especially important on a &#039;production&#039; server open to the public internet. &lt;br /&gt;
&lt;br /&gt;
 chown -R root:root moodle (Linux debian - or even create a user especially for moodle. &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; use the web server user, e.g. www-data)&lt;br /&gt;
 chmod -R 755 moodle&lt;br /&gt;
&lt;br /&gt;
If you use cron, take care that cron.php is executeable and uses the correct php command: &lt;br /&gt;
 chmod 740 admin/cli/cron.php (some configurations need chmod 750 or chmod 755)&lt;br /&gt;
 copy the first line from cron.php (if it looks like &#039;#!/usr/local/bin/php&#039; or &#039;#!/usr/local/bin/php5.3&#039;, no need to copy &#039;&amp;lt;?php&#039;) &lt;br /&gt;
if necessary.  However, for a simple upgrade, there should be no need to change anything with cron.&lt;br /&gt;
&lt;br /&gt;
=== Using Git ===&lt;br /&gt;
&lt;br /&gt;
You can use Git for updating or upgrading your Moodle. See [[Git for Administrators]] for details.&lt;br /&gt;
&lt;br /&gt;
===Command line upgrade===&lt;br /&gt;
&lt;br /&gt;
On Linux servers, Moodle {{Version}} supports running the [[CLI|upgrade from the command line]], rather than through a web browser. This is likely to be more reliable, particularly for large sites.&lt;br /&gt;
&lt;br /&gt;
== Finishing the upgrade ==&lt;br /&gt;
&lt;br /&gt;
The last step is to trigger the upgrade processes within Moodle. &lt;br /&gt;
&lt;br /&gt;
If you put your site into Maintenance mode earlier; take it out now!&lt;br /&gt;
&lt;br /&gt;
To do this just go to &#039;&#039;Site administration &amp;gt; Notifications&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Moodle will automatically detect the new version and perform all the SQL database or file system upgrades that are necessary. If there is anything it can&#039;t do itself (very rare) then you will see messages telling you what you need to do.&lt;br /&gt;
&lt;br /&gt;
Assuming all goes well (no error messages) then you can start using your new version of Moodle and enjoy the new features!&lt;br /&gt;
&lt;br /&gt;
Note: If you are running multiple servers then you should purge all caches manually (via &#039;&#039;Site administration &amp;gt; Development &amp;gt; Purge all caches&#039;&#039;) after completing the upgrade on all servers.&lt;br /&gt;
&lt;br /&gt;
===Fatal error: Maximum execution time of 30 seconds exceeded...===&lt;br /&gt;
&lt;br /&gt;
If your server uses a main language other than English, you may encounter a &#039;Fatal error: Maximum execution time of 30 seconds exceeded&#039; when you try to upgrade it. You can increase max_execution_time = 160 on php.ini to allow the scripts enough time to process the language update. Otherwise, you can switch to English as the default language before doing the upgrade and back to your original language after a successful upgrade. See the forum discussion at https://moodle.org/mod/forum/discuss.php?d=119598.&lt;br /&gt;
&lt;br /&gt;
==After upgrading==&lt;br /&gt;
&lt;br /&gt;
==Possible issues that may affect you in Moodle {{Version}}==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please add items here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
See also the list of [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%203.10%20AND%20labels%20%3D%20upgrade_notes upgrade_notes-labelled issues] and [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%203.10%20AND%20labels%20%3D%20ui_change ui_change-labelled issues]. &lt;br /&gt;
&lt;br /&gt;
===New capabilities in Moodle {{Version}}===&lt;br /&gt;
&lt;br /&gt;
* block/accessreview:addinstance&lt;br /&gt;
* block/accessreview:view&lt;br /&gt;
* mod/quiz:viewoverrides&lt;br /&gt;
* moodle/contentbank:viewunlistedcontent&lt;br /&gt;
* tool/brickfield:viewcoursetools&lt;br /&gt;
* tool/brickfield:viewsystemtools&lt;br /&gt;
&lt;br /&gt;
=== Moodle 3.6, 3.7, 3.8, 3.9 and 3.10 improvements ===&lt;br /&gt;
&lt;br /&gt;
Depending on which version you are upgrading from, please see the section &#039;Possible issues that may affect you&#039; in the documentation&lt;br /&gt;
&lt;br /&gt;
* [https://docs.moodle.org/36/en/Upgrading Upgrading to Moodle 3.6]&lt;br /&gt;
* [https://docs.moodle.org/37/en/Upgrading Upgrading to Moodle 3.7]&lt;br /&gt;
* [https://docs.moodle.org/38/en/Upgrading Upgrading to Moodle 3.8]&lt;br /&gt;
* [https://docs.moodle.org/39/en/Upgrading Upgrading to Moodle 3.9]&lt;br /&gt;
* [https://docs.moodle.org/310/en/Upgrading Upgrading to Moodle 3.10]&lt;br /&gt;
&lt;br /&gt;
==Any questions about the process?==&lt;br /&gt;
&lt;br /&gt;
Please post in the [https://moodle.org/mod/forum/view.php?id=28 Installing and upgrading help forum] on moodle.org.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[dev:Moodle {{Version}} release notes|Moodle {{Version}} release notes]]&lt;br /&gt;
* [https://moodle.org/mod/forum/discuss.php?d=393570 Problem accessing dropdown such as personal profile since 3.8 (20191118) update] forum discussion&lt;br /&gt;
&lt;br /&gt;
[[es:Actualización de moodle]]&lt;br /&gt;
[[fr:Mise à jour]]&lt;br /&gt;
[[ja:Moodleをアップグレードする]]&lt;br /&gt;
[[de:Aktualisierung von Moodle]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Environment_-_max_input_vars&amp;diff=140255</id>
		<title>Environment - max input vars</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Environment_-_max_input_vars&amp;diff=140255"/>
		<updated>2021-05-06T17:02:43Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Add environment category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PHP setting &#039;&#039;&#039;max_input_vars&#039;&#039;&#039; determines how many input variables may be accepted (limit is applied to $_GET, $_POST and $_COOKIE superglobal separately). If there are more input variables than specified by this directive, an E_WARNING is issued, and further input variables are truncated from the request. &lt;br /&gt;
&lt;br /&gt;
There are a lot of big or potentially big forms in Moodle, such as:&lt;br /&gt;
* Site administration tree search&lt;br /&gt;
* Editing roles&lt;br /&gt;
* Grading courses with big number of participants&lt;br /&gt;
* Large quizzes and quiz settings&lt;br /&gt;
 &lt;br /&gt;
The default value for max_input_vars in PHP is &#039;&#039;&#039;1000&#039;&#039;&#039;, this is not enough for many cases.&lt;br /&gt;
&lt;br /&gt;
If you are using PHP 7 the recommended value for the &#039;&#039;&#039;max_input_vars&#039;&#039;&#039; in Moodle is &#039;&#039;&#039;5000&#039;&#039;&#039; but you can still use Moodle with the lower value. Moodle code has a workaround that allows to submit the forms even with bigger limit however this workaround is not perfect. It is much better to increase the setting.&lt;br /&gt;
&lt;br /&gt;
If you are using PHP 8 the minimum value of 5000 &#039;&#039;&#039;is required&#039;&#039;&#039;.  By default PHP 8 sets to display startup errors (see [[https://php.watch/versions/8.0/startup-errors-enabled]]). This means that the warning about exceeding max_input_vars appears before the workaround even applied.&lt;br /&gt;
&lt;br /&gt;
To change max_input_vars you can either set it in php.ini or modify it in runtime, for example for Apache you can create &#039;&#039;&#039;.htaccess&#039;&#039;&#039; file:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
php_value max_input_vars 5000&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Environment|PHP]]&lt;br /&gt;
&lt;br /&gt;
[[es:admin/environment/custom check/max input vars]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Environment_-_PHP_extension_sodium&amp;diff=140251</id>
		<title>Environment - PHP extension sodium</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Environment_-_PHP_extension_sodium&amp;diff=140251"/>
		<updated>2021-05-06T12:25:04Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Environment}}&lt;br /&gt;
&lt;br /&gt;
The php-sodium extension provides strong encryption capabilities in an easy and consistent way. &lt;br /&gt;
&lt;br /&gt;
Note that, for sites not having the extension installed, a php-openssl based solution, considered suboptimal, is used, and this fallback will stop working in a few versions (Moodle 4.2). See MDL-71421 for more details.&lt;br /&gt;
&lt;br /&gt;
Hence, it&#039;s highly recommended to start using php-sodium.&lt;br /&gt;
&lt;br /&gt;
Please see [https://www.php.net/manual/book.sodium.php https://www.php.net/manual/book.sodium.php]&lt;br /&gt;
&lt;br /&gt;
Please see [https://py-ipv8.readthedocs.io/en/latest/preliminaries/install_libsodium/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Environment|PHP]]&lt;br /&gt;
&lt;br /&gt;
[[es:admin/environment/php extension/sodium]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Environment_-_PHP_extension_sodium&amp;diff=140250</id>
		<title>Environment - PHP extension sodium</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Environment_-_PHP_extension_sodium&amp;diff=140250"/>
		<updated>2021-05-06T12:24:39Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: Some notes about php-sodium and current php-openssl fallback&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Environment}}&lt;br /&gt;
&lt;br /&gt;
The php-sodium extension provides strong encryption capabilities in an easy and consistent way. &lt;br /&gt;
&lt;br /&gt;
Note that, for sites not having the extension installed, a php-openssl based solution, considered suboptimal, is used, and this fallback will stop working in a few versions (Moodle 4.2).&lt;br /&gt;
&lt;br /&gt;
Hence, it&#039;s highly recommended to start using php-sodium.&lt;br /&gt;
&lt;br /&gt;
Please see [https://www.php.net/manual/book.sodium.php https://www.php.net/manual/book.sodium.php]&lt;br /&gt;
&lt;br /&gt;
Please see [https://py-ipv8.readthedocs.io/en/latest/preliminaries/install_libsodium/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Environment|PHP]]&lt;br /&gt;
&lt;br /&gt;
[[es:admin/environment/php extension/sodium]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=132613</id>
		<title>Upgrading</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Upgrading&amp;diff=132613"/>
		<updated>2018-12-03T00:49:37Z</updated>

		<summary type="html">&lt;p&gt;Stronk7: reorganize the section to avoid duplicating incomplete information. Always refer to the release notes for server and client requirements.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Installing Moodle}}	&lt;br /&gt;
&#039;&#039;This page explains in detail how to upgrade Moodle. For a summary of the process, see [[Upgrade overview]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Check the requirements==&lt;br /&gt;
&lt;br /&gt;
Before upgrading, check that your server meets all requirements for {{Version}} in &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Server &amp;gt; [[Environment]]&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
See the [{{Release notes}} release notes] in the dev docs for both [{{Release notes}}#Server_requirements server] and [{{Release notes}}#Client_requirements client] software requirements.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* You can only upgrade to Moodle {{Version}} from Moodle 3.1 or later. If upgrading from earlier versions, you must [https://docs.moodle.org/31/en/Upgrading_to_Moodle_3.1 upgrade to 3.1] as a first step.&lt;br /&gt;
&lt;br /&gt;
==Before upgrading==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;We advise that you test the upgrade first on a COPY of your production site, to make sure it works as you expect.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Consider setting the [[Upgrade key|upgrade key]] for your site.&lt;br /&gt;
&lt;br /&gt;
== Backup important data ==&lt;br /&gt;
&lt;br /&gt;
There are three areas that should be backed up before any upgrade:&lt;br /&gt;
#Moodle software (For example, everything in server/htdocs/moodle)&lt;br /&gt;
#Moodle uploaded files (For example, server/moodledata)&lt;br /&gt;
#Moodle database (For example, your Postgres or MySQL database dump)&lt;br /&gt;
&lt;br /&gt;
See [[Site backup]] for more specific information.&lt;br /&gt;
&lt;br /&gt;
== Check for plugin updates ==&lt;br /&gt;
&lt;br /&gt;
If you have [[Automatic updates deployment]] enabled, you will be able to update installed plugins automatically during the upgrade. Just make sure you check for available updates (via the button for it) at the Plugins check screen.&lt;br /&gt;
&lt;br /&gt;
If you are updating plugins manually, it is a good moment now to check in the [http://moodle.org/plugins Moodle Plugins directory] whether there is a {{Version}} version available for any plugins (including themes) that you have previously installed on your site. If so, download the plugin package. In the next step, you will copy it to the appropriate location in your Moodle code (see [[Installing plugins]]).&lt;br /&gt;
&lt;br /&gt;
The upgrade of the plugin will then happen as part of the Moodle upgrade process.&lt;br /&gt;
&lt;br /&gt;
If an out-of-date plugin causes your upgrade to fail, you can usually delete the plugin code rather than uninstalling it from within Moodle so that the data associated with it is not deleted.&lt;br /&gt;
&lt;br /&gt;
==Put your site into maintenance mode==&lt;br /&gt;
Before you begin upgrading your site, you should put it into [[Maintenance_mode | maintenance mode]] to stop any non-admin users from logging in. Then you should wait for any currently running cron processes to complete before proceeding.&lt;br /&gt;
&lt;br /&gt;
== Install the new Moodle software ==&lt;br /&gt;
You can fetch the current version of the software through &lt;br /&gt;
&lt;br /&gt;
wget http://sourceforge.net/projects/moodle/files/Moodle/stable{{Version2}}/moodle-latest-{{Version2}}.tgz&lt;br /&gt;
&lt;br /&gt;
=== Standard install package ===&lt;br /&gt;
&lt;br /&gt;
# Move your old Moodle software program files to another location. &#039;&#039;Do NOT copy new files over the old files.&#039;&#039;&lt;br /&gt;
# Unzip or unpack the upgrade file so that all the new Moodle software program files are in the location the old files used to be in on the server. Moodle will adjust SQL and moodledata if it needs to in the upgrade.&lt;br /&gt;
# Copy your old [[Configuration file|config.php file]] back to the new Moodle directory. &lt;br /&gt;
# As mentioned above, if you had installed any plugins on your site you should add them to the new code tree (Moodle directory structure) now. It is important to check that you get the correct version for your new version of Moodle. Be particularly careful that you do not overwrite any code in the new version of Moodle and that you place the plugin folders in the correct directory (the same directory that they are in in the current installation.)&lt;br /&gt;
# Your moodledata folder should be located separately to your Moodle code folder and, as such, should not need anything done to it.  Moodle 3.0 will throw a warning if it is located in a web accessible folder and the moodledata should never be located in the Moodle code folder.  If you are moving your installation to a new server or new location on your server, then you will need to follow the Migration documents.&lt;br /&gt;
&lt;br /&gt;
====Linux====&lt;br /&gt;
 mv moodle moodle.backup&lt;br /&gt;
 tar xvzf moodle-{{Version}}.tgz&lt;br /&gt;
&lt;br /&gt;
Next, copy across your config.php, any custom plugins, and your .htaccess file if you created one (&#039;&#039;&#039;check that custom plugins are the correct version for your new Moodle first&#039;&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
 cp moodle.backup/config.php moodle&lt;br /&gt;
 cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme&lt;br /&gt;
 cp -pr moodle.backup/mod/mymod moodle/mod/mymod&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to make moodle/config.php (and the rest of the source code) readable by your www server. Ideally the files should not be writeable by your server.&lt;br /&gt;
&lt;br /&gt;
chown -R www-data:www-data moodle (Linux debian - change to appropriate user and group for your OS version)&lt;br /&gt;
chmod -R 755 moodle&lt;br /&gt;
&lt;br /&gt;
If you use cron, take care that cron.php is executeable and uses the correct php command: &lt;br /&gt;
 chmod 740 admin/cli/cron.php (some configurations need chmod 750 or chmod 755)&lt;br /&gt;
 copy the first line from cron.php (if it looks like &#039;#!/usr/local/bin/php&#039; or &#039;#!/usr/local/bin/php5.3&#039;, no need to copy &#039;&amp;lt;?php&#039;) &lt;br /&gt;
if necessary.  However, for a simple upgrade, there should be no need to change anything with cron.&lt;br /&gt;
&lt;br /&gt;
=== Using Git ===&lt;br /&gt;
&lt;br /&gt;
You can use Git for updating or upgrading your Moodle. See [[Git for Administrators]] for details.&lt;br /&gt;
&lt;br /&gt;
===Command line upgrade===&lt;br /&gt;
&lt;br /&gt;
On Linux servers, Moodle {{Version}} supports running the [[CLI|upgrade from the command line]], rather than through a web browser. This is likely to be more reliable, particularly for large sites.&lt;br /&gt;
&lt;br /&gt;
== Finishing the upgrade ==&lt;br /&gt;
&lt;br /&gt;
The last step is to trigger the upgrade processes within Moodle. &lt;br /&gt;
&lt;br /&gt;
If you put your site into Maintenance mode earlier; take it out now!&lt;br /&gt;
&lt;br /&gt;
To do this just go to &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Notifications&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Moodle will automatically detect the new version and perform all the SQL database or file system upgrades that are necessary. If there is anything it can&#039;t do itself (very rare) then you will see messages telling you what you need to do.&lt;br /&gt;
&lt;br /&gt;
Assuming all goes well (no error messages) then you can start using your new version of Moodle and enjoy the new features!&lt;br /&gt;
&lt;br /&gt;
Note: If you are running multiple servers then you should purge all caches manually (via &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Development &amp;gt; Purge all caches&#039;&#039;) after completing the upgrade on all servers.&lt;br /&gt;
&lt;br /&gt;
===Fatal error: Maximum execution time of 30 seconds exceeded...===&lt;br /&gt;
&lt;br /&gt;
If your server uses a main language other than English, you may encounter a &#039;Fatal error: Maximum execution time of 30 seconds exceeded&#039; when you try to upgrade it. You can increase max_execution_time = 160 on php.ini to allow the scripts enough time to process the language update. Otherwise, you can switch to English as the default language before doing the upgrade and back to your original language after a succcessful upgrade. See the forum discussion at https://moodle.org/mod/forum/discuss.php?d=119598.&lt;br /&gt;
&lt;br /&gt;
==After upgrading==&lt;br /&gt;
&lt;br /&gt;
The config.php file from your installation should work fine but if you take a look at config-dist.php that came with Moodle 3.0 there are more/different options available (e.g. database drivers and settings). It&#039;s a good idea to map your old config.php settings to a new one based on the 3.0 config-dist.php.&lt;br /&gt;
&lt;br /&gt;
===Cron===&lt;br /&gt;
&lt;br /&gt;
Cron has received a major update (MDL-25499) and now has support for both scheduled and ad hoc tasks.&lt;br /&gt;
&lt;br /&gt;
The benefits of these changes are:&lt;br /&gt;
* The schedule for every task can be configured by the admin&lt;br /&gt;
* Tasks can run in parallel&lt;br /&gt;
* Cron processes use locking to prevent the same task running at the same time by different processes&lt;br /&gt;
* Clusters with multiple identical application nodes are supported, you can run cron on all of them&lt;br /&gt;
&lt;br /&gt;
A result of this is that cron can be run much more often, which means (for example) forum posts can be sent out sooner.  To take advantage of the new cron system it is now strongly recommended that administrators increase the frequency that cron is run to at least &#039;&#039;once per minute&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
You also may need to modify any automated scripts you have that are parsing the output from cron. It is no longer possible to simply monitor the output of cron for the string &amp;quot;Cron script completed correctly&amp;quot; (if that is what you were doing). An alternative is to monitor the output for the string &amp;quot;task failed:&amp;quot;. If you detect that a task is failing, [[Cron#Debugging_Scheduled_Tasks|here]] are some tips for debugging the failure. &lt;br /&gt;
&lt;br /&gt;
Before the upgrade, there may have been a cron task that was failing, which was preventing the rest of cron from being executed. A failure in any single task will no longer prevent the rest of the Moodle cron tasks from executing, so you may uncover previously masked bugs. It is a good idea to closely monitor the output from cron after the upgrade.&lt;br /&gt;
&lt;br /&gt;
===Assignments===&lt;br /&gt;
&lt;br /&gt;
The old assignment (2.2) module has been removed from core and has been replaced by a stub to support transparently remapping URLs and restoring course backups from the old module to the new one. &lt;br /&gt;
&lt;br /&gt;
If you are still using the old assignment (2.2) module, after upgrading to Moodle 3.0 all assignment (2.2) activities will be hidden. You need to run the [[Assignment upgrade tool]] to un-hide the activities.&lt;br /&gt;
&lt;br /&gt;
If you really, really need to keep using the old assignment (2.2) module, you should update the code to Moodle 3.0, and then replace the &amp;quot;mod/assignment&amp;quot; folder with the one from https://github.com/moodlehq/moodle-mod_assignment/releases before completing the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Possible issues that may affect you in Moodle {{Version}}==&lt;br /&gt;
&lt;br /&gt;
* To use &#039;Run now&#039; links in [[Scheduled tasks]], you need to set &#039;Path to PHP CLI&#039; (pathtophp) in Site administration &amp;gt; Server &amp;gt; System paths.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Items to be added...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
See also the list of [https://tracker.moodle.org/issues/?jql=project%20%3D%20mdl%20AND%20resolution%20%3D%20fixed%20AND%20fixVersion%20in%20(%223.6%22)%20AND%20labels%20%3D%20upgrade_notes upgrade_notes-labelled issues] and [https://tracker.moodle.org/issues/?jql=project%20%3D%20mdl%20AND%20resolution%20%3D%20fixed%20AND%20fixVersion%20in%20(%223.6%22)%20AND%20labels%20%3D%20ui_change%20 ui_change-labelled issues]. &lt;br /&gt;
&lt;br /&gt;
=== Moodle 3.1, 3.2, 3.3, 3.4 and 3.5 improvements ===&lt;br /&gt;
&lt;br /&gt;
Depending on which version you are upgrading from, please see the section &#039;Possible issues that may affect you&#039; in the documentation&lt;br /&gt;
&lt;br /&gt;
* [https://docs.moodle.org/31/en/Upgrading Upgrading to Moodle 3.1]&lt;br /&gt;
* [https://docs.moodle.org/32/en/Upgrading Upgrading to Moodle 3.2]&lt;br /&gt;
* [https://docs.moodle.org/33/en/Upgrading Upgrading to Moodle 3.3]&lt;br /&gt;
* [https://docs.moodle.org/34/en/Upgrading Upgrading to Moodle 3.4]&lt;br /&gt;
* [https://docs.moodle.org/35/en/Upgrading Upgrading to Moodle 3.5]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Installation]]&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/view.php?id=28 Installation help forum] &lt;br /&gt;
* [[dev:Moodle {{Version}} release notes|Moodle {{Version}} release notes]]&lt;br /&gt;
&lt;br /&gt;
[[es:Actualización de moodle]]&lt;br /&gt;
[[fr:Mise à jour]]&lt;br /&gt;
[[ja:Moodleをアップグレードする]]&lt;br /&gt;
[[de:Aktualisierung von Moodle]]&lt;/div&gt;</summary>
		<author><name>Stronk7</name></author>
	</entry>
</feed>