Moodle作为一个主流的开源网络课程管理系统,以其简单明了的用法和灵活的扩展空赢得了大多数人的青睐。它解决了网络学习和课程管理中最常见的问题(课程设计、发布、组织、作业、测试、统计、评估等)。),无需任何修改即可在实践中应用。& lt?XML:namespace prefix = o ns = " urn:schemas-Microsoft-com:office:office "/>
Moodle数据库模型
Moodle的数据库模型经过几年的发展已经非常复杂了。为了减少这种复杂关系带来的混乱,它采用了这样的命名方式。比如mdl_course_categories,其中“mdl_”是所有系统表的前缀,course代表属于课程的模块,categories代替课程分类表,既能保证描述清晰,又能避免不同模块之间数据表的重名。您可以使用数据库设计器4(一个可以从http://fabforce.net/dbdesigner4/下载的免费数据库设计软件)将Moodle数据库导出为XML文件并进行分析。Moodle提供了ADODB数据访问抽象层来访问数据库,所以我们不需要编写直接访问数据库的代码,只需通过抽象层即可。
Moodle数据(Moodle数据)
Moodle数据是用户上传内容的文件存储位置记录,如果使用基于文件的会话,Moodle数据还存储登录系统的用户的会话数据。
文件夹中Moodle数据的组织结构由用户或课程组成。每个课程都有一个以整数值命名的文件夹。这个整数值就是本课程内部数据库的ID。
Moodle 2.0使用了一种新的组织方式来组织用户上传的文件,这种方式是基于hash算法的。
Moodle主目录结构
管理员:系统管理代码
包含控制管理用户界面的PHP文件。它包括一个cron.php:作为一个批处理,它执行系统维护任务,如消息传递和进程内备份,它还用于处理批处理操作
验证:验证用户基本模块和扩展模块
包含所有Moodle的认证模块。“auth”目录中的每个子目录都是一个身份验证模块。这些身份验证模块控制用户创建、用户配置文件数据和用户对系统的访问。
备份:课程备份代码
包含课程备份的核心功能:备份、恢复、导入课程。
模块:接口模块的基本模块和扩展模块
板块用于显示信息框,可以在Moodle页面的右栏或左栏。这是最简单的可扩展模块设计类型。
课程:显示和管理课程代码
这是Moodle的一个重要部分,围绕课程进行组织。开发人员最有可能修改或增加课程的格式和报告。自定义课程格式,可用于更改课程布局。
注册:注册模块
包括所有Moodle注册模块。注册模块控制课程级角色分配(注册)的创建和管理。
文件:显示和管理上传文件的代码
文件组件控制文件上传、访问控制和查看。Moodle2.0对文件管理的重写发生了很大的变化。Moodle 2.0将允许在外部文件库中存储和使用文件,如Alfresco、Box.net和谷歌文档。
过滤器:过滤器
过滤系统是将从数据库创建的用户输入与页面相关联。页面显示前的过滤器匹配和修改。它需要考虑性能的影响,需要仔细制定。
郎:语言模块
包含核心系统的语言字符串。语言字符串映射也存储在Moodle的数据语言文件夹中。不同语言的对应文本,每个目录代表一种语言,对应一个特定的模块。
lib:Moodle的核心代码库
包含的核心系统库函数。当我们开发和定制模块时,我们将使用这个文件夹中定义的类和函数。
Mod:基本模块和扩展模块mod:Moodle
包括活动模块,如作业、测验、维基、论坛和课程模块。学习活动是使用Moodle的任何课程的核心功能。活动模块比数据块更具挑战性和复杂性,因为它们是为备份、恢复和存储级别而设计的。
我的:我的课程
它提供了分配给学员的课程列表,包括即将开展的课程活动的摘要。用户还可以在他或她的门户页面上添加和删除块。“my”提供了一个在Moodle中显示定制信息的好地方,核心变化很小。例如,我们使用“我的”作为面板位置来定制许多项目。
主题:网站的主题包,控制网站的风格
包含所有内置Moodle主题和任何自定义主题。每个主题都有自己的文件夹。
其他还有:
日历:维护和显示日历的代码
文档:Moodle的帮助文档
登录:登录和帐户创建代码
图片:网站图片
用户:显示和管理用户
Onfig.php包含基本的系统设置,通常在第一次启动时设置
NS tall.php安装现场
版本控制
index.php网站主页
参见:http://docs.moodle.org/archive/zh/index.php?发展总结标题= % E5 % BC % 80% E5 % 8F % 91:% E6 % A6 % 82% E8 % A6 % 81 & amp;variant=zh-cn
1.关于路径的两个有用变量
$ CFG->;Dirroot指向moodle根文件夹
$ CFG->;Libdir指向moodle根文件夹下的lib文件夹
例如,要在Moodle _ home/lib下包含lib库,您可以
Php代码
require _ once($ CFG->;libdir。/block lib . PHP ');
可选参数& amp必需参数
这两个函数是moodle独有的,用来代替php自己的函数从$ get、$ post和$ cookie中获取参数值。
required_param函数需要必需的参数,而optional_param不一定有必需的参数。
这两个函数都基于指定的参数验证数据,并在意外数据通过时生成错误或警告。(在线搜索详细描述)
示例:
Php代码
$id = optional_param('id ',0,PARAM _ INT);
$name = optional_param('name ','',PARAM _ RAW);
第一个参数是参数名,第二个参数是默认值
2.Moodle的切入点
/index.php:首页(网站首页)
/login/index.php:登录页面
/admin/index.php:主管理页面
/course/view.php:一个课程页面
/mod/*/view.php:一个模块页面
例如http://localhost/course/view . PHP?id=23
3.安装:config.php & setup.php
所有入口点php文件的第一行是
c代码
require_once('../config.php ')
config.php文件执行全局变量$CFG中设置的初始参数
$CFG中的信息包括:数据库数据库、网页URL、脚本目录、数据存储目录的定义和设置。
注意:config.php包含/lib/setup.php
为setup.php建立所有必要的完整执行环境的初步计划。这包括定义其他几个重要的全局变量,包括:$SESSION、$ COURSE、$THEME和$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还将包括一些常用的库,并设置其他关键的全局变量,从数据库加载配置变量,并设置缓存、会话、环境变量、主题、语言和区域设置。
4、get_record功能
功能是从数据库中获取记录
示例:
Php代码
if(!($course = get_record('course ',' id ',$ id)){
错误('无效的课程标识');
}
5、要求_登录功能
此功能用于检查用户是否已经登录网站或课程(有些课程可能是在没有登录的情况下设置的)。如果用户需要登录网站,他将被重定向到登录页面。如果用户已经登录并试图访问课程,但尚未注册课程,执行此功能会将用户重定向到课程注册页面。
示例:
Php代码
require _ log in($课程);
6.Moodle中的显示功能
有两个函数输出html标题
打印标题(_ h)
打印标题简单
上述函数用于输出html标题,包括主题信息和所需的java文件等。
示例:
Php代码
$ PAGE->;print_header(get_string('当然')。:%fullname% ',NULL ' ',$ body tags);
输出html正文由课程的特定格式处理。首先,包含课程格式的php文件。
Php代码
需要($ CFG->;dirroot。/课程/格式/'。$课程->;格式。/format . PHP ');
比如课程使用主题格式,就会包含/course/format/topics/format . PHP。
format.php用于处理特定课程页面的输出,包括模块和主要内容。
打印页脚功能用于输出页脚
示例:
Php代码
print_footer(NULL,$ course);
7.配置Moodle
Moodle设置在三个地方:
硬编码直接在config.php。
mdl_config表.它可以由管理代码和接口控制
mdl_config_plugins表.主要存储各种插件的设置。可以通过插件管理来控制。
所有配置信息都存储在全局变量$CFG中(插件的设置放在插件变量中)。
示例:$ CFG->:主题包含您网站主题的选定文本名称。
Config.php最初称之为未售股(1.25亿美元);确保在config.php和setup.php之前清除所有设置。
在config.php,包括以下设置:
Php代码
$ CFG->;dbtype = ' mysql
$ CFG->;dbhost = ' localhost
$ CFG->;dbname = ' moodle
$ CFG->;dbuser = ' xxx
$ CFG->;dbpass = ' xxx
$ CFG->;dbpersist = false
$ CFG->;前缀= ' mdl _
$ CFG->;wwwroot = ' http://xxxx:8080/Moodle ';
$ CFG->;dirroot = ' E:/develop/Zend/Apache 2/htdocs/Moodle ';
$ CFG->;data root = ' E:/develop/Zend/Apache 2/htdocs/moodledata ';
$ CFG->;admin = ' admin
$ CFG->;directorypermissions = xxx//在处于安全模式的服务器上尝试02777
$ CFG->;passwordsaltmain = ' xxxx
这是config.php最必要的环境。如果您想在config.php进行更多设置,您应该参考config-dist.php的所有配置设置,然后修改config.php。
您可以直接在config.php修改以上设置。
除config.php之外的所有设置都存储在数据库的mdl_config表和mdl_config_plugins表中。
那么moodle什么时候会把这些设置从数据库分配到$CFG呢?
也就是说,config.php包含了lib/setup.php,setup.php称之为
Php代码
$ CFG = get _ config();
执行。get_config()函数来自库文件/lib/moodlelib.php。
注意:get_config函数不会覆盖调用之前存在的设置。(不会覆盖任何已经设置得$CFG设置).也就是说,它不会覆盖config.php的设置。这意味着您可以在config.php硬编码您想要的设置,并将setup.php包含在config.php的最后一行,但是如果数据库中的设置与config.php的设置同名,它们将不会覆盖它。
配置的修改是通过set_config函数进行的。该函数以(名称、值、插件名称(可选))作为参数。如果没有使用第三个参数,Set_confg将设置存储在mdl_config表中,如果使用了这个参数,它将存在于mdl_config_plugins表中。
我们通常开发插件(模块、块等等)。在开发过程中,如果要添加设置,强烈建议使用mdl_config_plugins表存储,即调用set_config时要用到插件名称参数。这是因为集合名称必须是唯一的。如果要向mdl_config表中添加一个设置,则该设置的名称可能已经存在并且存在冲突。至于mdl_config_plugins表,它有一个“plugin”字段,所以您只需要确保插件中的集合名称是唯一的。
注意:插件的设置将放在插件变量中,而不是$CFG中。
通常,我们通过管理界面设置配置变量。Moodle配置变量的绝大部分可以在站点管理块中设置(使用管理员登录后将在主页上看到)。
8、Moodle API
绝大多数API都放在lib目录下,这个目录下的库php的名字是
[function]lib.php
比如textlib.php和weblib.php
几乎所有的核心库都包含在内。
最常用的库有
moodlelib.php
weblib.php
dmllib.php
accesslib.php
grouplib.php
Moodle还将使用一些开源库,例如
PEAR
ADOdb
YUI
XMLDB
访问控制、登录和角色
Moodle的访问控制、登录和角色的登录功能是使用PHP的“cookie”功能设置为当前会话的cookie。
1、六种分发级别权限:
,站点/全局(站点/全局)
课程类别(课程类别)
课程
区块(区块)
活动(活动)
用户(用户)
frontpage(主页)
Contexts是系统中与定义的上下文级别相关的元素,在/lib/accesslib.php中定义。
Php代码
define(' CONTENT _ SYSTEM ',10);
define(' CONTENT _ USER ',30);
define(' CONTENT _ COURESCATE ',40);
define(' CONTENT _ CURSE ',50);
define(' CONTENT _ GROUP ',60);
define(' CONTENT _ MODULE ',70);
定义('上下文块',80);
“系统”上下文只有一个,还有很多,比如“课程”上下文,“用户”上下文等等。
2.有7个内置角色
管理员:系统管理员有权操作任何课程。
老师:一个老师可以在一门负责任的课程里做任何事情,包括改变活动,给学生打分。
非编辑老师:可以在课程中教学生,给学生打分,但不能改变活动内容。
学生:你可以选修一门课程,但通常没有什么特权。
课程创建者:您可以创建课程并将其限制在一个课程类别中。
经过身份验证的用户:任何登录的用户都具有此角色
顾客:非登录用户拥有最低权限,通常不能在任何地方输入文本。
这些角色可以分配给上面一个或多个上下文。
每个用户可以有多个角色,这些角色继承适用于来自用户的访问请求的所有上下文级权限。
功能与上下文级别相关联,是可以授予角色的特定访问规则。
功能示例包括:
Moodle/site:managed blocks:可以在站点上下文级别管理块
moodle/user:viewdetails:可以在用户上下文级别查看用户的详细信息
Moodle/课程:视图:可以在课程上下文级别查看课程
每个功能可以分配给以下四个访问级别之一:
未设置(未设置)
允许(allow)
*禁止
预防(避免)
注意:开发人员可以通过创建功能来控制对我们新特性的访问。
总而言之:
上下文是Moodle中的特定元素(上下文是Moodle中的特定元素)
角色与所有上下文相关联(角色与所有上下文相关联)
能力被分配给给定上下文中的角色(所有能力被分配给特定上下文中的角色)
用户被分配给给定上下文中的角色(用户被分配给特定上下文下的角色)
普通系统在使用用户、角色、能力时是可以的。moodle为什么要多加一个语境?
这是因为同一用户在不同的上下文中有不同的角色。例如,在系统上下文中,用户是管理员角色,而他是课程“foo”中的讲师角色
3.每个用户角色在不同的上下文中都有不同的能力。
获取上下文对象的函数是get_context_instance()。
示例:
Php代码
#获取系统上下文对象
$ CONTEXT = get _ CONTEXT _ instance(CONTENT _ SYSTEM);
#了解当前课程的背景
global $ COURSE
$ CONTENT = get _ CONTENT _ instance(CONTENT _ CURRENT,$ CURRENT-& gt;id);
获取上下文后,使用以下两个函数来检查当前登录的用户在上下文中是否具有指定的能力。
require_capability测试当前用户的能力,以查看他们在指定的上下文中是否具有指定的能力。如果没有,页面将被重定向到错误页面。
has_capability函数类似于require_capability,但它不会重定向到错误页面,而是返回true或false。
示例:
Php代码
$ CONTEXT = get _ CONTEXT _ instance(CONTENT _ SYSTEM);
require _ capability(' Moodle/site:doanyit ',$ context);
上面的例子是为了检查当前用户在系统上下文中是否有“Moodle/site:doanythings”的能力。
如何为你的moodle插件/模块定制功能?
在插件/模块的根目录下创建一个数据库目录,然后在数据库目录下创建一个access.php,用于定义功能。
以下示例定义了block/hello world:hello world块中的视图功能。读取该功能的类型,该功能属于系统上下文级别。设置为只有管理员角色用户拥有此功能,而其他角色没有。
代码如下:
Php代码
& lt?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
$ block _ hello world _ capabilities = array(
block/helloworld:view'= >数组(
captype'= >;读取',
contextlevel'=>。上下文系统,
legacy'= >;数组(
guest'= >;CAP _ PREVENT,
学生' = >;CAP _ PREVENT,
教师' = >;CAP _ PREVENT,
editing教师' = >;CAP _ PREVENT,
coursecreator'= >CAP _ PREVENT,
admin'=>。CAP_ALLOW
)
)
);
?>。
注意:该功能适用于使用该模块的任何地方。无论您将此块添加到主页、管理页面、我的Moodle页面还是课程页面,此功能都是适用的。但是,因为该功能是在系统上下文级别定义的,所以只有在系统上下文级别具有管理员角色的用户才能看到该块。
接下来,我们将学习五种Moodle插件的开发:
阻塞
过滤
活动模块
主题
课程格式
1.《moodle安装 Moodle插件开发笔记》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《moodle安装 Moodle插件开发笔记》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/849286.html