From de2f0d85e72bad65bec3edf2cbfad3f7470fc563 Mon Sep 17 00:00:00 2001 From: Shamim Rezaie Date: Mon, 8 Apr 2019 15:39:36 +1000 Subject: [PATCH] MDL-65293 core_calendar: Privacy deletion fix Deleting in course context should not delete from course modules --- calendar/classes/privacy/provider.php | 3 +-- calendar/tests/privacy_test.php | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/calendar/classes/privacy/provider.php b/calendar/classes/privacy/provider.php index 719394c005e..bcb56b5f7ae 100644 --- a/calendar/classes/privacy/provider.php +++ b/calendar/classes/privacy/provider.php @@ -531,8 +531,7 @@ class provider implements AND ctx.contextlevel = :categorycontext) OR (e.courseid = ctx.instanceid AND (e.eventtype = 'course' - OR e.eventtype = 'group' - OR e.modulename != '0') + OR e.eventtype = 'group') AND ctx.contextlevel = :coursecontext) OR (e.userid = ctx.instanceid AND e.eventtype = 'user' diff --git a/calendar/tests/privacy_test.php b/calendar/tests/privacy_test.php index 0921296143a..2b7157d5dc2 100644 --- a/calendar/tests/privacy_test.php +++ b/calendar/tests/privacy_test.php @@ -365,12 +365,23 @@ class core_calendar_privacy_testcase extends provider_testcase { // Delete all Calendar Events for all Users by Context for Course 2. provider::delete_data_for_all_users_in_context($course2context); - // Verify all Calendar Events for Course 2 were deleted. - $events = $DB->get_records('event', array('courseid' => $course2->id)); + // Verify all Calendar Events for Course 2 context were deleted. + $events = $DB->get_records('event', array('courseid' => $course2->id, 'modulename' => '0')); $this->assertCount(0, $events); // Verify all Calendar Subscriptions for Course 2 were deleted. $subscriptions = $DB->get_records('event_subscriptions', array('courseid' => $course2->id)); $this->assertCount(0, $subscriptions); + + // Verify all Calendar Events for the assignment exists still. + $events = $DB->get_records('event', array('modulename' => 'assign')); + $this->assertCount(2, $events); + + // Delete all Calendar Events for all Users by Context for the assignment. + provider::delete_data_for_all_users_in_context($modulecontext); + + // Verify all Calendar Events for the assignment context were deleted. + $events = $DB->get_records('event', array('modulename' => 'assign')); + $this->assertCount(0, $events); } /**