我是Moodle的新手,并且正在处理旧的应用程序,以下是规格:
$version = 2016120502.05;
$release = '3.2.2+ (Build: 20170407)';
$branch = '32';
我的最终目标是能够创建一个生成器类,以为某些PHPUnit单元测试创建虚拟数据。 (https://docs.moodle.org/dev/Writing_PHPUnit_tests)我发现有一个用于创建课程和用户的预置。但是我还必须能够用他们的成绩来标记他们在课程中的完成。
我一直在看这个https://docs.moodle.org/dev/Gradebook_API,这可能至少是我需要的一部分。但是,系统中有很多表,我不确定这是我所需要的。
这是我的代码,直到最后一点:
// Create user;
$this->user = $this->getDataGenerator()->create_user();
// Create courses.
$courseCount = 0;
$courses = [];
while ($courseCount < 5) {
$courses[] = $this->getDataGenerator()->create_course();
$courseCount++;
}
/** @var \myGlobal_generator $generator */
$generator = $this->getDataGenerator()->get_plugin_generator('myGlobal_generator');
// Create curriculum.
$this->curriculum = $generator->createCurriculum($courses);
// Now we need to set a user to have completed each one
// of the courses and set their grades for each as well.
答案 0 :(得分:1)
请注意,评分和完成情况跟踪不一定是相关的。例如,您可以将活动和课程标记为已完成,而无需进行任何评分,例如:
$cmassign = get_coursemodule_from_id('assign', $cmid);
$completion = new completion_info($course);
$completion->update_state($cmassign, COMPLETION_COMPLETE, $user->id);
$ccompletion = new completion_completion(['course' => $course->id, 'userid' => $user->id]);
$ccompletion->mark_complete();
如果您确实需要使用评分和基于评分的完成度来测试/生成数据,则可能需要按照以下方式进行编码:
grade_update
创建新的评分项目(与活动和用户有关)。$completion->internal_get_state
)