From 7746bd01839e30e6ed5902ede5a846d3346b1cbd Mon Sep 17 00:00:00 2001 From: Justus Dieckmann <justusdieckmann@wwu.de> Date: Sat, 14 Sep 2019 18:55:28 +0200 Subject: [PATCH] Privacy: Implement delete_data_for_all_users_in_context, delete_data_for_user --- .../table/interaction_remaining_table.php | 6 +++++- classes/privacy/provider.php | 19 +++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/classes/local/table/interaction_remaining_table.php b/classes/local/table/interaction_remaining_table.php index 27cc90e..d182632 100644 --- a/classes/local/table/interaction_remaining_table.php +++ b/classes/local/table/interaction_remaining_table.php @@ -164,7 +164,11 @@ class interaction_remaining_table extends interaction_table { } // Otherwise, show latest action commited by user. global $CFG; - $userlink = \html_writer::link($CFG->wwwroot . '/user/profile.php?id=' . $row->userid, fullname($row)); + if($row->userid === -1) { + $userlink = get_string("anonymous_user"); + } else { + $userlink = \html_writer::link($CFG->wwwroot . '/user/profile.php?id=' . $row->userid, fullname($row)); + } $interactionlib = lib_manager::get_step_interactionlib($row->subpluginname); return $interactionlib->get_action_string($row->action, $userlink); } diff --git a/classes/privacy/provider.php b/classes/privacy/provider.php index 798377f..a77ccf2 100644 --- a/classes/privacy/provider.php +++ b/classes/privacy/provider.php @@ -26,9 +26,7 @@ namespace tool_lifecycle\privacy; 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; -use core_privacy\local\request\core_user_data_provider; use core_privacy\local\request\writer; defined('MOODLE_INTERNAL') || die(); @@ -103,7 +101,12 @@ class provider implements \core_privacy\local\metadata\provider, * @param context $context The specific context to delete data for. */ public static function delete_data_for_all_users_in_context(\context $context) { - + global $DB; + if ($context instanceof \context_system) { + $sql = "UPDATE {tool_lifecycle_action_log} + SET userid = -1"; + $DB->execute($sql); + } } /** @@ -112,6 +115,14 @@ class provider implements \core_privacy\local\metadata\provider, * @param approved_contextlist $contextlist The approved contexts and user information to delete information for. */ public static function delete_data_for_user(approved_contextlist $contextlist) { - // TODO: Implement delete_data_for_user() method. + global $DB; + foreach ($contextlist->get_contexts() as $context) { + if ($context instanceof \context_system) { + $sql = "UPDATE {tool_lifecycle_action_log} + SET userid = -1 + WHERE userid = :userid"; + $DB->execute($sql, array('userid' => $contextlist->get_user()->id)); + } + } } } -- GitLab