首页 moodle学习笔记(1)

moodle学习笔记(1)

举报
开通vip

moodle学习笔记(1)datalib.php所有与数据库操作的函数函数1 addslashes_object($dataobject)避免数据记录中所有的危险字符。其中$dataobject是包含有所需数据的对象,addslashes方法是用来避免SQL的不友好字符如quotes等。函数2 get_admin()以$user对象的形式返回主要的admin用户。主要用户就是那些具有最小role_assignmentid的admin用户。函数3 get_admins()返回所有的admin用户列表。函数4 get_courses_in_me...

moodle学习笔记(1)
datalib.php所有与数据库操作的函数函数1 addslashes_object($dataobject)避免数据记录中所有的危险字符。其中$dataobject是包含有所需数据的对象,addslashes方法是用来避免SQL的不友好字符如quotes等。函数2 get_admin()以$user对象的形式返回主要的admin用户。主要用户就是那些具有最小role_assignmentid的admin用户。函数3 get_admins()返回所有的admin用户列表。函数4 get_courses_in_metacourse($metacourseid)返回metacourse表中所有的课程。函数5 get_courses_notin_metacourse($metacourseid,$count=false)返回不在metacourse表中的课程。函数6 count_courses_notin_metacourse($metacourseid)返回不在metacourse表中的课程的记录数。函数7 search_users($courseid,$groupid,$searchtext,$sort='',$exceptions='')在课程用户中进行搜索。如果$coursid定义了课程网站,那么该方法将搜索所有未被删除且确定的用户。datalib.php建立和输出XHTML的所有函数Moodle的一些重要文件夹admin:包含一些控制行政人员的接口auth:包含所有的认证模块,其子目录每一个就是一个认证模块,这些认证模块控制着对用户的建立,用户信息数据和用户访问系统的权利。backup:包含备份课程的核心设备,主要服务于备份、恢复和对课程的引入blocks:是在moodle页面的左侧或者右侧显示盒装信息,这是最简单的模块course:这是最重要的一个模块,因为moodle就是围绕课程而开发的,开发者倾向于更改或增加课程和 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 。传统的课程模式可以用于改变课程的布局enroll:包含所有在moodle的登记模块,该模块控制对课程级别的角色分派的创造和管理files:包含对文件的上传、访问控制及视图。filter:在页面创建过程中,从数据库过滤用户输入的内容。在页面显示前,过滤器匹配和修改它,所以开发它要小心,要考虑其性能。lang:包含系统的核心语言字符串。lib:包含系统核心的库函数,当我们开发模块和自定义时,就需要在该文件夹下定义类和函数mod:包含活动的模块如作业模块、测验模块、wiki模块、论坛模块和课程模块。my:提供了一个学院要学的课程清单,包含即将要学的课程的摘要信息。theme:包含所有moodle的内置主题和传统主题,一个主题一个文件夹。optional_param&required_param这2个是moodle特有的function,用来代替php自身的从$GET,$POST,$COOKIE中获取参数值required_param函数则要求必须要所要的参数,而optional_param则不需要一定存在所要的参数。Moodleentrypoints(切入点)/index.php:Thefrontpage/login/index.php:Theloginpage/admin/index.php:Themainadministrationpage/course/view.php:Acoursepage/mod/*/view.php:Amodulepage所有的切入点的php文件的第一行都有require_once('../config.php')。config.php:在全局变量$CFG上执行一些参数初始化分派。在$CFG中的信息是数据库,web地址,脚本目录和数据存储目录的定义。setup.php:为了完成执行环境的简历,执行所有的初始程序运行。这就包括了对其他一些重要全局变量的定义,包括$SESSION,$COURSE,$THEME,and$dbsetup.php会根据config.php中的定义来建立和连接数据库require_login函数该函数是用来检查用户是否登录到网站或者课程(有些课程可能设置成不需要登录).如果需要登录网站,但用户又没有登录,就将页面重定位到登录页面。反之他已经登录,但正在尝试访问课程,但又没有注册到该课程,那么执行该函数就会将这些用户重定向到注册函数。输出htmlheader的函数有2个print_header和print_header_simple输出htmlbody是由course的特定format来handle.首先要先include该course的format的phpfile.require($CFG->dirroot.'/course/format/'.$course->format.'/format.php');例如,如果course使用topicsformat,就会include/course/format/topics/format.php.该format.php用于处理特定的coursepage的输出,包括theblocksandmaincontent.print_footer函数用于输出footer例print_footer(NULL,$course);Moodle的设置分别处于3个地方:· 直接在config.php里hardcode。· mdl_configtable。可以通过administrativecodeandinterfaces进行控制· mdl_config_pluginstable。主要是存储来自各个plugin的设置。可以通过pluginadministration来进行控制所有的配制信息都存在变量$CFG里(plugin的设置则会放在plugin变量里)。例如$CFG->theme包含了你的网站所选用的主题config.php一开始会调用unset($CFG);来保证在config.phpandsetup.php之前清除所有的设置.除了config.php之外的所有其他设置都存储在database的mdl_configtableandmdl_config_pluginstable里。那么moodle何时把这些来自database的设置赋给$CFG?就是在config.php里include了lib/setup.php,setup.php调用了$CFG=get_config();来执行。get_config()函数来自/lib/moodlelib.phplibraryfile注意:get_config函数不会对于在调用之前已经存在的设置进行覆盖。(willnotoverwriteany$CFGsettingthathasalreadybeenset)。即它不会覆盖config.php里的设置.这意味着你可以在config.php里hardcode你希望的设置,在config.php最后一行include了setup.php,但来自database的设置如果与config.php里的设置同名,则不会覆盖它。对configuration进行修改是通过set_config函数。该函数会以name value    pluginname(optional)作为参数。如果不使用了第三个参数,那么set_confg就会把设置存储在mdl_configtable,如果使用这个参数,则存在mdl_config_pluginstable。moodle架构分析---业务逻辑层的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 Moodle的业务逻辑遍布moodle的各个角落,并没有明显的分层。这里之所以把业务逻辑层单独拿出来讲,是希望能让大家有个全局的观点。这里顺便说一句,moodle自称是模块化的设计,我觉得不能完全称得上是,从业务逻辑层就可以看出来了。凌乱的代码,夹杂着各种各样的转跳函数和逻辑判断,往往令人眼花缭乱,不知所措。这部分没有太多值得讲的地方,无非是一些函数和类的调用而已,这里介绍这些一些常用的函数。1、权限判断函数通过获取上下文环境,查看是否有“moodle/site:config”的权限。$context=get_context_instance(CONTEXT_SYSTEM);require_capability('moodle/site:config',$context);2、获得记录集的长度通过函数count_records,可以获得数据集的长度,使用方法如下。$countcategories=count_records('course_categories');3、输出课程分类通过print_whole_category_list函数可以获得课程分类类别。由于print_whole_category_list函数采用递归的方法实现,故还可以打印出子分类。使用方法如下:print_box_start('categorybox');print_whole_category_list();print_box_end();注意,这里的print_box_start和print_box_end函数仅是根据moodle的主题/皮肤,输出div对出来。4、是否登陆和是否为访客Isloggedin函数可以判断用户是否已经登陆。isguest()函数可以判断用户是否是访客。使用方法如下:if(isloggedin()and!isguest()and!has_capability('moodle/course:create',$sysctx)and$CFG->enablecourserequests){……………….}5、安全码安全码主要用于安全方面,比如判断是否是正常的登陆用户。其使用方法如下:if(!empty($delete)andconfirm_sesskey()){}6、输出错误print_error主要用于系统发生严重错误,比如用户企图突破非其权限范围的事情时使用。一旦使用,系统将停止执行剩下的语句,即其实现使用了exit语句。其使用方法如下:print_error('courserequestdisabled');7、浏览器传递参数类型判断和初始化required_param可以用于浏览器POST或者GET的参数的类型判断和数值初始化工作。其使用方法如下:$id=required_param('id',PARAM_INT);这里需要注意的是,如果采用本说明文档“第五部分”的表单类生成的文件的话,传递过来不需要使用该函数,可以直接调用表单类的get_data方法,即:$data=$requestform->get_data();8、获得使用的语言通过current_language()函数可以获得当前使用的语言,get_list_of_languages()函数可以获得所有的语言列表。其使用方法如下:$currlang=current_language();$langs  =get_list_of_languages();9、获得网站资料get_site函数可以获得网站的基本资料,比如网站名。其使用方法如下:$site=get_site();Echo$site->fullname;moodle架构分析---表现层的设计(一)Moodle在表现层的实现有多种机制,分别针对页面、表单、导航条、页面头部、页面底部等。1、针对页面的实现,直接编辑HTML页面,然后在业务逻辑处理完毕之后,include编辑好的html页面即可。这种机制的实现可以看login/index.php和login/index_form.php页面。2、针对表单的实现,一般是创建一个父类为moodleform的类,如classtest_formextendsmoodleform{//定义表单元素functiondefinition(){//获得表单引用$mform=&$this->_form;//添加header对象$mform->addElement('header','',get_string('createuserandpass'),'');//添加text对象,$mform->addElement('text','username',get_string('username'),'maxlength="100"size="12"');$mform->setType('username',PARAM_NOTAGS);$mform->addRule('username',get_string('missingusername'),'required',null,'server');}//定义过滤functiondefinition_after_data(){}//定义验证逻辑functionvalidation($data,$files){}}然后,业务逻辑层中声明test_form对象,即$test=newtest_form();最后调用test_form对象的display方法,即可把表单对象显示出来。$test->display();表单元素的类型和规则如下:$GLOBALS['HTML_QUICKFORM_ELEMENT_TYPES']=array('group'    =>array('HTML/QuickForm/group.php','HTML_QuickForm_group'),'hidden'    =>array('HTML/QuickForm/hidden.php','HTML_QuickForm_hidden'),'reset'    =>array('HTML/QuickForm/reset.php','HTML_QuickForm_reset'),'checkbox'   =>array('HTML/QuickForm/checkbox.php','HTML_QuickForm_checkbox'),'file'     =>array('HTML/QuickForm/file.php','HTML_QuickForm_file'),'image'    =>array('HTML/QuickForm/image.php','HTML_QuickForm_image'),'password'   =>array('HTML/QuickForm/password.php','HTML_QuickForm_password'),'radio'    =>array('HTML/QuickForm/radio.php','HTML_QuickForm_radio'),'button'    =>array('HTML/QuickForm/button.php','HTML_QuickForm_button'),'submit'    =>array('HTML/QuickForm/submit.php','HTML_QuickForm_submit'),'select'   =>array('HTML/QuickForm/select.php','HTML_QuickForm_select'),'hiddenselect'=>array('HTML/QuickForm/hiddenselect.php','HTML_QuickForm_hiddenselect'),'text'     =>array('HTML/QuickForm/text.php','HTML_QuickForm_text'),'textarea'   =>array('HTML/QuickForm/textarea.php','HTML_QuickForm_textarea'),'link'     =>array('HTML/QuickForm/link.php','HTML_QuickForm_link'),'advcheckbox' =>array('HTML/QuickForm/advcheckbox.php','HTML_QuickForm_advcheckbox'),'date'     =>array('HTML/QuickForm/date.php','HTML_QuickForm_date'),'static'    =>array('HTML/QuickForm/static.php','HTML_QuickForm_static'),'header'    =>array('HTML/QuickForm/header.php','HTML_QuickForm_header'),'html'     =>array('HTML/QuickForm/html.php','HTML_QuickForm_html'),'hierselect'  =>array('HTML/QuickForm/hierselect.php','HTML_QuickForm_hierselect'),'autocomplete'=>array('HTML/QuickForm/autocomplete.php','HTML_QuickForm_autocomplete'),'xbutton'   =>array('HTML/QuickForm/xbutton.php','HTML_QuickForm_xbutton'));$GLOBALS['_HTML_QuickForm_registered_rules']=array('required'   =>array('html_quickform_rule_required','HTML/QuickForm/Rule/Required.php'),'maxlength'  =>array('html_quickform_rule_range',  'HTML/QuickForm/Rule/Range.php'),'minlength'  =>array('html_quickform_rule_range',  'HTML/QuickForm/Rule/Range.php'),'rangelength' =>array('html_quickform_rule_range',  'HTML/QuickForm/Rule/Range.php'),'email'    =>array('html_quickform_rule_email',  'HTML/QuickForm/Rule/Email.php'),'regex'    =>array('html_quickform_rule_regex',  'HTML/QuickForm/Rule/Regex.php'),'lettersonly' =>array('html_quickform_rule_regex',  'HTML/QuickForm/Rule/Regex.php'),'alphanumeric'=>array('html_quickform_rule_regex',  'HTML/QuickForm/Rule/Regex.php'),'numeric'   =>array('html_quickform_rule_regex',  'HTML/QuickForm/Rule/Regex.php'),'nopunctuation'=>array('html_quickform_rule_regex',  'HTML/QuickForm/Rule/Regex.php'),'nonzero'   =>array('html_quickform_rule_regex',  'HTML/QuickForm/Rule/Regex.php'),'callback'   =>array('html_quickform_rule_callback','HTML/QuickForm/Rule/Callback.php'),'compare'   =>array('html_quickform_rule_compare','HTML/QuickForm/Rule/Compare.php'));具体可以查看lib/pear/HTML/QuickForm.php,和各个表单元素和规则的实现文件。Moodle网站档案的结构config.php-包含各种基本设定。这档案不是随着Moodle而来-您需要在安装过程建立它。install.php-您将用来建立config.php的脚本version.php-定义当前Moodle程序代码的版本index.php-这网站的首页admin/-管理这整个服务器的程序代码auth/-用于认证用户的插件模块blocks/-用于管理在许多页面上的小区块的插件模块calendar/-管理和显示行事历的程序代码course/-显示和管理课程的程序代码doc/-Moodle用的帮助文件(例如这一页)files/-显示和管理上传档案的程序代码lang/-不同语言的文字文件,每种语言一个目录lib/-Moodle核心程序代码的链接库login/-处理登入和产生账号的程序代码mod/-所有Moodle主要的课程模块都放在这里pix/-产生网站的图表theme/-主题包/用以改变网站外观的外壳user/-显现和管理用户的程序代码moodle2.0权限管理1角色管理员:管理员可以访问并修改课程,但他们通常不参与课程。课程创建者:课程创建者可以创建新课程。教师:教师可以在负责的课程中做任何事,包括更改活动和为学生评分。无编辑权教师:无编辑权教师可以教课和给学生打分,但是可能不能修改活动。学生:学生在课程中通常拥有较少的特权。访客:访客拥有最小的权限,而且通常不能在任何地方输入文本。已认证用户:所有已登录用户。首页已认证用户:首页课程中所有已经登录的用户。2moodle的contenxtMoodle的context实在难懂,它基本上是一个权限控制的表,同名字一样,负责和其它各个部分的权限连接。它的目标是实现每一个页面的权限控制,它跟role权限表是紧密相连的。官方的解释,Context相当于一个容器,它可以放下课程、用户、模块等东西。新建一个课程,至少要添加如下几条记录:idcontentlevelinstanceidpath   depth37 50      4   /1/11/37  338 80     21   /1/11/37/38 439 80     22   /1/11/37/39 440 80     23   /1/11/37/40 441 80     24   /1/11/37/41 442 30      3   /1/42    243 70      9   /1/11/37/43 4其中contentlevel在accesslib.php中定义,50代表课程,70代表module,80代表block对照上表,37号是一个课程,它的id是4,所以可以到course表中去查找相关信息,38-41号分别对应一个block,其在block_instance中对应的id是21-24,idblocknameparentcontextidshowinsubcontextspagetypepatternsubpagepatterndefaultregiondefaultweightconfigdata21search_forums370course-view-*NULLside-post0 22news_items370course-view-*NULLside-post1 23calendar_upcoming370course-view-*NULLside-post2 24recent_activity370course-view-*NULLside-post3可以查看第二栏的说明,找出分别对应的是哪一个模块。42号是30,对应于CONTEXT_USER,代表用户,即id为3的用户。43号为70,在course_module中对应于9号,再查找其类型,代表是论坛。注:contextlevel就是一个类型,instance就是一个资源id号,取这个种字段名实在难以理解,直接改为resourcetype,resourceid,就不用再费这三个小时去查找它的意思了。官方直接把这几种资源类型称之为六个level,这样也就不难理解它的名字了。
本文档为【moodle学习笔记(1)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_654168
暂无简介~
格式:doc
大小:39KB
软件:Word
页数:21
分类:
上传时间:2022-08-05
浏览量:3