【问题标题】:Make a button "Download all files" from a moodle course从moodle课程制作一个“下载所有文件”按钮
【发布时间】:2016-06-24 23:04:11
【问题描述】:

我正在尝试在 Moodle 课程中创建一个按钮,以允许学生下载所有可下载的资源。

有什么提示吗?

我检查 de mdl_course 并有课程 ID。 然后我转到mdl_resource,在那里我找到了我刚刚添加到课程中的资源。 然后我去mdl_files 找到我刚刚上传的文件。

但不知道如何制作一个按钮来查找课程中的所有文件。 有什么提示吗?

问题是moodle数据库不清楚。例如:我有课程 ID,并在 mdl_resources 中搜索我找到具有该课程 ID 的资源。但是在 mdl_files 中不使用 course id,它使用 context_id,对应于 mdl_context,它有一个与 course id 不对应的 instance_id。我被屏蔽了。

我在 Centos 上使用 Moodle 2.7。

【问题讨论】:

  • What have you tried so far?edit 您的问题显示您遇到问题的代码的minimal reproducible example,然后我们可以尝试帮助解决具体问题。您还应该阅读How to Ask
  • @TobySpeight 问题是moodle数据库不清楚。例如:我有课程 ID,并在 mdl_resources 中搜索我找到具有该课程 ID 的资源。但是在 mdl_files 中不使用 course id,它使用 context_id,对应于 mdl_context,它有一个与 course id 不对应的 instance_id。我被屏蔽了。

标签: php file moodle


【解决方案1】:

在 Moodle 中,文件存储在文件系统中,在由变量 $CFG->dataroot 定义的区域中,您可能知道。 “文件”表准确地标识了每个文件的存储位置、原始文件名和其他属性。它还标识文件属于哪个组件。

当文件属于课程时,组件(即表格字段)为“课程”。为了准确检索文件属于哪个课程,您必须检索“contextid”字段的内容并进入表“context”并将其用作键(即行ID)。然后,“instanceid”字段是您的课程 ID。

这可以通过一个 MySQL 查询来完成。
例如,如果要查找 ID=657 属于 course 的所有文件,可以这样写:

SELECT * FROM moodle.mdl_files 
INNER JOIN moodle.mdl_context
INNER JOIN moodle.mdl_course
ON moodle.mdl_files.contextid = moodle.mdl_context.id
AND moodle.mdl_context.instanceid= moodle.mdl_course.id
WHERE moodle.mdl_course.id=657 AND moodle.mdl_files.component = 'course';

假设您的数据库名为“moodle”并且所有表都以“mdl_”为前缀。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 2014-05-27
    相关资源
    最近更新 更多