mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 08:56:36 +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);
|
$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.'&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 . '&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();
|
||||||
|
|
|
@ -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]);
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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)"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue