moodle的Data manipulation API中介绍了用于访问数据库的一些函数。你应该仅通过使用这些函数来进行数据库操作,因为这些函数对数据库操作进行了抽象,并保证这些操作会在不同的DBMS上正常执行。
Moodle API文档 —— Access API
Moodle中的Access API通过capabilities的方式向我们提供了判断当前用户权限的一些函数。它同样允许一些继承于moodle的模块来自定义新的capabilities.
概述
moodle使用基于角色的访问控制模型。大多数的moodle实体(系统(system)、用户(users)、课程类别(course categories)、课程(courses)、课程模块(modules)、块(blocks))都有一个上下文(context),它们被组织在一个叫做上下文树(context tree)的树形结构中。角色是一个权限(capability)的集合,每一个capability通常代表一个用户能做什么事的能力。角色定义在大多数系统的上下文层级。角色定义可以被重写。用户访问控制则是通过查询用户所属的角色的定义来判断用户是否有相应的权限。
所有未登录的用户自动获取定义在$CFG->notloggedinroleid
中的默认角色,该角色不能被其他的任何角色引用。在自动以访客身份登录的模式(guest autologin)启用时,未登录的用户使用的默认角色则是定义在$CFG->guestroleid
中的访客角色。当然,你也不能让其他角色引用访客角色。所有其他的经过身份验证的用户则自动获取定义在$CFG->defaultuserroleid
中的默认角色。他们在打开首页时使用的默认角色则被定义在$CFG->defaultfrontpageroleid
中。
2015 Multi-University Training Contest 3总结
第三场多校刚开始做的特别不顺,在过了两道水题后,我们04读错题了,调了好久也没发现,01线段树也写残了,卡题卡了好久。不过后来队友把线段树调出来了,之后我们也发现了04读错题了,于是04也调过了,之后我们开了03、09、10,09写到一半发现思路错了,需要用到二维树状数组,空间开不下,不过队友找到性质把10过了,之后我们开始调03,在比赛还有五分钟结束的时候,队友在clarification中发现03需要去掉重复出现的字符串,于是我们在4:58终于A掉了03。
这次多校虽然刚开始不太顺,但是还好后来找到了感觉。
2015 Multi-University Training Contest 2总结
第二场多校题目比较难想,我们场上只过了1002和1006两道水题,第九题由于没有考虑分数,所以5的方案没有构造出来。第一题本来以为可做,但是后来发现少看了一个条件。第四题想了一个非常复杂的贪心,虽然挖掘了一些性质但是最关键的仅会走一整圈
这个性质没有考虑到。其他几题都没有读题。
2015 Multi-University Training Contest 1总结
昨天,一年一度的多校联合又开始了。第一场我们队仅做出三道题。其中两道是比较快就想到思路的,另外一道虽然刚开始就想到了正解,但由于感觉数据范围较大,所以纠结了好久才过。其他几题总是感觉思路欠缺一点。不过比去年做多校时的情况已经好了很多,至少赛后能够做出大部分题了。
Google CodeJam 2015 Round1B 总结
五一假期,和lch
一起打了Google CodeJam 2015 Round1的第二场。由于我第一场已经晋级,第二场看不到题目了,所以就借lch
的账号读了读题。
这次的题目比较坑,全部是贪心题。第一题如果细节没有考虑清楚就会WA,第三题又是那种第一感觉就没思路的题目,不过lch
最终还是第一题过了大数据,二三题过了小数据,以50分300多名的成绩进入Round2了。
北航暑期集训选拔赛第二场总结
这次比赛从4月30号晚上就开始了,晚上读了几道题,发现有一些题是之前写过的,于是果断找了一个没人过的题拿了个一血(不过被GNU C++坑的WA了两发)。
后来就断网了,只能把读了的题都写了,但是没法提交。第二天早上7点起床,交了几道就出门了,下午回来又写,断断续续的终于AK了。