我是Moodle的新手,我有一个任务是创建具有课程管理员角色的本地插件。在我的系统中,我在特定课程中拥有大量用户,他们是不同角色的类别。有些是与学生绑定的,其余的是经理。对于我的情况,我收到了客户的请求,要求制作一个本地插件,生成针对学生记录的多个报告。我已经成功制作了插件,但条件是这个插件只能访问那些作为管理员注册的人。我正在尝试下面的代码,我在下面分享你,但没有成功。现在只有管理员才能访问本地插件,其余的都是从moodle状态收到的错误消息。
["Sorry, but you do not currently have permissions to do that Project view "]
不知道如何解决。
请告知。
本地/项目/分贝/ access.php
defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'local/project:view' => array(
'riskbitmask' => RISK_PERSONAL,
'captype' => 'read',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'manager' => CAP_ALLOW
),
'local/project:manage' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'manager' => CAP_ALLOW
)
)
)
);
本地/项目/ header.php文件
require(dirname(__FILE__).'/../../config.php');
global $DB;
//Get the system context
$url = new moodle_url('/local/project/index.php');
require_login();
require_capability('local/project:view', context_system::instance());
答案 0 :(得分:1)
没有标准的Moodle角色,称为“课程管理员”。
有一个名为'经理'('经理')的角色,另一个名为'课程创建者'('coursecreator')。
如果您启用了debugging,如果代码有任何问题,您可能会收到一些额外的警告消息(例如,如果您没有运行安装/升级过程来创建功能,或者您没有增加创建功能后的插件版本号。)
答案 1 :(得分:1)
我已成功实现了moodle
权限的目标。我已将has_capability
方法与课程上下文一起使用,并使用require_capability
检查真实性。以下过程仅适用于admin
和manager
其他人在获得网站管理员的完全权限之前无法访问。
本地/项目/分贝/ access.php
defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'local/project:view' => array(
'riskbitmask' => RISK_SPAM,
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'archetypes' => array(
'manager' => CAP_ALLOW,
),
)
);
本地/项目/ header.php文件
require(dirname(__FILE__).'/../../config.php');
require_login();
//Get the system context
$context = context_course::instance($course_id);
if (!has_capability('local/project:view', $context)) {
require_capability('local/project:view', $context);
}