我想使用 PHP在 Moodle 课程(由用户指定)中创建一个论坛。
我试图在网上搜索它,但我什么也没找到,即使在 Moodle 网络服务中(我找不到创建论坛的功能)。
这个想法是用户选择一门课程(他/她将学习的课程),选择一个“单元”,插入标题和内容,然后提交(其余选项可以是默认选项) .
我可以从数据库中检索我想要的所有数据,但我无法创建任何论坛。我也尝试过通过 SQL添加它,但我也没能做到。
希望这里有人可以帮助我!
谢谢你的时间。
如果您直接想创建一个论坛,那么您需要执行以下步骤 -
如果不存在则插入记录或使用以下值将记录更新到mdl_course_section并获取 sectionid course = courseid, visible = 1, sequence = moduleid(comma seprated),
更新mdl_course_module表并更新sectionid
最后重建moodle course缓存
这是创建新fourm的moodle代码。
$forum = new stdClass();
$forum->course = $courseid;
$forum->type = "general";
$forum->timemodified = time();
$forum->id = $DB->insert_record("forum", $forum);
if (! $module = $DB->get_record("modules", array("name" => "forum"))) {
echo $OUTPUT->notification("Could not find forum module!!");
return false;
}
$mod = new stdClass();
$mod->course = $courseid;
$mod->module = $module->id;
$mod->instance = $forum->id;
$mod->section = 0;
if (! $mod->coursemodule = add_course_module($mod) ) { // assumes course/lib.php is loaded
echo $OUTPUT->notification("Could not add a new course module to the course '" . $courseid . "'");
return false;
}
if (! $sectionid = add_mod_to_section($mod) ) { // assumes course/lib.php is loaded
echo $OUTPUT->notification("Could not add the new course module to that section");
return false;
}
$DB->set_field("course_modules", "section", $sectionid, array("id" => $mod->coursemodule));
include_once("$CFG->dirroot/course/lib.php");
rebuild_course_cache($courseid);
不幸的是,我没有 50 分可评论,因此 Jitendra 出色答案的附录作为“答案”。在 Moodle 2.4 上, add_mod_to_section() 已弃用,因此应将其更改为:
$sectionid = course_add_cm_to_section ($courseid, $mod->coursemodule, $sectionid, null);