1、如何为你的 moodle plugin/module 自定义 capability?
在 plugin/module 的根(root)目录下创建一个 db 目录,然后在 db 目录下创建一个 access.php ,该文件用来定义 capability 。
下例是在 helloworld block 里定义一个 block/helloworld:view capability ,该 capability 的 type 是 read ,该 capability 是属于 system context level 里,并设置只有 admin role user 拥有该 capability ,其他 role 没有。
<?php
$block_helloworld_capabilities = array(
'block/helloworld:view' => array(
'captype' => 'read' ,
'contextlevel' => CONTEXT_SYSTEM ,
'legacy' => array(
'guest' => CAP_PREVENT,
'student' => CAP_PREVENT,
'teacher' => CAP_PREVENT,
'editingteacher' => CAP_PREVENT,
'coursecreator' => CAP_PREVENT,
'admin' => CAP_ALLOW
)
)
);
?>
注意:该 capability适用于任何使用了该 block的地方。无论你是把该 block加到 home page,还是 admin page,还是 My Moodle page,还是 course page,该 capability都适用。但由于该 capability是定义在 system context level,只有那些在 system context level具有 admin role的 user才能够看到这个 block 。
总共有 5 种类型的 Moodle plugin
· block
· filter
· activity module
· theme
· course format