Moodle二次开发指南-代码编写指南

合集下载

Moodle二次开发文档

Moodle二次开发文档

北京西觅亚科技有限公司Moodle平台二次开发需求方案李建澎2012-04-05一项目背景Moodle是澳大利亚教师Martin Dougiamas 基于建构主义教育理论而开发的课程管理系统,是一个免费的开放源代码的软件,目前在各国已广泛应用。

Moodle 这个词是Modular Object-Oriented Dynamic Learning Environment ,即模块化面向对象的动态学习环境的缩写。

是一个用来建设基于Internet 的课程和网站的软件包。

Moodle 平台依据社会建构主义的教学思想,即教育者(老师)和学习者(学生)都是平等的主体,在教学活动中,他们相互协作,并根据自己已有的经验共同建构知识。

Moodle 平台界面简单、精巧。

使用者可以根据需要随时调整界面,增减内容。

课程列表显示了服务器上每门课程的描述,包括是否允许访客使用,访问者可以对课程进行分类和搜索,按自己的需要学习课程。

[1]Moodle 平台还具有兼容和易用性。

可以几乎在任何支持PHP 的平台上安装,安装过程简单。

只需要一个数据库(并且可以共享)。

它具有全面的数据库抽象层,几乎支持所有的主流数据库(除了初始表定义)。

利用Moodle ,现今主要的媒体文件都可以进行传送,这使可以利用的资源极大丰富。

在对媒体资源进行编辑时,利用的是用所见即所得的编辑器,这使得使用者无需经过专业培训,就能掌握Moodle 的基本操作与编辑。

Moodle 注重全面的安全性,所有的表单都被检查,数据都被校验,cookie 是被加密的。

用户注册时,通过电子邮件进行首次登陆,且同一个邮件地址不能在同一门课程中进行重复注册,所有这些,都使得Moodle 的安全性得到了加强。

目前,Moodle 项目仍然在不断的开发与完善中。

二需求要求2.1登录需求◆需求描述我们需要平台里面的学员隔几天就要至少登录一次,到达期限没有登录,需要通过某种方式提醒用户登录。

Moodle教学平台的二次开发研究

Moodle教学平台的二次开发研究

5 Mo o d l e 插 件 开发 实践 Mo o d l e 插件有两种 , 其一是功能模块如作业、 聊天 、 论坛 、 测试
等模 块 , 其 二 是主 页面 左 右两 侧 的 板块 , 如 日历 管理 、 课程列表、 注 册等 , 这 些文件放 在b l o c k s 文件 中。 这里 我们 以板块开 发( b l O C k s ) 作 为开发 实例 。 首先 我们在 E c l i p s e 中, 打开b l o c k s 文件 夹 , 找 到mo o d l e b l o c k . c l a s s . p h p , 这 个 文 件 中定义了所有板块的类b l o c k _ b a s e , 我们要了解这个类 的属性和 方法 。 ( 1 ) 新建一个板块 : 我们在B l o c k 文件夹下新建一个文件夹 , 命 名 为U s e r , 并 在 这 个 文 件 夹 下 新 建 一 个 PH P 文件 , 命 名 为 b l o c k — u s e r . p h p 。 打开 b l o c k _ u s e r . p h p, 新建一个类b l o c k _ u s e r 。 并 写入初始化 函数i n i t O 。 ( 2 ) 添加语言 文件 : 在u s e r 文件夹 中新建一个语言包l a n g 文件 夹, 在包里新建一个z h _ c n _ t u f 8 的文件夹 , 表示支持 中文 , 并在其 中 新建 一个P HP 文件 , 命名为b l o c k _ u er s . p h p 。 内容为 :
1引言
Mo o d l e 是一个主流 的网络课程管理平 台, 其凭借着先进的教 育理念、 完善的课程管理和学 习功能 、 免费开源和Mo o d l e }  ̄区支持 等, 在教育界得到了广泛的应用o MO o d l e  ̄决了大部分 信息化和课 程管理的 问题 , 诸如课程设计 、 课程的组织 、 发布 、 课程作业 的安排、 各种在线考试、 成 绩的统计、 学习效果的评价等 , 这些功能可以直接 应用 , 给广大教育工作者提供了很大便利 。 但 同时我们在实 际的学 习过程 中可能会有些差异化 , 像课程 内容 , 课程测试 , 课程的在线学 习都 会因人而异 , 能不能实现差异化 开发 , 将直接影响着Mo o d l e 的

Moodle_函数和模块功能说明书_V2_3_1_-范例与格式-20121127

Moodle_函数和模块功能说明书_V2_3_1_-范例与格式-20121127

关键函数和模组功能说明书版本历史目录1.引言 (1)2.常用的通用API (2)2.1.访问权限API (2)2.2.数据操作API (6)2.3.文件API (23)2.4.表单API (28)2.5.日志API (30)2.6.导航API (32)2.7.页面API (34)2.8.输出API (41)2.9.字符串API (60)2.10.升级API (68)3.关键模组功能 (70)3.1.Assign (70)3.2.Assignment (70)3.3.Book (71)3.4.Chat (71)3.5.Choice (72)3.6.Data (72)3.7.Feedback (73)3.8.Folder (73)3.9.Forum (73)3.10.Glossary (74)3.11.Imscp (74)bel (75)3.13.Lesson (75)3.14.Lti (75)3.15.Page (76)3.16.Quiz (76)3.17.Resource (76)3.18.Scorm (77)3.19.Survey (77)3.20.url (78)3.21.wiki (78)3.22.workshop (78)4.配置参数详细说明 (80)1.引言Moodle网络教学平台支持多样化的教学方式,可以为学习者的自主学习、协作学习及个性化学习创造一个良好的网络学习环境,目前已经在世界上很多国家和地区得到广泛的应用,并且取得很好的教学效果。

但随着互联网进入Web2.0时代,大量计算机新技术、新应用不断涌现,这对于网络课程的开发也势必要求引入更多新的计算机应用技术,同时这也给基于Moodle平台的网络课程建设提出了更多新要求。

目前,国内对Moodle平台的研究主要集中在网络课程实现与应用方面的探讨,而对平台自身的技术研究则略显不足。

本文将详细的阐述与讲解Moodle(v2.3.1)平台的关键函数和模组功能,对moodle二次开发和网络课程建设及教学实践进行将有很大的价值与意义。

modoer二次开发之欧阳美创编

modoer二次开发之欧阳美创编

Modoer二次开发文档目录结构:Api 整合接口Core 框架核心Data 缓存内容Install 安装数据Static 图片,js位置Templates 模板Uc_uclient ucenter整合客户端Uploads 上传数据Core 框架核心Admin 框架后台代码Helper 框架功能性函数和类库Lang 代码级别的多语言包Lib 框架核心类库Model 框架模型Modules 各个模块核心代码Cache.php 必须要的缓存更新Diex.php 错误提示fense.php 防刷提示Function.php 全局函数库Init.php 系统加载的初始化Loader.php 功能载入类Version.php 版本信息Core/admin 框架后台代码(控制器部分)Admin.inc.php 后台用户管理Announcement.inc.php 公告数据管理Area.inc.php 地区管理Bcastr.inc.php 图片轮换管理Cpheader.inc.php 后台头部Cphome.inc.php 后台首页Cplogin.inc.php 后台登陆Cpmenu.inc.php 后台左侧菜单Database.inc.php 数据库操作Datacall.inc.php 数据调用Hook.inc.php 函数钩子管理(暂未使用)Map.inc.php 函数接口管理(暂未使用)Menu.inc.php 菜单管理Module.inc.php 模型管理Setting.inc.php 核心设置Template.inc.php 模板管理Tools.inc.php 工具管理(缓存更新)Word.inc.php 词语过滤Core/helper 框架功能性函数和类库Cache.php 缓存函数库,用于读取,生成缓存数据,存放于data下Dir.php 目录操作函数Display.php 模板内使用print:modoer 标签时,使用到的标签库Form.php 自动化表单空间生产函数库Json.php json形式生成和解析Passport.php dz6的整合(未使用)Query.php 模板内使用 get:modoer 标签时,用到的标签库Sql.php 复杂SQL操作的函数库,例如创建表,删除表,增加字段,删除字段,以及索引Template.php 模板引擎Validate.php 数据验证类库Core\lang\CH 代码级语言包不同模块组成的语言包文件,例如lang('global_op_succeed'),表示global.php 里的数组索引global_op_succeedCore\lib 框架核心类库Base.php 框架基类Cache.php 缓存类(暂时没有使用,目前使用helper里的cache.php函数库)Chinses.php 编码转换类Database.php 数据库操作子类(继承自mysql.php)Editor.php 编辑器类Images.php 图像处理类Join.php join操作类(暂时没有使用,用函数库里的)Maill.php 邮件发送类Model.php 模型基类Mysql.php mysql操作基类(被database集成)Mysql_result mysql查询结果资源类Rss.php rss生成类upload_file.php 文件上传类upload_image.php 图片上传类(继承自upload_file)Urlrewriter.php URL改写类core\model 框架模型类(业务逻辑),模型被控制器实例化,每个模型都集成model.php这个模型积累,多数模型都对应着至少1个数据表,从名称就可以看出所对应的表,主要也是对数据表的数据操作(读取,删除,编辑,新建)Admin_class后台用户操作模型announcement_class公告操作模型area_class 地区管理模型bcastr_class 图片轮换模型config_class 网站配置模型(包含模块配置)cpuser_class 后台登陆用户操作模型datacall_class 数据调用模型field_class 自定义字段管理模型fielddetail_class 自定义字段显示模型fieldform_class 自定义字段表单生成模型fieldsetting_class 自定义字段编辑模型fieldvalidator_class 自定义字段数据验证模型hook_class 函数钩子模型(未使用)menu_class 菜单管理模型module_class 模块管理模型template_class 模板管理模型word_class 词语过滤管理模型core\modules 模块核心每个模块占一个文件夹,每个模块内的目录结构都是相同的(modoer目录除外)core\modules\模块Admin 模块的后台操作代码Assistant 模块的我的助手内的操作代码Helper 模块自身的函数以及类库Inc 模块被其他模块或框架引用的HOOK代码Install 模块安装数据Model 模块自身的模型类库data\backupdata 数据库备份data\cachefiles 配置缓存data\datacall 数据调用缓存data\js js缓存(暂时没有使用到)data\logs 日志data\templates 前台包括助手在内的模板缓存static\editor 在线编辑器kindeditorstatic\images 图片static\javascript js,各个模块的js最好也放在这里,统计规范==============================================core\modules\articleAjax.php 新闻AJAX操作部分Common.php 新闻模块核心引用文件Detail.php 新闻详细内容页Index.php 新闻首页List.php 新闻列表页Member.php 我的助手管理入口Rss.php RSS聚合文件core\modules\article\admin 新闻模块后台管理代码(控制器)Article.inc.php 新闻数据管理Category.inc.php 新闻分类管理Config.inc.php 新闻模块配置Menus.inc.php 新闻模块的左侧菜单core\modules\article\assistant 新闻模块我的助手代码(控制器)Article.php 处理文章的发布,删除,编辑g_article.php 主题文章管理m_article.php 我发布的文章core\modules\article\helper 新闻模块函数库display.php 模板内使用print:article 标签时,使用到的标签库Form.php 新闻模块的自动化表单空间生产函数库Misc.php 一些杂项类库(未分类的函数库,静态函数)Query.php 模板内使用 get:article 标签时,用到的标签库core\modules\article\inc HOOK代码Cache.php 缓存更新被引用更新模本模块的缓存comment_hook.php 被评论模块应用,用于新闻的评论cphome_hook.php 被后台首页应用,用于模块的数据统计item_delete_hook.php 被主题点评模块内主题被删除引用menu_hook.php 被我的助手左侧菜单引用point_rule.php 被会员管理,积分设置里引用rebuild_hook.php 预留,未使用search_hook.php 被前台头部的搜索功能引用core\modules\article\install 模块安装Config.php 模块初始配置参数Info.php 模块的信息Install_check.php 模块安装前的检测Install.php 模块安装后,进行的逻辑处理Uninstall.php 模块卸载后引用,用于清理残余module_install.sql 模块安装的SQLmodule_uninstall.sql 模块写在的SQLcore\modules\article\model 新闻模块模型article_class.php 新闻数据管理模型category_class.php 新闻分类管理模型==============================================core\modules\cardCommon.php 模块核心引用文件Index.php 模块首页Member.php 助手入口core\modules\card\adminConfig.inc.php 模块配置Menus.inc.php 模块的左侧菜单Apply.inc.php 会员卡申请管理Discount.inc.php 会员折扣数据管理core\modules\card\assistantApply.php 申请表单提交m_apply.php 申请的内容和状态core\modules\card\helperForm.php 模块的自动化表单空间生产函数库Query.php 模板内使用 get:card标签时,用到的标签库core\modules\card\inc内容同新闻模块core\modules\card\install内容同新闻模块core\modules\card\modelapply_class.php 会员卡申请模型discount_class.php 会员折扣模型============================================core\modules\comment 评论模块Common.php 模块核心引用文件list.php 评论列表(ajax引用,显示在各个不同的模块)Member.php 助手入口core\modules\comment\adminConfig.inc.php 模块配置Menus.inc.php 模块的左侧菜单comment_list.inc.php 评论数据管理core\modules\comment\assistantcomment_add.php 提交评论m_comment.php 我发布的评论管理core\modules\comment\helperForm.php 模块的自动化表单空间生产函数库Query.php 模板内使用 get:comment标签时,用到的标签库core\modules\comment\inc内容同新闻模块core\modules\comment\install内容同新闻模块core\modules\comment\modelcomment_class.php 评论操作模型==============================================core\modules\coupon 优惠券模块Common.php 模块核心引用文件Member.php 助手入口Apply.php 申请操作Detail.php 详细内容List.php 列表页面Print.php 打印操作core\modules\coupon\adminConfig.inc.php 模块配置Menus.inc.php 模块的左侧菜单Category.inc.php 分类管理Coupon.inc.php 优惠券数据管理core\modules\coupon\assistantCoupon.php 优惠券的增加删除操作g_coupon.php 主题管理员对自身的优惠券进行管理core\modules\coupon\helperDisplay.php 模板内使用print:coupon标签时,使用到的标签库Form.php 模块的自动化表单空间生产函数库Query.php 模板内使用 get:coupon标签时,用到的标签库core\modules\coupon\inc内容同新闻模块core\modules\coupon\install内容同新闻模块core\modules\coupon\modelcategory_class.php 优惠券分类模型coupon_class.php 优惠券数据管理模型==============================================core\modules\exchange礼品兑换模块Common.php 模块核心引用文件Member.php 助手入口index.php 模块首页Gift.php 礼品内容页core\modules\exchange\adminConfig.inc.php 模块配置Menus.inc.php 模块的左侧菜单Exchange.inc.php 兑换数据管理Gift.inc.php 礼品管理core\modules\exchange\assistantExchange.php 会员兑换操作m_gift.php 我兑换的礼品core\modules\exchange\helperQuery.php 模板内使用 get:coupon标签时,用到的标签库core\modules\exchange\inc内容同新闻模块core\modules\exchange\install内容同新闻模块core\modules\exchange\modelexchange_class.php 兑换逻辑模型gift_class.php 礼品逻辑模型==============================================core\modules\coupon 优惠券模块Common.php 模块核心引用文件Member.php 助手入口Apply.php 申请操作Detail.php 详细内容List.php 列表页面Print.php 打印操作core\modules\coupon\adminConfig.inc.php 模块配置Menus.inc.php 模块的左侧菜单Category.inc.php 分类管理Coupon.inc.php 优惠券数据管理core\modules\coupon\assistantCoupon.php 优惠券的增加删除操作g_coupon.php 主题管理员对自身的优惠券进行管理core\modules\coupon\helperDisplay.php 模板内使用print:coupon标签时,使用到的标签库Form.php 模块的自动化表单空间生产函数库Query.php 模板内使用 get:coupon标签时,用到的标签库core\modules\coupon\inc内容同新闻模块core\modules\coupon\install内容同新闻模块core\modules\coupon\modelcategory_class.php 优惠券分类模型coupon_class.php 优惠券数据管理模型==============================================core\modules\item 主题点评模块Common.php 模块核心引用文件Member.php 助手入口ajax.php AJAX的入口allpic.php 所有主题图片列表detail.php 主题详细内容list.php 主题列表pic.php 指定主题图片reviews.php 点评信息列表rss.php RSS点评聚合search.php 主题搜索tag.php 热门标签和标签搜索top.php 主题排行core\modules\item\adminConfig.inc.php 模块配置Menus.inc.php 模块的左侧菜单category_add.inc.php 分类增加category_edit.inc.php 分类编辑category_list.inc.php 分类列表field_edit.inc.php 自定义字段编辑field_list.inc.php 自定义字段列表field_type.inc.php 自定义字段类型引用(从\core\model\fields\setting里应用框架的,没有则应用模块里的core\modules\item\model\fields\setting)guestbook_check.inc.php 留言审核guestbook_list.inc.php 留言管理model_add.inc.php 模型添加model_edit.inc.php 模型编辑model_list.inc.php 模型列表picture_check.inc.php 图片审核picture_list.inc.php 图片管理respond_check.inc.php 回应审核respond_list.inc.php 回应管理review_check.inc.php 点评审核review_edit.inc.php 点评编辑review_list.inc.php 点评数据列表review_opt.inc.php 点评项管理review_report.inc.php 点评举报管理subject_add.inc.php 主题添加subject_apply.inc.php 主题管理员申请的管理subject_check.inc.php 主题审核subject_edit.inc.php 主题编辑subject_list.inc.php 主题列表数据管理subject_log.inc.php 主题补充管理tag_list.inc.php 标签管理taggroup.inc.php 标签组管理template.inc.php 主题风格管理core\modules\item\ajaxguestbook.php 留言提交(显示ajax翻页)picture.php 图片显示(显示ajax翻页)respond.php 回应部分操作(显示ajax翻页)review.php 点评部分操作(点评ajax翻页,提交,鲜花,举报)subject.php 主题部分操作(搜索,收藏,会员参数,地图补充)core\modules\item\assistantfavorite.php 收藏夹管理g_guestbook.php 主题留言管理g_picture.php 主题图片管理g_subject.php 主题管理m_guestbook.php 我的留言管理m_picture.php 我的图片管理m_respond.php 我的回应管理m_review.php 我的点评管理m_subject.php 我添加的主题列表pic_upload.php 图片上传review_add.php 点评发布review_edit.php 点评编辑subject_add.php 主题添加subject_apply.php 主题管理员申请subject_edit.php 主题编辑core\modules\item\helperDisplay.php 模板内使用 print:item 标签时,使用到的标签库Form.php 模块的自动化表单空间生产函数库Query.php 模板内使用 get:item 标签时,用到的标签库core\modules\item\inc内容同新闻模块domain_hook.php 主题二级/三级目录引用core\modules\item\install内容同新闻模块core\modules\item\modelactivity_class.php 活跃度操作模型category_class.php 分类操作模型favorite_class.php 收藏夹操作模型field_class.php 自定义字段操作模型fielddetail_class.php 自定义字段显示模型(从框架模型里集成)fieldform_class.php 自定义字段表单生成模型(从框架模型里集成)fieldsetting_class.php 自定义字段编辑模型(从框架模型里集成)fieldvalidator_class.php 自定义字段验证模型(从框架模型里集成)flower_class.php 鲜花操作模型guestbook_class.php 留言操作模型itembase_class.php 主题模型基类model_class.php 主题模型管理模型picture_class.php 主题图片模型report_class.php 点评举报模型respond_class.php 回应模型review_class.php 点评模型review_opt_class.php 点评项模型search_class.php 搜索模型subject_class.php 主题模型subjectapply_class.php 主题管理员申请模型subjectlog_class.php 主题补充模型tag_class.php 标签模型taggroup_class.php 标签组模型==============================================core\modules\link 友情链接模块Common.php 模块核心引用文件apply.php 友联申请index.php 友联首页列表core\modules\link\adminConfig.inc.php 模块配置Menus.inc.php 模块的左侧菜单link.inc.php 友联管理core\modules\link\helperForm.php 模块的自动化表单空间生产函数库Query.php 模板内使用 get:link 标签时,用到的标签库core\modules\link\inc内容同新闻模块core\modules\link\install内容同新闻模块core\modules\link\modelmylink_class.php 友情链接逻辑操作模型==============================================core\modules\member 会员模块Common.php 模块核心引用文件ajax.php 注册和登陆AJAX验证index.php 我的助手入口login.php 登陆reg.php 注册core\modules\member\adminConfig.inc.php 模块配置Menus.inc.php 模块的左侧菜单batchpm.inc.php 短信息公告members.inc.php 会员数据管理passport.inc.php 反向整合(非ucenter)point.inc.php 积分设置(自动应用各个模块的inc目录里的积分规则)usergroup.inc.php 会员组管理和权限管理(自动应用各个模块admin/templates/hook_usergroup_save.tpl.php)core\modules\member\assistantface.php 头像设置friend.php 好友管理main.php 助手首页menu.php 助手菜单myset.php 我的设置pm.php 短信息管理和发送core\modules\member\helperForm.php 模块的自动化表单空间生产函数库Query.php 模板内使用 get:member 标签时,用到的标签库core\modules\member\inc内容同新闻模块core\modules\member\install内容同新闻模块core\modules\member\modelfeed_class.php feed事件录入(占位文件,主要使用ucenter里的feed)friend_class.php 好友管理模型member_class.php 会员管理模型membereffect_class.php 会员参数模型message_class.php 短信息模型point_class.php 积分变更模型user_class.php 会员SESSION类usergroup_class.php 会员组模型==============================================core\modules\modoer 框架前台页面ajax.php ajax方式数据调用和验证码检测announcement.php 公告显示js.php js方式数据调用map.php 地图接口显示search.php 搜索(自动引用各个模块的inc里的search_hook.php)seccode.php 显示验证码==============================================core\modules\product 主题产品模块Common.php 模块核心引用文件member.php 我的助手入口文件detail.php 产品内容页list.php 产品列表页core\modules\product\adminConfig.inc.php 模块配置Menus.inc.php 模块的左侧菜单field_edit.inc.php 自定义字段编辑field_list.inc.php 自定义字段列表field_type.inc.php 自定义字段类型引用(从\core\model\fields\setting里应用框架的,没有则应用模块里的core\modules\product\model\fields\setting)model_add.inc.php 新建模型model_edit.inc.php 模型编辑model_list.inc.php 模型列表product_list.inc.php 产品列表core\modules\product\assistantcategory.php 产品分类管理g_product.php 主题产品的管理core\modules\product\helperForm.php 模块的自动化表单空间生产函数库Query.php 模板内使用 get:product 标签时,用到的标签库core\modules\product\inc内容同新闻模块core\modules\product\install内容同新闻模块core\modules\product\modelcategory_class.php 产品分类模型field_class.php 产品自定义字段模型model_class.php 产品模型管理模型product_class.php 产品数据库操作模型==============================================core\modules\product 主题产品模块Common.php 模块核心引用文件member.php 我的助手入口文件detail.php 产品内容页list.php 产品列表页core\modules\product\adminConfig.inc.php 模块配置Menus.inc.php 模块的左侧菜单field_edit.inc.php 自定义字段编辑field_list.inc.php 自定义字段列表field_type.inc.php 自定义字段类型引用(从\core\model\fields\setting里应用框架的,没有则应用模块里的core\modules\product\model\fields\setting)model_add.inc.php 新建模型model_edit.inc.php 模型编辑model_list.inc.php 模型列表product_list.inc.php 产品列表core\modules\product\assistantcategory.php 产品分类管理g_product.php 主题产品的管理core\modules\product\helperForm.php 模块的自动化表单空间生产函数库Query.php 模板内使用 get:link 标签时,用到的标签库core\modules\product\inc内容同新闻模块core\modules\product\install内容同新闻模块core\modules\product\modelcategory_class.php 产品分类模型field_class.php 产品自定义字段模型model_class.php 产品模型管理模型product_class.php 产品数据库操作模型。

Moodle平台开发者手册

Moodle平台开发者手册

文档中的章节:1、Moodle体系结构2、您如何参与开发○学习活动○主题风格○语言○数据库模式○课程格式○文档和文章○参与缺陷修正1.Moodle体系结构从一个系统管理员的角度,Moodle被设计为遵循以下标准:1、Moodle应该能运行在尽可能广泛的平台上很多系统上运行的web应用程序平台是PHP和MySQL的结合,这也是Moodle 开发所使用的平台(Linux,Windows,和MacOSX)。

Moodle也使用ADOdb库作为数据库抽象层,这意味着Moodle能使用超过10个不同品种的数据库(不幸的是,它还不能初始化表格在所有的这些数据库-更多的数据库支持将逐步添加)。

2、Moodle应该是容易安装、学习和修改的最早的Moodle(1999)原型使用Zope构建-一种高级面向对象的web应用服务器。

不幸的是我发现即使这项技术非常酷,但它学习起来很困难而且在系统管理上也不灵活。

PHP脚本语言,在另一方面来说,是非常容易入门的(尤其是当您有其他脚本语言的编程经验时)。

最早我决定不使用以类(class-oriented)为基础的设计,来保持它对于新手而言足够简洁。

代码重用通过使用分类的库文件、清晰命名的函数和一致的脚本文件放置来实现。

PHP也非常容易安装(几乎每个平台都有可用的二进制包)并且大多数的主机托管服务作为标准配置提供广泛的PHP支持。

3、它应该容易的进行版本升级Moodle知道自己目前的版本(也同样知道所有插件的版本),同时一个内置的机制确保Moodle能正常的升级自己到新的版本(例如,它能修改数据库表格或添加新的字段)。

如果您使用Unix下的CVS命令,您可以运行"cvsupdate-d",然后访问站点的主页来完成升级。

4、它应该是模块化的来允许发展Moodle有一系列的特性是模块化的,包括主题风格,学习活动,接口语言,数据库模式和课程格式。

这允许任何人添加特性到主代码版本或者单独的发行它们。

Moodle版块二次开发的研究———以“html”版块为例

Moodle版块二次开发的研究———以“html”版块为例
贝 、 使 用 和 修 改 Mo o d l e ,可 以作 为 一 个 教 学 平 台使 用 。 Mo o d l e的 功 能 强 大 , 可 以 进 行 课 程 设 计 ,
的 开 发 形 式 , 扩 展 的 功 能 不 一 样 ,其 难 度 也 有
差别 。
( 一 ) 语 言 包 开 发
2 0 1 4年第 1 期 总第 1 0 3期
福 建 广 播 电 视 大 学 学 报
J o u r n a l o f F u j i a n R a d i o& T V U n i v e r s i t y
No. 1, 201 4
Ge n e r a l , No . 1 0 3


导 言
开 发包 并 不 能 完全 满 足 ,对 于 功 能 强 大 的 Mo o —
d l e 来 说 ,这 未免 显 得 有 一些 遗憾 , 为 了弥 补 这 个 遗 憾 ,也 为 了 增 强 其 功 能 ,就 非 常 有 必 要 对 Mo o d l e进行 二次 开发 。
二 、Mo o d l e二次 开发 的形 式
次 开 发 的 步 骤 和 方 法— — 一 般 分 为五 部 分 :创 建 文 件 夹 , 编 写 源 代 码 文 件 , 编 写 配 置 文件 .编 写 语
言 文 件 和 导入 版 块 , 以及 每 个 步 骤 应 遵 循 的规 则 。 最 后 , 以 “ h t m l ” 版 块 为 例 ,应 用 案 例 研 究 .详 细介绍 了 M o o d l e二 次 开发 的过 程和 步骤 关 键 词 :课 程 管理 系统 ;M o o d l e :版 块 中 图 分 类 号 :G 4 3 4 文献 标 识 码 :A 文 章 编 号 :1 0 0 8 — 7 3 4 6 ( 2 0 1 4 ) 0 1 — 0 0 7 4 — 0 5

DEDE二次开发实例

DEDE二次开发实例
织梦 DedeCms 二次开发实例
织梦|DedeCms 系统关联到新浪微博教程 最近注册了新浪微博,发现特别有意思,发现里面有一个工具可以关键到站外的博客站点,这样每当有更新, 微博就会自动更新啦。 于是把自己用织梦做的站网址写进去,解决提示:无法关联,然后用填了一个用 wp 做的站,提示关联成功! 通过对比得知,新浪微博是利用 feed 找到更新文章的。只要给他指定 feed 地址就可以成功关联啦。 现在开始动手简单修改一下织梦的模板,由于织梦不能生成全站的 xml 文件,所以要先建立生成全站 XML 的 php 程序。 1,建立 feed.php <?php require_once (dirname(__FILE__) . "/include/common.inc.php"); require_once DEDEINC."/arc.partview.class.php"; $pv = new PartView(); $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/wodede_com/feed.htm"); header("Content-type:application/xml"); $pv->Display(); ?>以上要注意的是修改 模 板 的 路 径 , 确 保 在 模 板 跟 目 录 能 够 找 到 feed.htm2 , 建 立 feed.htm 模 板 文 件 <?xml version="1.0" encoding="gb2312" ?> <rss version="2.0"> <channel> <title>{dede:global.cfg_webname/}</title> <link>{dede:global.cfg_basehost/}</link> <description>{dede:global.cfg_description/}</description> <language>zh-cn</language> <generator>{dede:global.cfg_webname/}</generator> <webmaster>{dede:global.cfg_adminemail/}</webmaster> {dede:arclist row='60' col='1' titlelen='100' orderby='pubdate'} <item> <link>[field:arcurl/]</link> <title><![CDATA[[field:title function='html2text(@me)'/]]]></title> <author>[field:writer/]</author> <category>[field:typename/]</category> <pubDate>[field:pubdate function='strftime("%a, %d %b %Y %H:%M:%S +0800",@me)'/]</pubDate> <guid>[field:arcurl/]</guid> <description><![CDATA[[field:description function='html2text(@me)'/] ... ]]></description> </item> {/dede:arclist} </channel> </rss> 需要注意的是,别忘了把我的网址改成你自己需要的。 3,修改 index.htm 主页模板 由于新浪微博只能验证网址,不能写完整路径, 比如我写的是:/feed.php。结果提示关联失败,解决的办法是,在<head>和</head>中间 加 入下 面 的代 码 <link rel="alternate" type="application/rss+xml" href="/feed.php" title=" 你的标题" > 通过以上方法就可以成功关联新浪微博了。

Moodle 移动应用程序设置手册说明书

Moodle 移动应用程序设置手册说明书

Manual de configuração do Aplicativo Moodle MobileO aplicativo está disponível para os sistemas Android e iOS.Para acessar o UFMGVirtual por meio do aplicativo, os seguintes passos devem ser seguidos:1 - Digitar a URL (endereço) correspondente ao semestre desejado (por exemplo: virtual.ufmg.br/20182).2 - Digitar o login e senha no minhaUFMG.3 - Na primeira tela a seguir, o aplicativo exibe a lista de turmas e um menu na parte inferior.Ao abrir o aplicativo recomendamos que sejam ajustadas algumas configurações,como o idioma,por exemplo. Os passos são os seguintes:1 - Abrir o menu principal do aplicativo.2 - Ir para as configurações do aplicativo.3 - Em configurações, acessar a opção 'Geral'.4 - Alterar o idioma para Português – Brasil.Há recursos interessantes no aplicativo. Por ele, é possível:- fazer download do conteúdo do curso, para poder navegar mesmo offline;- receber notificações instantâneas de mensagens e outros eventos;- fazer upload de imagens, áudio, vídeos e outros arquivos;- ver as notas dos cursos e turmas que foram lançadas no moodle (não aquelas da caderneta eletrônica).O aplicativo permite que se acompanhe tudo o que está acontecendo nas turmas. Toda vez que ele é aberto os eventos são sincronizados com as postagens do site principal.As notificações de eventos de calendário do Moodle são enviadas automaticamente. Se o usuário não quiser receber essas notificações, é possível desativá-las, seja individualmente ou globalmente.Também é possível receber notificações de postagens de fóruns e tarefas enviadas, entre outras. Para isso,é preciso ativá-las, por meio do aplicativo, ou pelo site principal.Ativando as notificações móveis por meio do aplicativo, deve-se:1 - Abrir o menu principal do aplicativo.2 - Ir para as configurações do aplicativo.3 - Ir para Preferências de notificação.4 - Mover o controle deslizante para ativar e desativar as notificações para tarefa, fórum, etc.Caso o usuário prefira ativar as notificações móveis pelo site principal deve:∙Ir ao menu do usuário (canto superior direito de cada página) e selecionar Preferências.∙Clicar no link “Preferências de notificação”∙Clicar para ativar as notificações de tarefa, feedback, fórum, etc., conforme desejado.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.所有代码文件应当使用“.php”作为扩展名。

2.所有模板文件应当使用“.html”作为扩展名。

3.所有文本文件应当使用Unix风格的文本格式(多数的文本编辑器都有这个选项)。

4.所有php标记都必须是“完整”标记,如<?php ?> ……而非如<? ?> 的短标记。

5.所有已经存在的版权声明应当被保留。

如果有必要,您可以加入自己的。

6.每个文件都应当包含主config.php文件。

7.每个文件都应当检查用户的身份是否正确,可以使用函数require_login()和isadmin()、isteacher()、iscreator()或者isstudent()。

8.所有访问数据库的操作都应当使用lib/datalib.php中的函数――这样可以兼容更多的数据库服务器。

所有的事情都应当是可以用这些函数来完成的,如果遇到必须要写SQL 代码的情况,请记住这些代码应当是跨平台的,且仅仅对您代码中的特定函数(通常在一个lib.php文件中)有效,且代码中用注释进行明确说明。

9.不要建立和使用标准全局变量$CFG、$SESSION、$THEME、$SITE、$COURSE和$USER之外的全局变量。

10.所有变量都应当被初始化或者至少在使用前用isset()或empty()等函数进行检测。

11.所有字符串都应当可翻译――在“lang/en_utf8”目录中创建新的文本文件,字符串应当使用简洁的英文小写名称,并通过函数get_string()或print_string()来取得。

为了保证语言包的向后兼容,绝对不要删除字符串。

12.所有帮助文件应当可翻译――在“lang/en_utf8/help”目录中创建文本文件并且通过helpbutton()函数来调用它们。

如果要更新帮助文件:▪对于小的修改,旧的翻译文件仍然可以继续使用时,可以直接进行修改,但您应当通知translation AT moodle DOT org。

▪对于大的修改,应当创建新的文件,新文件的文件名是在原文件名的末尾添加一个数字,并在以后逐渐增加(如filename2.html),这样翻译人员就可以方便地知道文件有了一个新的版本。

很显然,新的代码和帮助索引文件都必须修改以指向新版本的文件。

13.从浏览器发来的信息(以GET或POST形式发送)都应用了magic_quotes(无论PHP的设置如何),因此直接将它们插入到数据库中是安全的。

所有其它的原始数据(来自文件或数据库的)都必须在插入数据库前使用addslashes()进行预处理。

由于在这个问题上人们经常出错,我们编写了一个独立的页面来介绍如何添加和删除“\”符号。

14.非常重要:Moodle中所有的文本,特别是用户提供的文本,都必须使用format_text()函数来输出。

这样就可以确保文本已经正确地过滤。

在输出函数页面上有关于这个问题的更多信息。

.15.用户的动作应当用add_to_log()函数记录下来,这些信息会被用于活动报告和日志。

我知道,如果您已经习惯了一种编码风格而我却让您改变它是有一点讨厌的,但比较而言,这比日后所有人都需要去搞清混合风格的Moodle代码要好一些。

对于人们使用的任何编码风格都有很多支持和反对的意见,但现在正在使用的风格已经存在了,因此请坚持下去。

1. 缩进应当是4个连续的空格。

绝对不要使用制表符。

2. 变量名应当是容易理解、有含义的小写英文单词。

如果确实需要两个或以上的单词,请把它们连在一起,但要保持名称尽可能短。

对于数组对象,请使用复数名称。

3. 常量应当总是大写的,并总是以模块的名称作为前缀。

单词之间应当用下划线分隔。

4. 函数名称应当是简单的英文小写单词,且总是以模块名作为前缀以防止模块之间的冲突。

单词之间以下划线分隔。

变量如果可能应当总有合理的缺省值。

注意在函数名和其后的括号之间没有空格。

5. 语句块必须总是使用大括号(即便是只有一行)。

Moodle使用如下风格:6. 字符串应当尽可能用单引号定义以提高速度。

8. 换行可以被大方地使用——把东西分散开看起来会比较清楚。

一般情况下,在花括号和普通命令之间应当有一个换行符,但在花括号和变量或函数之间可以没有换行符:9. 当复制一个对象时,要使用php5的clone()函数(否则得到的就仅仅是指向第一个对象的引用)。

Moodle会保证这种方法在php4上也能正常工作。

如果你要复制的并非对象,但包含了对象(如对象数组),那么要使用fullclone()函数。

1.每个表格都必须有一个自增的id字段(INT10)作为主键。

(参考IdColumnReasons)2.包含着模块中数据实例的主表格必须和模块同名(譬如widget),并且至少包含如下字段:▪id - 如上一条所述▪course - 每个实例所属的课程id▪name - 每个实例的完整名称3.与模块相关的其它表格的命名规则是:如果它包含的信息是关于“things”的,则它的名字应当是widget_things(注意采用复数形式)。

4.表名和字段名都应当避免使用各种数据库的保留字。

因此在创建前要仔细检查。

5.字段名称应当简短并使用小写,与变量名的规则相同。

</li>6.在可能的情况下,包含着对其它表格(如widget)引用的字段应当命名为widgetid。

(注意这是个新约定,有一些老的表格并未遵守。

)7.布尔字段应当使用小整数类型(如INT4)并存储为0或1,这样就可以在需要时扩展它。

8.多数的表格应当有一个timemodified字段(INT10),并用PHP的time()函数取得的当前时间戳来更新它。

9.给每个字段定义一个缺省值(并保证它是有意义的)。

10.每个表名都必须有前缀($CFG->prefix)。

在大多数情况下,您必须自己注意此问题。

并且在Postgres中,所有的索引名也必须有前缀。

11.In order to guarantee cross-db compatibility follow these simple rules aboutthe use of the AS keyword (only if you need table/colum aliases, of course):▪不要将关键字AS用于表格别名。

▪要将关键字AS用于字段别名。

12.不要创建UNIQUE KEY(限制),用UNIQUE INDEX来代替它。

In the future, if wedecide to add referential integrity to Moodle and we need UNIQUE KEYs they will be used, but not now. Please note that the XMLDB editor allows you to specify both XMLDB-only UNIQUE and FOREIGN constraints (and that's good, in order to have the XML well defined) but only underlying INDEXes will be generated.13.Those XMLDB-only UNIQUE KEYs (read previous point) only must be defined ifsuch field/fields are going to be the target for some (XMLDB-only too)FOREIGN KEY. Else, create them as simple UNIQUE INDEXes.14.与某个版块相关的表格命名时需要遵守以下规则:$CFG->prefix + "block_" +name_of_the_block + anything_else。

例如,$CFG->prefix是“mdl_”,则与“rss_client”版块相关的表格,其名称前缀应当是“mdl_block_rss_client”(在末尾添加多一些的词不会带来任何问题,如“mdl_block_rss_client_anothertable”……)。

在Moodle 2.0中,这个规则会100%地强制执行,开发者需在此之前做好准备。

要了解详情,请参考Task 6786。

15.不要在稳定的部分对数据库进行修改。

如果修改的话,用户从一个稳定版本升级到另一个会带来重复的修改。

这将会带来严重的错误。

16.在SQL查询中查询整数变量时,不要给变量加引号。

例如,get_records_select('question', "category=$catid")是对的。

get_records_select('question', "category='$catid'") 是错的。

这会隐藏变量$catid 没有定义的地方的错误。

1.不要依靠“register_globals”。

每个变量必须在每个源文件里正确初始化。

变量的来源必须显而易见。

2.初始化所有的数组和对象,即使它是空的。

$a = array() 或$obj = new stdClass(); 。

3.不要使用optional_variable()函数,使用optional_param()函数来替代它。

根据数据类型选择正确的PARAM_XXXX值。

4.不要使用require_variable()函数(现在不推荐使用该函数),使用require_param()函数来替代它。

根据数据类型选择正确的PARAM_XXXX值。

5.早使用data_submitted()时要小心,在使用数据前仍要对其进行清理。

6.使用$_GET、$_POST或$_REQUEST。

根据您的需要使用更合适的required_param()或optional_param()。

7.检查一个动作时,不要使用像if (isset($_GET['something'])) 这样的代码。

可以使用诸如:$something = optional_param('something',-1,PARAM_ALPHA),并且根据它取值的范围来判断,如if ($something>=0) {....8.在所有可能的情况下,把您所有的required_param()、optional_param()和其它的变量初始化一起放在每个文件的开头,这样它们会更容易被找到。

相关文档
最新文档