diff --git a/user/action_redir.php b/user/action_redir.php index e17c4d0582e..c7c70739b97 100644 --- a/user/action_redir.php +++ b/user/action_redir.php @@ -230,6 +230,12 @@ if ($formaction == 'bulkchange.php') { }; $filteredusers = array_filter($users, $matchesplugin); + // If the bulk operation is deleting enrolments, we exclude in any case the current user as it was probably a mistake. + if ($operationname === 'deleteselectedusers' && (!in_array($USER->id, $removed))) { + \core\notification::warning(get_string('userremovedfromselectiona', 'enrol', fullname($USER))); + unset($filteredusers[$USER->id]); + } + if (empty($filteredusers)) { redirect($returnurl, get_string('noselectedusers', 'bulkusers')); } diff --git a/user/tests/behat/bulk_editenrolment.feature b/user/tests/behat/bulk_editenrolment.feature index a81510a8fb4..c617a35660b 100644 --- a/user/tests/behat/bulk_editenrolment.feature +++ b/user/tests/behat/bulk_editenrolment.feature @@ -48,6 +48,25 @@ Feature: Bulk enrolments And I should not see "Teacher 1" And I should see "3 unenrolled users" + @javascript + Scenario: Bulk delete enrolments when user is themselves enrolled + When I log in as "teacher1" + And I am on "Course 1" course homepage + And I navigate to course participants + And I click on "Select all" "checkbox" + And I set the field "With selected users..." to "Delete selected user enrolments" + Then I should see "User \"Teacher 1\" was removed from the selection." + And the following should exist in the "Delete selected user enrolments" table: + | Student 1 | student1@example.com | + | Student 2 | student2@example.com | + And I press "Unenrol users" + Then I should see "2 unenrolled users" + And I should see "User \"Teacher 1\" was removed from the selection." + And the following should exist in the "Enrolled users" table: + | Teacher 1 | teacher1@example.com | + And I should not see "Student 1" + And I should not see "Student 2" + @javascript Scenario: Bulk edit enrolment for deleted user When I log in as "admin"