From b963384f41aad5f4caeca443382584ceae958b6c Mon Sep 17 00:00:00 2001 From: moodler Date: Sun, 17 Sep 2006 16:06:25 +0000 Subject: [PATCH] Added new convenience funtions: get_default_course_role() - gets default role for enrolment enrol_into_course() - enrols a person using the default role --- lib/accesslib.php | 64 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/lib/accesslib.php b/lib/accesslib.php index a9adcabe49..1556daba20 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -1504,6 +1504,38 @@ function role_unassign($roleid=0, $userid=0, $groupid=0, $contextid=0) { return $success; } +/* + * A convenience function to take care of the common case where you + * just want to enrol someone using the default role into a course + * + * @param object $course + * @param object $user + * @param string $enrol - the plugin used to do this enrolment + */ +function enrol_into_course($course, $user, $enrol) { + + if ($course->enrolperiod) { + $timestart = time(); + $timeend = time() + $course->enrolperiod; + } else { + $timestart = $timeend = 0; + } + + if ($role = get_default_course_role($course)) { + if (role_assign($role->id, $user->id, 0, $context->id, $timestart, $timeend, 0, $enrol)) { + return false; + } + + email_welcome_message_to_user($course, $user); + + add_to_log($course->id, 'course', 'enrol', 'view.php?id='.$course->id, $user->id); + + return true; + } + + return false; +} + /** * Add last access times to user_lastaccess as required * @param $userid @@ -2362,6 +2394,38 @@ function get_overridable_roles ($context) { return $options; } +/* + * Returns a role object that is the default role for new enrolments + * in a given course + * + * @param object $course + * @return object $role + */ +function get_default_course_role($course) { + global $CFG; + +/// First let's take the default role the course may have + if (!empty($course->defaultrole)) { + if ($role = get_record('role', 'id', $course->defaultrole)) { + return $role; + } + } + +/// Otherwise the site setting should tell us + if ($CFG->defaultcourseroleid) { + if ($role = get_record('role', 'id', $CFG->defaultcourseroleid)) { + return $role; + } + } + +/// It's unlikely we'll get here, but just in case, try and find a student role + if ($studentroles = get_roles_with_capability('moodle/legacy:student', CAP_ALLOW)) { + return array_shift($studentroles); /// Take the first one + } + + return NULL; +} + /** * who has this capability in this context -- 2.39.5