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

如何使用php取消课程中的用户注册,php,moodle,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'; } //get instance that can unenrol $en

使用
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';
}
//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);
}

现在我想以同样的方式取消用户注册。我尝试使用
unroll\u user
,但没有成功。我还尝试了取消角色分配,但没有成功

我已经修改了上述代码及其工作原理

//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);
}
//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);
}

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

//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);
}
//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);
}


请发布不起作用的代码,在enrol_into_course()和unrol_user()期间使用的所有参数的一些示例值,当然还有enrol_into_course()和unrol_user()的返回值(真、假或某些错误)。我没有任何不起作用的代码,甚至找不到如何取消滚动的示例:-)。只是在moodle中看到了一些方法。但是由于某些原因,我没有从下面的Tivie中得到任何代码错误,但是上面的代码确实起作用。请发布不起作用的代码,在注册到课程()和取消注册到用户()期间使用的所有参数的一些示例值,当然还有从注册到课程()和取消注册到用户()的返回值(真、假或某些错误?)我没有任何不起作用的代码,甚至找不到如何取消滚动的示例:-)。只是在moodle中看到了一些方法。但是由于某些原因,我没有从下面的Tivie代码中得到任何错误,但是上面的代码确实可以工作。我需要包括任何LIB才能工作吗?我有一次需要_('../config.php');需要_一次($CFG->libdir./adminlib.php');只需要一次($CFG->libdir./filelib.php');只需要一次($CFG->libdir./olson.php');你应该使用moodle autoloader,Zend autoloader的一个子集。我尝试了你的代码,但我没有收到任何错误,它也不工作。我将代码放在我在moodle中创建的新页面中。注册课程有效。我不熟悉moodle autoloader,我只是下载并在页面中要求它。Moodle-newbieThat也能用。要使其正常工作,您需要“/user/lib.php”、“/user/profile/lib.php”和“/lib/enrollib.php”仍然不行,我会继续尝试,我包含了这些文件,但页面甚至不会显示任何内容。太令人沮丧了。我需要包括任何LIB来实现这一点吗?我有一次需要_('../config.php');需要_一次($CFG->libdir./adminlib.php');只需要一次($CFG->libdir./filelib.php');只需要一次($CFG->libdir./olson.php');你应该使用moodle autoloader,Zend autoloader的一个子集。我尝试了你的代码,但我没有收到任何错误,它也不工作。我将代码放在我在moodle中创建的新页面中。注册课程有效。我不熟悉moodle autoloader,我只是下载并在页面中要求它。Moodle-newbieThat也能用。要使其正常工作,您需要“/user/lib.php”、“/user/profile/lib.php”和“/lib/enrollib.php”仍然不行,我会继续尝试,我包含了这些文件,但页面甚至不会显示任何内容。太令人沮丧了。你需要指出错误在哪里,以及你采取了哪些步骤来纠正错误,以便其他人能够得到帮助!只有一个错误:@Tivie-answer中只有一个错误:在获取用户所有注册课程之前,他为课程的get-instance编写了代码。要解决此问题,首先我获取所有注册用户的课程,然后我为每个注册课程的get实例编写代码,然后我从每个课程中取消注册用户。您需要指出错误所在以及您为修复错误而采取的步骤,以便其他人可以获得帮助!只有一个错误:@Tivie-answer中只有一个错误:在获取用户所有注册课程之前,他为课程的get-instance编写了代码。为了解决这个问题,首先我获取所有注册用户的课程,然后我为每个注册课程的get实例编写代码,然后我从每个课程中取消注册用户。