Moodle 2.0权限管理

1 角色
管理员:管理员可以访问并修改课程,但他们通常不参与课程。
课程创建者:课程创建者可以创建新课程。
教师:教师可以在负责的课程中做任何事,包括更改活动和为学生评分。
无编辑权教师:无编辑权教师可以教课和给学生打分,但是可能不能修改活动。
学生:学生在课程中通常拥有较少的特权。
访客:访客拥有最小的权限,而且通常不能在任何地方输入文本。
已认证用户:所有已登录用户。
首页已认证用户:首页课程中所有已经登录的用户。

2 moodle的contenxt
Moodle的context实在难懂,它基本上是一个权限控制的表,同名字一样,负责和其它各个部分的权限连接。
它的目标是实现每一个页面的权限控制,它跟role权限表是紧密相连的。
官方的解释,Context相当于一个容器,它可以放下课程、用户、模块等东西。
http://docs.moodle.org/en/Context

新建一个课程,至少要添加如下几条记录:
id contentlevel instanceid path depth
37 50 4 /1/11/37 3
38 80 21 /1/11/37/38 4
39 80 22 /1/11/37/39 4
40 80 23 /1/11/37/40 4
41 80 24 /1/11/37/41 4
42 30 3 /1/42 2
43 70 9 /1/11/37/43 4

其中contentlevel在accesslib.php中定义,50代表课程,70代表module,80代表block

对照上表,
37号是一个课程,它的id是4,所以可以到course表中去查找相关信息,

38-41号分别对应一个block,其在block_instance中对应的id是21-24,
id blockname parentcontextid showinsubcontexts pagetypepattern subpagepattern defaultregion defaultweight configdata
21 search_forums 37 0 course-view-* NULL side-post 0
22 news_items 37 0 course-view-* NULL side-post 1
23 calendar_upcoming 37 0 course-view-* NULL side-post 2
24 recent_activity 37 0 course-view-* NULL side-post 3
可以查看第二栏的说明,找出分别对应的是哪一个模块。

42号是30,对应于CONTEXT_USER,代表用户,即id为3的用户。

43号为70,在course_module中对应于9号,再查找其类型,代表是论坛。

注:contextlevel就是一个类型,instance就是一个资源id号,取这个种字段名实在难以理解,直接改为resourcetype,resourceid,就不用再费这三个小时去查找它的意思了。
官方直接把这几种资源类型称之为六个level,这样也就不难理解它的名字了。