From fd8fa80599c6b3550ad36c0634945d3ba9a2ca39 Mon Sep 17 00:00:00 2001 From: Jason Fowler Date: Thu, 27 Oct 2011 11:54:54 +0800 Subject: [PATCH] MDL-29469 Enrolments - fixing the role assignment access elevation issue --- enrol/self/edit_form.php | 26 +++++++++++++++++++++++--- enrol/self/lang/en/enrol_self.php | 2 +- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/enrol/self/edit_form.php b/enrol/self/edit_form.php index 338ccb6cd57..038934567c2 100644 --- a/enrol/self/edit_form.php +++ b/enrol/self/edit_form.php @@ -57,11 +57,11 @@ class enrol_self_edit_form extends moodleform { $mform->addElement('select', 'customint1', get_string('groupkey', 'enrol_self'), $options); $mform->addHelpButton('customint1', 'groupkey', 'enrol_self'); $mform->setDefault('customint1', $plugin->get_config('groupkey')); - + $roles = get_assignable_roles($context); if ($instance->id) { - $roles = get_default_enrol_roles($context, $instance->roleid); + $roles = $this->extend_assignable_roles($context, $instance->roleid); } else { - $roles = get_default_enrol_roles($context, $plugin->get_config('roleid')); + $roles = $this->extend_assignable_roles($context, $plugin->get_config('roleid')); } $mform->addElement('select', 'roleid', get_string('role', 'enrol_self'), $roles); $mform->setDefault('roleid', $plugin->get_config('roleid')); @@ -156,4 +156,24 @@ class enrol_self_edit_form extends moodleform { return $errors; } + + /** + * Gets a list of roles that this user can assign for the course as the default for self-enrolment + * + * @param context $context the context. + * @param integer $defaultrole the id of the role that is set as the default for self-enrolement + * @return array index is the role id, value is the role name + */ + function extend_assignable_roles($context, $defaultrole) { + global $DB; + $roles = get_assignable_roles($context); + $sql = "SELECT r.id, r.name + FROM {role} r + WHERE r.id = $defaultrole"; + $results = $DB->get_record_sql($sql); + if (isset($results->name)) { + $roles[$results->id] = $results->name; + } + return $roles; + } } \ No newline at end of file diff --git a/enrol/self/lang/en/enrol_self.php b/enrol/self/lang/en/enrol_self.php index 14a62f8c35c..b54ed3217db 100644 --- a/enrol/self/lang/en/enrol_self.php +++ b/enrol/self/lang/en/enrol_self.php @@ -60,7 +60,7 @@ $string['pluginname'] = 'Self enrolment'; $string['pluginname_desc'] = 'The self enrolment plugin allows users to choose which courses they want to participate in. The courses may be protected by an enrolment key. Internally the enrolment is done via the manual enrolment plugin which has to be enabled in the same course.'; $string['requirepassword'] = 'Require enrolment key'; $string['requirepassword_desc'] = 'Require enrolment key in new courses and prevent removing of enrolment key from existing courses.'; -$string['role'] = 'Assign role'; +$string['role'] = 'Default assigned role'; $string['self:config'] = 'Configure self enrol instances'; $string['self:manage'] = 'Manage enrolled users'; $string['self:unenrol'] = 'Unenrol users from course';