2016-09-22 98 views
0

我在moodle中编写了一个插件,它应该为某些用户分配“coursecreator”角色。如何为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"; 

但它没有工作。有人可以帮我吗? 谢谢。

回答

1

如果不提供课程ID,则无法创建课程上下文实例。

所以,你应该写:

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

或者,如果你想要分配在站点级别的角色,或者在一类水平(这使得该课程的创造者的角色意义上的),你应该使用context_system :: instance()或context_coursecat :: instance($ catid)。

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

+0

'context_system :: instance()'是我的答案。 Tnx很多。 –

相关问题