MDL-61743 core_privacy: Reduce context specificty

Deletion is called for a context against all components, not just
modules.
This commit is contained in:
Andrew Nicols 2018-03-27 08:17:01 +08:00 committed by David Monllao
parent 2bd2660751
commit fa9243cd85

View file

@ -90,11 +90,9 @@ class helper {
* @param context $context The specific context to delete data for. * @param context $context The specific context to delete data for.
*/ */
public static function delete_data_for_all_users_in_context(string $component, \context $context) { public static function delete_data_for_all_users_in_context(string $component, \context $context) {
if (strpos($component, 'mod_') === 0) {
// Activity modules support data stored by core about them - for example, activity completion. // Activity modules support data stored by core about them - for example, activity completion.
static::delete_data_for_all_users_in_context_course_module($component, $context); static::delete_data_for_all_users_in_context_course_module($component, $context);
} }
}
/** /**
* Delete all 'standard' user data for the specified user, in the specified contexts. * Delete all 'standard' user data for the specified user, in the specified contexts.
@ -106,11 +104,9 @@ class helper {
public static function delete_data_for_user(approved_contextlist $contextlist) { public static function delete_data_for_user(approved_contextlist $contextlist) {
$component = $contextlist->get_component(); $component = $contextlist->get_component();
if (strpos($component, 'mod_') === 0) {
// Activity modules support data stored by core about them - for example, activity completion. // Activity modules support data stored by core about them - for example, activity completion.
static::delete_data_for_user_in_course_module($contextlist); static::delete_data_for_user_in_course_module($contextlist);
} }
}
/** /**
* Get all general data for this context. * Get all general data for this context.
@ -270,14 +266,16 @@ class helper {
* This will handle deletion for things such as activity completion. * This will handle deletion for things such as activity completion.
* *
* @param string $component The component being deleted for. * @param string $component The component being deleted for.
* @param \context_module $context The context to delete all data for. * @param \context $context The context to delete all data for.
*/ */
public static function delete_data_for_all_users_in_context_course_module(string $component, \context_module $context) { public static function delete_data_for_all_users_in_context_course_module(string $component, \context $context) {
global $DB; global $DB;
if ($context instanceof \context_module) {
// Delete course completion data for this context. // Delete course completion data for this context.
$DB->delete_records('course_modules_completion', ['coursemoduleid' => $context->instanceid]); $DB->delete_records('course_modules_completion', ['coursemoduleid' => $context->instanceid]);
} }
}
/** /**
* Delete all 'standard' user data for the specified user in course modules. * Delete all 'standard' user data for the specified user in course modules.
@ -290,12 +288,14 @@ class helper {
global $DB; global $DB;
foreach ($contextlist as $context) { foreach ($contextlist as $context) {
if ($context instanceof \context_module) {
// Delete course completion data for this context. // Delete course completion data for this context.
$DB->delete_records('course_modules_completion', [ $DB->delete_records('course_modules_completion', [
'coursemoduleid' => $context->instanceid, 'coursemoduleid' => $context->instanceid,
'userid' => $contextlist->get_user()->id, 'userid' => $contextlist->get_user()->id,
]); ]);
} }
}
} }
} }