defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_analytics'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'tool_availabilityconditions';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'tool_behat'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_capability'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_cohortroles'; // Full name of the plugin (used for diagnostics).
$plugin->dependencies = array(
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020101300;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'tool_customlang'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2020061501;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'tool_dataprivacy';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_dbtransfer'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'tool_filetypes';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'tool_generator';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'tool_health'; // Full name of the plugin (used for diagnostics)
$plugin->maturity = MATURITY_ALPHA; // this version's maturity level
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_httpsreplace'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'tool_innodb'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'tool_installaddon';
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->maturity = MATURITY_STABLE;
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'tool_langimport'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_licensemanager';
$plugin->maturity = MATURITY_STABLE;
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'logstore_database'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'logstore_legacy'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'logstore_standard'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_log'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_lp'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_lpimportcsv'; // Full name of the plugin (used for diagnostics).
-$plugin->dependencies = array('tool_lp' => 2020060900);
+$plugin->dependencies = array('tool_lp' => 2020110300);
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_lpmigrate'; // Full name of the plugin (used for diagnostics).
$plugin->dependencies = array(
'tool_lp' => ANY_VERSION
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'tool_messageinbound';
*/
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061501; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_mobile'; // Full name of the plugin (used for diagnostics).
$plugin->dependencies = array(
- 'webservice_rest' => 2020060900
+ 'webservice_rest' => 2020110300
);
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_monitor'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'tool_moodlenet';
-$plugin->version = 2020090700;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->maturity = MATURITY_ALPHA;
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'tool_multilangupgrade'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_oauth2'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'tool_phpunit'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_policy'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'tool_profiling'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_recyclebin'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'tool_replace'; // Full name of the plugin (used for diagnostics)
$plugin->maturity = MATURITY_ALPHA; // this version's maturity level
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'tool_spamcleaner'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061501; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'tool_task'; // Full name of the plugin (used for diagnostics)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_templatelibrary'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'tool_unsuproles'; // Full name of the plugin (used for diagnostics)
unset($method['delete']);
unset($method['disable']);
- if (!empty($instance) && $todelete) {
+ if ($todelete) {
// Remove the enrolment method.
- foreach ($instances as $instance) {
- if ($instance->enrol == $enrolmethod) {
- $plugin = $enrolmentplugins[$instance->enrol];
-
- // Ensure user is able to delete the instance.
- if ($plugin->can_delete_instance($instance)) {
- $plugin->delete_instance($instance);
- } else {
- $this->error('errorcannotdeleteenrolment',
- new lang_string('errorcannotdeleteenrolment', 'tool_uploadcourse',
- $plugin->get_instance_name($instance)));
- }
+ if ($instance) {
+ $plugin = $enrolmentplugins[$instance->enrol];
- break;
- }
- }
- } else if (!empty($instance) && $todisable) {
- // Disable the enrolment.
- foreach ($instances as $instance) {
- if ($instance->enrol == $enrolmethod) {
- $plugin = $enrolmentplugins[$instance->enrol];
-
- // Ensure user is able to toggle instance status.
- if ($plugin->can_hide_show_instance($instance)) {
- $plugin->update_status($instance, ENROL_INSTANCE_DISABLED);
- } else {
- $this->error('errorcannotdisableenrolment',
- new lang_string('errorcannotdisableenrolment', 'tool_uploadcourse',
- $plugin->get_instance_name($instance)));
- }
-
- break;
+ // Ensure user is able to delete the instance.
+ if ($plugin->can_delete_instance($instance)) {
+ $plugin->delete_instance($instance);
+ } else {
+ $this->error('errorcannotdeleteenrolment',
+ new lang_string('errorcannotdeleteenrolment', 'tool_uploadcourse',
+ $plugin->get_instance_name($instance)));
}
}
} else {
// Create/update enrolment.
$plugin = $enrolmentplugins[$enrolmethod];
- // Ensure user is able to create/update instance.
+ $status = ($todisable) ? ENROL_INSTANCE_DISABLED : ENROL_INSTANCE_ENABLED;
+
+ // Create a new instance if necessary.
if (empty($instance) && $plugin->can_add_instance($course->id)) {
- $instance = new stdClass();
- $instance->id = $plugin->add_default_instance($course);
+ $instanceid = $plugin->add_default_instance($course);
+ $instance = $DB->get_record('enrol', ['id' => $instanceid]);
$instance->roleid = $plugin->get_config('roleid');
- $instance->status = ENROL_INSTANCE_ENABLED;
- } else if (!empty($instance) && $plugin->can_edit_instance($instance)) {
- $plugin->update_status($instance, ENROL_INSTANCE_ENABLED);
- } else {
+ // On creation the user can decide the status.
+ $plugin->update_status($instance, $status);
+ }
+
+ // Check if the we need to update the instance status.
+ if ($instance && $status != $instance->status) {
+ if ($plugin->can_hide_show_instance($instance)) {
+ $plugin->update_status($instance, $status);
+ } else {
+ $this->error('errorcannotdisableenrolment',
+ new lang_string('errorcannotdisableenrolment', 'tool_uploadcourse',
+ $plugin->get_instance_name($instance)));
+ break;
+ }
+ }
+
+ if (empty($instance) || !$plugin->can_edit_instance($instance)) {
$this->error('errorcannotcreateorupdateenrolment',
new lang_string('errorcannotcreateorupdateenrolment', 'tool_uploadcourse',
$plugin->get_instance_name($instance)));
--- /dev/null
+@tool @tool_uploadcourse @_file_upload
+Feature: An admin can update courses enrolments using a CSV file
+ In order to update courses enrolments using a CSV file
+ As an admin
+ I need to be able to upload a CSV file with enrolment methods for the courses
+
+ Background:
+ Given the following "courses" exist:
+ | fullname | shortname | category |
+ | Course 1 | C1 | 0 |
+ And I log in as "admin"
+
+ @javascript
+ Scenario: Creating enrolment method by enable it
+ Given I am on "Course 1" course homepage
+ And I navigate to "Users > Enrolment methods" in current page administration
+ And I click on "Delete" "link" in the "Guest access" "table_row"
+ And I click on "Continue" "button"
+ And I should not see "Guest access" in the "generaltable" "table"
+ And I navigate to "Courses > Upload courses" in site administration
+ And I upload "admin/tool/uploadcourse/tests/fixtures/enrolment_enable.csv" file to "File" filemanager
+ And I set the field "Upload mode" to "Only update existing courses"
+ And I set the field "Update mode" to "Update with CSV data only"
+ And I set the field "Allow deletes" to "Yes"
+ And I click on "Preview" "button"
+ When I click on "Upload courses" "button"
+ Then I should see "Course updated"
+ And I am on "Course 1" course homepage
+ And I navigate to "Users > Enrolment methods" in current page administration
+ And "Disable" "icon" should exist in the "Guest access" "table_row"
+
+ @javascript
+ Scenario: Creating enrolment method by disabling it
+ Given I am on "Course 1" course homepage
+ And I navigate to "Users > Enrolment methods" in current page administration
+ And I click on "Delete" "link" in the "Guest access" "table_row"
+ And I click on "Continue" "button"
+ And I should not see "Guest access" in the "generaltable" "table"
+ And I navigate to "Courses > Upload courses" in site administration
+ And I upload "admin/tool/uploadcourse/tests/fixtures/enrolment_disable.csv" file to "File" filemanager
+ And I set the field "Upload mode" to "Only update existing courses"
+ And I set the field "Update mode" to "Update with CSV data only"
+ And I set the field "Allow deletes" to "Yes"
+ And I click on "Preview" "button"
+ When I click on "Upload courses" "button"
+ Then I should see "Course updated"
+ And I am on "Course 1" course homepage
+ And I navigate to "Users > Enrolment methods" in current page administration
+ And "Enable" "icon" should exist in the "Guest access" "table_row"
+
+ @javascript
+ Scenario: Enabling enrolment method
+ Given I navigate to "Courses > Upload courses" in site administration
+ And I upload "admin/tool/uploadcourse/tests/fixtures/enrolment_enable.csv" file to "File" filemanager
+ And I set the field "Upload mode" to "Only update existing courses"
+ And I set the field "Update mode" to "Update with CSV data only"
+ And I set the field "Allow deletes" to "Yes"
+ And I click on "Preview" "button"
+ When I click on "Upload courses" "button"
+ Then I should see "Course updated"
+ And I am on "Course 1" course homepage
+ And I navigate to "Users > Enrolment methods" in current page administration
+ And "Disable" "icon" should exist in the "Guest access" "table_row"
+
+ @javascript
+ Scenario: Disable an enrolment method
+ Given I am on "Course 1" course homepage
+ And I navigate to "Users > Enrolment methods" in current page administration
+ And I click on "Enable" "link" in the "Guest access" "table_row"
+ And "Disable" "icon" should exist in the "Guest access" "table_row"
+ And I navigate to "Courses > Upload courses" in site administration
+ And I upload "admin/tool/uploadcourse/tests/fixtures/enrolment_disable.csv" file to "File" filemanager
+ And I set the field "Upload mode" to "Only update existing courses"
+ And I set the field "Update mode" to "Update with CSV data only"
+ And I set the field "Allow deletes" to "Yes"
+ And I click on "Preview" "button"
+ When I click on "Upload courses" "button"
+ Then I should see "Course updated"
+ And I am on "Course 1" course homepage
+ And I navigate to "Users > Enrolment methods" in current page administration
+ And "Enable" "icon" should exist in the "Guest access" "table_row"
+
+ @javascript
+ Scenario: Delete an enrolment method
+ Given I navigate to "Courses > Upload courses" in site administration
+ And I upload "admin/tool/uploadcourse/tests/fixtures/enrolment_delete.csv" file to "File" filemanager
+ And I set the field "Upload mode" to "Only update existing courses"
+ And I set the field "Update mode" to "Update with CSV data only"
+ And I set the field "Allow deletes" to "Yes"
+ And I click on "Preview" "button"
+ When I click on "Upload courses" "button"
+ Then I should see "Course updated"
+ And I am on "Course 1" course homepage
+ And I navigate to "Users > Enrolment methods" in current page administration
+ And I should not see "Guest access" in the "generaltable" "table"
+
+ @javascript
+ Scenario: Delete an unexistent enrolment method (nothing should change)
+ Given I am on "Course 1" course homepage
+ And I navigate to "Users > Enrolment methods" in current page administration
+ And I click on "Delete" "link" in the "Guest access" "table_row"
+ And I click on "Continue" "button"
+ And I should not see "Guest access" in the "generaltable" "table"
+ And I navigate to "Courses > Upload courses" in site administration
+ And I upload "admin/tool/uploadcourse/tests/fixtures/enrolment_delete.csv" file to "File" filemanager
+ And I set the field "Upload mode" to "Only update existing courses"
+ And I set the field "Update mode" to "Update with CSV data only"
+ And I set the field "Allow deletes" to "Yes"
+ And I click on "Preview" "button"
+ When I click on "Upload courses" "button"
+ Then I should see "Course updated"
+ And I am on "Course 1" course homepage
+ And I navigate to "Users > Enrolment methods" in current page administration
+ And I should not see "Guest access" in the "generaltable" "table"
--- /dev/null
+shortname,category,enrolment_1,enrolment_1_delete
+C1,1,guest,1
\ No newline at end of file
--- /dev/null
+shortname,category,enrolment_1,enrolment_1_disable
+C1,1,guest,1
\ No newline at end of file
--- /dev/null
+shortname,category,enrolment_1,enrolment_1_disable
+C1,1,guest,0
\ No newline at end of file
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_uploadcourse'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'tool_uploaduser'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020082701; // The current module version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current module version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'tool_usertours'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'tool_xmldb'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020081700; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'auth_cas'; // Full name of the plugin (used for diagnostics)
-$plugin->dependencies = array('auth_ldap' => 2020060900);
+$plugin->dependencies = array('auth_ldap' => 2020110300);
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'auth_db'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'auth_email'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020081700; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'auth_ldap'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'auth_lti'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'auth_manual'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'auth_mnet'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'auth_nologin'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'auth_none'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'auth_oauth2'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'auth_shibboleth'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'auth_webservice'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'availability_completion';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'availability_date';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'availability_grade';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'availability_group';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'availability_grouping';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'availability_profile';
* point is backup when some behavior/approach channged, in order to allow
* conditional coding based on it.
*/
- const VERSION = 2020061500;
+ const VERSION = 2020110900;
/**
* Usually same than major release zero version, mainly for informative/historic purposes.
*/
$options = array();
$options['keep_roles_and_enrolments'] = $this->get_setting_value('keep_roles_and_enrolments');
$options['keep_groups_and_groupings'] = $this->get_setting_value('keep_groups_and_groupings');
+ $options['userid'] = $this->userid;
restore_dbops::delete_course_content($this->get_courseid(), $options);
}
// If this is not a course restore or single activity restore (e.g. duplicate), inform the plan we are not
$data = (object)$data;
// Check roleid is one of the mapped ones
- $newroleid = $this->get_mappingid('role', $data->roleid);
+ $newrole = $this->get_mapping('role', $data->roleid);
+ $newroleid = $newrole->newitemid ?? false;
+ $userid = $this->task->get_userid();
+
// If newroleid and context are valid assign it via API (it handles dupes and so on)
if ($newroleid && $this->task->get_contextid()) {
- if (!get_capability_info($data->capability)) {
+ if (!$capability = get_capability_info($data->capability)) {
$this->log("Capability '{$data->capability}' was not found!", backup::LOG_WARNING);
} else {
- // TODO: assign_capability() needs one userid param to be able to specify our restore userid.
- assign_capability($data->capability, $data->permission, $newroleid, $this->task->get_contextid());
+ $context = context::instance_by_id($this->task->get_contextid());
+ $overrideableroles = get_overridable_roles($context, ROLENAME_SHORT);
+ $safecapability = is_safe_capability($capability);
+
+ // Check if the new role is an overrideable role AND if the user performing the restore has the
+ // capability to assign the capability.
+ if (in_array($newrole->info['shortname'], $overrideableroles) &&
+ ($safecapability && has_capability('moodle/role:safeoverride', $context, $userid) ||
+ !$safecapability && has_capability('moodle/role:override', $context, $userid))
+ ) {
+ assign_capability($data->capability, $data->permission, $newroleid, $this->task->get_contextid());
+ } else {
+ $this->log("Insufficient capability to assign capability '{$data->capability}' to role!", backup::LOG_WARNING);
+ }
}
}
}
}
$course = $DB->get_record('course', array('id'=>$this->get_courseid()), '*', MUST_EXIST);
+ // Return any existing course enrolment instances.
+ $enrolinstances = enrol_get_instances($course->id, false);
+
+ if ($enrolinstances) {
+ // Something already added instances.
+ // Get the existing enrolment methods in the course.
+ $enrolmethods = array_map(function($enrolinstance) {
+ return $enrolinstance->enrol;
+ }, $enrolinstances);
- if ($DB->record_exists('enrol', array('courseid'=>$this->get_courseid(), 'enrol'=>'manual'))) {
- // Something already added instances, do not add default instances.
$plugins = enrol_get_plugins(true);
- foreach ($plugins as $plugin) {
+ foreach ($plugins as $pluginname => $plugin) {
+ // Make sure all default enrolment methods exist in the course.
+ if (!in_array($pluginname, $enrolmethods)) {
+ $plugin->course_updated(true, $course, null);
+ }
$plugin->restore_sync_course($course);
}
);
if (has_capability('moodle/badges:configuredetails', $context)) {
- $row[] = new tabobject('details',
+ $row[] = new tabobject('badge',
new moodle_url('/badges/edit.php', array('id' => $badgeid, 'action' => 'badge')),
get_string('bdetails', 'badges')
);
if (has_capability('moodle/badges:configuredetails', $context)) {
$alignments = $DB->count_records_sql("SELECT COUNT(bc.id)
FROM {badge_alignment} bc WHERE bc.badgeid = :badgeid", array('badgeid' => $badgeid));
- $row[] = new tabobject('balignment',
+ $row[] = new tabobject('alignment',
new moodle_url('/badges/alignment.php', array('id' => $badgeid)),
get_string('balignment', 'badges', $alignments)
);
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_activity_modules'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'block_activity_results'; // Full name of the plugin (used for diagnostics).
\ No newline at end of file
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_admin_bookmarks'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'block_badges';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_blog_menu'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_blog_recent'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_blog_tags'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_calendar_month'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_calendar_upcoming'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_comments'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'block_completionstatus';
-$plugin->dependencies = array('report_completion' => 2020060900);
+$plugin->dependencies = array('report_completion' => 2020110300);
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_course_list'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_course_summary'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_feedback'; // Full name of the plugin (used for diagnostics)
-$plugin->dependencies = array('mod_feedback' => 2020060900);
+$plugin->dependencies = array('mod_feedback' => 2020110300);
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'block_globalsearch';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_glossary_random'; // Full name of the plugin (used for diagnostics)
-$plugin->dependencies = array('mod_glossary' => 2020060900);
+$plugin->dependencies = array('mod_glossary' => 2020110300);
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_html'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_login'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'block_lp';
$plugin->dependencies = array(
'tool_lp' => ANY_VERSION
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_mentees'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_mnet_hosts'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'block_myoverview'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_myprofile'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_navigation'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_news_items'; // Full name of the plugin (used for diagnostics)
-$plugin->dependencies = array('mod_forum' => 2020060900);
+$plugin->dependencies = array('mod_forum' => 2020110300);
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_online_users'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_private_files'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_quiz_results'; // Full name of the plugin (used for diagnostics)
-$plugin->dependencies = array('mod_quiz' => 2020060900);
+$plugin->dependencies = array('mod_quiz' => 2020110300);
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_recent_activity'; // Full name of the plugin (used for diagnostics)
*/
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'block_recentlyaccessedcourses'; // Full name of the plugin (used for diagnostics).
*/
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'block_recentlyaccesseditems'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_rss_client'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_search_forums'; // Full name of the plugin (used for diagnostics)
-$plugin->dependencies = array('mod_forum' => 2020060900);
+$plugin->dependencies = array('mod_forum' => 2020110300);
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_section_links'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_selfcompletion'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_settings'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_site_main_menu'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_social_activities'; // Full name of the plugin (used for diagnostics)
*/
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'block_starredcourses';
\ No newline at end of file
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_tag_flickr'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_tag_youtube'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'block_tags'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'block_timeline'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'cachelock_file'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->maturity = MATURITY_STABLE;
$plugin->component = 'cachestore_apcu';
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2020061500; // The current module version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current module version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'cachestore_file'; // Full name of the plugin.
\ No newline at end of file
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2020061500; // The current module version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current module version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'cachestore_memcached'; // Full name of the plugin.
\ No newline at end of file
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2020061500; // The current module version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current module version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'cachestore_mongodb'; // Full name of the plugin.
\ No newline at end of file
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->maturity = MATURITY_STABLE;
$plugin->component = 'cachestore_redis';
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2020061500; // The current module version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current module version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'cachestore_session'; // Full name of the plugin.
\ No newline at end of file
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2020061500; // The current module version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current module version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'cachestore_static'; // Full name of the plugin.
\ No newline at end of file
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'calendartype_gregorian'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'contenttype_h5p'; // Full name of the plugin (used for diagnostics).
</div>
{{#contents}}
<div class="cb-listitem"
- data-file="{{{ title }}}"
- data-name="{{{ name }}}"
+ data-file="{{ title }}"
+ data-name="{{ name }}"
data-bytes="{{ bytes }}"
data-timemodified="{{ timemodified }}"
- data-type="{{{ type }}}"
- data-author="{{{ author }}}">
+ data-type="{{ type }}"
+ data-author="{{ author }}">
<div class="cb-file cb-column position-relative">
- <div class="cb-thumbnail" role="img" aria-label="{{{ name }}}"
+ <div class="cb-thumbnail" role="img" aria-label="{{ name }}"
style="background-image: url('{{{ icon }}}');">
</div>
- <a href="{{{ link }}}" class="cb-link stretched-link" title="{{{ name }}}">
+ <a href="{{{ link }}}" class="cb-link stretched-link" title="{{ name }}">
<span class="cb-name word-break-all clamp-2" data-region="cb-content-name">
{{{ name }}}
</span>
}}
<div class="form-check w-100 justify-content-start">
<label for="newname">{{#str}}contentname, core_contentbank{{/str}}</label>
- <input type="text" size="5" id="newname" name="newname" value="{{{ name }}}" class="form-control text-ltr">
+ <input type="text" size="5" id="newname" name="newname" value="{{ name }}" class="form-control text-ltr">
</div>
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'format_singleactivity'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'format_social'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'format_topics'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'format_weeks'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'customfield_checkbox';
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'customfield_date';
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'customfield_select';
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'customfield_text';
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'customfield_textarea';
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'dataformat_csv';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'dataformat_excel';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'dataformat_html';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'dataformat_json';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'dataformat_ods';
// height. Solution similar to that at https://stackoverflow.com/a/1943096.
$pdf2 = clone $this->pdf;
$pdf2->startTransaction();
+ $numpages = $pdf2->getNumPages();
$pdf2->AddPage('L');
$pdf2->writeHTMLCell($this->colwidth, 0, '', '', $cell, 1, 1, false, true, 'L');
- $rowheight = max($rowheight, $pdf2->getY() - $pdf2->getMargins()['top']);
+ $pagesadded = $pdf2->getNumPages() - $numpages;
+ $pageheight = $pdf2->getPageHeight() - $pdf2->getMargins()['top'] - $pdf2->getMargins()['bottom'];
+ $cellheight = ($pagesadded - 1) * $pageheight + $pdf2->getLastH();
+ $rowheight = max($rowheight, $cellheight);
$pdf2->rollbackTransaction();
}
$margins = $this->pdf->getMargins();
- if ($this->pdf->GetY() + $rowheight + $margins['bottom'] > $this->pdf->getPageHeight()) {
+ if ($this->pdf->getNumPages() > 1 &&
+ ($this->pdf->GetY() + $rowheight + $margins['bottom'] > $this->pdf->getPageHeight())) {
$this->pdf->AddPage('L');
$this->print_heading();
}
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'dataformat_pdf';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'enrol_category'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'enrol_cohort'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'enrol_database'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020102700; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'enrol_fee'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDRR)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDRR)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'enrol_flatfile'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'enrol_guest'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'enrol_imsenterprise';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'enrol_ldap'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'enrol_lti'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'enrol_manual'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'enrol_meta'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'enrol_mnet'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'enrol_paypal'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061501; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'enrol_self'; // Full name of the plugin (used for diagnostics)
$this->assertEquals(array($course2->id, $course1->id, $course3->id), array_keys($courses));
}
+ /**
+ * Test enrol_course_delete() without passing a user id. When a value for user id is not present, the method
+ * should delete all enrolment related data in the course.
+ */
+ public function test_enrol_course_delete_without_userid() {
+ global $DB;
+
+ $this->resetAfterTest();
+
+ // Create users.
+ $user1 = $this->getDataGenerator()->create_user();
+ $user2 = $this->getDataGenerator()->create_user();
+ // Create a course.
+ $course = $this->getDataGenerator()->create_course();
+ $coursecontext = context_course::instance($course->id);
+
+ $studentrole = $DB->get_record('role', ['shortname' => 'student']);
+
+ $manual = enrol_get_plugin('manual');
+ $manualinstance = $DB->get_record('enrol', ['courseid' => $course->id, 'enrol' => 'manual'], '*', MUST_EXIST);
+ // Enrol user1 as a student in the course using manual enrolment.
+ $manual->enrol_user($manualinstance, $user1->id, $studentrole->id);
+
+ $self = enrol_get_plugin('self');
+ $selfinstance = $DB->get_record('enrol', ['courseid' => $course->id, 'enrol' => 'self'], '*', MUST_EXIST);
+ $self->update_status($selfinstance, ENROL_INSTANCE_ENABLED);
+ // Enrol user2 as a student in the course using self enrolment.
+ $self->enrol_user($selfinstance, $user2->id, $studentrole->id);
+
+ // Delete all enrolment related records in the course.
+ enrol_course_delete($course);
+
+ // The course enrolment of user1 should not exists.
+ $user1enrolment = $DB->get_record('user_enrolments',
+ ['enrolid' => $manualinstance->id, 'userid' => $user1->id]);
+ $this->assertFalse($user1enrolment);
+
+ // The role assignment of user1 should not exists.
+ $user1roleassignment = $DB->get_record('role_assignments',
+ ['roleid' => $studentrole->id, 'userid'=> $user1->id, 'contextid' => $coursecontext->id]
+ );
+ $this->assertFalse($user1roleassignment);
+
+ // The course enrolment of user2 should not exists.
+ $user2enrolment = $DB->get_record('user_enrolments',
+ ['enrolid' => $selfinstance->id, 'userid' => $user2->id]);
+ $this->assertFalse($user2enrolment);
+
+ // The role assignment of user2 should not exists.
+ $user2roleassignment = $DB->get_record('role_assignments',
+ ['roleid' => $studentrole->id, 'userid'=> $user2->id, 'contextid' => $coursecontext->id]);
+ $this->assertFalse($user2roleassignment);
+
+ // All existing course enrolment instances should not exists.
+ $enrolmentinstances = enrol_get_instances($course->id, false);
+ $this->assertCount(0, $enrolmentinstances);
+ }
+
+ /**
+ * Test enrol_course_delete() when user id is present.
+ * When a value for user id is present, the method should make sure the user has the proper capability to
+ * un-enrol users before removing the enrolment data. If the capabilities are missing the data should not be removed.
+ *
+ * @dataProvider enrol_course_delete_with_userid_provider
+ * @param array $excludedcapabilities The capabilities that should be excluded from the user's role
+ * @param bool $expected The expected results
+ */
+ public function test_enrol_course_delete_with_userid($excludedcapabilities, $expected) {
+ global $DB;
+
+ $this->resetAfterTest();
+ // Create users.
+ $user1 = $this->getDataGenerator()->create_user();
+ $user2 = $this->getDataGenerator()->create_user();
+ $user3 = $this->getDataGenerator()->create_user();
+ // Create a course.
+ $course = $this->getDataGenerator()->create_course();
+ $coursecontext = context_course::instance($course->id);
+
+ $studentrole = $DB->get_record('role', ['shortname' => 'student']);
+ $editingteacherrole = $DB->get_record('role', ['shortname' => 'editingteacher']);
+
+ $manual = enrol_get_plugin('manual');
+ $manualinstance = $DB->get_record('enrol', ['courseid' => $course->id, 'enrol' => 'manual'],
+ '*', MUST_EXIST);
+ // Enrol user1 as a student in the course using manual enrolment.
+ $manual->enrol_user($manualinstance, $user1->id, $studentrole->id);
+ // Enrol user3 as an editing teacher in the course using manual enrolment.
+ // By default, the editing teacher role has the capability to un-enroll users which have been enrolled using
+ // the existing enrolment methods.
+ $manual->enrol_user($manualinstance, $user3->id, $editingteacherrole->id);
+
+ $self = enrol_get_plugin('self');
+ $selfinstance = $DB->get_record('enrol', ['courseid' => $course->id, 'enrol' => 'self'],
+ '*', MUST_EXIST);
+ $self->update_status($selfinstance, ENROL_INSTANCE_ENABLED);
+ // Enrol user2 as a student in the course using self enrolment.
+ $self->enrol_user($selfinstance, $user2->id, $studentrole->id);
+
+ foreach($excludedcapabilities as $capability) {
+ // Un-assign the given capability from the editing teacher role.
+ unassign_capability($capability, $editingteacherrole->id);
+ }
+
+ // Delete only enrolment related records in the course where user3 has the required capability.
+ enrol_course_delete($course, $user3->id);
+
+ // Check the existence of the course enrolment of user1.
+ $user1enrolmentexists = (bool) $DB->count_records('user_enrolments',
+ ['enrolid' => $manualinstance->id, 'userid' => $user1->id]);
+ $this->assertEquals($expected['User 1 course enrolment exists'], $user1enrolmentexists);
+
+ // Check the existence of the role assignment of user1 in the course.
+ $user1roleassignmentexists = (bool) $DB->count_records('role_assignments',
+ ['roleid' => $studentrole->id, 'userid' => $user1->id, 'contextid' => $coursecontext->id]);
+ $this->assertEquals($expected['User 1 role assignment exists'], $user1roleassignmentexists);
+
+ // Check the existence of the course enrolment of user2.
+ $user2enrolmentexists = (bool) $DB->count_records('user_enrolments',
+ ['enrolid' => $selfinstance->id, 'userid' => $user2->id]);
+ $this->assertEquals($expected['User 2 course enrolment exists'], $user2enrolmentexists);
+
+ // Check the existence of the role assignment of user2 in the course.
+ $user2roleassignmentexists = (bool) $DB->count_records('role_assignments',
+ ['roleid' => $studentrole->id, 'userid' => $user2->id, 'contextid' => $coursecontext->id]);
+ $this->assertEquals($expected['User 2 role assignment exists'], $user2roleassignmentexists);
+
+ // Check the existence of the course enrolment of user3.
+ $user3enrolmentexists = (bool) $DB->count_records('user_enrolments',
+ ['enrolid' => $manualinstance->id, 'userid' => $user3->id]);
+ $this->assertEquals($expected['User 3 course enrolment exists'], $user3enrolmentexists);
+
+ // Check the existence of the role assignment of user3 in the course.
+ $user3roleassignmentexists = (bool) $DB->count_records('role_assignments',
+ ['roleid' => $editingteacherrole->id, 'userid' => $user3->id, 'contextid' => $coursecontext->id]);
+ $this->assertEquals($expected['User 3 role assignment exists'], $user3roleassignmentexists);
+
+ // Check the existence of the manual enrolment instance in the course.
+ $manualinstance = (bool) $DB->count_records('enrol', ['enrol' => 'manual', 'courseid' => $course->id]);
+ $this->assertEquals($expected['Manual course enrolment instance exists'], $manualinstance);
+
+ // Check existence of the self enrolment instance in the course.
+ $selfinstance = (bool) $DB->count_records('enrol', ['enrol' => 'self', 'courseid' => $course->id]);
+ $this->assertEquals($expected['Self course enrolment instance exists'], $selfinstance);
+ }
+
+ /**
+ * Data provider for test_enrol_course_delete_with_userid().
+ *
+ * @return array
+ */
+ public function enrol_course_delete_with_userid_provider() {
+ return [
+ 'The teacher can un-enrol users in a course' =>
+ [
+ 'excludedcapabilities' => [],
+ 'results' => [
+ // Whether certain enrolment related data still exists in the course after the deletion.
+ // When the user has the capabilities to un-enrol users and the enrolment plugins allow manual
+ // unenerolment than all course enrolment data should be removed.
+ 'Manual course enrolment instance exists' => false,
+ 'Self course enrolment instance exists' => false,
+ 'User 1 course enrolment exists' => false,
+ 'User 1 role assignment exists' => false,
+ 'User 2 course enrolment exists' => false,
+ 'User 2 role assignment exists' => false,
+ 'User 3 course enrolment exists' => false,
+ 'User 3 role assignment exists' => false
+ ],
+ ],
+ 'The teacher cannot un-enrol self enrolled users' =>
+ [
+ 'excludedcapabilities' => [
+ // Exclude the following capabilities for the editing teacher.
+ 'enrol/self:unenrol'
+ ],
+ 'results' => [
+ // When the user does not have the capabilities to un-enrol self enrolled users, the data
+ // related to this enrolment method should not be removed. Everything else should be removed.
+ 'Manual course enrolment instance exists' => false,
+ 'Self course enrolment instance exists' => true,
+ 'User 1 course enrolment exists' => false,
+ 'User 1 role assignment exists' => false,
+ 'User 2 course enrolment exists' => true,
+ 'User 2 role assignment exists' => true,
+ 'User 3 course enrolment exists' => false,
+ 'User 3 role assignment exists' => false
+ ],
+ ],
+ 'The teacher cannot un-enrol self and manually enrolled users' =>
+ [
+ 'excludedcapabilities' => [
+ // Exclude the following capabilities for the editing teacher.
+ 'enrol/manual:unenrol',
+ 'enrol/self:unenrol'
+ ],
+ 'results' => [
+ // When the user does not have the capabilities to un-enrol self and manually enrolled users,
+ // the data related to these enrolment methods should not be removed.
+ 'Manual course enrolment instance exists' => true,
+ 'Self course enrolment instance exists' => true,
+ 'User 1 course enrolment exists' => true,
+ 'User 1 role assignment exists' => true,
+ 'User 2 course enrolment exists' => true,
+ 'User 2 role assignment exists' => true,
+ 'User 3 course enrolment exists' => true,
+ 'User 3 role assignment exists' => true
+ ],
+ ],
+ ];
+ }
+
+
public function test_enrol_user_sees_own_courses() {
global $DB, $CFG;
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'fileconverter_googledrive'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'fileconverter_unoconv'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'filter_activitynames'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'filter_algebra'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'filter_censor'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component= 'filter_data';
-$plugin->dependencies = array('mod_data' => 2020060900);
+$plugin->dependencies = array('mod_data' => 2020110300);
defined('MOODLE_INTERNAL') || die;
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'filter_displayh5p';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'filter_emailprotect'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'filter_emoticon'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component= 'filter_glossary';
-$plugin->dependencies = array('mod_glossary' => 2020060900);
+$plugin->dependencies = array('mod_glossary' => 2020110300);
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component= 'filter_mathjaxloader';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'filter_mediaplugin'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'filter_multilang'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'filter_tex'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'filter_tidy'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'filter_urltolink'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'gradeexport_ods'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'gradeexport_txt'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'gradeexport_xls'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'gradeexport_xml'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'gradingform_guide';
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->maturity = MATURITY_STABLE;
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'gradingform_rubric';
-$plugin->version = 2020061500;
+$plugin->version = 2020110900;
-$plugin->requires = 2020060900;
+$plugin->requires = 2020110300;
$plugin->maturity = MATURITY_STABLE;
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'gradeimport_csv'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'gradeimport_direct'; // Full name of the plugin (used for diagnostics).
-$plugin->dependencies = array('gradeimport_csv' => 2020060900); // Grade import csv is required for this plugin.
\ No newline at end of file
+$plugin->dependencies = array('gradeimport_csv' => 2020110300); // Grade import csv is required for this plugin.
\ No newline at end of file
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'gradeimport_xml'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'gradereport_grader'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
$plugin->component = 'gradereport_history';
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'gradereport_outcomes'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'gradereport_overview'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'gradereport_singleview'; // Full name of the plugin (used for diagnostics).
-$plugin->version = 2020061500;
-$plugin->requires = 2020060900;
+$plugin->version = 2020110900;
+$plugin->requires = 2020110300;
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'gradereport_user'; // Full name of the plugin (used for diagnostics)
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current module version (Date: YYYYMMDDXX)
-$plugin->requires = 2020060900; // Requires this Moodle version
+$plugin->version = 2020110900; // The current module version (Date: YYYYMMDDXX)
+$plugin->requires = 2020110300; // Requires this Moodle version
$plugin->component = 'h5plib_v124'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'antivirus_clamav'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'atto_accessibilitychecker'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'atto_accessibilityhelper'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'atto_align'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'atto_backcolor'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'atto_bold'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2020061500; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires = 2020060900; // Requires this Moodle version.
+$plugin->version = 2020110900; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires = 2020110300; // Requires this Moodle version.
$plugin->component = 'atto_charmap'; // Full name of the plugin (used for diagnostics).
defined('MOODLE_INTERNAL') || die();
-$plugin->versi