From a8a690503903a9cbcbe585bb70cd9e9600713661 Mon Sep 17 00:00:00 2001 From: David Monllao Date: Sun, 8 Apr 2018 19:06:53 +0200 Subject: [PATCH] MDL-61899 tool_dataprivacy: Refined patch fixing cibot complains --- .../dataprivacy/amd/build/data_registry.min.js | 2 +- admin/tool/dataprivacy/amd/src/data_registry.js | 2 +- admin/tool/dataprivacy/classes/contextlevel.php | 2 +- admin/tool/dataprivacy/classes/data_registry.php | 7 +++- .../classes/expired_contexts_manager.php | 5 ++- .../classes/external/contextlevel_exporter.php | 45 ---------------------- .../dataprivacy/classes/form/context_instance.php | 3 +- admin/tool/dataprivacy/classes/form/defaults.php | 3 +- admin/tool/dataprivacy/classes/form/purpose.php | 3 +- .../classes/output/data_deletion_page.php | 6 ++- .../classes/output/expired_contexts_table.php | 2 +- .../tool/dataprivacy/classes/privacy/provider.php | 12 +++++- admin/tool/dataprivacy/classes/purpose.php | 2 +- .../tool/dataprivacy/lang/en/tool_dataprivacy.php | 2 + admin/tool/dataprivacy/lib.php | 6 ++- admin/tool/dataprivacy/settings.php | 3 +- admin/tool/dataprivacy/tests/api_test.php | 8 ++-- .../dataprivacy/tests/expired_contexts_test.php | 2 +- 18 files changed, 48 insertions(+), 67 deletions(-) delete mode 100644 admin/tool/dataprivacy/classes/external/contextlevel_exporter.php diff --git a/admin/tool/dataprivacy/amd/build/data_registry.min.js b/admin/tool/dataprivacy/amd/build/data_registry.min.js index 149a339686d..f2964fe3284 100644 --- a/admin/tool/dataprivacy/amd/build/data_registry.min.js +++ b/admin/tool/dataprivacy/amd/build/data_registry.min.js @@ -1 +1 @@ -define(["jquery","core/str","core/ajax","core/notification","core/templates","core/modal_factory","core/modal_events","core/fragment","tool_dataprivacy/add_purpose","tool_dataprivacy/add_category"],function(a,b,c,d,e,f,g,h,i,j){var k={TREE_NODES:"[data-context-tree-node=1]",FORM_CONTAINER:"#context-form-container"},l=function(a,b,c){this.systemContextId=a,this.currentContextLevel=b,this.currentContextId=c,this.init()};return l.prototype.systemContextId=0,l.prototype.currentContextLevel=0,l.prototype.currentContextId=0,l.prototype.addpurpose=null,l.prototype.addcategory=null,l.prototype.init=function(){this.addpurpose=i.getInstance(this.systemContextId),this.addcategory=j.getInstance(this.systemContextId);var a=[{key:"changessaved",component:"moodle"},{key:"contextpurposecategorysaved",component:"tool_dataprivacy"},{key:"noblockstoload",component:"tool_dataprivacy"},{key:"noactivitiestoload",component:"tool_dataprivacy"},{key:"nocoursestoload",component:"tool_dataprivacy"}];this.strings=b.get_strings(a),this.registerEventListeners(),this.currentContextId?this.loadForm("context_form",[this.currentContextId],this.submitContextFormAjax.bind(this)):this.loadForm("contextlevel_form",[this.currentContextLevel],this.submitContextLevelFormAjax.bind(this))},l.prototype.registerEventListeners=function(){a(k.TREE_NODES).on("click",function(b){b.preventDefault();var c=a(b.currentTarget);a(k.TREE_NODES).removeClass("active"),c.addClass("active");var d=c.data("contextlevel"),e=c.data("contextid");if(d)window.history.pushState({},null,"?contextlevel="+d),this.addpurpose.removeListeners(),this.addcategory.removeListeners(),this.currentContextLevel=d,this.loadForm("contextlevel_form",[this.currentContextLevel],this.submitContextLevelFormAjax.bind(this));else if(e)window.history.pushState({},null,"?contextid="+e),this.addpurpose.removeListeners(),this.addcategory.removeListeners(),this.currentContextId=e,this.loadForm("context_form",[this.currentContextId],this.submitContextFormAjax.bind(this));else{var f=c.data("expandcontextid"),g=c.data("expandelement"),h=c.data("expanded");g&&(h?this.collapse(c):!c.data("loaded")&&f&&g?(c.find("> i").removeClass("fa-plus"),c.find("> i").addClass("fa-circle-o-notch fa-spin"),this.loadExtra(c,f,g)):this.expand(c))}}.bind(this))},l.prototype.removeListeners=function(){a(k.TREE_NODES).off("click")},l.prototype.loadForm=function(b,c,f){this.clearForm();var g=h.loadFragment("tool_dataprivacy",b,this.systemContextId,c);g.done(function(b,c){a(k.FORM_CONTAINER).html(b),e.runTemplateJS(c),this.addpurpose.registerEventListeners(),this.addcategory.registerEventListeners(),a(k.FORM_CONTAINER).on("submit","form",f)}.bind(this)).fail(d.exception)},l.prototype.clearForm=function(){Y.use("moodle-core-formchangechecker",function(){M.core_formchangechecker.reset_form_dirty_state()}),a(k.FORM_CONTAINER).off("submit","form")},l.prototype.submitForm=function(b){b.preventDefault(),a(k.FORM_CONTAINER).find("form").submit()},l.prototype.submitContextLevelFormAjax=function(a){this.submitFormAjax(a,"tool_dataprivacy_set_contextlevel_form")},l.prototype.submitContextFormAjax=function(a){this.submitFormAjax(a,"tool_dataprivacy_set_context_form")},l.prototype.submitFormAjax=function(b,e){b.preventDefault();var f=a(k.FORM_CONTAINER).find("form").serialize();return this.strings.then(function(a){c.call([{methodname:e,args:{jsonformdata:JSON.stringify(f)},done:function(){d.alert(a[0],a[1])},fail:d.exception}])}).fail(d.exception)},l.prototype.loadExtra=function(a,b,f){c.call([{methodname:"tool_dataprivacy_tree_extra_branches",args:{contextid:b,element:f},done:function(b){return 0==b.branches.length?void this.noElements(a,f):void e.render("tool_dataprivacy/context_tree_branches",b).then(function(b){a.after(b),this.removeListeners(),this.registerEventListeners(),this.expand(a),a.data("loaded",1)}.bind(this)).fail(d.exception)}.bind(this),fail:d.exception}])},l.prototype.noElements=function(a,b){a.data("expandcontextid",""),a.data("expandelement",""),this.strings.then(function(c){var d=2;"module"==b?d=3:"course"==b&&(d=4),a.text(c[d])}).fail(d.exception)},l.prototype.collapse=function(a){a.data("expanded",0),a.siblings("nav").addClass("hidden"),a.find("> i").removeClass("fa-minus"),a.find("> i").addClass("fa-plus")},l.prototype.expand=function(a){a.data("expanded",1),a.siblings("nav").removeClass("hidden"),a.find("> i").removeClass("fa-plus"),a.find("> i").removeClass("fa-circle-o-notch fa-spin"),a.find("> i").addClass("fa-minus")},{init:function(a,b,c){return new l(a,b,c)}}}); \ No newline at end of file +define(["jquery","core/str","core/ajax","core/notification","core/templates","core/modal_factory","core/modal_events","core/fragment","tool_dataprivacy/add_purpose","tool_dataprivacy/add_category"],function(a,b,c,d,e,f,g,h,i,j){var k={TREE_NODES:"[data-context-tree-node=1]",FORM_CONTAINER:"#context-form-container"},l=function(a,b,c){this.systemContextId=a,this.currentContextLevel=b,this.currentContextId=c,this.init()};return l.prototype.systemContextId=0,l.prototype.currentContextLevel=0,l.prototype.currentContextId=0,l.prototype.addpurpose=null,l.prototype.addcategory=null,l.prototype.init=function(){this.addpurpose=i.getInstance(this.systemContextId),this.addcategory=j.getInstance(this.systemContextId);var a=[{key:"changessaved",component:"moodle"},{key:"contextpurposecategorysaved",component:"tool_dataprivacy"},{key:"noblockstoload",component:"tool_dataprivacy"},{key:"noactivitiestoload",component:"tool_dataprivacy"},{key:"nocoursestoload",component:"tool_dataprivacy"}];this.strings=b.get_strings(a),this.registerEventListeners(),this.currentContextId?this.loadForm("context_form",[this.currentContextId],this.submitContextFormAjax.bind(this)):this.loadForm("contextlevel_form",[this.currentContextLevel],this.submitContextLevelFormAjax.bind(this))},l.prototype.registerEventListeners=function(){a(k.TREE_NODES).on("click",function(b){b.preventDefault();var c=a(b.currentTarget);a(k.TREE_NODES).removeClass("active"),c.addClass("active");var d=c.data("contextlevel"),e=c.data("contextid");if(d)window.history.pushState({},null,"?contextlevel="+d),this.addpurpose.removeListeners(),this.addcategory.removeListeners(),this.currentContextLevel=d,this.loadForm("contextlevel_form",[this.currentContextLevel],this.submitContextLevelFormAjax.bind(this));else if(e)window.history.pushState({},null,"?contextid="+e),this.addpurpose.removeListeners(),this.addcategory.removeListeners(),this.currentContextId=e,this.loadForm("context_form",[this.currentContextId],this.submitContextFormAjax.bind(this));else{var f=c.data("expandcontextid"),g=c.data("expandelement"),h=c.data("expanded");g&&(h?this.collapse(c):!c.data("loaded")&&f&&g?(c.find("> i").removeClass("fa-plus"),c.find("> i").addClass("fa-circle-o-notch fa-spin"),this.loadExtra(c,f,g)):this.expand(c))}}.bind(this))},l.prototype.removeListeners=function(){a(k.TREE_NODES).off("click")},l.prototype.loadForm=function(b,c,f){this.clearForm();var g=h.loadFragment("tool_dataprivacy",b,this.systemContextId,c);g.done(function(b,c){a(k.FORM_CONTAINER).html(b),e.runTemplateJS(c),this.addpurpose.registerEventListeners(),this.addcategory.registerEventListeners(),a(k.FORM_CONTAINER).on("submit","form",f)}.bind(this)).fail(d.exception)},l.prototype.clearForm=function(){Y.use("moodle-core-formchangechecker",function(){M.core_formchangechecker.reset_form_dirty_state()}),a(k.FORM_CONTAINER).off("submit","form")},l.prototype.submitForm=function(b){b.preventDefault(),a(k.FORM_CONTAINER).find("form").submit()},l.prototype.submitContextLevelFormAjax=function(a){this.submitFormAjax(a,"tool_dataprivacy_set_contextlevel_form")},l.prototype.submitContextFormAjax=function(a){this.submitFormAjax(a,"tool_dataprivacy_set_context_form")},l.prototype.submitFormAjax=function(b,e){b.preventDefault();var f=a(k.FORM_CONTAINER).find("form").serialize();return this.strings.then(function(a){c.call([{methodname:e,args:{jsonformdata:JSON.stringify(f)},done:function(){d.alert(a[0],a[1])},fail:d.exception}])})["catch"](d.exception)},l.prototype.loadExtra=function(a,b,f){c.call([{methodname:"tool_dataprivacy_tree_extra_branches",args:{contextid:b,element:f},done:function(b){return 0==b.branches.length?void this.noElements(a,f):void e.render("tool_dataprivacy/context_tree_branches",b).then(function(b){a.after(b),this.removeListeners(),this.registerEventListeners(),this.expand(a),a.data("loaded",1)}.bind(this)).fail(d.exception)}.bind(this),fail:d.exception}])},l.prototype.noElements=function(a,b){a.data("expandcontextid",""),a.data("expandelement",""),this.strings.then(function(c){var d=2;"module"==b?d=3:"course"==b&&(d=4),a.text(c[d])}).fail(d.exception)},l.prototype.collapse=function(a){a.data("expanded",0),a.siblings("nav").addClass("hidden"),a.find("> i").removeClass("fa-minus"),a.find("> i").addClass("fa-plus")},l.prototype.expand=function(a){a.data("expanded",1),a.siblings("nav").removeClass("hidden"),a.find("> i").removeClass("fa-plus"),a.find("> i").removeClass("fa-circle-o-notch fa-spin"),a.find("> i").addClass("fa-minus")},{init:function(a,b,c){return new l(a,b,c)}}}); \ No newline at end of file diff --git a/admin/tool/dataprivacy/amd/src/data_registry.js b/admin/tool/dataprivacy/amd/src/data_registry.js index b06a0b1212c..76f00ee8e1e 100644 --- a/admin/tool/dataprivacy/amd/src/data_registry.js +++ b/admin/tool/dataprivacy/amd/src/data_registry.js @@ -234,7 +234,7 @@ define(['jquery', 'core/str', 'core/ajax', 'core/notification', 'core/templates' }, fail: Notification.exception }]); - }).fail(Notification.exception); + }).catch(Notification.exception); }; diff --git a/admin/tool/dataprivacy/classes/contextlevel.php b/admin/tool/dataprivacy/classes/contextlevel.php index 27d29842cfa..97af9622079 100644 --- a/admin/tool/dataprivacy/classes/contextlevel.php +++ b/admin/tool/dataprivacy/classes/contextlevel.php @@ -120,7 +120,7 @@ class contextlevel extends \core\persistent { /** * Updates the cache record. * - * @param $result + * @param bool $result * @return null */ protected function after_update($result) { diff --git a/admin/tool/dataprivacy/classes/data_registry.php b/admin/tool/dataprivacy/classes/data_registry.php index 28fad5248f3..57ca421f2e1 100644 --- a/admin/tool/dataprivacy/classes/data_registry.php +++ b/admin/tool/dataprivacy/classes/data_registry.php @@ -204,7 +204,9 @@ class data_registry { return self::get_effective_contextlevel_value($context->contextlevel, $element); } else { // Use the default context level value. - list($purposeid, $categoryid) = self::get_effective_default_contextlevel_purpose_and_category($context->contextlevel); + list($purposeid, $categoryid) = self::get_effective_default_contextlevel_purpose_and_category( + $context->contextlevel + ); return self::get_element_instance($element, $$fieldname); } } @@ -251,7 +253,8 @@ class data_registry { if ($forcedvalue === false) { $instance = contextlevel::get_record_by_contextlevel($contextlevel, false); if (!$instance) { - // If the context level does not have a value defaults to not set, so we grab the context level default as its value. + // If the context level does not have a value defaults to not set, so we grab the context level default as + // its value. $instancevalue = context_instance::NOTSET; } else { $instancevalue = $instance->get($fieldname); diff --git a/admin/tool/dataprivacy/classes/expired_contexts_manager.php b/admin/tool/dataprivacy/classes/expired_contexts_manager.php index 3f7b879272e..e91601f667b 100644 --- a/admin/tool/dataprivacy/classes/expired_contexts_manager.php +++ b/admin/tool/dataprivacy/classes/expired_contexts_manager.php @@ -39,6 +39,9 @@ defined('MOODLE_INTERNAL') || die(); */ abstract class expired_contexts_manager { + /** + * Number of deleted contexts for each scheduled task run. + */ const DELETE_LIMIT = 200; /** @@ -95,7 +98,7 @@ abstract class expired_contexts_manager { continue; } - if (!PHPUNIT_TEST && !BEHAT_TEST) { + if (!PHPUNIT_TEST) { mtrace('Deleting context ' . $context->id . ' - ' . shorten_text($context->get_context_name(true, true))); } diff --git a/admin/tool/dataprivacy/classes/external/contextlevel_exporter.php b/admin/tool/dataprivacy/classes/external/contextlevel_exporter.php deleted file mode 100644 index 132d8e70917..00000000000 --- a/admin/tool/dataprivacy/classes/external/contextlevel_exporter.php +++ /dev/null @@ -1,45 +0,0 @@ -. - -/** - * Class for exporting context. - * - * @package tool_dataprivacy - * @copyright 2018 David Monllao - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -namespace tool_dataprivacy\external; -defined('MOODLE_INTERNAL') || die(); - -use core\external\persistent_exporter; - -/** - * Class for exporting context. - * - * @copyright 2018 David Monllao - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -class category_exporter extends persistent_exporter { - - /** - * Defines the persistent class. - * - * @return string - */ - protected static function define_class() { - return \tool_dataprivacy\context::class; - } -} diff --git a/admin/tool/dataprivacy/classes/form/context_instance.php b/admin/tool/dataprivacy/classes/form/context_instance.php index 57f53341115..707b290a84a 100644 --- a/admin/tool/dataprivacy/classes/form/context_instance.php +++ b/admin/tool/dataprivacy/classes/form/context_instance.php @@ -159,7 +159,8 @@ class context_instance extends \core\form\persistent { $effectivepurpose = api::get_effective_context_purpose($context); if ($effectivepurpose) { - $customdata['currentretentionperiod'] = self::get_retention_display_text($effectivepurpose, $context->contextlevel, $context); + $customdata['currentretentionperiod'] = self::get_retention_display_text($effectivepurpose, $context->contextlevel, + $context); $customdata['purposeretentionperiods'] = []; foreach ($purposeoptions as $optionvalue => $unused) { diff --git a/admin/tool/dataprivacy/classes/form/defaults.php b/admin/tool/dataprivacy/classes/form/defaults.php index b3c9ddc70bb..74765481e19 100644 --- a/admin/tool/dataprivacy/classes/form/defaults.php +++ b/admin/tool/dataprivacy/classes/form/defaults.php @@ -48,7 +48,8 @@ class defaults extends \moodleform { $mform = $this->_form; $mform->setDisableShortforms(); - $notification = $OUTPUT->notification(get_string('defaultsinfo', 'tool_dataprivacy'), \core\output\notification::NOTIFY_INFO); + $notification = $OUTPUT->notification(get_string('defaultsinfo', 'tool_dataprivacy'), + \core\output\notification::NOTIFY_INFO); $mform->addElement('html', $notification); foreach ($this->_customdata['levels'] as $level => $classname) { diff --git a/admin/tool/dataprivacy/classes/form/purpose.php b/admin/tool/dataprivacy/classes/form/purpose.php index 52c1d1f9d83..1bed873e7f2 100644 --- a/admin/tool/dataprivacy/classes/form/purpose.php +++ b/admin/tool/dataprivacy/classes/form/purpose.php @@ -62,7 +62,8 @@ class purpose extends persistent { 'D' => strtolower(get_string('days')) ]; $unit = $mform->createElement('select', 'retentionperiodunit', '', $unitoptions); - $mform->addGroup(['number' => $number, 'unit' => $unit], 'retentionperiod', get_string('retentionperiod', 'tool_dataprivacy'), null, false); + $mform->addGroup(['number' => $number, 'unit' => $unit], 'retentionperiod', + get_string('retentionperiod', 'tool_dataprivacy'), null, false); $mform->setType('retentionperiodnumber', PARAM_INT); $this->_form->addElement('advcheckbox', 'protected', get_string('protected', 'tool_dataprivacy'), diff --git a/admin/tool/dataprivacy/classes/output/data_deletion_page.php b/admin/tool/dataprivacy/classes/output/data_deletion_page.php index b2a5d58fad7..c1a2202d7f9 100644 --- a/admin/tool/dataprivacy/classes/output/data_deletion_page.php +++ b/admin/tool/dataprivacy/classes/output/data_deletion_page.php @@ -34,6 +34,7 @@ use single_select; use stdClass; use templatable; use tool_dataprivacy\data_request; +use tool_dataprivacy\output\expired_contexts_table; /** * Class containing data for a user's data requests. @@ -55,9 +56,10 @@ class data_deletion_page implements renderable, templatable { /** * Construct this renderable. * - * @param expired_contexts_table $expiredcontextstable + * @param \tool_dataprivacy\data_request[] $filter + * @param \tool_dataprivacy\expired_contexts_table $expiredcontextstable */ - public function __construct($filter, $expiredcontextstable) { + public function __construct($filter, expired_contexts_table $expiredcontextstable) { $this->filter = $filter; $this->expiredcontextstable = $expiredcontextstable; } diff --git a/admin/tool/dataprivacy/classes/output/expired_contexts_table.php b/admin/tool/dataprivacy/classes/output/expired_contexts_table.php index 47be80e39ad..c6f0e65c7be 100644 --- a/admin/tool/dataprivacy/classes/output/expired_contexts_table.php +++ b/admin/tool/dataprivacy/classes/output/expired_contexts_table.php @@ -63,7 +63,7 @@ class expired_contexts_table extends table_sql { /** * expired_contexts_table constructor. * - * @param int $filter The filter type. + * @param int|null $contextlevel * @throws coding_exception */ public function __construct($contextlevel = null) { diff --git a/admin/tool/dataprivacy/classes/privacy/provider.php b/admin/tool/dataprivacy/classes/privacy/provider.php index 89bec002401..4d2a02f744f 100644 --- a/admin/tool/dataprivacy/classes/privacy/provider.php +++ b/admin/tool/dataprivacy/classes/privacy/provider.php @@ -23,12 +23,20 @@ */ namespace tool_dataprivacy\privacy; +defined('MOODLE_INTERNAL') || die(); use core_privacy\local\metadata\collection; use core_privacy\local\request\approved_contextlist; use core_privacy\local\request\context; use core_privacy\local\request\contextlist; +/** + * Privacy class for requesting user data. + * + * @package tool_dataprivacy + * @copyright 2018 Jake Dallimore + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ class provider implements // This tool stores user data. \core_privacy\local\metadata\provider, @@ -41,7 +49,7 @@ class provider implements * @param collection $collection The initialised collection to add items to. * @return collection A listing of user data stored through this system. */ - public static function get_metadata(collection $collection): collection { + public static function get_metadata(collection $collection) : collection { $collection->add_database_table( 'tool_dataprivacy_request', [ @@ -62,7 +70,7 @@ class provider implements * @param int $userid The user to search. * @return contextlist $contextlist The contextlist containing the list of contexts used in this plugin. */ - public static function get_contexts_for_userid(int $userid): contextlist { + public static function get_contexts_for_userid(int $userid) : contextlist { return new contextlist(); } diff --git a/admin/tool/dataprivacy/classes/purpose.php b/admin/tool/dataprivacy/classes/purpose.php index 1aa2fabdbed..461740d48b8 100644 --- a/admin/tool/dataprivacy/classes/purpose.php +++ b/admin/tool/dataprivacy/classes/purpose.php @@ -122,7 +122,7 @@ class purpose extends \core\persistent { /** * Updates the cache record. * - * @param $result + * @param bool $result * @return null */ protected function after_update($result) { diff --git a/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php b/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php index 3df7aa49fde..6bef6b8b1bd 100644 --- a/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php +++ b/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php @@ -31,6 +31,8 @@ $string['addcategory'] = 'Add category'; $string['addpurpose'] = 'Add purpose'; $string['approve'] = 'Approve'; $string['approverequest'] = 'Approve request'; +$string['cachedef_purpose'] = 'Data purposes'; +$string['cachedef_contextlevel'] = 'Context levels purpose and category'; $string['cancelrequest'] = 'Cancel request'; $string['cancelrequestconfirmation'] = 'Do you really want cancel this data request?'; $string['categories'] = 'Categories'; diff --git a/admin/tool/dataprivacy/lib.php b/admin/tool/dataprivacy/lib.php index 8e1e3722397..0db8244e277 100644 --- a/admin/tool/dataprivacy/lib.php +++ b/admin/tool/dataprivacy/lib.php @@ -144,7 +144,8 @@ function tool_dataprivacy_output_fragment_context_form($args) { $customdata = \tool_dataprivacy\form\context_instance::get_context_instance_customdata($context); if (!empty($customdata['purposeretentionperiods'])) { - $PAGE->requires->js_call_amd('tool_dataprivacy/effective_retention_period', 'init', [$customdata['purposeretentionperiods']]); + $PAGE->requires->js_call_amd('tool_dataprivacy/effective_retention_period', 'init', + [$customdata['purposeretentionperiods']]); } $mform = new \tool_dataprivacy\form\context_instance(null, $customdata); return $mform->render(); @@ -163,7 +164,8 @@ function tool_dataprivacy_output_fragment_contextlevel_form($args) { $customdata = \tool_dataprivacy\form\contextlevel::get_contextlevel_customdata($contextlevel); if (!empty($customdata['purposeretentionperiods'])) { - $PAGE->requires->js_call_amd('tool_dataprivacy/effective_retention_period', 'init', [$customdata['purposeretentionperiods']]); + $PAGE->requires->js_call_amd('tool_dataprivacy/effective_retention_period', 'init', + [$customdata['purposeretentionperiods']]); } $mform = new \tool_dataprivacy\form\contextlevel(null, $customdata); diff --git a/admin/tool/dataprivacy/settings.php b/admin/tool/dataprivacy/settings.php index e4b15384cca..a94dfb25ad9 100644 --- a/admin/tool/dataprivacy/settings.php +++ b/admin/tool/dataprivacy/settings.php @@ -40,7 +40,8 @@ if ($hassiteconfig) { // Fetch roles that have the capability to manage data requests. $capableroles = get_roles_with_capability('tool/dataprivacy:managedatarequests'); - // Role(s) that map to the Data Protection Officer role. These are assignable roles with the capability to manage data requests. + // Role(s) that map to the Data Protection Officer role. These are assignable roles with the capability to + // manage data requests. $roles = []; foreach ($capableroles as $key => $role) { if (array_key_exists($key, $assignableroles)) { diff --git a/admin/tool/dataprivacy/tests/api_test.php b/admin/tool/dataprivacy/tests/api_test.php index 8f228889133..f8892ab8275 100644 --- a/admin/tool/dataprivacy/tests/api_test.php +++ b/admin/tool/dataprivacy/tests/api_test.php @@ -745,10 +745,12 @@ class tool_dataprivacy_api_testcase extends advanced_testcase { $coursecontext1 = \context_course::instance($courses[0]->id); $coursecontext2 = \context_course::instance($courses[1]->id); - $record1 = (object)['contextid' => $coursecontext1->id, 'purposeid' => $purposes[0]->get('id'), 'categoryid' => $categories[0]->get('id')]; + $record1 = (object)['contextid' => $coursecontext1->id, 'purposeid' => $purposes[0]->get('id'), + 'categoryid' => $categories[0]->get('id')]; $contextinstance1 = api::set_context_instance($record1); - $record2 = (object)['contextid' => $coursecontext2->id, 'purposeid' => $purposes[1]->get('id'), 'categoryid' => $categories[1]->get('id')]; + $record2 = (object)['contextid' => $coursecontext2->id, 'purposeid' => $purposes[1]->get('id'), + 'categoryid' => $categories[1]->get('id')]; $contextinstance2 = api::set_context_instance($record2); $this->assertCount(2, $DB->get_records('tool_dataprivacy_ctxinstance')); @@ -868,7 +870,7 @@ class tool_dataprivacy_api_testcase extends advanced_testcase { $purpose = api::get_effective_contextlevel_purpose(CONTEXT_SYSTEM); $this->assertEquals($purposes[1]->get('id'), $purpose->get('id')); - // 'not set' will get the default value for the context level. For context level defaults + // Value 'not set' will get the default value for the context level. For context level defaults // both 'not set' and 'inherit' result in inherit, so the parent context (system) default // will be retrieved. $purpose = api::get_effective_contextlevel_purpose(CONTEXT_USER); diff --git a/admin/tool/dataprivacy/tests/expired_contexts_test.php b/admin/tool/dataprivacy/tests/expired_contexts_test.php index 1b1f82f0bd9..2f1f1b66f12 100644 --- a/admin/tool/dataprivacy/tests/expired_contexts_test.php +++ b/admin/tool/dataprivacy/tests/expired_contexts_test.php @@ -134,7 +134,7 @@ class tool_dataprivacy_expired_contexts_testcase extends advanced_testcase { ); set_config($purposevar, $purpose1->get('id'), 'tool_dataprivacy'); - // A lot more time for modules + // A lot more time for modules. list($purposevar, $categoryvar) = data_registry::var_names_from_context( \context_helper::get_class_for_level(CONTEXT_MODULE) ); -- 2.11.4.GIT