通过外部PHP在Moodle中创建论坛

时间:2012-10-18 16:38:26

标签: php forum moodle creation

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

我试图搜索网络,但我没有发现任何东西,即使在Moodle网络服务中(我找不到创建论坛的功能)。

想法是用户选择课程(他/她将要学习的课程),选择“单元”,插入标题和内容并提交(其余选项可以是默认选项)。

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

希望有人能帮到我!

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

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

  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(逗号分隔),

  4. 更新 mdl_course_module 表并更新sectionid

  5. 最后重建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);