在管理将模块添加到Moodle programmaticaly后(请参阅我的旧问题here)我现在还需要在特定位置添加模块。
让我们举一个Moodle的示例课程,我有:
Section 0
- Module 1
- --> ADD NEW MODULE HERE <--
- Module 2
Section 1
- Module 1
- Module 2
Section 2
所以我需要在第0节的模块1和2之间添加我以编程方式创建的新模块。
我知道模块的顺序来自表 mdl_course_sections ,它在序列列中指定,其中模块的ID以逗号分隔值存在
Moodle中有功能吗?设置一个部分的顺序?我不想直接搞砸数据库。
答案 0 :(得分:0)
在我从Moodle社区得到一些帮助后(感谢Sam Chaffee),这是解决方案
//...Do stuff to create module object...
// ...
$moduleinfo = add_moduleinfo($newlabel, $section);
//lets get all sections and modules of the course
$coursemodinfo = get_fast_modinfo($course->id, 0, false);
//get all sections of the course
$coursesections = $coursemodinfo->get_sections();
//get the first section, get_section will return an array of sections so I get position 0 to get section 1
$section01 = $coursesections[0];
//get the first module in the section so we can add on top of it
$firstmodid = $section01[0];
//We need to get cm_info for the specific mod
$mod = $coursemodinfo->get_cm($moduleinfo->coursemodule);
//we also need section_info for the section we want to move to
$sectioninfo = $coursemodinfo->get_section_info(0);
//move the newly created module to section 01 but before $firstmodid
moveto_module($mod, $sectioninfo, $firstmodid);