首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

moodle分析札记

2014-01-15 
moodle分析笔记1、输出对象,在\lib\sessionlib.php中定义,$PAGEnewmoodle_page()其它的文档都可以直接引

moodle分析笔记

1、输出对象,在\lib\sessionlib.php中定义,

$PAGE=newmoodle_page();

其它的文档都可以直接引用$PAGE。

?

classmoodle_page()在\lib\pagelib.php中定义,没有扩展任何类,都是moodle开发组自己写的。文章后面有很多兼容的方法,应该在2.0发行版中除去的方法。

?

2、\lib\setup.php来引用session、db。setup.php一般只在config.php中调用,所以每个文件只需要调用config.php就可以引用setup.php中的对象、函数。

?

3、setup.php中的对象,这些global对象有一部分在setuplib.php中初始化:

$CFG$DB$SESSION$USER$PAGE$COURSE$OUTPUT$MCACHE//memorycache$HTTPSPAGEREQUIRED$FULLME$ME$FULLSCRIPT$SCRIPT

?

引用的文件:

require_once($CFG->libdir.'/textlib.class.php');//Functionstohandlemultibytestringsrequire_once($CFG->libdir.'/filterlib.php');//Functionsforfilteringtestasitisoutputrequire_once($CFG->libdir.'/ajax/ajaxlib.php');//FunctionsformanagingouruseofJavaScriptandYUIrequire_once($CFG->libdir.'/weblib.php');//FunctionsrelatingtoHTTPandcontentrequire_once($CFG->libdir.'/outputlib.php');//Functionsforgeneratingoutputrequire_once($CFG->libdir.'/navigationlib.php');//ClassforgeneratingNavigationstructurerequire_once($CFG->libdir.'/dmllib.php');//Databaseaccessrequire_once($CFG->libdir.'/datalib.php');//Legacylibwithabig-mixoffunctions.require_once($CFG->libdir.'/accesslib.php');//Accesscontrolfunctionsrequire_once($CFG->libdir.'/deprecatedlib.php');//Deprecatedfunctionsincludedforbackwardcompatibilityrequire_once($CFG->libdir.'/moodlelib.php');//Othergeneral-purposefunctionsrequire_once($CFG->libdir.'/pagelib.php');//Librarythatdefinesthemoodle_pageclass,usedfor$PAGErequire_once($CFG->libdir.'/blocklib.php');//Libraryforcontrollingblocksrequire_once($CFG->libdir.'/eventslib.php');//Eventsfunctionsrequire_once($CFG->libdir.'/grouplib.php');//Groupsfunctionsrequire_once($CFG->libdir.'/sessionlib.php');//Allsessionandcookierelatedstuffrequire_once($CFG->libdir.'/editorlib.php');//Alltexteditorrelatedfunctionsandclassesrequire_once($CFG->libdir.'/messagelib.php');//Messagelibfunctions

?

4、module(只找到课程层面的管理,没找到系统层面的东西,比如安装、删除、启用/禁止等,没有这个功能吗?)

\course\modedit.php\course\moodleform_mod.php\lib\formslib.php\admin\modules.php\admin\settings\plugins.php??

?

moodle的插件分四种:1是活动模块,2是资源模块,3是板块,4是过滤器。

?

5、cache:

?

Moodle中已经使用了memcache和eaccelerator,在/lib/中分别对应两个.class.php,在setuplib.php中分别提供了两个函数:

init_memcached()和init_eaccelerator(),分别使用了两种缓存技术。

在setup.php中调用,同时判断配置了哪一种方式,如果两种同时配置,则memcache优先。

但是在整个源代码中好像引用的不多,只是在simpltest和lang以及\admin\settings\server.php中提及到。

?

6、optional_param:在多处提及到。文件说明如下:

?

该函数在POST或者GET中返回指定变量的值,如果在这两个地方没有找到,则返回默认值。(注:该函数有三个参数,第二个参数即为默认值)。

?

7、copyright信息在/admin/index.php中。

?

8、module数据库:把每个模块都有一个编号,同时还有一个cron信息,并且有上一次的时间。

(1)每次调用都检测时间?

(2)每次cron对本站所有的课程都实施刷新?

?

9、course_modules数据表中记录每个课程所使用的模块,这个设计不错,不使用的模块就不记录,也不显示,应该可以节省数据库的访问量。

在一个课程中,同一个模块如果用了两次,也显示两条记录。

?

10、config_plugins中记录了包括模块在内的设置。

?

模块的设置通过setting.php设置,调用$settings->add(newadmin_setting_configselect进行。参见scorm下的setting.php

admin_setting_config*对象分别对应于几种不同的控件类型,见\lib\adminlib.php中1200行以后的部分。

?

11、get_string:(1)查找moodleconfigstr,(2)查找module参数所对应的语言包,(3)installstr,(4)其它指定的地方(第四个参数)。

?

12、moodle已经实现的类似pdo的预检索?

accesslib.php,2470行:

$sql="SELECTinstanceid,id,contextlevel,path,depth FROM{context} WHEREcontextlevel=?ANDinstanceid$instanceids";if(!$contexts=$DB->get_records_sql($sql,$params))

?

13、blog的数据表在post中,实在想不通,为什么不放到blog中去?

评论在comment中,这个还差不多。它还记录了在哪一个area中,但是没看懂contextid的意思。

post中只有userid和courseid,moodle是怎样来确定在中哪个资源上的呢?

具体资源的blog还有一个modid,

?

14、context:与权限有关的一个上下文,在accesslib.php中有说明。

contextlevel指明是哪一种:用户,课程,模块,还是系统......,在accesslib.php开头用宏定义了几种类型,10,30,40,50,70,80。

path用来快速地在路径之前查找。

?

来源:http://www.aieln.com/article-1317-1.html

?

热点排行