- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Moodle架构剖析.doc
Moodle架构剖析
收集自互联网
HYPERLINK /mjx422/blog/category/Moodle /mjx422/blog/category/Moodle
一、业务逻辑层的设计
Moodle的业务逻辑遍布moodle的各个角落,并没有明显的分层。这里之所以把业务逻辑层单独拿出来讲,是希望能让大家有个全局的观点。这里顺便说一句,moodle自称是模块化的设计,我觉得不能完全称得上是,从业务逻辑层就可以看出来了。凌乱的代码,夹杂着各种各样的转跳函数和逻辑判断,往往令人眼花缭乱,不知所措。
??? 这部分没有太多值得讲的地方,无非是一些函数和类的调用而已,这里介绍这些一些常用的函数。
1、权限判断函数
通过获取上下文环境,查看是否有“moodle/site:config”的权限。
$context = get_context_instance(CONTEXT_SYSTEM);
require_capability(moodle/site:config, $context);
2、获得记录集的长度
通过函数count_records,可以获得数据集的长度,使用方法如下。
$countcategories = count_records(course_categories);
3、 输出课程分类
通过print_whole_category_list函数可以获得课程分类类别。由于print_whole_category_list函数采用递归的方法实现,故还可以打印出子分类。使用方法如下:
print_box_start(categorybox);
print_whole_category_list();
print_box_end();
注意,这里的print_box_start和print_box_end函数仅是根据moodle的主题/皮肤,输出div对出来。
4、是否登陆和是否为访客
Isloggedin函数可以判断用户是否已经登陆。isguest()函数可以判断用户是否是访客。使用方法如下:
if (isloggedin() and !isguest() and !has_capability(moodle/course:create, $sysctx) and $CFG-enablecourserequests)
{
……………….
}
5、 安全码
安全码主要用于安全方面,比如判断是否是正常的登陆用户。其使用方法如下:
if (!empty($delete) and confirm_sesskey()) {}
6、输出错误
print_error主要用于系统发生严重错误,比如用户企图突破非其权限范围的事情时使用。一旦使用,系统将停止执行剩下的语句,即其实现使用了exit语句。其使用方法如下:
print_error(courserequestdisabled);
7、 浏览器传递参数类型判断和初始化
required_param可以用于浏览器POST或者GET的参数的类型判断和数值初始化工作。其使用方法如下:
$id = required_param(id, PARAM_INT);
这里需要注意的是,如果采用本说明文档“第五部分”的表单类生成的文件的话,传递过来不需要使用该函数,可以直接调用表单类的get_data方法,即:
$data = $requestform-get_data();
8、 获得使用的语言
通过current_language()函数可以获得当前使用的语言,get_list_of_languages()函数可以获得所有的语言列表。其使用方法如下:
$currlang = current_language();
$langs = get_list_of_languages();
9、 获得网站资料
get_site函数可以获得网站的基本资料,比如网站名。其使用方法如下:
$site = get_site();
Echo $site-fullname;
二、数据连接层的设计
1、数据连接抽象类ADOConnection
Moodle支持Mysql、Oracle、Sql Server等多种数据库。由于不同的数据库操作有所不同,为支持多种数据库,Moodle定义了数据库连接抽象类ADOConnection。
//抽象数据库连接类ADOConnection
class ADOConnection {}
ADOConnection定义了连接、断开连接(Close)、事务处理(BeginTrans、CommitTrans、RollbackTrans等)、错误异常处理、CURD(GetOne、SelectLimit、AutoExecute等)、缓存机制(CacheFlu
您可能关注的文档
最近下载
- 突发公共卫生事件应急处置预案专业知识培训.ppt
- 脑出血进展与指南解读白色ppt课件.ppt
- DB33酸性土壤改良技术规范.pdf
- 上海牛津(全国版)一年级英语上册《期末测试卷(二)》.doc
- 高中政治课程中跨学科融合的研究教学研究课题报告.docx
- 华为认证智能协作中级HCIP-CollaborationH11-861考试题及答案 (2).pdf
- 2023版29490-2023企业知识产权合规管理体系管理手册及全套程序文件.docx
- OMRON欧姆龙健康血压计血压计J7136说明书用户手册.pdf
- DB13_T 5414-2021 气瓶追溯管理系统规范.docx
- 第三讲把人民放在心中最高位置(课件)+学生读本高年级学生读本.pptx
文档评论(0)