我想在Moodle课程中创建一个论坛(由用户指定)使用PHP 。
我试图搜索网络,但我没有发现任何东西,即使在Moodle网络服务中(我找不到创建论坛的功能)。
想法是用户选择课程(他/她将要学习的课程),选择“单元”,插入标题和内容,并提交(其余选项可以是默认选项)。
我可以从数据库中检索我想要的所有数据,但我无法创建任何论坛。我也尝试过通过SQL 添加它,但我无法 。
希望有人能帮到我!
感谢您的时间。
答案 0 :(得分:2)
如果您想直接创建论坛,则需要执行以下步骤 -
如果不存在则插入记录或使用以下值将记录更新到 mdl_course_section 并获取sectionid course = courseid,visible = 1,sequence = moduleid(逗号分隔),
更新 mdl_course_module 表并更新sectionid
最后重建moodle coures缓存
这是用于创建新的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);
答案 1 :(得分:1)
不幸的是,我没有50分的评论,所以Jitendra的优秀答案的附录作为“答案”。在Moodle 2.4上,add_mod_to_section()已弃用,因此应将其更改为:
$sectionid = course_add_cm_to_section ($courseid, $mod->coursemodule, $sectionid, null);