diff --git a/course/reset_form.php b/course/reset_form.php index ce8b0f708b6..cb899f0d63b 100644 --- a/course/reset_form.php +++ b/course/reset_form.php @@ -27,6 +27,9 @@ class course_reset_form extends moodleform { $mform->addElement('header', 'rolesheader', get_string('roles')); $roles = get_assignable_roles(get_context_instance(CONTEXT_COURSE, $COURSE->id)); + $roles[0] = get_string('noroles', 'role'); + $roles = array_reverse($roles, true); + $mform->addElement('select', 'unenrol_users', get_string('unenrolroleusers', 'enrol'), $roles, array('multiple' => 'multiple')); $mform->addElement('checkbox', 'reset_roles_overrides', get_string('deletecourseoverrides', 'role')); $mform->setAdvanced('reset_roles_overrides'); diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 0099f60bfc9..942ab0bf92e 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -4775,12 +4775,24 @@ function reset_course_userdata($data) { } foreach($data->unenrol_users as $withroleid) { - $sql = "SELECT ue.* - FROM {user_enrolments} ue - JOIN {enrol} e ON (e.id = ue.enrolid AND e.courseid = :courseid) - JOIN {context} c ON (c.contextlevel = :courselevel AND c.instanceid = e.courseid) - JOIN {role_assignments} ra ON (ra.contextid = c.id AND ra.roleid = :roleid AND ra.userid = ue.userid)"; - $params = array('courseid'=>$data->courseid, 'roleid'=>$withroleid, 'courselevel'=>CONTEXT_COURSE); + if ($withroleid) { + $sql = "SELECT ue.* + FROM {user_enrolments} ue + JOIN {enrol} e ON (e.id = ue.enrolid AND e.courseid = :courseid) + JOIN {context} c ON (c.contextlevel = :courselevel AND c.instanceid = e.courseid) + JOIN {role_assignments} ra ON (ra.contextid = c.id AND ra.roleid = :roleid AND ra.userid = ue.userid)"; + $params = array('courseid'=>$data->courseid, 'roleid'=>$withroleid, 'courselevel'=>CONTEXT_COURSE); + + } else { + // without any role assigned at course context + $sql = "SELECT ue.* + FROM {user_enrolments} ue + JOIN {enrol} e ON (e.id = ue.enrolid AND e.courseid = :courseid) + JOIN {context} c ON (c.contextlevel = :courselevel AND c.instanceid = e.courseid) + LEFT JOIN {role_assignments} ra ON (ra.contextid = c.id AND ra.userid = ue.userid) + WHERE ra.id IS NULL"; + $params = array('courseid'=>$data->courseid, 'courselevel'=>CONTEXT_COURSE); + } $rs = $DB->get_recordset_sql($sql, $params); foreach ($rs as $ue) {