【问题标题】:How to get a list of all pending assignments under all courses in Moodle using the Web service API如何使用 Web 服务 API 获取 Moodle 中所有课程下所有待处理作业的列表
【发布时间】:2021-11-24 21:20:14
【问题描述】:

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

WS 函数core_course_get_enrolled_courses_by_timeline_classification,当我使用参数?classification=inprogress 时,会为我提供学生当前注册的所有课程。

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

core_course_get_contents 函数比我需要的要多得多,因为它提供了该课程中的每个模块以及每个模块下的所有活动,而且它一次只为一门课程提供所有这些,但它确实提供了每个活动的完成状态。

此外,如果您提供必需和可选的查询参数,这将对我有很大帮助,因为 API 文档非常糟糕并且没有提供任何这些,我不得不用谷歌搜索每个功能,这非常耗时。

【问题讨论】:

    标签: moodle moodle-api


    【解决方案1】:

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

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

    返回的活动列表包括

    '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 是instance id

    【讨论】:

    • 这将是最接近我正在寻找的,但它只允许一个课程 ID 作为参数,这意味着我必须多次提出这个请求。有没有一个函数可以让我提供一个课程 ID 数组作为参数(就像在 mod_assign_get_assignments 函数中一样)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 2016-05-26
    • 2017-04-15
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多