Merge branch 'MDL-62920-master' of https://github.com/aanabit/moodle

This commit is contained in:
Eloy Lafuente (stronk7) 2018-10-18 23:47:37 +02:00
commit d6d5ea5d04
6 changed files with 76 additions and 13 deletions

View file

@ -66,8 +66,8 @@ if (count($cohorts) < 2) {
$countries = get_string_manager()->get_list_of_countries(true); $countries = get_string_manager()->get_list_of_countries(true);
$namefields = get_all_user_name_fields(true); $namefields = get_all_user_name_fields(true);
foreach ($users as $key => $id) { foreach ($users as $key => $id) {
$user = $DB->get_record('user', array('id'=>$id, 'deleted'=>0), 'id, ' . $namefields . ', username, $user = $DB->get_record('user', array('id' => $id), 'id, ' . $namefields . ', username,
email, country, lastaccess, city'); email, country, lastaccess, city, deleted');
$user->fullname = fullname($user, true); $user->fullname = fullname($user, true);
$user->country = @$countries[$user->country]; $user->country = @$countries[$user->country];
unset($user->firstname); unset($user->firstname);
@ -84,7 +84,7 @@ if (empty($users) or $mform->is_cancelled()) {
} else if ($data = $mform->get_data()) { } else if ($data = $mform->get_data()) {
// process request // process request
foreach ($users as $user) { foreach ($users as $user) {
if (!$DB->record_exists('cohort_members', array('cohortid'=>$data->cohort, 'userid'=>$user->id))) { if (!$user->deleted && !$DB->record_exists('cohort_members', array('cohortid' => $data->cohort, 'userid' => $user->id))) {
cohort_add_member($data->cohort, $user->id); cohort_add_member($data->cohort, $user->id);
} }
} }
@ -125,13 +125,25 @@ foreach ($columns as $column) {
} }
foreach ($users as $user) { foreach ($users as $user) {
$table->data[] = array ( if ($user->deleted) {
'<a href="'.$CFG->wwwroot.'/user/view.php?id='.$user->id.'&amp;course='.SITEID.'">'.$user->fullname.'</a>', $table->data[] = array (
$user->email, $user->fullname,
$user->city, '',
$user->country, '',
$user->lastaccess ? format_time(time() - $user->lastaccess) : $strnever '',
); get_string('deleteduser', 'bulkusers')
);
} else {
$table->data[] = array(
'<a href="' . $CFG->wwwroot . '/user/view.php?id=' . $user->id . '&amp;course=' . SITEID . '">' .
$user->fullname .
'</a>',
$user->email,
$user->city,
$user->country,
$user->lastaccess ? format_time(time() - $user->lastaccess) : $strnever
);
}
} }
echo $OUTPUT->header(); echo $OUTPUT->header();

View file

@ -24,7 +24,7 @@ echo $OUTPUT->header();
if ($confirm and confirm_sesskey()) { if ($confirm and confirm_sesskey()) {
$notifications = ''; $notifications = '';
list($in, $params) = $DB->get_in_or_equal($SESSION->bulk_users); list($in, $params) = $DB->get_in_or_equal($SESSION->bulk_users);
$rs = $DB->get_recordset_select('user', "id $in", $params); $rs = $DB->get_recordset_select('user', "deleted = 0 and id $in", $params);
foreach ($rs as $user) { foreach ($rs as $user) {
if (!is_siteadmin($user) and $USER->id != $user->id and delete_user($user)) { if (!is_siteadmin($user) and $USER->id != $user->id and delete_user($user)) {
unset($SESSION->bulk_users[$user->id]); unset($SESSION->bulk_users[$user->id]);

View file

@ -30,6 +30,7 @@ $string['allselectedusers'] = 'All selected ({$a->count}/{$a->total})';
$string['allusers'] = 'All users ({$a})'; $string['allusers'] = 'All users ({$a})';
$string['available'] = 'Available'; $string['available'] = 'Available';
$string['confirmmessage'] = 'Do you really want to send the message above to all these users?<br />{$a}'; $string['confirmmessage'] = 'Do you really want to send the message above to all these users?<br />{$a}';
$string['deleteduser'] = 'Deleted user';
$string['nofilteredusers'] = 'No users found (0/{$a})'; $string['nofilteredusers'] = 'No users found (0/{$a})';
$string['noselectedusers'] = 'No users selected'; $string['noselectedusers'] = 'No users selected';
$string['removeall'] = 'Remove all'; $string['removeall'] = 'Remove all';

View file

@ -4091,7 +4091,7 @@ function truncate_userinfo(array $info) {
* @throws coding_exception if invalid $user parameter detected * @throws coding_exception if invalid $user parameter detected
*/ */
function delete_user(stdClass $user) { function delete_user(stdClass $user) {
global $CFG, $DB; global $CFG, $DB, $SESSION;
require_once($CFG->libdir.'/grouplib.php'); require_once($CFG->libdir.'/grouplib.php');
require_once($CFG->libdir.'/gradelib.php'); require_once($CFG->libdir.'/gradelib.php');
require_once($CFG->dirroot.'/message/lib.php'); require_once($CFG->dirroot.'/message/lib.php');
@ -4186,6 +4186,11 @@ function delete_user(stdClass $user) {
// Remove users customised pages. // Remove users customised pages.
$DB->delete_records('my_pages', array('userid' => $user->id, 'private' => 1)); $DB->delete_records('my_pages', array('userid' => $user->id, 'private' => 1));
// Delete user from $SESSION->bulk_users.
if (isset($SESSION->bulk_users[$user->id])) {
unset($SESSION->bulk_users[$user->id]);
}
// Force logout - may fail if file based sessions used, sorry. // Force logout - may fail if file based sessions used, sorry.
\core\session\manager::kill_user_sessions($user->id); \core\session\manager::kill_user_sessions($user->id);

View file

@ -18,6 +18,9 @@ Feature: Bulk enrolments
| student1 | C1 | student | | student1 | C1 | student |
| student2 | C1 | student | | student2 | C1 | student |
| teacher1 | C1 | editingteacher | | teacher1 | C1 | editingteacher |
And the following "cohorts" exist:
| name | idnumber |
| Cohort | cohortid1 |
@javascript @javascript
Scenario: Bulk edit enrolments Scenario: Bulk edit enrolments
@ -29,7 +32,7 @@ Feature: Bulk enrolments
And I set the field "Alter status" to "Suspended" And I set the field "Alter status" to "Suspended"
And I press "Save changes" And I press "Save changes"
Then I should see "Suspended" in the "Teacher 1" "table_row" Then I should see "Suspended" in the "Teacher 1" "table_row"
Then I should see "Suspended" in the "Student 1" "table_row" And I should see "Suspended" in the "Student 1" "table_row"
And I should see "Suspended" in the "Student 2" "table_row" And I should see "Suspended" in the "Student 2" "table_row"
@javascript @javascript
@ -43,3 +46,27 @@ Feature: Bulk enrolments
Then I should not see "Student 1" Then I should not see "Student 1"
And I should not see "Student 2" And I should not see "Student 2"
And I should not see "Teacher 1" And I should not see "Teacher 1"
@javascript
Scenario: Bulk edit enrolment for deleted user
When I log in as "admin"
And I navigate to "Users > Accounts > Bulk user actions" in site administration
And I set the field "Available" to "Student 1"
And I press "Add to selection"
And I set the field "Available" to "Student 2"
And I press "Add to selection"
And I navigate to "Users > Accounts > Browse list of users" in site administration
And I set the following fields to these values:
| username | student1 |
And I press "Add filter"
And I click on "Delete" "link"
And I press "Delete"
And I navigate to "Users > Accounts > Bulk user actions" in site administration
And I set the field "id_action" to "Add to cohort"
And I press "Go"
And I set the field "id_cohort" to "Cohort [cohortid1]"
And I press "Add to cohort"
And I navigate to "Users > Accounts > Cohorts" in site administration
And I click on "Assign" "link"
Then the "removeselect" select box should contain "Student 2 (student2@example.com)"
And the "removeselect" select box should not contain "Student 1 (student1@example.com)"

View file

@ -87,3 +87,21 @@ Feature: Deleting users
And the "Available" select box should not contain "User Three" And the "Available" select box should not contain "User Three"
And the "Available" select box should not contain "User One" And the "Available" select box should not contain "User One"
And the "Available" select box should not contain "User Two" And the "Available" select box should not contain "User Two"
@javascript
Scenario: Deleting a bulked user
When I log in as "admin"
And I navigate to "Users > Accounts > Bulk user actions" in site administration
And I set the field "Available" to "User Two"
And I press "Add to selection"
And I set the field "Available" to "User One"
And I press "Add to selection"
Then I should see "User One"
And I navigate to "Users > Accounts > Browse list of users" in site administration
And I set the following fields to these values:
| username | user1 |
And I press "Add filter"
And I click on "Delete" "link"
And I press "Delete"
And I navigate to "Users > Accounts > Bulk user actions" in site administration
Then I should not see "User One"