MDL-84327 mod_quiz: Quiz notification excludes suspended users.
Only active users will receive "quiz opens soon" notifications. Co-authored-by: Leon Stringer <[email protected]>
This commit is contained in:
co-authored by
Leon Stringer
parent
ef1e72e76b
commit
5d3787409e
@@ -79,7 +79,7 @@ class notification_helper {
|
||||
$users = get_enrolled_users(
|
||||
context: \context_module::instance($quizobj->get_cm()->id),
|
||||
withcapability: 'mod/quiz:attempt',
|
||||
userfields: 'u.id, u.firstname',
|
||||
userfields: 'u.id, u.firstname, u.suspended, u.auth',
|
||||
);
|
||||
|
||||
// Filter a list of users who meet the availability conditions.
|
||||
@@ -90,6 +90,10 @@ class notification_helper {
|
||||
$overrides = $quizobj->get_override_manager()->get_all_overrides();
|
||||
|
||||
foreach ($users as $key => $user) {
|
||||
if ($user->suspended || ($user->auth == 'nologin')) {
|
||||
unset($users[$key]);
|
||||
continue;
|
||||
}
|
||||
// Time open and time close dates can be user specific with an override.
|
||||
// We begin by assuming it is the same as recorded in the quiz.
|
||||
$user->timeopen = $quiz->timeopen;
|
||||
|
||||
@@ -91,11 +91,13 @@ final class notification_helper_test extends \advanced_testcase {
|
||||
$user3 = $generator->create_user();
|
||||
$user4 = $generator->create_user();
|
||||
$user5 = $generator->create_user();
|
||||
$user6 = $generator->create_user(['suspended' => 1]);
|
||||
$generator->enrol_user($user1->id, $course->id, 'student');
|
||||
$generator->enrol_user($user2->id, $course->id, 'student');
|
||||
$generator->enrol_user($user3->id, $course->id, 'student');
|
||||
$generator->enrol_user($user4->id, $course->id, 'student');
|
||||
$generator->enrol_user($user5->id, $course->id, 'teacher');
|
||||
$generator->enrol_user($user6->id, $course->id, 'student');
|
||||
|
||||
/** @var \mod_quiz_generator $quizgenerator */
|
||||
$quizgenerator = $generator->get_plugin_generator('mod_quiz');
|
||||
@@ -150,6 +152,9 @@ final class notification_helper_test extends \advanced_testcase {
|
||||
// User5 should not be in the returned users because they are a teacher.
|
||||
$this->assertArrayNotHasKey($user5->id, $users);
|
||||
|
||||
// User6 should not be in the returned users because it is suspended.
|
||||
$this->assertArrayNotHasKey($user6->id, $users);
|
||||
|
||||
// Let's add some availability conditions.
|
||||
$availability =
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user