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

edited 十月 2013 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.