Moodle:自动创建用户/课程和注册

时间:2012-07-20 02:53:59

标签: moodle

我查看了enrolments上的文档,但所有注册方法似乎都涉及与GUI的一些交互。

有没有办法编写脚本注册?类似的东西:

./moodle_do_enrolments imsdata.xml

甚至可以从外部程序调用一些Web服务调用?

我希望能够以自动方式执行以下操作:

1) Add a user.
2) Create a course with specified title etc.
3) Enrol that user in that course.

当然,在某些时候我会将其与我们的用户系统和其他管理系统挂钩,但目前我只是想做一个概念验证。

哪些文档可以解释自动注册过程?

2 个答案:

答案 0 :(得分:2)

您可以尝试创建自己的PHP脚本:解析XML文件并使用内部moodle函数来解决问题。

解决这些问题的基本思路

1)添加用户:

在user / lib.php中是一个方法:user_create_user($ user)。 只需包含lib.php并找出用户对象中需要哪些信息。

2)创建课程

当然/ lib.php是一个方法:create_course($ data,$ editoroptions)。 只需包含lib.php并找出数据数组中需要哪些信息。

3)注册用户

我创建了以下方法来为我完成这项工作。

// enroll student to course (roleid = 5 is student role)
function enroll_to_course($courseid, $userid, $roleid=5, $extendbase=3, $extendperiod=0)  {
    global $DB;

    $instance = $DB->get_record('enrol', array('courseid'=>$courseid, 'enrol'=>'manual'), '*', MUST_EXIST);
    $course = $DB->get_record('course', array('id'=>$instance->courseid), '*', MUST_EXIST);
    $today = time();
    $today = make_timestamp(date('Y', $today), date('m', $today), date('d', $today), 0, 0, 0);

    if(!$enrol_manual = enrol_get_plugin('manual')) { throw new coding_exception('Can not instantiate enrol_manual'); }
    switch($extendbase) {
        case 2:
            $timestart = $course->startdate;
            break;
        case 3:
        default:
            $timestart = $today;
            break;
    }  
    if ($extendperiod <= 0) { $timeend = 0; }   // extendperiod are seconds
    else { $timeend = $timestart + $extendperiod; }
    $enrolled = $enrol_manual->enrol_user($instance, $userid, $roleid, $timestart, $timeend);
    add_to_log($course->id, 'course', 'enrol', '../enrol/users.php?id='.$course->id, $course->id);

    return $enrolled;
}

答案 1 :(得分:0)

使用GUI不是必需的,您可以创建注册/认证插件来实现此目的,或使用其中一个内置的。我对ims enrollment插件不太熟悉,但标准的ldap / database插件有脚本可用于自动执行此同步过程。

参见例如: 注册/数据库/ CLI / sync.php