From 4f32e3af8c1b8b304cd4de8aef76e920cf09fc4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luca=20B=C3=B6sch?= Date: Mon, 22 Oct 2018 23:26:18 +0200 Subject: [PATCH] MDL-63726 tool_dataprivacy: En-/disable 'Data retention summary' link --- .../dataprivacy/lang/en/tool_dataprivacy.php | 2 ++ admin/tool/dataprivacy/lib.php | 30 +++++++++++++++---- admin/tool/dataprivacy/settings.php | 6 ++++ 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php b/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php index e9b8127792f..1bf63948f8b 100644 --- a/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php +++ b/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php @@ -277,6 +277,8 @@ $string['send'] = 'Send'; $string['sensitivedatareasons'] = 'Sensitive personal data processing reasons'; $string['sensitivedatareasons_help'] = 'Select one or more applicable reasons that exempts the prohibition of processing sensitive personal data tied to this purpose. For more information, please see GDPR Art. 9.2'; $string['setdefaults'] = 'Set defaults'; +$string['showdataretentionsummary'] = 'Show data retention summary'; +$string['showdataretentionsummary_desc'] = 'If enabled, a link to the data retention summary is shown in the page footer and in the user profile page.'; $string['statusapproved'] = 'Approved'; $string['statusawaitingapproval'] = 'Awaiting approval'; $string['statuscancelled'] = 'Cancelled'; diff --git a/admin/tool/dataprivacy/lib.php b/admin/tool/dataprivacy/lib.php index 276850e2b65..8655f1ca194 100644 --- a/admin/tool/dataprivacy/lib.php +++ b/admin/tool/dataprivacy/lib.php @@ -87,10 +87,19 @@ function tool_dataprivacy_myprofile_navigation(tree $tree, $user, $iscurrentuser } } - $summaryurl = new moodle_url('/admin/tool/dataprivacy/summary.php'); - $summarynode = new core_user\output\myprofile\node('privacyandpolicies', 'retentionsummary', + // A returned 0 means that the setting was set and disabled, false means that there is no value for the provided setting. + $showsummary = get_config('tool_dataprivacy', 'showdataretentionsummary'); + if ($showsummary === false) { + // This means that no value is stored in db. We use the default value in this case. + $showsummary = true; + } + + if ($showsummary) { + $summaryurl = new moodle_url('/admin/tool/dataprivacy/summary.php'); + $summarynode = new core_user\output\myprofile\node('privacyandpolicies', 'retentionsummary', get_string('dataretentionsummary', 'tool_dataprivacy'), null, $summaryurl); - $category->add_node($summarynode); + $category->add_node($summarynode); + } // Add the Privacy category to the tree if it's not empty and it doesn't exist. $nodes = $category->nodes; @@ -110,11 +119,20 @@ function tool_dataprivacy_myprofile_navigation(tree $tree, $user, $iscurrentuser * @return string HTML footer content */ function tool_dataprivacy_standard_footer_html() { + $output = ''; - $url = new moodle_url('/admin/tool/dataprivacy/summary.php'); - $output = html_writer::link($url, get_string('dataretentionsummary', 'tool_dataprivacy')); - $output = html_writer::div($output, 'summaryfooter'); + // A returned 0 means that the setting was set and disabled, false means that there is no value for the provided setting. + $showsummary = get_config('tool_dataprivacy', 'showdataretentionsummary'); + if ($showsummary === false) { + // This means that no value is stored in db. We use the default value in this case. + $showsummary = true; + } + if ($showsummary) { + $url = new moodle_url('/admin/tool/dataprivacy/summary.php'); + $output = html_writer::link($url, get_string('dataretentionsummary', 'tool_dataprivacy')); + $output = html_writer::div($output, 'tool_dataprivacy'); + } return $output; } diff --git a/admin/tool/dataprivacy/settings.php b/admin/tool/dataprivacy/settings.php index d3abf47fb5d..a434384dc39 100644 --- a/admin/tool/dataprivacy/settings.php +++ b/admin/tool/dataprivacy/settings.php @@ -66,6 +66,12 @@ if ($hassiteconfig) { new lang_string('requireallenddatesforuserdeletion', 'tool_dataprivacy'), new lang_string('requireallenddatesforuserdeletion_desc', 'tool_dataprivacy'), 1)); + + // Whether the data retention summary should be shown in the page footer and in the user profile page. + $privacysettings->add(new admin_setting_configcheckbox('tool_dataprivacy/showdataretentionsummary', + new lang_string('showdataretentionsummary', 'tool_dataprivacy'), + new lang_string('showdataretentionsummary_desc', 'tool_dataprivacy'), + 1)); } }