我查看了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.
当然,在某些时候我会将其与我们的用户系统和其他管理系统挂钩,但目前我只是想做一个概念验证。
哪些文档可以解释自动注册过程?
答案 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