【问题标题】:Moodle - Adding a new AssignmentMoodle - 添加新作业
【发布时间】:2015-08-21 07:36:45
【问题描述】:

我想知道在 Moodle 中保存“作业”时INSERT 发生在哪里。

这是一张图片。

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

【问题讨论】:

  • /mod/assign/mod_form.php 是它处理表单的地方,这将是一个很好的起点

标签: php moodle


【解决方案1】:

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

至于“实际”插入发生的位置,在 modedit.php 中有一个调用 add_moduleinfo(定义在 course/modlib.php 中),然后调用 add_course_module(定义在 course/lib.php 中)负责插入 course_modules 表中。

add_moduleinfo 内部还有对模块定义函数 _add_instance 的调用(因此在此原因中是 assign_add_instance,在 mod/assign/lib.php 中定义),它调用 assign::add_instance(在 mod/assign/locallib.php 中定义) 实际插入到分配表中。


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

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

您还必须更改表本身以添加新列,最好同时编辑 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 也是如此。

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    相关资源
    最近更新 更多