尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Moodle gradereport_grader 升级笔记解读:从 4.5 到 5.2 的成绩册报告 API 弃用与移除迁移指南

Moodle gradereport_grader 升级笔记解读:从 4.5 到 5.2 的成绩册报告 API 弃用与移除迁移指南 教育后端前端【免费下载链接】moodleMoodle - the worlds open source learning platform项目地址https://gitcode.com/gh_mirrors/mo/moodle点击查看免费下载本指南以 Moodle 官方插件gradereport_grader教师默认成绩册界面的 UPGRADING.md 为核心骨架系统梳理该插件自 Moodle 4.5 至 5.2 版本间的公开 API 变更包括 4 个图标行渲染方法从弃用到彻底移除的全过程、Behat 测试辅助方法的迁移以及 ESM 前端模块的替换方案。读完本文你将能对照版本号快速定位每一次破坏性变更理解底层源码的弃用标注机制并为第三方插件或自定义代码提供完整的迁移路线。一、文档定位UPGRADING.md 在 Moodle 插件体系中的作用Moodle 的每一个核心子插件目录下都可能维护一份UPGRADING.md用于按版本记录插件对外暴露 API 的破坏性变更Deprecated / Removed供第三方开发者升级适配时逐条核对。gradereport_grader是成绩册Gradebook的默认报告插件教师通过它查看并批量录入课程成绩。仓库中它的插件元数据定义在 version.php$plugin-component gradereport_grader当前版本2026042000对应 Moodle 5.2 开发分支$plugin-requires 2026041000即要求运行在 Moodle 5.2 及以上核心版本。该插件的核心实现集中在 lib.php 的grade_report_grader类继承自grade_report见 lib.php 第 36 行前端交互逻辑位于amd/src/目录下的多个 ESM 模块。UPGRADING.md 中记录的每次变更都可以在lib.php、amd/src/*.js与tests/behat/中找到对应的源码佐证下文将逐版本展开。二、Moodle 4.5gradereport_grader/groupESM 模块弃用变更内容在 Moodle 4.5 中gradereport_grader/group这个 ESMES Module被标记为弃用官方建议改用core_course/actionbar/group。对应跟踪单号为 MDL-80745。源码佐证弃用标注仍然保留在当前仓库中虽然在当前 5.2 分支中该模块尚未被删除但弃用标记清晰可见。打开 public/grade/report/grader/amd/src/group.js文件头注释直接写明/** * module gradereport_grader/group * deprecated since Moodle 4.5 - please use core_course/actionbar/group instead. * todo Final deprecation in Moodle 6.0. See MDL-82116. */该模块不仅保留注释还在运行时主动触发弃用提示import emitDeprecation from core/deprecated; emitDeprecation(gradereport_grader/group, { replacement: core_course/actionbar/group, since: 4.5, mdl: MDL-80745, });core/deprecated的emitDeprecation会在控制台输出弃用警告mdl字段关联对应的 Moodle Tracker 单号方便开发者溯源。迁移目标core_course/actionbar/group替代模块存在于 public/course/amd/src/actionbar/group.js其职责相同——在成绩册报告中提供按小组group搜索用户的功能。gradereport_grader/group内部实际继承了core_group/comboboxsearch/group并复用了同一套搜索交互其selectOneLink()方法构造跳转到/grade/report/grader/index.php的分组筛选链接携带id、groupsearchvalue、group三个参数。迁移要点第三方代码或主题中若直接require或import了gradereport_grader/group应替换为core_course/actionbar/group。由于两模块输出结构一致均继承GroupSearch替换后行为基本等价。从源码注释看该模块的最终移除计划在 Moodle 6.0跟踪单 MDL-82116。三、Moodle 5.0get_right_avg_row()最终弃用与 Behat 辅助方法迁移3.1get_right_avg_row()最终弃用调用即抛异常Moodle 5.0 中grade_report_grader::get_right_avg_row()被“最终弃用”finally deprecated一旦被调用将直接抛出异常而不仅仅是输出弃用警告。这是 Moodle 弃用周期中的最后一步紧接其后的版本中该方法会被彻底删除实际上 5.2 就完成了删除见下文。对应跟踪单号 MDL-78890。这一做法与 Moodle 当前的弃用属性机制一致。例如 lib.php 第 111 行对MAX_STUDENTS_PER_PAGE常量的标注#[\core\attribute\deprecated(grade_report_grader::get_max_students_per_page(), since: 4.5, mdl: MDL-84245)] public const MAX_STUDENTS_PER_PAGE 5000;\core\attribute\deprecated是 Moodle 核心提供的 PHP 属性since标注弃用起始版本mdl标注跟踪单号配合core/deprecated库PHP 侧可在运行时抛出\core\deprecated相关异常。get_right_avg_row()在 5.0 进入的就是这一“调用即异常”的最终阶段。3.2behat_gradereport_grader::get_grade_item_id移除改用behat_gradesMoodle 5.0 还从 Behat 步骤定义中移除了behat_gradereport_grader::get_grade_item_id辅助方法对应跟踪单号 MDL-77107官方要求改用behat_grades中的等价方法。对测试作者的实际影响如果你在.feature文件中通过自定义步骤调用了该 helper需要改用behat_grades类提供的等价步骤。在 public/grade/report/grader/tests/behat/behat_gradereport_grader.php 中可以看到当前该类仅保留与用户菜单交互、用户选择器构造相关的方法get_user_id、get_user_selector、i_click_on_user_menu、i_click_on_user_profile_field_menu、get_partial_named_selectorsget_grade_item_id已不存在印证了文档记录。四、Moodle 5.1三个图标渲染方法正式移除Moodle 5.1 将此前已弃用的三个方法从grade_report_grader类中正式删除grade_report_grader::get_left_icons_rowgrade_report_grader::get_right_icons_rowgrade_report_grader::get_icons对应跟踪单号 MDL-77307。这三个方法负责在成绩册表格的行首与行尾渲染图标单元格如编辑、隐藏、锁定等操作图标。在当前的 lib.php 中通过函数列表可以确认这三个方法已完全消失现存的行构建方法仅有get_left_rows()第 644 行、get_right_rows()第 802 行、get_left_range_row()第 1329 行、get_left_avg_row()第 1355 行、get_right_range_row()第 1404 行等。迁移建议若第三方代码依赖这些方法扩展成绩册行渲染应改用现存的get_left_rows()/get_right_rows()体系或通过get_grade_table()第 1292 行之后的行数据后处理来实现自定义列。注意get_right_rows()接受bool $displayaverages参数并返回行数组内部已整合评分比例、错误信息、覆盖标记等单元格逻辑是当前渲染管线的正确挂载点。五、Moodle 5.2图标行方法族彻底清理与 Behat helper 移除5.1 移除清单Moodle 5.2 完成最后一轮清理对应跟踪单号 MDL-874251Behat 辅助方法移除\behat_gradereport_grader::get_grade_item_id()从 public/grade/report/grader/tests/behat/behat_gradereport_grader.php 中移除5.0 时已声明迁移到behat_grades5.2 完成物理删除。2grade_report_grader类方法移除从 lib.php 中删除以下四个方法方法弃用起点最终移除get_left_icons_row()5.1 之前已弃用5.2get_right_icons_row()5.1 之前已弃用5.2get_icons()5.1 之前已弃用5.2get_right_avg_row()5.0 最终弃用调用抛异常MDL-788905.25.2 移除后的现状与替代路径在 5.2 当前源码中这组图标/平均值行方法已全部不存在。成绩册表格的渲染已经完全依赖get_left_rows()、get_right_rows()等存活方法配合templates/目录下的 Mustache 模板完成单元格输出public/grade/report/grader/templates/cell.mustache——成绩单元格模板public/grade/report/grader/templates/headercell.mustache——表头单元格模板public/grade/report/grader/templates/categorycell.mustache——类别单元格模板。迁移建议任何自定义插件若在 5.0 前调用了get_right_avg_row()请确保在升级到 5.0 时已处理“调用即异常”问题升级到 5.2 前必须彻底移除对这四个方法的调用否则将触发致命错误方法不存在。平均值行的功能已由get_left_avg_row()/get_right_rows($displayaverages true)承担。六、完整迁移路线图与升级自检清单将四次变更按时间线汇总可以形成一张清晰的升级对照表版本变更类型变更对象迁移目标 / 处理方式跟踪单号4.5弃用gradereport_grader/groupESM改用core_course/actionbar/groupMDL-807455.0最终弃用get_right_avg_row()停止调用调用即抛异常MDL-788905.0移除behat_gradereport_grader::get_grade_item_id改用behat_grades等价方法MDL-771075.1移除get_left_icons_row()、get_right_icons_row()、get_icons()改用get_left_rows()/get_right_rows()MDL-773075.2移除上述四个方法含get_right_avg_row()彻底移除所有调用MDL-874255.2移除\behat_gradereport_grader::get_grade_item_id()改用behat_gradesMDL-87425升级到 Moodle 5.2 前建议按以下清单自查全文搜索在自定义插件中检索get_left_icons_row、get_right_icons_row、get_icons、get_right_avg_row四个字符串确认零引用前端模块检索gradereport_grader/group的import/require语句替换为core_course/actionbar/groupBehat 测试检索.feature文件与步骤定义中对get_grade_item_id的调用改用behat_grades提供的方法控制台验证升级后在成绩册页面打开浏览器控制台确认无emitDeprecation输出的弃用警告残留。七、相关文件索引以下文件与本次升级记录直接相关可在仓库中继续深入阅读升级记录主文档public/grade/report/grader/UPGRADING.md插件核心类被移除方法的所在类public/grade/report/grader/lib.php已弃用的 ESM 模块仍保留弃用标注public/grade/report/grader/amd/src/group.js推荐替代模块public/course/amd/src/actionbar/group.jsBehat 步骤定义get_grade_item_id已移除public/grade/report/grader/tests/behat/behat_gradereport_grader.php插件版本与依赖声明public/grade/report/grader/version.php成绩册相关 Behat 测试场景可用于验证升级后行为public/grade/report/grader/tests/behat/总体而言gradereport_grader从 4.5 到 5.2 的 API 演进遵循了 Moodle 标准的两段式弃用周期先警告、后移除变更集中在图标行渲染方法族与测试辅助方法两类对象上。第三方开发者只要按上表逐版本对照处理即可平滑完成升级。赞分享教育后端前端【免费下载链接】moodleMoodle - the worlds open source learning platform项目地址https://gitcode.com/gh_mirrors/mo/moodle点击查看免费下载相关推荐Moodle core_course 子系统升级笔记深度解读4.5 至 5.2 版本的 API 变更、弃用与迁移指南Moodle core_course 子系统升级笔记深度解读4.5 至 5.2 版本的 API 变更、弃用与迁移指南 public/course/UPGRAD教育后端前端Moodle core_calendar 升级指南5.0/5.2 弃用与移除 API 全解析及迁移实战Moodle core_calendar 升级指南5.0/5.2 弃用与移除 API 全解析及迁移实战 本文以 public/calendar/UPGRADI教育后端前端Moodle auth_ldap 5.2 升级指南已移除 API 与 CLI 脚本的迁移方案Moodle auth_ldap 5.2 升级指南已移除 API 与 CLI 脚本的迁移方案 本文基于 Moodle 仓库 public/auth/ldap/教育后端前端上一篇Gemma 4 21B-A4B-it REAP提示词工程解锁思考模式与多模态能力的终极指南下一篇xberg C 绑定实战使用 ExtractAsync 独立提取 DOCX 文档内容创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表