Moodle - 添加新作业

Moodle - Adding a new Assignment

我想知道在 Moodle 中保存 'Assignment' 时 INSERT 发生在哪里。

这是一张图片。

我在 course/modedit.php 中调整了文件,但没有进行任何更改。也许它没有放在这里,或者它位于另一个文件夹中。知道在哪里可以找到它吗?

向课程添加模块由 course/modedit.php 控制,它处理显示模块特定的创建形式(Conn 引用的 mod_form.php)、添加新模块、更新现有的,可能还有其他东西。

至于 "actual" 插入发生的位置,在 modedit.php 中调用了 add_moduleinfo(在 course/modlib.php 中定义),它然后调用 add_course_module(在 course/lib.php 中定义)负责插入 course_modules table.

也在add_moduleinfo里面调用了一个模块定义的函数,_add_instance(所以在这个原因中赋值_add_instance,定义在mod/assign/lib.php),它调用 assign::add_instance(在 mod/assign/locallib.php 中定义),它实际插入赋值 table.


您似乎正计划扩展分配模块以向数据库添加字段。如果是这种情况,您肯定需要更改 add_instance 调用以及 update_instance 调用。

您还必须编辑 assign/mod_form.php 以包含您的表单元素(modedit.php 不适合这样做,因为它会应用于所有模块表格,除非您检查分配模块,但这有点笨拙)。

您还必须更改 table 本身以添加新列,最好同时编辑 mod/assign/db/install.xml 和 mod/assign/db/upgrade.php 所以新安装和升级的工作方式相同。

并且每当您更改架构时,都需要在 mod/assign/version.php.

中增加版本

如果您希望在备份和恢复分配时保留您的新设置,您还必须编辑 mod/assign/backup/moodle2/backup_assign_stepslib。php 并且可能 mod/assign/backup/moodle2/restore_assign_stepslib。 php 还有。

当然你会想要使用这个新字段,但我会把它留给你。

希望对您有所帮助。