This commit is contained in:
Sara Arjona 2025-04-15 16:44:54 +02:00
commit 8661fe8d8b
No known key found for this signature in database
2 changed files with 42 additions and 16 deletions

View File

@ -140,17 +140,21 @@ class provider implements
break;
default:
if (strpos($name, 'grade_report_grader_collapsed_categories') === 0) {
$prefname = 'grade_report_grader_collapsed_categories';
$prefname = $name;
$courseid = substr($name, strlen('grade_report_grader_collapsed_categories'));
$transformedvalue = $value;
$course = get_course($courseid);
$prefdescription = get_string(
'privacy:request:preference:'.$prefname,
'gradereport_grader',
(object) [
'name' => $course->fullname,
]
);
try {
$course = get_course($courseid);
$prefdescription = get_string(
'privacy:request:preference:grade_report_grader_collapsed_categories',
'gradereport_grader',
(object) [
'name' => $course->fullname,
]
);
} catch (\dml_missing_record_exception $exception) {
continue 2;
}
}
}

View File

@ -91,12 +91,22 @@ final class provider_test extends \core_privacy\tests\provider_testcase {
* Ensure that export_user_preferences returns preferences.
*/
public function test_export_user_preferences_multiple(): void {
// Create a course and add a user preference.
$user = $this->getDataGenerator()->create_user();
$this->setUser($user);
$course = $this->getDataGenerator()->create_course();
$collapsed = serialize(['aggregatesonly' => array(), 'gradesonly' => array()]);
set_user_preference('grade_report_grader_collapsed_categories'.$course->id, $collapsed, $user);
// Set preference for an invalid course.
set_user_preference('grade_report_grader_collapsed_categories42', serialize(['gradesonly' => []]));
// Set preferences for a couple of valid courses.
$courseone = $this->getDataGenerator()->create_course();
$courseonepreferencename = "grade_report_grader_collapsed_categories{$courseone->id}";
$courseonepreferencevalue = serialize(['aggregatesonly' => [], 'gradesonly' => []]);
set_user_preference($courseonepreferencename, $courseonepreferencevalue);
$coursetwo = $this->getDataGenerator()->create_course();
$coursetwopreferencename = "grade_report_grader_collapsed_categories{$coursetwo->id}";
$coursetwopreferencevalue = serialize(['gradesonly' => [], 'aggregatesonly' => []]);
set_user_preference($coursetwopreferencename, $coursetwopreferencevalue);
// Validate exported data.
provider::export_user_preferences($user->id);
@ -105,10 +115,22 @@ final class provider_test extends \core_privacy\tests\provider_testcase {
$writer = writer::with_context($context);
$this->assertTrue($writer->has_any_data());
$prefs = $writer->get_user_preferences('gradereport_grader');
$this->assertCount(1, (array) $prefs);
$this->assertCount(2, (array) $prefs);
$this->assertEquals($courseonepreferencevalue, $prefs->{$courseonepreferencename}->value);
$this->assertEquals(
get_string('privacy:request:preference:grade_report_grader_collapsed_categories', 'gradereport_grader', ['name' => $course->fullname]),
$prefs->grade_report_grader_collapsed_categories->description
get_string('privacy:request:preference:grade_report_grader_collapsed_categories', 'gradereport_grader', [
'name' => $courseone->fullname,
]),
$prefs->{$courseonepreferencename}->description,
);
$this->assertEquals($coursetwopreferencevalue, $prefs->{$coursetwopreferencename}->value);
$this->assertEquals(
get_string('privacy:request:preference:grade_report_grader_collapsed_categories', 'gradereport_grader', [
'name' => $coursetwo->fullname,
]),
$prefs->{$coursetwopreferencename}->description,
);
}
}