Moodle File API通过moduleid获取SCORM模块的文件夹

时间:2016-10-13 12:33:56

标签: php moodle

我正在开发一个Moodle Web服务插件。 我需要获取解压缩SCORM课程的文件夹,其中module_id为输入参数。

类似的东西:

function get_root_folder_for_scorm_module($module_id){
    global $USER;
    $context = get_context_instance(CONTEXT_USER, $USER->id);
    self::validate_context($context);

    $fs = get_file_storage();
    $manifest = $fs->get_file($context->id, 'mod_scorm', 'content', $module_id, '/', 'imsmanifest.xml');

    return $manifest->get_filepath(); // Exception here. $manifest is null
}

这不会起作用,因为$manifestnull

标准moodle webservice方法$module_id

返回core_course_get_contents的位置

1 个答案:

答案 0 :(得分:0)

scorm模块有许多不同的工作方式。据我所知,内容并不总是在本地提供,也不总是来自zip文件。

如果你知道你的软件包将在本地可用,那么你已经走上正轨,尽管传递给get_file的参数似乎是错误的。

不看源,我可以说使用的上下文不正确。很可能存储文件的上下文将是模块上下文。此外,简要介绍scorm_pluginfile中的scorm_get_file_infomod/scorm/lib.php函数,似乎itemid(您使用$module_id的位置始终为0。

我建议您还查看scorm_parse中的mod/scorm/locallib.php,我们可以在这里找到:

$packagefile->extract_to_storage($packer, $context->id, 'mod_scorm', 'content', 0, '/');