Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4272858
  • 博文数量: 601
  • 博客积分: 15410
  • 博客等级: 上将
  • 技术积分: 6884
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 08:11
个人简介

独学而无友,则孤陋而寡闻!

文章分类

全部博文(601)

文章存档

2020年(1)

2018年(4)

2017年(7)

2016年(42)

2015年(25)

2014年(15)

2013年(36)

2012年(46)

2011年(117)

2010年(148)

2009年(82)

2008年(37)

2007年(41)

分类:

2010-04-10 11:03:29

1、输出对象,在\lib\sessionlib.php中定义,
  $PAGE = new moodle_page();
  其它的文档都可以直接引用$PAGE。
    class moodle_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 //memory cache
    $HTTPSPAGEREQUIRED
    $FULLME
    $ME
    $FULLSCRIPT
    $SCRIPT

  引用的文件:
require_once($CFG->libdir .'/textlib.class.php');   // Functions to handle multibyte strings
require_once($CFG->libdir .'/filterlib.php');       // Functions for filtering test as it is output
require_once($CFG->libdir .'/ajax/ajaxlib.php');    // Functions for managing our use of JavaScript and YUI
require_once($CFG->libdir .'/weblib.php');          // Functions relating to HTTP and content
require_once($CFG->libdir .'/outputlib.php');       // Functions for generating output
require_once($CFG->libdir .'/navigationlib.php');   // Class for generating Navigation structure
require_once($CFG->libdir .'/dmllib.php');          // Database access
require_once($CFG->libdir .'/datalib.php');         // Legacy lib with a big-mix of functions.
require_once($CFG->libdir .'/accesslib.php');       // Access control functions
require_once($CFG->libdir .'/deprecatedlib.php');   // Deprecated functions included for backward compatibility
require_once($CFG->libdir .'/moodlelib.php');       // Other general-purpose functions
require_once($CFG->libdir .'/pagelib.php');         // Library that defines the moodle_page class, used for $PAGE
require_once($CFG->libdir .'/blocklib.php');        // Library for controlling blocks
require_once($CFG->libdir .'/eventslib.php');       // Events functions
require_once($CFG->libdir .'/grouplib.php');        // Groups functions
require_once($CFG->libdir .'/sessionlib.php');      // All session and cookie related stuff
require_once($CFG->libdir .'/editorlib.php');       // All text editor related functions and classes
require_once($CFG->libdir .'/messagelib.php');      // Messagelib functions

4、module(只找到课程层面的管理,没找到系统层面的东西,比如安装、删除、启用/禁止等,没有这个功能吗?)
   (1)\course\modedit.php
   (2)\course\moodleform_mod.php
   (3)\lib\formslib.php
   (4)\admin\modules.php
   (5)\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(new admin_setting_configselect进行。参见scorm下的setting.php
    admin_setting_config*对象分别对应于几种不同的控件类型,见\lib\adminlib.php中1200行以后的部分。
  
11、get_string:(1)查找moodle configstr,(2)查找module参数所对应的语言包,(3)installstr,(4)其它指定的地方(第四个参数)。

12、moodle已经实现的类似pdo的预检索?
    accesslib.php,2470行:
    $sql = "SELECT instanceid, id, contextlevel, path, depth
                  FROM {context}
                 WHERE contextlevel=? AND instanceid $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用来快速地在路径之前查找。
   
15、课程中设置工具的路径,从路径可以看出,有的工具需要以contextid,有的需要id(应该是couresid),也有的明确需要courseid。
  这些信息竟然在class block_admin中定义!

阅读(4195) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~