moodle系统context表分析
时间:2010-04-11 来源:lsstarboy
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,这样也就不难理解它的名字了。
它的目标是实现每一个页面的权限控制,它跟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,这样也就不难理解它的名字了。
相关阅读 更多 +