在 Moodle 中限制资源
Restricting a resource in Moodle
我正在尝试使用 Script 在 Moodle 课程的某个部分内创建对文件夹或资源的访问限制。此限制必须针对用户组,如果您不属于该组,则无法看到现有资源。
我想以编程方式进行的操作如下:
我查了下资料,文档很少,文档里只写了网上的做法link。
我知道如何从脚本中以编程方式创建组、文件夹和部分,但我无法确定要用于这些限制的表或要遵循的步骤。
因此,如果有人知道如何做或有任何可能有用的示例或文档,那将会很有帮助。
提前致谢。
将用于创建 UI 并检查用户是否有权访问您的资源的 类 位于:
availability/condition/group/classes/condition.php
availability/condition/group/classes/frontend.php
条件相关的数据从Javascript中的UI格式化为JSON,然后发送保存。我的第一个猜测是您需要重新创建 JSON 结构并将其保存到 table/column course_modules::availability
中。完成后,我认为您必须从 cm_info
中清除缓存,其中 availability
数据用于确认当前用户是否可以访问您的资源。
- update_moduleinfo - 保存模块表单提交的数据
- cm_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?它有效,但我不知道这是不是最好的方法。
谢谢!
我正在尝试使用 Script 在 Moodle 课程的某个部分内创建对文件夹或资源的访问限制。此限制必须针对用户组,如果您不属于该组,则无法看到现有资源。
我想以编程方式进行的操作如下:
我查了下资料,文档很少,文档里只写了网上的做法link。
我知道如何从脚本中以编程方式创建组、文件夹和部分,但我无法确定要用于这些限制的表或要遵循的步骤。
因此,如果有人知道如何做或有任何可能有用的示例或文档,那将会很有帮助。
提前致谢。
将用于创建 UI 并检查用户是否有权访问您的资源的 类 位于:
availability/condition/group/classes/condition.php
availability/condition/group/classes/frontend.php
条件相关的数据从Javascript中的UI格式化为JSON,然后发送保存。我的第一个猜测是您需要重新创建 JSON 结构并将其保存到 table/column course_modules::availability
中。完成后,我认为您必须从 cm_info
中清除缓存,其中 availability
数据用于确认当前用户是否可以访问您的资源。
- update_moduleinfo - 保存模块表单提交的数据
- cm_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?它有效,但我不知道这是不是最好的方法。
谢谢!