我已经检查了课程文件夹中的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;
}
}
答案 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。