diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 7dc4c7ccdf4..aa5ac050b34 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -2346,6 +2346,9 @@ class assign { } } + // Exclude suspended users from the list of participants. + $additionalfilters .= " AND u.suspended = 0 AND u.auth <> 'nologin'"; + $sql = "SELECT $fields FROM {user} u JOIN ($esql UNION $ssql) je ON je.id = u.id diff --git a/mod/assign/tests/notification_helper_test.php b/mod/assign/tests/notification_helper_test.php index 6d877242f60..3e8a9931a03 100644 --- a/mod/assign/tests/notification_helper_test.php +++ b/mod/assign/tests/notification_helper_test.php @@ -167,6 +167,14 @@ final class notification_helper_test extends \advanced_testcase { $user1 = $generator->create_user(); $generator->enrol_user($user1->id, $course->id, 'student'); + // Suspended user, should not receive notification. + $user2 = $generator->create_user(['suspended' => 1]); + $generator->enrol_user($user2->id, $course->id, 'student'); + + // Nologin user, should not receive notification. + $user3 = $generator->create_user(['auth' => 'nologin']); + $generator->enrol_user($user3->id, $course->id, 'student'); + /** @var \mod_assign_generator $assignmentgenerator */ $assignmentgenerator = $generator->get_plugin_generator('mod_assign'); @@ -431,6 +439,14 @@ final class notification_helper_test extends \advanced_testcase { $course = $generator->create_course(); $user1 = $generator->create_and_enrol($course, 'student'); + // Suspended user, should not receive notification. + $user2 = $generator->create_user(['suspended' => 1]); + $generator->enrol_user($user2->id, $course->id, 'student'); + + // Nologin user, should not receive notification. + $user3 = $generator->create_user(['auth' => 'nologin']); + $generator->enrol_user($user3->id, $course->id, 'student'); + /** @var \mod_assign_generator $assignmentgenerator */ $assignmentgenerator = $generator->get_plugin_generator('mod_assign'); @@ -653,6 +669,14 @@ final class notification_helper_test extends \advanced_testcase { $user1 = $generator->create_user(); $generator->enrol_user($user1->id, $course->id, 'student'); + // Suspended user, should not receive notification. + $user2 = $generator->create_user(['suspended' => 1]); + $generator->enrol_user($user2->id, $course->id, 'student'); + + // Nologin user, should not receive notification. + $user3 = $generator->create_user(['auth' => 'nologin']); + $generator->enrol_user($user3->id, $course->id, 'student'); + /** @var \mod_assign_generator $assignmentgenerator */ $assignmentgenerator = $generator->get_plugin_generator('mod_assign');