由于Moodle 2.0有一个用户注册的新概念,它们完全独立于角色和功能。能力通常与注册状态结合使用。

什么是注册?

登记的用户可以完全参加一门课程。活跃用户注册允许用户输入课程。只有注册的用户可能是小组成员。成绩仅存储在注册用户的名下。

Unenrolment

清除选课(注册)是不可逆转的操作,清除用户的参与信息。只有在您不需要保留包括用户成绩在内的所有课程参与信息的情况下,完全取消注册才是合适的。

注册状态

而不是完全不注册,通常只是暂停用户注册。如果还有其他途径进入课程(如访客访问),建议同时删除用户角色。

活动参与

活动开发者决定模块的注册相关行为。

有一些一般的指导方针:

  • 只有拥有有效注册的用户才能收到通知。
  • 活动应显示注册用户作为参与者的一些功能。
  • 默认情况下,只有具有活动注册的用户才能显示在报告中。
  • 应该有显示所有注册用户的选项,包括暂停注册。
  • 出于性能原因,不可见的参与数据应该在未注册的情况下被清除
  • 其他参与者可见的贡献应在取消注册之后保存(如论坛帖子)。

API函数

enrol_send_welcome_email_options()

有些注册方法支持向用户发送欢迎邮件。此方法返回用户注册课程时发送欢迎电子邮件的所有可能选项的列表,并且每个选项都具有在enrollib.php上定义的相应常量:

define ('ENROL_DO_NOT_SEND_EMAIL' , 0 );  //不要发送欢迎邮件
define ('ENROL_SEND_EMAIL_FROM_COURSE_CONTACT' , 1 ); //从课程联系人发送欢迎电子邮件。
define ('ENROL_SEND_EMAIL_FROM_KEY_HOLDER' , 2 ); //从课程密钥持有者发送欢迎电子邮件。
define ('ENROL_SEND_EMAIL_FROM_NOREPLY' , 3 ); //从没有回复发送欢迎电子邮件。

主要想法是使发送电子邮件选项在支持此功能的注册方法中保持一致。看下面的例子:

$sendoptions = enrol_send_welcome_email_options();
print_object($sendoptions);

上面的例子会输出:

Array
(
[1] => 'No'
[2] => 'From the course contact'
[3] => 'From the key holder'
[4] => 'From the no-reply address'
)

is_enrolled()

用户是否参加课程?对于学生和教师,返回true,对于管理员和其他管理者是false。用户注册可以是活动的,也可以是暂停的,被暂停的用户不能进入课程(除非允许某种访客访问)或具有moodle / course:view功能,通常隐藏在UI中。

函数 is_enrolled ( context $ context , $ user  =  null , $ withcapability  =  '' , $ onlyactive  =  false )

很好的例子是选择模块,每个参与者有一个插槽,没有注册的人不被允许投票

is_enrolled($ context,$ USER,'mod / choice:选择')

。另一个例子是用户需要注册并有能力提交分配的分配

is_enrolled($ this-> context,$ USER,'mod / assignment:submit')

get_enrolled_users()

有时你需要知道可以参与某些活动的用户列表。

功能 get_enrolled_sql (上下文$上下文, $ withcapability  =  '' , $ GROUPID  =  0 , $ onlyactive  =  假)
函数 get_enrolled_users (上下文$上下文, $ withcapability = '' , $ GROUPID = 0 , $ userfields = 'U。*' , $ orderby = '' , $ limitfrom = 0 , $ limitnum = 0 )
函数 count_enrolled_users ( context $ context , $ withcapability = '' , $ groupid = 0 )

比如你想知道谁现在可以登顶任务:

$ submissioncandidates  = get_enrolled_users ($ modcontext , 'mod / assignment:submit' );

分配模块需要为注册的所有用户保存数据,包括具有暂停注册且没有任何角色的用户。当用户完全取消注册时,模块开发人员可以决定清除所有的用户数据。

从get_enrolled_sql()中选择SQL常常用于性能方面的原因 - 您可以在连接中使用它,以仅为注册用户获取特定信息。

Enrolment API的更多相关文章

  1. Enrolment注册插件

    自moodle2.0注册插件必须继承 lib/enrollib.php的  enrol_plugin 抽象类:这个基类包含所有标准方法和开发人员文档 课程注册信息存储在enrol和user_enrol ...

  2. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  3. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

  4. 几个有趣的WEB设备API(二)

    浏览器和设备之间还有很多有趣的接口, 1.屏幕朝向接口 浏览器有两种方法来监听屏幕朝向,看是横屏还是竖屏. (1)使用css媒体查询的方法 /* 竖屏 */ @media screen and (or ...

  5. html5 canvas常用api总结(三)--图像变换API

    canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转a ...

  6. JavaScript 对数据处理的5个API

    JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...

  7. ES5对Array增强的9个API

    为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...

  8. javascript的api设计原则

    前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来.很难做到 ...

  9. 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino

    大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...

随机推荐

  1. pythonic语法

    b="$".join(str(x) for x in range(10)) a= 2 if 5<2 else 3 print (a)#a是3

  2. ElasticSearch学习

    官方文档 https://www.elastic.co/cn/ http://www.learnes.net/

  3. [转]python 装饰器

    以前你有没有这样一段经历:很久之前你写过一个函数,现在你突然有了个想法就是你想看看,以前那个函数在你数据集上的运行时间是多少,这时候你可以修改之前代码为它加上计时的功能,但是这样的话是不是还要大体读读 ...

  4. javascript方法--bind()

    bind方法,顾名思义,就是绑定的意思,到底是怎么绑定然后怎么用呢,下面就来说说我对这个方法的理解. 语法 fun.bind(this,arg1,arg2,...) bind()方法会创建一个新的函数 ...

  5. Difference between plt.draw() and plt.show() in matplotlib

    Difference between plt.draw() and plt.show() in matplotlib down voteaccepted plt.show() will display ...

  6. freeRTOS中文实用教程3--中断管理之中断服务例程中使用队列

    1.前言 消息队列不仅可以用于事件通信,还可以用来传递数据 2.实例说明消息队列的执行过程 3.主要API API名称 说明 参数 返回值 xQueueSendFromISR()完全等同于 xQueu ...

  7. [转] bss段、data段、text段

    1.前言 一个程序本质上都是由 BSS 段.DATA段.TEXT段三个组成的. 本文主要分编译时和运行时分别对 对data段 bss段 text段 堆 栈作一简要说明 2. 程序编译时概念说明 程序与 ...

  8. mysql授权报错 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

    授权用户时报错,ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 原因为其实与val ...

  9. 如何消除手机设置的字体大小对Cordova app(Android)界面font-size的影响

    ===================== 更新分割线 =================== 现在发现其实不需要用安卓编辑器打开,也能找到这个文件,路径是platforms\android\Cord ...

  10. javascript中的return、return true、return false、continue区别

    1.语法为:return 表达式; 2.w3c中的解释: 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果  也就是:当代码执行到return语句时,函数返回一个结果就结束运行了,ret ...