diff --git a/classes/privacy/provider.php b/classes/privacy/provider.php
index 91b7df9983fd396e190c208914569a703ed14581..d2905a645ac5e81609038cd4dae7158d3de0dfef 100644
--- a/classes/privacy/provider.php
+++ b/classes/privacy/provider.php
@@ -166,7 +166,7 @@ class provider implements
list($insql, $params) = $DB->get_in_or_equal($userlist->get_userids());
$sql = "UPDATE {tool_lifecycle_action_log}
SET userid = -1
- WHERE $insql";
+ WHERE userid " . $insql;
$DB->execute($sql, $params);
}
diff --git a/tests/privacy_test.php b/tests/privacy_test.php
index dee922e591c478622c1af74435de45109ebe96bb..cce99eccca04c05d40eb579a421f96510b4cbdfd 100644
--- a/tests/privacy_test.php
+++ b/tests/privacy_test.php
@@ -26,7 +26,9 @@
defined('MOODLE_INTERNAL') || die();
global $CFG;
+use core_privacy\local\request\approved_userlist;
use core_privacy\local\request\content_writer;
+use core_privacy\local\request\userlist;
use core_privacy\local\request\writer;
use core_privacy\tests\provider_testcase;
use core_privacy\tests\request\approved_contextlist;
@@ -165,4 +167,79 @@ class tool_lifecycle_privacy_test extends provider_testcase {
$this->assertFalse($DB->record_exists_select('tool_lifecycle_action_log', 'userid != -1'));
}
+ public function test_delete_data_for_user() {
+ global $DB;
+ $c1 = $this->getDataGenerator()->create_course();
+ $c2 = $this->getDataGenerator()->create_course();
+ $u1 = $this->getDataGenerator()->create_user();
+ $u2 = $this->getDataGenerator()->create_user();
+
+
+ $p1 = $this->generator->create_process($c1->id, $this->workflow->id);
+ $p2 = $this->generator->create_process($c2->id, $this->workflow->id);
+
+ $processor = new processor();
+ $processor->process_courses();
+
+ $this->setUser($u1);
+ interaction_manager::handle_interaction($this->emailstep->id, $p1->id, self::ACTION_KEEP);
+
+ $this->setUser($u2);
+ interaction_manager::handle_interaction($this->emailstep->id, $p2->id, self::ACTION_KEEP);
+
+
+ $contextlist = new approved_contextlist($u1, 'tool_lifecycle', [1]);
+ provider::delete_data_for_user($contextlist);
+ $this->assertEquals(0, $DB->count_records_select('tool_lifecycle_action_log', "userid = $u1->id"));
+ $this->assertEquals(1, $DB->count_records_select('tool_lifecycle_action_log', "userid = $u2->id"));
+ $this->assertEquals(1, $DB->count_records_select('tool_lifecycle_action_log', "userid = -1"));
+ }
+
+ public function test_get_users_in_context() {
+ $c1 = $this->getDataGenerator()->create_course();
+ $c2 = $this->getDataGenerator()->create_course();
+ $u1 = $this->getDataGenerator()->create_user();
+
+ $p1 = $this->generator->create_process($c1->id, $this->workflow->id);
+ $p2 = $this->generator->create_process($c2->id, $this->workflow->id);
+
+ $processor = new processor();
+ $processor->process_courses();
+
+ $this->setUser($u1);
+ interaction_manager::handle_interaction($this->emailstep->id, $p1->id, self::ACTION_KEEP);
+ interaction_manager::handle_interaction($this->emailstep->id, $p2->id, self::ACTION_KEEP);
+
+ $userlist = new userlist(context_system::instance(), 'tool_lifecycle');
+ provider::get_users_in_context($userlist);
+ $this->assertEquals(1, $userlist->count());
+ $this->assertEquals($u1->id, $userlist->current()->id);
+ }
+
+ public function test_delete_data_for_users() {
+ global $DB;
+ $c1 = $this->getDataGenerator()->create_course();
+ $c2 = $this->getDataGenerator()->create_course();
+ $u1 = $this->getDataGenerator()->create_user();
+ $u2 = $this->getDataGenerator()->create_user();
+
+ $proc1 = $this->generator->create_process($c1->id, $this->workflow->id);
+ $proc2 = $this->generator->create_process($c2->id, $this->workflow->id);
+ $this->setUser($u1);
+
+ $processor = new processor();
+ $processor->process_courses();
+
+ interaction_manager::handle_interaction($this->emailstep->id, $proc1->id, self::ACTION_KEEP);
+
+ $this->setUser($u2);
+ interaction_manager::handle_interaction($this->emailstep->id, $proc2->id, self::ACTION_KEEP);
+
+ $userlist = new approved_userlist(context_system::instance(), 'tool_lifecycle', [$u1->id]);
+ provider::delete_data_for_users($userlist);
+ $this->assertEquals(0, $DB->count_records_select('tool_lifecycle_action_log', "userid = $u1->id"));
+ $this->assertEquals(1, $DB->count_records_select('tool_lifecycle_action_log', "userid = $u2->id"));
+ $this->assertEquals(1, $DB->count_records_select('tool_lifecycle_action_log', "userid = -1"));
+ }
+
}
\ No newline at end of file