MDL-84327 mod_assign: Suspended account error

Change list_participants() to exclude both suspended users and users
with auth='nologin' when show_only_active_users() is true.  This
prevents the failure of notification tasks when such users are enrolled
in the course.

Co-authored-by: Leon Stringer <[email protected]>
This commit is contained in:
raortegar
2025-02-20 16:32:19 +01:00
co-authored by Leon Stringer
parent 536c9d895a
commit ef1e72e76b
2 changed files with 27 additions and 0 deletions
+3
View File
@@ -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
@@ -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');