]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-13615 course edit settings - improved metacourse compatible detection; merged...
authorskodak <skodak>
Sat, 23 Feb 2008 19:22:23 +0000 (19:22 +0000)
committerskodak <skodak>
Sat, 23 Feb 2008 19:22:23 +0000 (19:22 +0000)
course/edit_form.php

index 8b56083da744900b89d78162d0290bf180a28db2..ac9b4e9afe3d3add4210b0d009c614b166813ae2 100644 (file)
@@ -30,11 +30,22 @@ class course_edit_form extends moodleform {
                 }
 
             } else {
-                $managers = count(get_users_by_capability($coursecontext, 'moodle/course:managemetacourse'));
-                $participants = count(get_users_by_capability($coursecontext, 'moodle/course:view'));
-                if ($participants > $managers) {
-                    $disable_meta = get_string('metaalreadyhasenrolments');
+                // if users already enrolled directly into coures, do not allow switching to meta,
+                // users with metacourse manage permission are exception
+                // please note that we do not need exact results - anything unexpected here prevents metacourse
+                $managers = get_users_by_capability($coursecontext, 'moodle/course:managemetacourse', 'u.id');
+                $enrolroles = get_roles_with_capability('moodle/course:view', CAP_ALLOW, $coursecontext);
+                if ($users = get_role_users(array_keys($enrolroles), $coursecontext, false, 'u.id', 'u.id ASC')) {
+                    foreach($users as $user) {
+                        if (!isset($managers[$user->id])) {
+                            $disable_meta = get_string('metaalreadyhasenrolments');
+                            break;
+                        }
+                    }
                 }
+                unset($managers);
+                unset($users);
+                unset($enrolroles);
             }
         } else {
             $coursecontext = null;