diff --git a/.travis.yml b/.travis.yml index 35aa3c88e..1086084d2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,8 +9,8 @@ cache: - $HOME/.npm php: - - 5.6 - - 7.1 + - 7.0 + - 7.2 addons: firefox: 47.0.1 @@ -22,7 +22,7 @@ addons: env: global: - - MOODLE_BRANCH=MOODLE_33_STABLE + - MOODLE_BRANCH=MOODLE_34_STABLE - IGNORE_NAMES=mobile_*.mustache # Mobile mustache has specific syntax, ignore their templates matrix: - DB=pgsql diff --git a/CHANGES.md b/CHANGES.md index 79d2f5fe6..6ed260d9f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,6 @@ # Changelog -All notable changes to this project will be documented in this file. +All notable changes to this project will be documented in this file. Note - All hash comments refer to the issue number. Eg. #169 refers to https://github.com/markn86/moodle-mod_customcert/issues/169. @@ -18,12 +18,14 @@ Note - All hash comments refer to the issue number. Eg. #169 refers to https://g ### Fixed +- Missing implementation for privacy provider (#260). - Use course module context when calling format_string/text (#200). - Exception being thrown when adding the 'teachername' element to site template (#261). -## [3.3.15] - 2018-12-20 +## [3.4.6] - 2018-12-20 ### Added +- GDPR: Add support for removal of users from a context (see MDL-62560) (#252). - Images can be made transparent (#186). - Set default values of activity instance settings (#180). - Allow element plugins to control if they can be added to a certificate (#225). @@ -85,15 +87,15 @@ Note - All hash comments refer to the issue number. Eg. #169 refers to https://g their certificate. It also allows teachers to view the list of issued certificates, with the ability to revoke any. - - This is for the soon-to-be released Moodle Mobile v3.5.0 + + This is for the soon-to-be released Moodle Mobile v3.5.0 (not to be confused with your Moodle site version) and will not work on Mobile versions earlier than this. - + If you are running a Moodle site on version 3.4 or below you will need to install the local_mobile plugin in order for this to work. - + If you are running a Moodle site on version 3.0 or below then you will need to upgrade. ``` diff --git a/classes/element_helper.php b/classes/element_helper.php index 2a1cffa56..153dae0c2 100644 --- a/classes/element_helper.php +++ b/classes/element_helper.php @@ -389,7 +389,7 @@ public static function get_courseid($elementid) { * @param int $elementid The element id * @return \context The context */ - public static function get_context($elementid) { + public static function get_context(int $elementid) : \context { global $DB; $sql = "SELECT ct.contextid diff --git a/classes/output/mobile.php b/classes/output/mobile.php index 44264ec4d..5e480c731 100644 --- a/classes/output/mobile.php +++ b/classes/output/mobile.php @@ -202,7 +202,7 @@ private static function update_active_group($groupmode, $groupid, $allowedgroups * @param \context $context * @param string $cap */ - protected static function require_capability(\stdClass $cm, \context $context, $cap) { + protected static function require_capability(\stdClass $cm, \context $context, string $cap) { require_login($cm->course, false, $cm, true, true); require_capability($cap, $context); } diff --git a/classes/privacy/provider.php b/classes/privacy/provider.php index 406447425..29bebc63c 100644 --- a/classes/privacy/provider.php +++ b/classes/privacy/provider.php @@ -25,9 +25,11 @@ use core_privacy\local\metadata\collection; use core_privacy\local\request\approved_contextlist; +use core_privacy\local\request\approved_userlist; use core_privacy\local\request\contextlist; use core_privacy\local\request\helper; use core_privacy\local\request\transform; +use core_privacy\local\request\userlist; use core_privacy\local\request\writer; defined('MOODLE_INTERNAL') || die(); @@ -40,7 +42,8 @@ */ class provider implements \core_privacy\local\metadata\provider, - \core_privacy\local\request\plugin\provider { + \core_privacy\local\request\plugin\provider, + \core_privacy\local\request\core_userlist_provider { /** * Return the fields which contain personal data. @@ -48,7 +51,7 @@ class provider implements * @param collection $items a reference to the collection to use to store the metadata. * @return collection the updated collection of metadata items. */ - public static function get_metadata(collection $items) { + public static function get_metadata(collection $items) : collection { $items->add_database_table( 'customcert_issues', [ @@ -70,7 +73,7 @@ public static function get_metadata(collection $items) { * @param int $userid the userid. * @return contextlist the list of contexts containing user info for the user. */ - public static function get_contexts_for_userid($userid) { + public static function get_contexts_for_userid(int $userid) : contextlist { $sql = "SELECT c.id FROM {context} c INNER JOIN {course_modules} cm @@ -96,6 +99,37 @@ public static function get_contexts_for_userid($userid) { return $contextlist; } + /** + * Get the list of users who have data within a context. + * + * @param userlist $userlist The userlist containing the list of users who have data in this context/plugin combination. + */ + public static function get_users_in_context(userlist $userlist) { + $context = $userlist->get_context(); + + if (!$context instanceof \context_module) { + return; + } + + // Fetch all users who have a custom certificate. + $sql = "SELECT customcertissues.userid + FROM {course_modules} cm + JOIN {modules} m + ON m.id = cm.module AND m.name = :modname + JOIN {customcert} customcert + ON customcert.id = cm.instance + JOIN {customcert_issues} customcertissues + ON customcertissues.customcertid = customcert.id + WHERE cm.id = :cmid"; + + $params = [ + 'cmid' => $context->instanceid, + 'modname' => 'customcert', + ]; + + $userlist->add_from_sql('userid', $sql, $params); + } + /** * Export personal data for the given approved_contextlist. User and context information is contained within the contextlist. * @@ -182,6 +216,33 @@ public static function delete_data_for_user(approved_contextlist $contextlist) { } } + /** + * Delete multiple users within a single context. + * + * @param approved_userlist $userlist The approved context and user information to delete information for. + */ + public static function delete_data_for_users(approved_userlist $userlist) { + global $DB; + + $context = $userlist->get_context(); + if (!$context instanceof \context_module) { + return; + } + + $cm = get_coursemodule_from_id('customcert', $context->instanceid); + if (!$cm) { + // Only customcert module will be handled. + return; + } + + $userids = $userlist->get_userids(); + list($usersql, $userparams) = $DB->get_in_or_equal($userids, SQL_PARAMS_NAMED); + + $select = "customcertid = :customcertid AND userid $usersql"; + $params = ['customcertid' => $cm->instance] + $userparams; + $DB->delete_records_select('customcert_issues', $select, $params); + } + /** * Return a list of Customcert IDs mapped to their course module ID. * diff --git a/db/upgrade.php b/db/upgrade.php index 849028c2c..94f151d7d 100644 --- a/db/upgrade.php +++ b/db/upgrade.php @@ -143,27 +143,7 @@ function xmldb_customcert_upgrade($oldversion) { $dbman->change_field_type($table, $field); // Savepoint reached. - upgrade_mod_savepoint(true, 2017050515, 'customcert'); - } - - if ($oldversion < 2017050518.01) { - $table = new xmldb_table('customcert'); - $index = new xmldb_index('templateid', XMLDB_INDEX_UNIQUE, ['templateid']); - if ($dbman->index_exists($table, $index)) { - $dbman->drop_index($table, $index); - } - $key = new xmldb_key('templateid', XMLDB_KEY_FOREIGN, array('templateid'), 'customcert_templates', array('id')); - $dbman->add_key($table, $key); - - $table = new xmldb_table('customcert_pages'); - $index = new xmldb_index('templateid', XMLDB_INDEX_UNIQUE, ['templateid']); - if ($dbman->index_exists($table, $index)) { - $dbman->drop_index($table, $index); - } - $key = new xmldb_key('templateid', XMLDB_KEY_FOREIGN, array('templateid'), 'customcert_templates', array('id')); - $dbman->add_key($table, $key); - - upgrade_mod_savepoint(true, 2017050518.01, 'customcert'); + upgrade_mod_savepoint(true, 2017111306, 'customcert'); } return true; diff --git a/element/bgimage/classes/privacy/provider.php b/element/bgimage/classes/privacy/provider.php index e29b69841..61a208273 100644 --- a/element/bgimage/classes/privacy/provider.php +++ b/element/bgimage/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/bgimage/version.php b/element/bgimage/version.php index 7ded31f64..847512d54 100644 --- a/element/bgimage/version.php +++ b/element/bgimage/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_bgimage'; diff --git a/element/border/classes/privacy/provider.php b/element/border/classes/privacy/provider.php index 1639e5367..0aa2b0a61 100644 --- a/element/border/classes/privacy/provider.php +++ b/element/border/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/border/version.php b/element/border/version.php index aec8ecacb..2aa335097 100644 --- a/element/border/version.php +++ b/element/border/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_border'; diff --git a/element/categoryname/classes/element.php b/element/categoryname/classes/element.php index e358589c4..48d157820 100644 --- a/element/categoryname/classes/element.php +++ b/element/categoryname/classes/element.php @@ -63,7 +63,7 @@ public function render_html() { * * @return string */ - protected function get_category_name() { + protected function get_category_name() : string { global $DB, $SITE; $courseid = \mod_customcert\element_helper::get_courseid($this->get_id()); diff --git a/element/categoryname/classes/privacy/provider.php b/element/categoryname/classes/privacy/provider.php index 30ae33a92..bcdb8a759 100644 --- a/element/categoryname/classes/privacy/provider.php +++ b/element/categoryname/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/categoryname/version.php b/element/categoryname/version.php index ec4c99a38..6f9b86535 100644 --- a/element/categoryname/version.php +++ b/element/categoryname/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_categoryname'; diff --git a/element/code/classes/privacy/provider.php b/element/code/classes/privacy/provider.php index a834da45e..cbdbb5019 100644 --- a/element/code/classes/privacy/provider.php +++ b/element/code/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/code/version.php b/element/code/version.php index 80ac61995..b95025a73 100644 --- a/element/code/version.php +++ b/element/code/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_code'; diff --git a/element/coursename/classes/element.php b/element/coursename/classes/element.php index 1012fa43b..87a1764f5 100644 --- a/element/coursename/classes/element.php +++ b/element/coursename/classes/element.php @@ -63,7 +63,7 @@ public function render_html() { * * @return string */ - protected function get_course_name() { + protected function get_course_name() : string { $courseid = \mod_customcert\element_helper::get_courseid($this->get_id()); $course = get_course($courseid); $context = \mod_customcert\element_helper::get_context($this->get_id()); diff --git a/element/coursename/classes/privacy/provider.php b/element/coursename/classes/privacy/provider.php index 12b436cde..1c2d02a3b 100644 --- a/element/coursename/classes/privacy/provider.php +++ b/element/coursename/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/coursename/version.php b/element/coursename/version.php index 2ba2993c7..0bf953167 100644 --- a/element/coursename/version.php +++ b/element/coursename/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_coursename'; diff --git a/element/date/classes/privacy/provider.php b/element/date/classes/privacy/provider.php index cda042db2..1ce5f23d3 100644 --- a/element/date/classes/privacy/provider.php +++ b/element/date/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/date/version.php b/element/date/version.php index a81b9d0ce..d98a3164c 100644 --- a/element/date/version.php +++ b/element/date/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_date'; diff --git a/element/digitalsignature/classes/privacy/provider.php b/element/digitalsignature/classes/privacy/provider.php index d92747065..6e46add57 100644 --- a/element/digitalsignature/classes/privacy/provider.php +++ b/element/digitalsignature/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/digitalsignature/version.php b/element/digitalsignature/version.php index e35d28051..01892ac0c 100644 --- a/element/digitalsignature/version.php +++ b/element/digitalsignature/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_digitalsignature'; diff --git a/element/grade/classes/privacy/provider.php b/element/grade/classes/privacy/provider.php index 052efc22b..2f6b29599 100644 --- a/element/grade/classes/privacy/provider.php +++ b/element/grade/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/grade/version.php b/element/grade/version.php index cd59a8796..8f24b547f 100644 --- a/element/grade/version.php +++ b/element/grade/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_grade'; diff --git a/element/gradeitemname/classes/element.php b/element/gradeitemname/classes/element.php index 4d287dc3d..401de904a 100644 --- a/element/gradeitemname/classes/element.php +++ b/element/gradeitemname/classes/element.php @@ -114,7 +114,7 @@ public function definition_after_data($mform) { * * @return string */ - protected function get_grade_item_name() { + protected function get_grade_item_name() : string { global $DB; // Get the course module information. diff --git a/element/gradeitemname/classes/privacy/provider.php b/element/gradeitemname/classes/privacy/provider.php index d30709f9e..8cf3b952e 100644 --- a/element/gradeitemname/classes/privacy/provider.php +++ b/element/gradeitemname/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/gradeitemname/version.php b/element/gradeitemname/version.php index b6265f4f1..9aff1dc4e 100644 --- a/element/gradeitemname/version.php +++ b/element/gradeitemname/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_gradeitemname'; diff --git a/element/image/classes/privacy/provider.php b/element/image/classes/privacy/provider.php index e6db81a8a..f800d6c4e 100644 --- a/element/image/classes/privacy/provider.php +++ b/element/image/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/image/version.php b/element/image/version.php index 3aaf16c9d..55e6c8161 100644 --- a/element/image/version.php +++ b/element/image/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_image'; diff --git a/element/studentname/classes/privacy/provider.php b/element/studentname/classes/privacy/provider.php index 0d6d1ad23..a7ae40215 100644 --- a/element/studentname/classes/privacy/provider.php +++ b/element/studentname/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/studentname/version.php b/element/studentname/version.php index dd4ccef68..cb37cfa68 100644 --- a/element/studentname/version.php +++ b/element/studentname/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_studentname'; diff --git a/element/teachername/classes/privacy/provider.php b/element/teachername/classes/privacy/provider.php index 9d2ae952e..800c91f2f 100644 --- a/element/teachername/classes/privacy/provider.php +++ b/element/teachername/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/teachername/version.php b/element/teachername/version.php index 8b41b889a..f11f0ceb1 100644 --- a/element/teachername/version.php +++ b/element/teachername/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_teachername'; diff --git a/element/text/classes/element.php b/element/text/classes/element.php index ccfdba6b2..c2a4f1360 100644 --- a/element/text/classes/element.php +++ b/element/text/classes/element.php @@ -100,7 +100,7 @@ public function definition_after_data($mform) { * * @return string */ - protected function get_text() { + protected function get_text() : string { $context = \mod_customcert\element_helper::get_context($this->get_id()); return format_text($this->get_data(), FORMAT_HTML, ['context' => $context]); } diff --git a/element/text/classes/privacy/provider.php b/element/text/classes/privacy/provider.php index 74ae4d384..19ca3e3a9 100644 --- a/element/text/classes/privacy/provider.php +++ b/element/text/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/text/version.php b/element/text/version.php index 705f10af8..0084c3ad6 100644 --- a/element/text/version.php +++ b/element/text/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_text'; diff --git a/element/userfield/classes/element.php b/element/userfield/classes/element.php index 1148d6d46..84db94ac2 100644 --- a/element/userfield/classes/element.php +++ b/element/userfield/classes/element.php @@ -133,7 +133,7 @@ public function definition_after_data($mform) { * @param bool $preview Is this a preview? * @return string */ - protected function get_user_field_value(\stdClass $user, $preview) { + protected function get_user_field_value(\stdClass $user, bool $preview) : string { global $CFG, $DB; // The user field to display. diff --git a/element/userfield/classes/privacy/provider.php b/element/userfield/classes/privacy/provider.php index 58a385cdd..4669a8616 100644 --- a/element/userfield/classes/privacy/provider.php +++ b/element/userfield/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/userfield/version.php b/element/userfield/version.php index cb0207ccc..b908ffbd5 100644 --- a/element/userfield/version.php +++ b/element/userfield/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_userfield'; diff --git a/element/userpicture/classes/privacy/provider.php b/element/userpicture/classes/privacy/provider.php index 4d0234f65..8b0b3f0f8 100644 --- a/element/userpicture/classes/privacy/provider.php +++ b/element/userpicture/classes/privacy/provider.php @@ -40,7 +40,7 @@ class provider implements \core_privacy\local\metadata\null_provider { * * @return string */ - public static function get_reason() { + public static function get_reason() : string { return 'privacy:metadata'; } } diff --git a/element/userpicture/version.php b/element/userpicture/version.php index 1df9c7d56..f6a3173d2 100644 --- a/element/userpicture/version.php +++ b/element/userpicture/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050500; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111300; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->component = 'customcertelement_userpicture'; diff --git a/tests/element_helper_test.php b/tests/element_helper_test.php index 2fd56c667..adf493ac4 100644 --- a/tests/element_helper_test.php +++ b/tests/element_helper_test.php @@ -35,7 +35,7 @@ * @copyright 2017 Mark Nelson * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -class mod_customcert_element_helper_testcase extends advanced_testcase { +class mod_customcert_element_helper_test extends \core_phpunit\testcase { /** * Test set up. diff --git a/tests/email_certificate_task_test.php b/tests/email_certificate_task_test.php index 1ca2cd161..cfa56c9f5 100644 --- a/tests/email_certificate_task_test.php +++ b/tests/email_certificate_task_test.php @@ -35,7 +35,7 @@ * @copyright 2017 Mark Nelson * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -class mod_customcert_task_email_certificate_task_testcase extends advanced_testcase { +class mod_customcert_task_email_certificate_task_test extends \core_phpunit\testcase { /** * Test set up. diff --git a/tests/external_test.php b/tests/external_test.php index c46f303f1..50615f27f 100644 --- a/tests/external_test.php +++ b/tests/external_test.php @@ -27,6 +27,8 @@ global $CFG; +require_once($CFG->dirroot . '/webservice/tests/helpers.php'); + /** * Unit tests for the webservices. * @@ -35,7 +37,7 @@ * @copyright 2018 Mark Nelson * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -class mod_customcert_external_test_testcase extends advanced_testcase { +class mod_customcert_external_test extends externallib_advanced_testcase { /** * Test set up. diff --git a/version.php b/version.php index 915be45d1..96099f8a8 100644 --- a/version.php +++ b/version.php @@ -24,10 +24,10 @@ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); -$plugin->version = 2017050518.01; // The current module version (Date: YYYYMMDDXX). -$plugin->requires = 2017050500; // Requires this Moodle version (3.3). +$plugin->version = 2017111308; // The current module version (Date: YYYYMMDDXX). +$plugin->requires = 2017111300; // Requires this Moodle version (3.4). $plugin->cron = 0; // Period for cron to check this module (secs). $plugin->component = 'mod_customcert'; $plugin->maturity = MATURITY_STABLE; -$plugin->release = "3.3.17"; // User-friendly version number. +$plugin->release = "3.4.7"; // User-friendly version number.