使用 moodle 核心 api 函数分配角色
assign roles using moodle core api functions
我正在 moodle 中创建一个块来为用户分配特定的系统角色。不确定执行此操作的最佳方法..
我知道您可以从站点管理 > 用户 > 权限 > 分配系统角色分配角色,但我的块需要在自定义 tables 中做其他事情。我已经完成了创建记录的部分自定义 tables 但这个系统角色是唯一剩下的项目..不知道如何做到这一点
有人可以指导我如何做到这一点(使用 moodle 核心分配系统角色 api(功能))
或者如果在 role_assignments table 中添加记录是个好主意,请手动使用数据库查询?它会起作用吗?
$context = context_system::instance();
role_assign($roleid, $userid, $context->id);
不要直接更新数据库 table,因为那样不会触发角色更改的事件处理程序(或清除相关缓存等)。
您可以在您的插件中创建该方法,该事件将在为特定课程的用户分配角色时触发。
public static function my_plugin_role_assigned(core\event\role_assigned $enrolment_data){
global $DB;
//strange var name, better change it
$enrolment_data_data = $enrolment_data->get_data();
$snapshotid = $enrolment_data->get_data()['other']['id'];
$snapshot = $enrolment_data->get_record_snapshot('role_assignments', $snapshotid);
$roleid = $snapshot->roleid;
$rolename = $DB->get_records_sql("SELECT shortname from {role} WHERE id = ?", array($roleid));
$rolename = array_pop($rolename);
$rolename = $rolename->shortname;
if($rolename == 'editingteacher'){
//My stuff
}
}
我正在 moodle 中创建一个块来为用户分配特定的系统角色。不确定执行此操作的最佳方法..
我知道您可以从站点管理 > 用户 > 权限 > 分配系统角色分配角色,但我的块需要在自定义 tables 中做其他事情。我已经完成了创建记录的部分自定义 tables 但这个系统角色是唯一剩下的项目..不知道如何做到这一点
有人可以指导我如何做到这一点(使用 moodle 核心分配系统角色 api(功能))
或者如果在 role_assignments table 中添加记录是个好主意,请手动使用数据库查询?它会起作用吗?
$context = context_system::instance();
role_assign($roleid, $userid, $context->id);
不要直接更新数据库 table,因为那样不会触发角色更改的事件处理程序(或清除相关缓存等)。
您可以在您的插件中创建该方法,该事件将在为特定课程的用户分配角色时触发。
public static function my_plugin_role_assigned(core\event\role_assigned $enrolment_data){
global $DB;
//strange var name, better change it
$enrolment_data_data = $enrolment_data->get_data();
$snapshotid = $enrolment_data->get_data()['other']['id'];
$snapshot = $enrolment_data->get_record_snapshot('role_assignments', $snapshotid);
$roleid = $snapshot->roleid;
$rolename = $DB->get_records_sql("SELECT shortname from {role} WHERE id = ?", array($roleid));
$rolename = array_pop($rolename);
$rolename = $rolename->shortname;
if($rolename == 'editingteacher'){
//My stuff
}
}