]> git.mjollnir.org Git - moodle.git/commitdiff
fix course reset unenrollment in to work with roles MDL-7069 ; merged from MOODLE_17_...
authorskodak <skodak>
Wed, 18 Oct 2006 09:20:16 +0000 (09:20 +0000)
committerskodak <skodak>
Wed, 18 Oct 2006 09:20:16 +0000 (09:20 +0000)
lib/moodlelib.php

index dfd1020f859fad1354045ec42badf96e3f768f2e..528e91fb0a7c61cdf6926331fde98444508edd18 100644 (file)
@@ -2845,38 +2845,42 @@ function reset_course_userdata($data, $showfeedback=true) {
     }
 
     // Delete other stuff
+    $coursecontext = get_context_instance(CONTEXT_COURSE, $data->courseid);
 
-    if (!empty($data->reset_students)) {
-        /// Delete student enrolments
-        if (delete_records('user_students', 'course', $data->courseid)) {
+    if (!empty($data->reset_students) or !empty($data->reset_teachers)) {
+        $teachers     = array_keys(get_users_by_capability($coursecontext, 'moodle/course:update'));
+        $participants = array_keys(get_users_by_capability($coursecontext, 'moodle/course:view'));
+        $students     = array_diff($participants, $teachers);
+
+        if (!empty($data->reset_students)) {
+            foreach ($students as $studentid) {
+                role_unassign(0, $studentid, 0, $coursecontext->id);
+            }
             if ($showfeedback) {
-                notify($strdeleted .' user_students', 'notifysuccess');
+                notify($strdeleted .' '.get_string('students'), 'notifysuccess');
             }
-        } else {
-            $result = false;
-        }
 
-        /// Delete group members (but keep the groups)
-        if ($groups = get_records('groups', 'courseid', $data->courseid)) {
-            foreach ($groups as $group) {
-                if (delete_records('groups_members', 'groupid', $group->id)) {
-                    if ($showfeedback) {
-                        notify($strdeleted .' groups_members', 'notifysuccess');
+            /// Delete group members (but keep the groups)
+            if ($groups = get_records('groups', 'courseid', $data->courseid)) {
+                foreach ($groups as $group) {
+                    if (delete_records('groups_members', 'groupid', $group->id)) {
+                        if ($showfeedback) {
+                            notify($strdeleted .' groups_members', 'notifysuccess');
+                        }
+                    } else {
+                        $result = false;
                     }
-                } else {
-                    $result = false;
                 }
             }
         }
-    }
 
-    if (!empty($data->reset_teachers)) {
-        if (delete_records('user_teachers', 'course', $data->courseid)) {
+        if (!empty($data->reset_teachers)) {
+            foreach ($teachers as $teacherid) {
+                role_unassign(0, $teacherid, 0, $coursecontext->id);
+            }
             if ($showfeedback) {
-                notify($strdeleted .' user_teachers', 'notifysuccess');
+                notify($strdeleted .' '.get_string('teachers'), 'notifysuccess');
             }
-        } else {
-            $result = false;
         }
     }
 
@@ -2916,9 +2920,8 @@ function reset_course_userdata($data, $showfeedback=true) {
 
     // deletes all role assignments, and local override, these have no courseid in table and needs separate process
     $context = get_context_instance(CONTEXT_COURSE, $data->courseid);
-    delete_records('role_assignments', 'contextid', $context->id);
     delete_records('role_capabilities', 'contextid', $context->id);
-   
+
     return $result;
 }