Merge branch 'w11_MDL-31790_m23_resetunenrol' of git://github.com/skodak/moodle

This commit is contained in:
Eloy Lafuente (stronk7) 2012-03-13 18:13:52 +01:00
commit b39877ef10
2 changed files with 11 additions and 8 deletions

View file

@ -81,7 +81,7 @@ class enrol_database_plugin extends enrol_plugin {
$instance = $ue->enrolmentinstance; $instance = $ue->enrolmentinstance;
$params = $manager->get_moodlepage()->url->params(); $params = $manager->get_moodlepage()->url->params();
$params['ue'] = $ue->id; $params['ue'] = $ue->id;
if ($this->allow_unenrol_user($instance, $ue) && has_capability('enrol/meta:unenrol', $context)) { if ($this->allow_unenrol_user($instance, $ue) && has_capability('enrol/database:unenrol', $context)) {
$url = new moodle_url('/enrol/unenroluser.php', $params); $url = new moodle_url('/enrol/unenroluser.php', $params);
$actions[] = new user_enrolment_action(new pix_icon('t/delete', ''), get_string('unenrol', 'enrol'), $url, array('class'=>'unenrollink', 'rel'=>$ue->id)); $actions[] = new user_enrolment_action(new pix_icon('t/delete', ''), get_string('unenrol', 'enrol'), $url, array('class'=>'unenrollink', 'rel'=>$ue->id));
} }

View file

@ -4546,7 +4546,7 @@ function remove_course_contents($courseid, $showfeedback = true, array $options
// Remove all roles and enrolments by default // Remove all roles and enrolments by default
if (empty($options['keep_roles_and_enrolments'])) { if (empty($options['keep_roles_and_enrolments'])) {
// this hack is used in restore when deleting contents of existing course // this hack is used in restore when deleting contents of existing course
role_unassign_all(array('contextid'=>$coursecontext->id), true); role_unassign_all(array('contextid'=>$coursecontext->id, 'component'=>''), true);
enrol_course_delete($course); enrol_course_delete($course);
if ($showfeedback) { if ($showfeedback) {
echo $OUTPUT->notification($strdeleted.get_string('type_enrol_plural', 'plugin'), 'notifysuccess'); echo $OUTPUT->notification($strdeleted.get_string('type_enrol_plural', 'plugin'), 'notifysuccess');
@ -4772,14 +4772,10 @@ function reset_course_userdata($data) {
unset($instances[$key]); unset($instances[$key]);
continue; continue;
} }
if (!$plugins[$instance->enrol]->allow_unenrol($instance)) {
unset($instances[$key]);
}
} }
$sqlempty = $DB->sql_empty();
foreach($data->unenrol_users as $withroleid) { foreach($data->unenrol_users as $withroleid) {
$sql = "SELECT DISTINCT ue.userid, ue.enrolid $sql = "SELECT ue.*
FROM {user_enrolments} ue FROM {user_enrolments} ue
JOIN {enrol} e ON (e.id = ue.enrolid AND e.courseid = :courseid) 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 {context} c ON (c.contextlevel = :courselevel AND c.instanceid = e.courseid)
@ -4791,9 +4787,16 @@ function reset_course_userdata($data) {
if (!isset($instances[$ue->enrolid])) { if (!isset($instances[$ue->enrolid])) {
continue; continue;
} }
$plugins[$instances[$ue->enrolid]->enrol]->unenrol_user($instances[$ue->enrolid], $ue->userid); $instance = $instances[$ue->enrolid];
$plugin = $plugins[$instance->enrol];
if (!$plugin->allow_unenrol($instance) and !$plugin->allow_unenrol_user($instance, $ue)) {
continue;
}
$plugin->unenrol_user($instance, $ue->userid);
$data->unenrolled[$ue->userid] = $ue->userid; $data->unenrolled[$ue->userid] = $ue->userid;
} }
$rs->close();
} }
} }
if (!empty($data->unenrolled)) { if (!empty($data->unenrolled)) {