2012-11-12 36 views
1

使用Moodle 1.9,我已成功能夠通過PHP來註冊用戶與如何從課程取消註冊用戶用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但沒有成功。

+0

請後未enrol_into_course期間的工作,所有使用的參數的一些示例value's()的代碼和unenrol_user(),當然從enrol_into_course的返回值()和unenrol_user()(真實的,假或一些錯誤?) –

+0

我沒有任何代碼不起作用,甚至找不到如何取消註冊的例子:-)。剛剛在moodle中看到了一些方法。但由於某些原因,我沒有從Tivie下面的代碼中得到任何錯誤,但上面的代碼確實有效。 – user1054513

回答

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); 
} 
+0

我是否需要包含任何庫以使其工作?我有require_once('../ config.php'); require_once($ CFG-> libdir。'/ adminlib.php'); require_once($ CFG-> libdir。'/ filelib.php'); require_once($ CFG-> libdir。'/ olson.php'); – user1054513

+0

您應該使用moodle自動加載器,它是Zend自動加載器的一個子集。 – Tivie

+0

我試過你的代碼,但我沒有得到任何錯誤,它不工作。我將代碼放入我在moodle中創建的新頁面中。 enrol_into_course有效。我不熟悉moodle自動加載器,我只是下載並要求在頁面中。 Moodle新手 – user1054513

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); 
} 
+0

您需要指出錯誤的位置以及您採取哪些措施清楚解決問題,以便其他人可以獲得幫助! –

+0

只有一個錯誤: –

+0

@Tivie只有一個錯誤回答: 他在獲取用戶的所有註冊過程之前編寫了獲取實例的代碼。 要解決這個問題,首先我要獲取所有已註冊用戶的課程,之後我已經編寫了用於獲取每個註冊課程的實例的代碼,之後我已經從每門課程中取消註冊用戶。 –