mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
Merge branch 'MDL-62920-master' of https://github.com/aanabit/moodle
This commit is contained in:
commit
d6d5ea5d04
6 changed files with 76 additions and 13 deletions
|
@ -66,8 +66,8 @@ if (count($cohorts) < 2) {
|
|||
$countries = get_string_manager()->get_list_of_countries(true);
|
||||
$namefields = get_all_user_name_fields(true);
|
||||
foreach ($users as $key => $id) {
|
||||
$user = $DB->get_record('user', array('id'=>$id, 'deleted'=>0), 'id, ' . $namefields . ', username,
|
||||
email, country, lastaccess, city');
|
||||
$user = $DB->get_record('user', array('id' => $id), 'id, ' . $namefields . ', username,
|
||||
email, country, lastaccess, city, deleted');
|
||||
$user->fullname = fullname($user, true);
|
||||
$user->country = @$countries[$user->country];
|
||||
unset($user->firstname);
|
||||
|
@ -84,7 +84,7 @@ if (empty($users) or $mform->is_cancelled()) {
|
|||
} else if ($data = $mform->get_data()) {
|
||||
// process request
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -125,13 +125,25 @@ foreach ($columns as $column) {
|
|||
}
|
||||
|
||||
foreach ($users as $user) {
|
||||
$table->data[] = array (
|
||||
'<a href="'.$CFG->wwwroot.'/user/view.php?id='.$user->id.'&course='.SITEID.'">'.$user->fullname.'</a>',
|
||||
$user->email,
|
||||
$user->city,
|
||||
$user->country,
|
||||
$user->lastaccess ? format_time(time() - $user->lastaccess) : $strnever
|
||||
);
|
||||
if ($user->deleted) {
|
||||
$table->data[] = array (
|
||||
$user->fullname,
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
get_string('deleteduser', 'bulkusers')
|
||||
);
|
||||
} else {
|
||||
$table->data[] = array(
|
||||
'<a href="' . $CFG->wwwroot . '/user/view.php?id=' . $user->id . '&course=' . SITEID . '">' .
|
||||
$user->fullname .
|
||||
'</a>',
|
||||
$user->email,
|
||||
$user->city,
|
||||
$user->country,
|
||||
$user->lastaccess ? format_time(time() - $user->lastaccess) : $strnever
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
echo $OUTPUT->header();
|
||||
|
|
|
@ -24,7 +24,7 @@ echo $OUTPUT->header();
|
|||
if ($confirm and confirm_sesskey()) {
|
||||
$notifications = '';
|
||||
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) {
|
||||
if (!is_siteadmin($user) and $USER->id != $user->id and delete_user($user)) {
|
||||
unset($SESSION->bulk_users[$user->id]);
|
||||
|
|
|
@ -30,6 +30,7 @@ $string['allselectedusers'] = 'All selected ({$a->count}/{$a->total})';
|
|||
$string['allusers'] = 'All users ({$a})';
|
||||
$string['available'] = 'Available';
|
||||
$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['noselectedusers'] = 'No users selected';
|
||||
$string['removeall'] = 'Remove all';
|
||||
|
|
|
@ -4091,7 +4091,7 @@ function truncate_userinfo(array $info) {
|
|||
* @throws coding_exception if invalid $user parameter detected
|
||||
*/
|
||||
function delete_user(stdClass $user) {
|
||||
global $CFG, $DB;
|
||||
global $CFG, $DB, $SESSION;
|
||||
require_once($CFG->libdir.'/grouplib.php');
|
||||
require_once($CFG->libdir.'/gradelib.php');
|
||||
require_once($CFG->dirroot.'/message/lib.php');
|
||||
|
@ -4186,6 +4186,11 @@ function delete_user(stdClass $user) {
|
|||
// Remove users customised pages.
|
||||
$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.
|
||||
\core\session\manager::kill_user_sessions($user->id);
|
||||
|
||||
|
|
|
@ -18,6 +18,9 @@ Feature: Bulk enrolments
|
|||
| student1 | C1 | student |
|
||||
| student2 | C1 | student |
|
||||
| teacher1 | C1 | editingteacher |
|
||||
And the following "cohorts" exist:
|
||||
| name | idnumber |
|
||||
| Cohort | cohortid1 |
|
||||
|
||||
@javascript
|
||||
Scenario: Bulk edit enrolments
|
||||
|
@ -29,7 +32,7 @@ Feature: Bulk enrolments
|
|||
And I set the field "Alter status" to "Suspended"
|
||||
And I press "Save changes"
|
||||
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"
|
||||
|
||||
@javascript
|
||||
|
@ -43,3 +46,27 @@ Feature: Bulk enrolments
|
|||
Then I should not see "Student 1"
|
||||
And I should not see "Student 2"
|
||||
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)"
|
||||
|
|
|
@ -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 One"
|
||||
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"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue