限制Moodle中的资源

限制Moodle中的资源,moodle,moodle-api,Moodle,Moodle Api,我试图使用脚本在Moodle课程中创建对节内文件夹或资源的访问限制。此限制必须适用于用户组,如果您不属于该组,则无法查看现有资源 我想以编程方式执行的操作如下: 我搜索了一些信息,但几乎没有文档,文档中只介绍了如何通过web实现这一点 我知道如何通过脚本以编程方式创建组、文件夹和节,但我无法确定用于这些限制的表,也无法确定要遵循的步骤 因此,如果有人知道如何做,或者有任何可能有用的示例或文档,这将非常有用 提前感谢。用于创建UI和检查用户是否有权访问您的资源的类位于: availability

我试图使用脚本Moodle课程中创建对节内文件夹或资源的访问限制。此限制必须适用于用户组,如果您不属于该组,则无法查看现有资源

我想以编程方式执行的操作如下:

我搜索了一些信息,但几乎没有文档,文档中只介绍了如何通过web实现这一点

我知道如何通过脚本以编程方式创建组、文件夹和节,但我无法确定用于这些限制的表,也无法确定要遵循的步骤

因此,如果有人知道如何做,或者有任何可能有用的示例或文档,这将非常有用


提前感谢。

用于创建UI和检查用户是否有权访问您的资源的类位于:

availability/condition/group/classes/condition.php
availability/condition/group/classes/frontend.php
与条件相关的数据在Javascript中从UI格式化为JSON,然后发送并保存。我的第一个猜测是,您需要重新创建JSON结构并将其保存到表/列
course\u modules::availability
中。完成后,我认为您必须从
cm\u info
中清除缓存,其中
可用性数据用于确认当前用户是否可以访问您的资源

  • -保存模块表单提交的数据
  • -检查是否满足条件

我听从了您的建议@FMC,并且我已经对我的脚本执行了此功能,该脚本负责为课程的某一特定部分向小组发放许可证

这是代码:

/**
 * giving permits to a group for a particular section of a course
 *
 * @param $course course that contains the section to restrict access
 * @param $sectionid id of the section to restrict access
 * @param $groupid id of the group will have access
 * @param $module id of the mdl_module to restrict access
 *
 */
function grantPermission($course, $sectionid, $groupid, $module ){

    global $DB;

    $restriction = '{"op":"&","c":[{"type":"group","id":'. $groupid .'}],"showc":[true]}';

    $cm= $DB->get_record('course_modules', array('course' => $course , 'section' => $sectionid, 'module' => $module ), '*', MUST_EXIST);

    $course_module = new stdClass();
    $course_module->id = $cm->id;
    $course_module->course = $course;
    $course_module->section = $sectionid;
    $course_module->availability = $restriction;

    $res = $DB->update_record('course_modules', $course_module);

    if($res)
        rebuild_course_cache($course, true);    

    return $res;
}
你能检查一下你的意思是不是@FMC?这很有效,但我不知道这是否是最好的方法


谢谢大家!

是的,不过如果可能的话,我建议使用
cm\u info
保存数据。另外,您是否注意到您从查询中的某个部分获取了一个随机模块?您是对的,我忘记在查询中指定模块了,谢谢!我不知道如何使用cm_信息,我是一个没有UI的新手,我不知道如何使用它们,你能给我举个例子吗?很抱歉,似乎
cm\u info
无法为您构建更新查询。好的,谢谢您的帮助!!