简体   繁体   English

Moodle用户注册API

[英]Moodle user enrollment API

I have been asked to create an engine that transform our data on SQL to Moodle data (user, courses, enrollments). 我被要求创建一个引擎,将我们的SQL数据转换为Moodle数据(用户,课程,注册)。

i got stuck at a point where i need to enroll a student programmatically using Moodle API without the need to manipulate the database. 我陷入了困境,我需要使用Moodle API以编程方式注册学生,而无需操作数据库。

like: enroll_user($courseid, $userid) 喜欢:enroll_user($ courseid,$ userid)

does anyone have any input regarding this? 有人对此有任何意见吗?

Something like this 像这样的东西

$context = context_course::instance($course->id);
// What role to enrol as?
$studentroleid = $DB->get_field('role', 'id', array('shortname' => 'student'));
// Loop through the students.
foreach ($users as $user) {
    if (!is_enrolled($context, $user->id)) {
        // Not already enrolled so try enrolling them.
        if (!enrol_try_internal_enrol($course->id, $user->id, $studentroleid, time())) {
            // There's a problem.
            throw new moodle_exception('unabletoenrolerrormessage', 'langsourcefile');
        }
    }
}

check this method: check_enrolment($course, $userid, $roleid,'manual'); 检查这个方法:check_enrolment($ course,$ userid,$ roleid,'manual');

 function check_enrolment($courseid, $userid, $roleid, $enrolmethod = 'manual'){ global $DB; $user = $DB->get_record('user', array('id' => $userid, 'deleted' => 0), '*', MUST_EXIST); $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST); $context = context_course::instance($course->id); if (!is_enrolled($context, $user)) { $enrol = enrol_get_plugin($enrolmethod); if ($enrol === null) { return false; } $instances = enrol_get_instances($course->id, true); $manualinstance = null; foreach ($instances as $instance) { if ($instance->name == $enrolmethod) { $manualinstance = $instance; break; } } if ($manualinstance !== null) { $instanceid = $enrol->add_default_instance($course); if ($instanceid === null) { $instanceid = $enrol->add_instance($course); } $instance = $DB->get_record('enrol', array('id' => $instanceid)); } $enrol->enrol_user($instance, $userid, $roleid); } return true; } 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM