2012-03-26 42 views
0

我已經檢查了課程文件夾中的lib.php,但我不明白它在做什麼,所以我要在這裏問。當我使用Moodle創建PHP課程時,應該如何處理數據庫?

我想通過與Moodle數據庫連接來創建一個PHP和MySQL代碼的課程,而不是Moodle API。

到目前爲止,我已經寫了一個方法來創建課程,方法是將值插入到mdl_course表中,但在課程主頁中沒有顯示任何內容。它在數據庫中,它是可以登記的,它也是可見的,但它不顯示。

我知道course_sections和course_category會在創建新課程時受到影響,但如何計算要放入每個字段的值?

什麼是mdl_course中的modinfo?我如何計算這個?

如何計算mdl_course中的sortorder?現在我正在找到放置課程的類別,然後找到該類別中的所有排序順序,然後將其作爲新的排序順序值增加1。我不確定這是否正確。

現在這是我的方法來創建一個過程,顯然這是沒有在附近齊全:

public function createCourse() 
{ 
    //find category 
    //calculate sortorder i.e. search in mdl course for all course with category. select sortorder MAX then ++ 
    require "/mysqli_connect.php"; 
    $t = time(); 
    $insert_q = "INSERT INTO mdl_course 
    (category, fullname, shortname, summary, startdate, maxbytes, 
    timecreated, newsitems, numsections, expirythreshold) 
    VALUES (30, 'Fullname', 'shortname', 'This is the summary', '$t', 268435456, '$t', 5, 10, 864000)"; 

    $insert_r = mysqli_query($mysqli, $insert_q); 
    $insert_n = mysqli_affected_rows($mysqli); 
    //var_dump($insert_n); 
    if($insert_n == 1) 
    { 
     return true; //insert successful 
    } 
    else 
    { 
     return false; 
    }  
} 
+0

請顯示一些代碼以便我們提供幫助。 – 2012-03-26 10:57:59

回答

4

根據我的經驗,Moodle是不是最簡單的還是最透明的制度嫁接自己的代碼到。一個實體有許多不同的表格條目。例如,課程將出現在mdl_lessons,mdl_course_modules,mdl_grade項目和其他課程中。我建議儘可能使用Moodle自己的API。如果你不能這樣做,你可以嘗試通過標準接口添加一個課程來對其進行反向工程,然後檢查你的SQL日誌以查看它製作的表項。

關於modinfo令人困惑的混亂,this post on the moodle forums說它是自動生成的。 This post解釋說,一旦課程的課程和活動全部到位,您可以致電rebuild_course_cache($courseid)重新填充modinfo。

+0

我們已經建立了一個在線輔導課程,完全通過連接到Moodle數據庫而不使用API​​。 Moodle數據庫可以幫助您理解一旦您瞭解到像您所說的逆向工程。只需要一個星期左右的時間來理解。但它應該是可以的,因爲當你通過代碼插入某些東西到數據庫中時,Moodle通常會自動檢測並自動更新,但並不是所有的時間都是這樣,因爲在這種情況下,我試圖創建一個課程。 – 2012-03-26 11:46:53

相關問題