Moodle开发笔记1

来源:互联网 发布:linux touch.stmp 编辑:程序博客网 时间:2024/05/21 08:49

1、在moodle的数据库里面大约有275个相关的表,每一个表的前缀都是mdl_

2、 moodle中的各个文件夹

       admin/ :PHP文件,包含行政用户界面控制。其中包括一个cron.php:它运行在批量生产执行系统的维修任务,如邮件传递和课程备份,同时它也用于处理批量操作

        auth/:用于验证用户的插件模块,这些目录里每一个子目录就是一个认证模块控制创造用户、用户配置文件数据,用户使用该系统。
        backup/:核心课程包含备份设施的备份,恢复和导入课程。

        blocks/:用于页面的内容小区域。模块是用来显示的信息可以在盒子右侧或左侧栏的Moodle页。这是一个非常简单的模块类型。
        course/:该组件是Moodle具有明显的重要性,因为Moodle是围绕课程。开发者是最有可能的修改或增加课程的格式和报表。定制课程格式可以用来改变布局的课程。

        enrol/:包含了所有的moodle的注册模块,注册模块控制了课程级德作业的生成与管理。

        files/:文件组件控制了文件的上传、访问控制和文件的查看。文件将会看到一个主要的重写在Moodle 2.0版本。moodle2.0将允许存储和再外部文件存储器里使用文件,例如Alfresco, Box.net, and Google Docs .

      filter/:过滤系统是用户获取的在每页生成中的来自数据库中的内容,过滤的匹配与修改页面(在被显示之前)。他需要被仔细的发展(其中性能影响记在心里)。

      lang/:语言的核心系统包含字符串。映射是语言字符串数据也储存在Moodle的lang文件夹。

      lib/:包含核心系统库的功能。当我们开发的模块和定制,我们将用在这个文件夹中被定义的类和功能。  

      mod/:模块包含活动任务,测验,维基,论坛,和课程模块(assignment, quiz, wiki, forum, and lesson modules )。学习活动的核心是任何课程Moodle交付使用。更有挑战性的活动模块,因为他们备份,还原和商店的成绩。

      my/:他提供了一学者分配的一系列课程,包含了即将来临的课程活动的概要,用户也能增加、移除在网页内的block(块)。

      theme/:包含了所有的内置Moodle主题和任何自定义的主题。每个主题都有它自己的文件夹。

3、moodle库     

   a、先说 2个很有用的关于 path的变量

 $CFG->dirroot   指向 moodle root folder

 $CFG->libdir 指向 moodle root folder下的 lib folder     

 例如,若要 include moodle/lib下的 lib library,可以       require_once($CFG->libdir . '/blocklib.php');

   b、在moodle/lib/moodlelib.php中required_param和 optional_param特有的方法。用来代替 php自身的从 $GET, $POST, $COOKIE中获取参数值 ,required_param函数则要求必须要所要的参数,而 optional_param则不需要一定存在所要的参数

 例: $id = optional_param('id', 0, PARAM_INT);$name = optional_param('name', '', PARAM_RAW);

1个参数是 param name,第 2个参数是缺省值

   C、Moodle entry points(moodle入口点)

 /index.php : The front page

 /login/index.php : The login page

 /admin/index.php : The main administration page  

/course/view.php : A course page 

/mod/*/view.php : A module page

   d、 config.php & setup.php            

 所有的 entry point php files的第一行都是 require_once('../config.php') 。

config.php执行某一数量的初始参数赋值全局$ CFG的变量,在$CFG中大都是数据库、web url、脚本目录和数据存储目录定义。在config.php中包含/lib/set.php,set.php执行所有的初始化程序运行需要完成的执行环境的建立,这包含了定义的几个重要的全局变量($SESSION,$COURSE,$THEME,$DB)。setup.php会建立连接数据库根据在config.php中定义好的设置。(使用 ADOdb 来进行数据库操作,使用 ADOdb 你需要 include  /lib/adodb/adodb.inc.php

      e、get_record function该函数是从 database 里获取 record)

if (! ($course = get_record('course', 'id', $id)) ) {

error('Invalid course id');

}

        f、require_login function

      该函数是用来 check if the user is logged in site or course ( 有些 course 可能设置成不需要 login). 如果需要 login site ,但 user 又没有 login ,就 redirect to login page 。如果 user 已经 login ,他正在尝试 access a course ,但又没有 enrollment 到该 course ,那么执行该函数就会 redirects the user to the enrollment function例:         require_login($course);

   g、在moodle中的显示方法

    输出 html header 的函数有 2 个:print_header和print_header_simple

上面函数用于输出 html header, 包括 the theme info and 所要的 javascript file 例:$PAGE->print_header(get_string('course').': %fullname%', NULL, '', $bodytags);

     输出 html body 是由 course 的特定 格式 来处理的. 首先要先 include 该 course 的format 的 php file. require($CFG->dirroot .'/course/format/'. $course->format .'/ format.php');

例如,如果 course 使用 topics format ,就会 include /course/format/topics/format.php.   该 format.php用于处理特定的 course page的输出,包括 the blocks and main content.    

       print_footer 函数用于输出 footer  例:print_footer(NULL, $course);

    h、moodle的配置       

Moodle 的设置分别处于 3 个地方: 

    直接在 config.php hard code

    mdl_config table 。可以通过 administrative code and interfaces 进行控制

    mdl_config_plugins table 。主要是存储来自各个 plugin 的设置。

可以通过 plugin administration 来控制All configuration info 都存在变量 $CFG 里( plugin 的设置则会放在plugin 变量里)。例如 CFG>theme contains the text name of your site's selected theme.

config.php 一开始会调用 unset($CFG); 来保证在 config.php and setup.php 之前清除所有的设置 。

在 config.php 里,包含下列的设置 :

$CFG->dbtype    = 'mysql';

$CFG->dbhost    = 'localhost';

$CFG->dbname    = 'moodle';

$CFG->dbuser    = 'xxx';

$CFG->dbpass     = 'xxx';

$CFG->dbpersist =  false;

$CFG->prefix    = 'mdl_';

$CFG->wwwroot   = 'http://xxxx:8080/moodle';

$CFG->dirroot   = 'F:/Apache2/htdocs/moodle';

$CFG->dataroot  = 'F:/Apache2/moodledata';

$CFG->admin     = 'admin';

 

$CFG->directorypermissions = xxx;  // try 02777 on a server in Safe Mode

$CFG->passwordsaltmain = 'xxxx';

这时 config.php 的最必须的设置,如果想在 config.php 里进行更多的设置,则要参看 config-dist.php 的all configuration settting ,然后修改 config.php 。  

上述设置你可以直接在 config.php 里修改。  

除了 config.php 之外的所有其他设置都存储在 database 的 mdl_config table and mdl_config_plugins table 里。

那么 moodle 何时把这些来自 database 的设置赋给 $CFG?

就是在 config.php 里 include 了 lib/setup.php , setup.php 调用了  $CFG = get_config(); 来执行。get_config() 函数来自 /lib/moodlelib.php library file

 

注意: get_config函数不会对于在调用之前已经存在的设置进行覆盖。 ( will not overwrite any $CFG setting that has already been set) 。即它不会覆盖 config.php 里的设置 . 这意味着你可以在 config.php 里 hard code 你希望的设置,在 config.php 最后一行 include 了 setup.php ,但来自 database 的设置如果与 config.php 里的设置同名,则不会覆盖它。

对 configuration 进行修改是通过 set_config 函数。该函数会以

·         name

·         value

·         plugin name (optional)

作为参数。如果不使用了第三个参数,那么 set_confg 就会把设置存储在 mdl_config table ,如果使用这个参数,则存在 mdl_config_plugins table 。

 

我们开发的通常是 plugin (modules, blocks, and so on) 。在开发过程中,如果你想添加设置的话,强烈建议使用 mdl_config_plugins table 来存储,即调用 set_config 时要用到 plugin name 参数。这是因为: 设置的 name 必须唯一。如果你想添加设置到 mdl_config table里,那么就有可能该设置的 name已经存在,产生冲突。而对于 mdl_config_plugins table ,它多了一个 ”plugin” field ,这就使你只要保证该设置的 name 在该 plugin 里是唯一的即可 。

注意: plugin 的设置则会放在 plugin 变量里,而不是存在 $CFG

 

通常,我们都是通过 administration interfaces set configuration variables 。绝对多数的 Moodle configuration variables 都可以在 Site Administration block (用 admin login 后的 home page 会看到它)里进行设置。

     i、 moodle API

    绝大多数的 api 都放在 lib 目录下,该目录下的 library php 的命名方式是  [function]lib.php

例如 textlib.php and weblib.php  

几乎所有的 core libraries are included when you load config.php via its inclusion of /lib/setup.php

最常用的 library ·         moodlelib.php ·         weblib.php  ·         dmllib.php  ·         accesslib.php ·         grouplib.php

  Moodle 还会用到一些开源的 library ,如 ·         PEAR   ·         ADOdb  ·         YUI   ·         XMLDB