由于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. apache - http

    apahce 添加模块编译 httpd   # so模块用来提供DSO支持的apache核心模块 # 如果编译中包含任何DSO模块,则mod_so会被自动包含进核心. # 如果希望核心能够装载DSO, ...

  2. [转]C++赋值运算符重载函数(operator=)

    写在前面: 关于C++的赋值运算符重载函数(operator=),网络以及各种教材上都有很多介绍,但可惜的是,内容大多雷同且不全面.面对这一局面,在下在整合各种资源及融入个人理解的基础上,整理出一篇较 ...

  3. win7防火墙端口开放

    https://jingyan.baidu.com/article/f96699bbadafca894f3c1b7a.html

  4. Python3实现从文件中读取指定行的方法

    from:http://www.jb51.net/article/66580.htm 这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使 ...

  5. MongoDB的基本概念

    MongoDB的基本概念 库 db就是数据库 文档就是数据表的行 集合就是数据表,这个没有模式,啥叫没有模式呢,就是没有列的定义,随便什么属性都行,这点就比关系行数据库牛逼10000000倍,逆天了.

  6. 【转】Windows下安装python2和python3双版本

    [转]Windows下安装python2和python3双版本 现在大家常用的桌面操作系统有:Windows.Mac OS.ubuntu,其中Mac OS 和 ubuntu上都会自带python.这里 ...

  7. VxWorks软件开发项目实例完全解析1-VxWorks简介

    1.前言 VxWorks是专门为实时嵌入式系统设计开发的32位操作系统.主要有如下特点: 实时性强 支持多任务 体积小可裁剪 支持多种CPU 支持网络通信串口通信 汇编+标准C的编程模式.支持C++ ...

  8. linux 下程序员专用搜索源码用来替代grep的软件ack(后来发现一个更快的: ag), 且有vim插件的

    发现一个比ack更快更好用的:  https://github.com/ggreer/the_silver_searcher   , 使用时命令为ag,它是基于ack的代码二次开发的,所有使用方法基本 ...

  9. C#使用RabbitMQ

    1. 说明 在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地方, ...

  10. 012_如何清除DNS缓存

    运维过程中经常会进行切换域名解析等的操作,就需要查看是否更新.但常常DNS设置已经更新了,但是用户那边的DNS还是没有更新. 以下分析几点原因及我的解决方案. 一. <1>本地你的dns缓 ...