mirror of
https://github.com/moodle/moodle.git
synced 2025-04-14 13:02:07 +02:00
MDL-64424 privacy: Use system context purpose on the front page, too
For activities on the site's front page, use the purpose and retention periods as defined for the system context, not for the courses.
This commit is contained in:
parent
c092f75791
commit
5f7b528281
@ -920,9 +920,17 @@ class expired_contexts_manager {
|
||||
* @return bool
|
||||
*/
|
||||
protected static function is_course_context_expired_or_unprotected_for_user(\context $context, \stdClass $user) {
|
||||
$expiryrecords = self::get_nested_expiry_info_for_courses($context->path);
|
||||
|
||||
$info = $expiryrecords[$context->path]->info;
|
||||
if ($context->get_course_context()->instanceid == SITEID) {
|
||||
// The is an activity in the site course (front page).
|
||||
$purpose = data_registry::get_effective_contextlevel_value(CONTEXT_SYSTEM, 'purpose');
|
||||
$info = static::get_expiry_info($purpose);
|
||||
|
||||
} else {
|
||||
$expiryrecords = self::get_nested_expiry_info_for_courses($context->path);
|
||||
$info = $expiryrecords[$context->path]->info;
|
||||
}
|
||||
|
||||
if ($info->is_fully_expired()) {
|
||||
// This context is fully expired.
|
||||
return true;
|
||||
|
@ -2222,6 +2222,40 @@ class tool_dataprivacy_expired_contexts_testcase extends advanced_testcase {
|
||||
$this->assertTrue(expired_contexts_manager::is_context_expired_or_unprotected_for_user($blockcontext, $user));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the is_context_expired functions when supplied with the front page course.
|
||||
*/
|
||||
public function test_is_context_expired_frontpage() {
|
||||
$this->resetAfterTest();
|
||||
|
||||
$purposes = $this->setup_basics('PT1H', 'PT1H', 'P1D');
|
||||
|
||||
$frontcourse = get_site();
|
||||
$frontcoursecontext = \context_course::instance($frontcourse->id);
|
||||
|
||||
$sitenews = $this->getDataGenerator()->create_module('forum', ['course' => $frontcourse->id]);
|
||||
$cm = get_coursemodule_from_instance('forum', $sitenews->id);
|
||||
$sitenewscontext = \context_module::instance($cm->id);
|
||||
|
||||
$user = $this->getDataGenerator()->create_user(['lastaccess' => time() - YEARSECS]);
|
||||
|
||||
$this->assertFalse(expired_contexts_manager::is_context_expired($frontcoursecontext));
|
||||
$this->assertFalse(expired_contexts_manager::is_context_expired($sitenewscontext));
|
||||
|
||||
$this->assertTrue(expired_contexts_manager::is_context_expired_or_unprotected_for_user($frontcoursecontext, $user));
|
||||
$this->assertTrue(expired_contexts_manager::is_context_expired_or_unprotected_for_user($sitenewscontext, $user));
|
||||
|
||||
// Protecting the course contextlevel does not impact the front page.
|
||||
$purposes->course->set('protected', 1)->save();
|
||||
$this->assertTrue(expired_contexts_manager::is_context_expired_or_unprotected_for_user($frontcoursecontext, $user));
|
||||
$this->assertTrue(expired_contexts_manager::is_context_expired_or_unprotected_for_user($sitenewscontext, $user));
|
||||
|
||||
// Protecting the system contextlevel affects the front page, too.
|
||||
$purposes->system->set('protected', 1)->save();
|
||||
$this->assertFalse(expired_contexts_manager::is_context_expired_or_unprotected_for_user($frontcoursecontext, $user));
|
||||
$this->assertFalse(expired_contexts_manager::is_context_expired_or_unprotected_for_user($sitenewscontext, $user));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the is_context_expired functions when supplied with an expired course.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user