From 52d588210ef455e892dbeaae2eb4b0c145ed6377 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Mon, 2 Aug 2010 07:05:16 +0000 Subject: [PATCH] MDL-22789 addding forgotten group enrol option --- enrol/self/lib.php | 16 ++++++++++++++++ enrol/self/locallib.php | 16 +++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/enrol/self/lib.php b/enrol/self/lib.php index b17b6ffcbc8..06127736428 100644 --- a/enrol/self/lib.php +++ b/enrol/self/lib.php @@ -158,6 +158,8 @@ class enrol_self_plugin extends enrol_plugin { } require_once("$CFG->dirroot/enrol/self/locallib.php"); + require_once("$CFG->dirroot/group/lib.php"); + $form = new enrol_self_enrol_form(NULL, $instance); $instanceid = optional_param('instance', 0, PARAM_INT); @@ -173,6 +175,20 @@ class enrol_self_plugin extends enrol_plugin { $this->enrol_user($instance, $USER->id, $instance->roleid, $timestart, $tineend); add_to_log($instance->courseid, 'course', 'enrol', '../enrol/users.php?id='.$instance->courseid, $instance->courseid); //there should be userid somewhere! + + if ($instance->password and $instance->customint1 and $data->enrolpassword !== $instance->password) { + // it must be a group enrolment, let's assign group too + $groups = $DB->get_records('groups', array('courseid'=>$instance->courseid), 'id', 'id, enrolmentkey'); + foreach ($groups as $group) { + if (empty($group->enrolmentkey)) { + continue; + } + if ($group->enrolmentkey === $data->enrolpassword) { + groups_add_member($group->id, $USER->id); + break; + } + } + } // send welcome if ($this->get_config('sendcoursewelcomemessage')) { $this->email_welcome_message($instance, $USER); diff --git a/enrol/self/locallib.php b/enrol/self/locallib.php index 9c7cdbc303c..07873592be9 100644 --- a/enrol/self/locallib.php +++ b/enrol/self/locallib.php @@ -65,7 +65,21 @@ class enrol_self_enrol_form extends moodleform { if ($instance->password) { if ($data['enrolpassword'] !== $instance->password) { if ($instance->customint1) { - //TODO: check groups + $groups = $DB->get_records('groups', array('courseid'=>$instance->courseid), 'id ASC', 'id, enrolmentkey'); + $found = false; + foreach ($groups as $group) { + if (empty($group->enrolmentkey)) { + continue; + } + if ($group->enrolmentkey === $data['enrolpassword']) { + $found = true; + break; + } + } + if (!$found) { + // we can not hint because there are probably multiple passwords + $errors['enrolpassword'] = get_string('passwordinvalid', 'enrol_self'); + } } else { $plugin = enrol_get_plugin('self');