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
- Moodle开发笔记1
- Moodle开发笔记1-基础知识
- Moodle插件开发笔记
- moodle的开发笔记2
- Moodle开发笔记2-Block开发
- Moodle开发笔记3-Filter开发
- Moodle开发笔记4-Theme开发
- Moodle开发笔记5-Course Format开发
- Moodle开发笔记7-Activity module开发
- Moodle开发笔记6-Database操作
- Moodle笔记
- moodle开发——1开发总览
- moodle学习心得1
- Moodle
- Moodle
- moodle 板块(block)开发流程小记
- Moodle二次开发(1)-- 微创新
- moodle + openLDAP
- HashMap、Hashtable、LinkedHashMap和TreeMap
- 编译语言,解释语言,脚本语言, 标记语言
- GD 验证码的学习
- 阅读一款3D引擎的方法
- 新开博客
- Moodle开发笔记1
- sicily 1625 Binary Clock
- jsp通过href跳转到servlet的乱码问题
- Struts2.1.6中关于JSON的配置和使用
- C++ 在 Linux下编译动态链接库
- 点评我接触的各种编程语言
- 关机、注销、重启的C++实现 2011.04.22
- vs2008安装失败解决办法
- 解决IE8将“在页面中选中一段文字”误认为是Onclick 事件