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

Moodle:自动化用户/课程创建和注册,moodle,Moodle,我查看了上的文档,但是所有的注册方法似乎都涉及到与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. 当然,在某个时候,我会把它与我们的用户系统和其

我查看了上的文档,但是所有的注册方法似乎都涉及到与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.
当然,在某个时候,我会把它与我们的用户系统和其他管理系统连接起来,但目前,我只是想做一个概念验证


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

不需要使用GUI,您可以创建注册/认证插件来实现这一点,或者使用内置插件之一。我对ims注册插件不太熟悉,但是标准ldap/数据库插件有脚本,可以用来自动化这个同步过程

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

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

解决这些问题的基本思路

1) 添加用户:

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

2) 创建课程

In 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;
}
//将学生注册到课程(roleid=5是学生角色)
函数注册课程($courseid、$userid、$roleid=5、$extendbase=3、$extendperiod=0){
全球$DB;
$instance=$DB->get_记录('enrol',数组('courseid'=>$courseid',enrol'=>'manual'),'*',必须存在);
$course=$DB->get_记录('course',数组('id'=>$instance->courseid),'*',必须存在);
$today=时间();
$today=make_时间戳(日期('Y',$today),日期('m',$today),日期('d',$today),0,0,0);
如果(!$enrol_manual=enrol_get_插件('manual')){抛出新编码_异常('Can not instantiate enrol_manual');}
交换机($extendbase){
案例2:
$timestart=$course->startdate;
打破
案例3:
违约:
$timestart=$today;
打破
}  
if($extendperiod enrol_user($instance、$userid、$roleid、$timestart、$timeend);
将_添加到_日志($course->id,'course','enrol','../enrol/users.php?id='。$course->id,$course->id);
报税表$已登记;
}

Dan:你能给我指一下内置的文档吗?或者是源代码中唯一的文档吗?恐怕只有手动和自注册方法需要GUI交互。其余的由管理员设置,然后按照你刚才描述的方式运行。