1、2个很有用的关于path的变量
$CFG->dirroot 指向moodle root folder
$CFG->libdir 指向moodle root folder下的lib folder
例如:若要include moodle_home/lib下的lib library,可以
require_once($CFG->libdir . ‘/blocklib.php’);
optional_param & required_param
这2个是moodle特有的function,用来代替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个参数是缺省值
2、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(模块页)
如:http://localhost/course/view.php?id=23
3、设置与安装:config.php & setup.php
所有的入口点php文件的第一行都是
require_once(‘../config.php’)
config.php文件执行在全局变量$CFG里设置的初始参数
$CFG中的信息包括:database数据库,网页的URL,script脚本目录,以及数据存储目录的定义设置。
注意:config.php includes /lib/setup.php
setup.php设置所有所需的完整的执行环境的初步方案。这包括定义其他几个重要的全局变量,包括: $SESSION, $COURSE, $THEME, and $db。
Setup.php会根据设置在config.php中定义:建立和连接数据库的设置。
Moodle使用ADOdb来进行数据库操作,Moodle使用的默认数据库是MySQL, 是一个开源的关系数据库系统。为了可以使用其他的关系数据库服务器, Moodle使用了ADODB将数据层抽象, 这样Moodle就可以使用诸如MS SQL Server、 Oracle等关系型数据库。使用ADOdb你需要include
/lib/adodb/adodb.inc.php
setup.php还会inlude一些常用的库,还会设置其他一些关键的全局变量,从数据库中加载配置变量,设置了缓存(caching),会话(sessions),环境变量(environment variables),主题(themes),语言(language),和区域(locales)设置。
4、get_record function
该函数是从database里获取record
例:
if (! ($course = get_record(‘course’, ‘id’, $id)) ) {
error(‘Invalid course id’);
}
5、require_login function
该函数是用来检查用户是否已登录到网站或课程 (有些课程可能设置成不需要login). 如果需要登录网站,但用户又没有登录,就重定向到登录页面。如果用户已经登录,他正在尝试访问课程,但又没有注册到该课程,那么执行该函数就会将用户重定向到选课注册页面。
例:
require_login($course);
6、在Moodle里的显示函数
输出html header的函数有2个
print_header
print_header_simple
上面函数用于输出html header, 包括主题信息和所要的javascript文件等
例:
$PAGE->print_header(get_string(‘course’).’: %fullname%’, NULL, ”, $bodytags);
输出html body是由course的特定format来处理。首先要先include 该课程的format的php文件。
require($CFG->dirroot .’/course/format/’. $course->format .’/ format.php’);
例如,如果课程使用topics format,就会include /course/format/topics/format.php。
该format.php用于处理特定的course page的输出,包括the blocks and main content。
print_footer函数用于输出footer
例:
print_footer(NULL, $course);