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');//Functionstohandlemultibytestrings
require_once($CFG->libdir.'/filterlib.php');//Functionsforfilteringtestasitisoutput
require_once($CFG->libdir.'/ajax/ajaxlib.php');//FunctionsformanagingouruseofJavaScriptandYUI
require_once($CFG->libdir.'/weblib.php');//FunctionsrelatingtoHTTPandcontent
require_once($CFG->libdir.'/outputlib.php');//Functionsforgeneratingoutput
require_once($CFG->libdir.'/navigationlib.php');//ClassforgeneratingNavigationstructure
require_once($CFG->libdir.'/dmllib.php');//Databaseaccess
require_once($CFG->libdir.'/datalib.php');//Legacylibwithabig-mixoffunctions.
require_once($CFG->libdir.'/accesslib.php');//Accesscontrolfunctions
require_once($CFG->libdir.'/deprecatedlib.php');//Deprecatedfunctionsincludedforbackwardcompatibility
require_once($CFG->libdir.'/moodlelib.php');//Othergeneral-purposefunctions
require_once($CFG->libdir.'/pagelib.php');//Librarythatdefinesthemoodle_pageclass,usedfor$PAGE
require_once($CFG->libdir.'/blocklib.php');//Libraryforcontrollingblocks
require_once($CFG->libdir.'/eventslib.php');//Eventsfunctions
require_once($CFG->libdir.'/grouplib.php');//Groupsfunctions
require_once($CFG->libdir.'/sessionlib.php');//Allsessionandcookierelatedstuff
require_once($CFG->libdir.'/editorlib.php');//Alltexteditorrelatedfunctionsandclasses
require_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

moodle分析笔记相关推荐

  1. 2.View绘制分析笔记之onMeasure

    今天主要学习记录一下Android View绘制三部曲的第一步,onMeasure,测量. 起源 在Activity中,所有的View都是DecorView的子View,然后DecorView又是被V ...

  2. 用户行为分析笔记(一):概述

    今天有人问我会不会推荐算法,回到家里反复思考了下(其实就是一个会与不会的回答,为啥我还要反复思量下了?),我发现自己从事软件开发工作这么多年,大小项目无数,但是如果从做应用角度换句话说我做了哪些提高人 ...

  3. 重载内核全程分析笔记

    标 题: [原创]重载内核全程分析笔记 作 者: Speeday 时 间: 2013-08-20,20:19:46 链 接: http://bbs.pediy.com/showthread.php?t ...

  4. oracle10g cssd日志,【案例】Oracle CSSD进程HANG导致RAC节点重启原因分析笔记

    [案例]Oracle CSSD进程HANG导致RAC节点重启原因分析笔记 时间:2016-11-04 19:20   来源:Oracle研究中心   作者:HTZ   点击: 次 天萃荷净 Oracl ...

  5. NJ4X源码阅读分析笔记系列(一)——项目整体分析

    NJ4X源码阅读分析笔记系列(一)--项目整体分析 NJ4X是什么 参见NJ4X的官网:http://www.nj4x.com/ Java and .Net interfaces to support ...

  6. SharpDevelop源码分析笔记(一)

    SharpDevelop自动命令启动UI部分(看SharpDevelop源码分析笔记随想) 参见:Fbt2008的大作  SharpDevelop源码分析笔记(一) 源文档 <http://ww ...

  7. NJ4X源码阅读分析笔记系列(三)—— nj4x-ts深入分析

    NJ4X源码阅读分析笔记系列(三)-- nj4x-ts深入分析 一.系统的工作流程图(模块级) 其工作流程如下(以行情获取为例): 应用端向Application Server发起连接 应用服务器调用 ...

  8. 【转载】Instagram架构分析笔记

    原文地址:http://chengxu.org/p/401.html Instagram 架构分析笔记 全部 技术博客Instagram团队上个月才迎来第 7 名员工,是的,7个人的团队.作为 iPh ...

  9. CSMA/CD协议分析笔记

    CSMA/CD协议分析笔记 CSMA/CD(carrier sense multiple access with collision detection) 文章目录 CSMA/CD协议分析笔记 前言 ...

最新文章

  1. Chrome_调试js出现Uncaught SyntaxError: Unexpected identifier
  2. 处理音频文件的python模块
  3. SQL Server读写分离之发布订阅
  4. ***服务现状的理解
  5. 专题四:MATLAB绘图
  6. 和大家分享一款使用PHP+MYSQL搭建在线教育系统源码
  7. Ubuntu 18.04 如何调整桌面图标大小
  8. JSR303校验的简单使用以及自定义校验规则的代码编写
  9. Facebook推广引流工具,Facebook潜客挖掘推广系统
  10. 视频聊天app源码Android实现QQ登录功能
  11. dbase_create、dbase使用小结
  12. Linux问题:Cannot prepare internal mirrorlist: No URLs in mirrorlist
  13. 这年头,能坐上火箭的东西不多啊!Java版本号算一个!
  14. 关于新三板的股份锁定问题
  15. 关于Oracle分区 报错ORA-01847
  16. Moore and Mealy
  17. Mac HomeBrew安装慢解决方案
  18. 给Excel 增加根据身份证号码求性别和身份证校验的函数
  19. OpenCV实现SIFT特征提取与匹配
  20. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第43讲:PHP程序设计中的MVC模式

热门文章

  1. 超级玛丽游戏(洛谷-P1000)
  2. 信息学奥赛C++语言:小青蛙回来了
  3. 3.9 创建数据类型
  4. python global用法_【干货】每天更新两个Python 小例子(十九)
  5. c语言sort函数_C语言经典面试题目及答案详解(二)
  6. RabbitMQ单机瞎玩(2)
  7. OpenCV中基本数据结构(8)_Complex
  8. [Unity] 战斗系统学习 5:构建 TPS 框架 1
  9. 资源:代码舞动动画 提供gif图片(含程序、源码、下载地址)
  10. vue-router配置介绍和使用方法(二)