0

我想使用 PHP在 Moodle 课程(由用户指定)中创建一个论坛。

我试图在网上搜索它,但我什么也没找到,即使在 Moodle 网络服务中(我找不到创建论坛的功能)。

这个想法是用户选择一门课程(他/她将学习的课程),选择一个“单元”,插入标题和内容然后提交(其余选项可以是默认选项) .

我可以从数据库中检索我想要的所有数据,但我无法创建任何论坛。我也尝试过通过 SQL添加它,但我没能做到。

希望这里有人可以帮助我!

谢谢你的时间。

4

2 回答 2

3

如果您直接想创建一个论坛,那么您需要执行以下步骤 -

  1. 将新记录插入 mdl_forum表并获取插入的 id
  2. 使用以下值将新记录插入mdl_course_module表 course=courseid,module=7(对于论坛,在 moodle 2.9 中论坛 id 为 9),instance=fourmid,visible=1,showavailability=1
  3. 如果不存在则插入记录或使用以下值将记录更新到mdl_course_section并获取 sectionid course = courseid, visible = 1, sequence = moduleid(comma seprated),

  4. 更新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);
于 2012-12-07T11:33:52.603 回答
1

不幸的是,我没有 50 分可评论,因此 Jitendra 出色答案的附录作为“答案”。在 Moodle 2.4 上, add_mod_to_section() 已弃用,因此应将其更改为:

$sectionid = course_add_cm_to_section ($courseid, $mod->coursemodule, $sectionid, null);
于 2014-01-25T14:59:52.560 回答