0

我查看了有关注册的文档,但所有注册方法似乎都涉及与 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.

当然,在某些时候,我会将它与我们的用户系统和其他管理系统联系起来,但目前,我只是在尝试进行概念验证。

哪里有一些解释自动注册过程的文档?

4

2 回答 2

2

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

解决这些问题的基本思路

1)添加用户:

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

2) 创建课程

course/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;
}
于 2013-10-31T20:39:04.417 回答
0

不需要使用 GUI,您可以创建一个注册/身份验证插件来实现此目的或使用内置插件之一。我对 ims 注册插件不太熟悉,但标准的 ldap/数据库插件具有可用于自动执行此同步过程的脚本。

参见例如:enrol/database/cli/sync.php

于 2012-07-20T03:52:06.617 回答