MDL-28432 use enrol/cohort and enrol/manual capabilities correctly in cohort enrol...
authorPetr Skoda <commits@skodak.org>
Fri, 22 Jul 2011 07:36:26 +0000 (09:36 +0200)
committerPetr Skoda <commits@skodak.org>
Fri, 22 Jul 2011 07:52:12 +0000 (09:52 +0200)
enrol/cohort/addinstance.php
enrol/cohort/ajax.php
enrol/cohort/lib.php

index d35e098..bafb716 100644 (file)
@@ -35,6 +35,7 @@ $context = get_context_instance(CONTEXT_COURSE, $course->id, MUST_EXIST);
 
 require_login($course);
 require_capability('moodle/course:enrolconfig', $context);
+require_capability('enrol/cohort:config', $context);
 
 $PAGE->set_url('/enrol/cohort/addinstance.php', array('id'=>$course->id));
 $PAGE->set_pagelayout('admin');
index 83888a8..ccb8412 100644 (file)
@@ -74,6 +74,7 @@ switch ($action) {
         break;
     case 'enrolcohort':
         require_capability('moodle/course:enrolconfig', $context);
+        require_capability('enrol/cohort:config', $context);
         $roleid = required_param('roleid', PARAM_INT);
         $cohortid = required_param('cohortid', PARAM_INT);
         
@@ -87,10 +88,16 @@ switch ($action) {
         enrol_cohort_sync($manager->get_course()->id);
         break;
     case 'enrolcohortusers':
-        require_capability('moodle/course:enrolconfig', $context);
+        require_capability('enrol/manual:enrol', $context);
         $roleid = required_param('roleid', PARAM_INT);
         $cohortid = required_param('cohortid', PARAM_INT);
         $result = enrol_cohort_enrol_all_users($manager, $cohortid, $roleid);
+
+        $roles = $manager->get_assignable_roles();
+        $cohorts = enrol_cohort_get_cohorts($manager);
+        if (!array_key_exists($cohortid, $cohorts) || !array_key_exists($roleid, $roles)) {
+            throw new enrol_ajax_exception('errorenrolcohort');
+        }
         if ($result === false) {
             throw new enrol_ajax_exception('errorenrolcohortusers');
         }
index aa0c320..d8cd4e1 100644 (file)
@@ -163,7 +163,7 @@ class enrol_cohort_plugin extends enrol_plugin {
         $button->strings_for_js('users', 'moodle');
 
         // No point showing this at all if the user cant manually enrol users
-        $hasmanualinstance = has_capability('enrol/manual:manage', $manager->get_context()) && $manager->has_instance('manual');
+        $hasmanualinstance = has_capability('enrol/manual:enrol', $manager->get_context()) && $manager->has_instance('manual');
 
         $modules = array('moodle-enrol_cohort-quickenrolment', 'moodle-enrol_cohort-quickenrolment-skin');
         $function = 'M.enrol_cohort.quickenrolment.init';