2012-03-26 4 views
0

私はコースフォルダでlib.phpをチェックしましたが、何をしているのかわかりませんのでここでお尋ねします。Moodleを使ってPHPでコースを作成すると、データベースとどうすればいいですか?

私はMoodle APIではなく、PHPとMySQLコードでコースを作成しようとしていますが、Moodleデータベースに接続しています。

これまでは、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

私たちが手助けするためにいくつかのコードを表示してください。 –

答えて

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

私たちは、完全にオンラインの個人指導コースを構築しました。これは、APIを使用せずにMoodleデータベースに接続するだけです。 Moodleのデータベースは、リバースエンジニアリングのようなことが起こったときに頭を浮かべれば理解できます。理解するのに1週間ほどかかります。しかし、コードでデータベースに何かを挿入すると、Moodleは自動的にコースを作成しようとしているので、通常は自動的にそれを自動的に検出して更新しますが、すべてではありません。 –

関連する問題