如何在 Moodle 中为用户分配 "coursecreator" 角色?

How can I assign "coursecreator" role to a user in moodle?

我在 moodle 中编写了一个插件,应该为某些用户分配 "coursecreator" 角色。

$coursecreatorroleid = $DB->get_field('role', 'id', array('shortname' => 'coursecreator'));

role_assign($coursecreatorroleid, $user->id,context_course::instance());

if (user_has_role_assignment($user->id, $coursecreatorroleid))
    echo "True";

但它不起作用。有人可以帮我吗? 谢谢

您不能在不提供课程 ID 的情况下创建课程上下文实例。

所以,你应该这样写:

$context = context_course::instance($courseid);
role_assign($coursecreatorroleid, $user->id, $context); 

或者,如果您想在站点级别或类别级别(这对课程创建者角色有意义)分配角色,您应该使用 context_system::instance() 或 context_coursecat::instance($catid).

If 还建议您打开调试(如果尚未打开)- http://docs.moodle.org/en/Debugging - 因为这会给您有用的错误消息和警告。