5

来自Moodle 文档

上下文是 Moodle 中可以分配角色的空间。

我知道上下文是用于管理 Moodle 对象的逻辑空间。

我开发了一个自定义块插件,其中包含我使用的文件上传file_prepare_draft_areafile_save_draft_area_files功能。有一个$context必须传递的参数,我真的不知道我应该传递什么上下文?这意味着,我想,我应该把我的块插件上传的文件放在哪个逻辑空间?在我看来,最合乎逻辑的做法是将上传的文件存储在与我的块插件相关的上下文中。

我尝试使用 context_block::instance($instanceid) 但我不知道如何获取 $instanceid 参数。

  • 在这种情况下我应该使用哪个上下文?
  • 如何得到它?
4

2 回答 2

12

上下文的类型如下:

  • 系统
  • 课程类别
  • 课程
  • 活动模块
  • 堵塞
  • 用户

上下文的层次结构是:系统 => 课程类别 => 课程 => 活动模块

块上下文可以出现在课程内或“站点”课程内。用户上下文在课程之外。

如果您希望文件与块的特定实例相关联(例如,当块被删除时它们会自动删除,并且您可以将来自块的不同实例的文件分开),那么您应该使用块上下文(但是您'必须将块的instanceid传递给子页面才能使用它来获取上下文:

$context = context_block::instance($blockinstanceid);

如果您希望将文件绑定到课程 - 因此课程中块的所有实例共享相同的文件空间,并且仅在删除整个课程时才删除文件,然后使用课程上下文(将 courseid 传递到子页面,作为参数,然后使用:

$context = context_course::instance($courseid);

但是,如果您想在站点上的所有块之间共享该文件区域,那么系统上下文就是您想要的:

$context = context_system();

于 2017-03-28T08:37:09.553 回答
0

还有一个(旧的?)文档供参考 - 请参阅 par。“13.2. Moodle 的角色和权限系统”。

(我还找到了那段的俄语翻译,可能对某人有用。)

于 2021-11-05T11:55:41.517 回答