MDL-62140 core_privacy: add helper functions to add system/user context
This commit is contained in:
@@ -61,6 +61,46 @@ class contextlist extends contextlist_base {
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the system context.
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function add_system_context() : contextlist {
|
||||
return $this->add_from_sql(SYSCONTEXTID, []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the user context for a given user.
|
||||
*
|
||||
* @param int $userid
|
||||
* @return $this
|
||||
*/
|
||||
public function add_user_context(int $userid) : contextlist {
|
||||
$sql = "SELECT DISTINCT ctx.id
|
||||
FROM {context} ctx
|
||||
WHERE ctx.contextlevel = :contextlevel
|
||||
AND ctx.instanceid = :instanceid";
|
||||
return $this->add_from_sql($sql, ['contextlevel' => CONTEXT_USER, 'instanceid' => $userid]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the user contexts for given users.
|
||||
*
|
||||
* @param array $userids
|
||||
* @return $this
|
||||
*/
|
||||
public function add_user_contexts(array $userids) : contextlist {
|
||||
global $DB;
|
||||
|
||||
list($useridsql, $useridparams) = $DB->get_in_or_equal($userids, SQL_PARAMS_NAMED);
|
||||
$sql = "SELECT DISTINCT ctx.id
|
||||
FROM {context} ctx
|
||||
WHERE ctx.contextlevel = :contextlevel
|
||||
AND ctx.instanceid $useridsql";
|
||||
return $this->add_from_sql($sql, ['contextlevel' => CONTEXT_USER] + $useridparams);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the component for this contextlist.
|
||||
*
|
||||
|
||||
@@ -37,6 +37,13 @@ use \core_privacy\local\request\contextlist;
|
||||
*/
|
||||
class contextlist_test extends advanced_testcase {
|
||||
|
||||
/**
|
||||
* Runs before each test is performed.
|
||||
*/
|
||||
public function setUp() {
|
||||
$this->resetAfterTest();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure that valid SQL results in the relevant contexts being added.
|
||||
*/
|
||||
@@ -52,4 +59,51 @@ class contextlist_test extends advanced_testcase {
|
||||
|
||||
$this->assertCount(count($allcontexts), $uit);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure that valid system context id is added.
|
||||
*/
|
||||
public function test_add_system_context() {
|
||||
$cl = new contextlist();
|
||||
$cl->add_system_context();
|
||||
|
||||
$this->assertCount(1, $cl);
|
||||
|
||||
foreach ($cl->get_contexts() as $context) {
|
||||
$this->assertEquals(SYSCONTEXTID, $context->id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure that a valid user context id is added.
|
||||
*/
|
||||
public function test_add_user_context() {
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
|
||||
$cl = new contextlist();
|
||||
$cl->add_user_context($user->id);
|
||||
|
||||
$this->assertCount(1, $cl);
|
||||
|
||||
foreach ($cl->get_contexts() as $context) {
|
||||
$this->assertEquals(\context_user::instance($user->id)->id, $context->id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure that valid user contexts are added.
|
||||
*/
|
||||
public function test_add_user_contexts() {
|
||||
$user1 = $this->getDataGenerator()->create_user();
|
||||
$user2 = $this->getDataGenerator()->create_user();
|
||||
|
||||
$cl = new contextlist();
|
||||
$cl->add_user_contexts([$user1->id, $user2->id]);
|
||||
|
||||
$this->assertCount(2, $cl);
|
||||
|
||||
$contexts = $cl->get_contextids();
|
||||
$this->assertContains(\context_user::instance($user1->id)->id, $contexts);
|
||||
$this->assertContains(\context_user::instance($user2->id)->id, $contexts);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user