当我使用Moodle创建PHP课程时,我该如何处理数据库?

时间:2012-03-26 10:56:18

标签: php moodle

我已经检查了课程文件夹中的lib.php,但我不明白它在做什么,所以我会在这里问。

我正在尝试使用PHP和MySQL代码创建一个课程,而不是使用Moodle API,通过与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;
    }       
}

1 个答案:

答案 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。