From e547ba1de55427ca7cd1ba206fd8c94adc8d2493 Mon Sep 17 00:00:00 2001 From: Jun Pataleta Date: Tue, 4 Sep 2018 16:52:08 +0800 Subject: [PATCH] MDL-62554 tool_dataprivacy: Fix display of activity options --- admin/tool/dataprivacy/classes/external.php | 8 ++++++-- admin/tool/dataprivacy/tests/external_test.php | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/admin/tool/dataprivacy/classes/external.php b/admin/tool/dataprivacy/classes/external.php index 2b6ee23f8e5..ff8ce80c34d 100644 --- a/admin/tool/dataprivacy/classes/external.php +++ b/admin/tool/dataprivacy/classes/external.php @@ -1367,12 +1367,16 @@ class external extends external_api { $pluginmanager = \core_plugin_manager::instance(); $modplugins = $pluginmanager->get_plugins_of_type('mod'); $modoptions = []; + + // Get the module-level defaults. data_registry::get_defaults falls back to this when there are no activity defaults. + list($levelpurpose, $levelcategory) = data_registry::get_defaults(CONTEXT_MODULE); foreach ($modplugins as $plugin) { // Check if we have default purpose and category for this module if we want don't want to fetch everything. if ($nodefaults) { list($purpose, $category) = data_registry::get_defaults(CONTEXT_MODULE, $plugin->name); - if ($purpose !== false || $category !== false) { - // If so, skip it. + // Compare this with the module-level defaults. + if ($purpose !== $levelpurpose || $category !== $levelcategory) { + // If the defaults for this activity has been already set, there's no need to add this in the list of options. continue; } } diff --git a/admin/tool/dataprivacy/tests/external_test.php b/admin/tool/dataprivacy/tests/external_test.php index d7cded9b5e1..5448d5f74b9 100644 --- a/admin/tool/dataprivacy/tests/external_test.php +++ b/admin/tool/dataprivacy/tests/external_test.php @@ -544,6 +544,9 @@ class tool_dataprivacy_external_testcase extends externallib_advanced_testcase { $return = (object) external_api::clean_returnvalue(external::get_activity_options_returns(), $result); $options = $return->options; + // Make sure the options list is not empty. + $this->assertNotEmpty($options); + $pluginwithdefaults = [ 'name' => 'assign', 'displayname' => get_string('pluginname', 'assign')