在 Moodle 中手動建立課程與指定教師、學生

edited 十一月 -1 in 數位學習平台
# 課程分類可以引入 lib/coursecatlib.php 後透過 coursecat::create() 建立
# 引入 course/lib.php 後可以使用 create_course() 建立課程,曾試著直接塞對應資料表,但是發現有些關聯資料需要處理,所以改用系統內建的方法
# 透過 http://stackoverflow.com/questions/16012157 提到的方法可以模擬手動加選學生與教師,其中 roleid 預設為 3 - 教師、 4 - 沒有編輯權限的教師(助教?)、5 - 學生 ,不過如果有自己調整過預設課程角色就得自己找出對應的編號

$ra = new object();
$ra->roleid = 5;
$ra->contextid = $contextid;
$ra->userid = $user->id;
$ra->hidden = 0;
$ra->enrol = 'manual';
//$ra->enrol = 'self';
/// Always round timestart downto 100 secs to help DBs to use their own caching algorithms
/// by repeating queries with the same exact parameters in a 100 secs time window
$ra->timestart = 0;
$ra->timeend = 0;
$ra->timemodified = time();
$ra->modifierid = 0;

// Enrol the User for the Course
$ra->id = $DB->insert_record('role_assignments',$ra);


# 透過 http://stackoverflow.com/questions/8391529 提到的方法可以檢查特定使用者是否已經納入課程中

function check_enrollment($username, $course){ 
global $DB;
$sql = \"SELECT count(*)
FROM mdl_user_enrolments a,
mdl_enrol b,
mdl_user c

WHERE c.username='$username'
AND a.userid=c.id
AND b.courseid=$course
AND a.enrolid=b.id\";
$n = $DB->count_records_sql($sql);
if($n==0) {
//user not enrolled
return False;
} elseif($n==1) {
//user already enrolled
return True;
} else {
//, bad data ie<Data sanity not maintained>
add_to_log($course, 'ERROR: check-enrollment', 'Entered into mordor code block');
return False;
}
}


以上是在 Moodle 2.5.1 版上面進行,其他版本也許會有需要調整的地方

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=7520
Sign In or Register to comment.