如何使用 Web 服务获取 Moodle 中所有课程下所有待处理作业的列表 API

How to get a list of all pending assignments under all courses in Moodle using the Web service API

我想获取所有课程的所有作业及其完成状态的列表。 基本上是仪表板时间线下显示的内容。

WS 函数 core_course_get_enrolled_courses_by_timeline_classification,当我使用参数 ?classification=inprogress.

时,它会为我提供学生当前注册的所有课程

使用上述函数中的课程 ID,我将它们作为参数传递给函数 mod_assign_get_assignments,但只有一个小问题,它没有提供有关该作业是否已标记为的任何信息由学生完成(完成状态)。

功能 core_course_get_contents 比我需要的要多得多,因为它提供了该课程中的每个模块以及每个模块下的所有活动,而且它一次只为一门课程提供所有这些,但是它确实给出了每个 activity.

的完成状态

Also, it would help me out a lot if you provide the required and optional query parameters since the API docs are quite terrible and doesn't provide any of that, I had to google each function which was very time consuming.

我能看到的最接近的函数是core_completion_get_activities_completion_status

你可以传递课程id和用户id

其中 returns 活动列表包括

'cmid'          => new external_value(PARAM_INT, 'course module ID'),
'modname'       => new external_value(PARAM_PLUGIN, 'activity module name'),
'instance'      => new external_value(PARAM_INT, 'instance ID'),
'state'         => new external_value(PARAM_INT,
                            "Completion state value:
                                0 means incomplete,
                                1 complete,
                                2 complete pass,
                                3 complete fail"
                            ),
'timecompleted' => new external_value(PARAM_INT,
                            'timestamp for completed activity'),

所以在您的代码中,过滤 modname = 'assign'

的结果

mdl_assign中的id table是instance中的id