如何使用php从课程中取消注册用户

时间:2012-11-12 14:42:59

标签: php moodle

使用Moodle 1.9,我已成功通过php注册用户

$user   = get_record("user", "id", $mqval['id']);
$course = get_record("course", "id", $cid);

if ( ! enrol_into_course($course, $user, 'manuel')) { 

} else {
  //echo 'success';
}

现在我想以相同的方式取消注册用户。我尝试使用unenrol_user,但没有用。我也试过role_unassign但没有成功。

2 个答案:

答案 0 :(得分:1)

//get instance that can unenrol
$enrols = enrol_get_plugins(true);
$enrolinstances = enrol_get_instances($courseid, true);
$unenrolled = false;
foreach ($enrolinstances as $instance) {
    if (!$unenrolled and $enrols[$instance->enrol]->allow_unenrol($instance)) {
        $unenrolinstance = $instance;
        $unenrolled = true;
    }
}

//unenrol the user in every course he's in
$enrolledusercourses = enrol_get_users_courses($userid);
foreach ($enrolledcourses as $course) {
    //unenrol the user
    $enrols[$unenrolinstance->enrol]->unenrol_user($unenrolinstance, $userid, $roleid);
}

答案 1 :(得分:0)

我修改了上面的代码及其工作原理。

//unenrol the user in every course he's in
 $enrols = enrol_get_plugins(true);

$enrolledusercourses = enrol_get_users_courses($user->id);

foreach ($enrolledusercourses as $course) {
    //unenrol the user
    $courseid = $course->id;

    $enrolinstances = enrol_get_instances($courseid, true);
    $unenrolled = false;

    foreach ($enrolinstances as $instance) {
        if (!$unenrolled and $enrols[$instance->enrol]->allow_unenrol($instance)) {
            $unenrolinstance = $instance;
            $unenrolled = true;
        }
    }

    $enrols[$unenrolinstance->enrol]->unenrol_user($unenrolinstance, $user->id, $user->rollid);
}