直接把插件和以下内容发给AI,让他更新就可以了:
行数已变化(index.php 3492 行)。继续获取剩余的 hook/fire 调用点及其他校验数据:
-
发现新增表app_topics_del。现在读取关键区段核对删除逻辑、楼层数据与引导段:
-
核对del()的with_replies调用点及其它删除入口:
-
核对hook_registry()内部与plugins()行号:
正在更新 Hook 表(第 2.2 节):
接下来是 topic/reply 生命周期表(包含 v9.1 的删除功能变更)以及 index/search 表:
现在是 2.5 data-slot 表格行号:
接下来是数据库章节(4.3)和 API 表格(6.3):
最后全文扫描一遍剩余行号引用,确认无遗漏:
核对结果与修改摘要如下:核对结论(v9.1,
index.php3388→3492 行)1. 文档→源码(Hook 清单与行号)
- 全量 grep
hook()/fire()调用点:核心钩子仍为 80 个,无新增、无移除,全部签名一致;约 45 处行号因代码插入偏移(+1 或 +100~300)已逐一更新。 hook_registry()L660-674、hook()L675-687、fire()L688-691、plugin_route()L692、plugin_call()L554、plugin_load()L543、plugin_entry_definitions()L606、svg_icon()L1718、常量表 L9-33(24 个)均未变。
2. 源码→文档(新增内容补录,对应上游变更点)
del()签名变化:del(string $table, int $id, bool $with_replies = false);主题删除经save_topic的delete_topic动作以with_replies=true连带硬删除全部回帖。content.before_delete调用点:1 处→4 处(L2673、L2683 主题连带回帖循环、L2690、L3192reply_edit_page do=delete);topic.before_delete(L2689)触发时回帖已删,已加说明。- 新增占位表
app_topics_del(id, topic_id, reply_id, created_at)+ 2 个索引idx_topics_del_topic/idx_topics_del_reply;表数 11→12、索引 17→19。 - 楼层数据:
topic.replies钩子的回帖数组每项新增reply_floor;topic/reply.content_afterctx 新增reply_position;楼层计算函数apply_reply_floors()/reply_position_floor()/topic_floor_index()/floor_live_position()已补入 6.3 API 速查。 - 删除通知:
content_delete_notify()(L2577)发delete类型通知,已在新增的「删除行为(v9.1)」小节说明。 - 引导段、CLI 入口、
admin.tabs、登录/注册/资料/列表/详情/搜索全部 Hook 及 2.5 data-slot 表行号同步更新;头部实测行数更新(Setup.php 1586、index.js 803、PLUGIN.md 362)并标注核心版本 v9.1(app/version.php)。
3. 对照新版 PLUGIN.md
- 新版 PLUGIN.md的 data-slot 表、entries 表、Hook 语义、核心 API 清单一致,无冲突;其 cron interval 示例改用无参函数,与核心「两参调用、PHP 忽略多余实参」的实现不矛盾(以代码实测为准)。
未改动任何未变化的内容(红区规则、占位符规范、生命周期流程、Plugin.php/Cron.php 全部行号引用经核对仍然准确)。
主楼- 全量 grep
是的。没有hook变化。只有删除优化。
plugin.php 文件过大(2393 行),分段精读:
核心文档已重读完毕。现在按用户要求,对插件依赖的 Hook 语义、核心 HTML 锚点/类名、CSS 变量、核心函数签名逐一用 Grep 定向查证当前核心代码:
已发现关键疑点:核心的回贴「禁言作者」入口已从reply-mute-link按钮表单改为编辑表单内do下拉的<option value="mute_author" data-confirm=...>(L3219),与本插件 1.3.6 的移除逻辑依赖的旧结构不一致。继续查证其余锚点与函数签名:
核心类名与函数签名基本吻合。继续查证剩余 Hook 触发点的 ctx 结构、列表页post-meta锚点、attach_users字段与 CSS 变量:
核心锚点大部分吻合。最后一批查证:after_render的 ctx 是否含row、reply.after_save的 ctx、select_forum的控件名、sidebar_stack_html签名:
全部查证完成。以下是审计结论。审计结论
一、已核验无过时依赖的部分(全部通过 Grep 对照当前核心代码)
依赖类别 结果 23 个 manifest 钩子 全部存在且签名/ctx 一致: topic.before_render列表 ctx 为['list'=>true,'sort']、value 为['row'=>…](index.php L2038);详情页 value 含row/body(L1917);after_renderctx 含row(L1932/L2046/L2067);reply.form_extra详情页 ctx 含topic(L3128);topic.actions的$value仍为引用回复按钮、编辑按钮在钩子后拼接(L3104-3106);user.can_speak字符串返回仍经need_speak呈现(L1488);reply.after_save新建路径 ctx 含user_id+editing:false(L2574);user.points_changedctx 含 user_id/delta/points(L954)核心 HTML 锚点/类名 <div class="post-meta">(详情/列表均存在)、post-content+</div></li>、<a class="icon-action icon-quote quote-reply"、原生徽章post-user-group/post-user-group-icon(uid 徽章带附加类不受影响)、user-state-tags/user-state-tag、user-rank/· 积分、reply-login-box disabled+「当前用户禁止发言」(L3135)、ajax-reply-form全部与代码一致核心函数 sql_marks/markdown_html/ajax_request/is_post_request/tab_bar_html/admin_list_head/group_by_id/attach_users(预载group_id,points,is_banned,is_muted,红区行内判定成立)/sidebar_user_card_html(无参调用合法)/create_notification/input/checkbox/paginate/route_url/page/select_forum(name="forum_id",JS 联动绑定成立)签名全部匹配CSS 变量 插件引用的 --danger/--info/--inverse*/--shadow-medium/--transition-normal/--radius*/--font-size-*/--text-muted/--line/--bg/--panel/--text全部存在于当前 index.css表结构 app_users(is_muted/is_banned/points/group_id)、app_topics.forum_id、app_settings与 v9.1 一致;v9.1 新增的app_topics_del、硬删除行为、top.bar.actions等变更均不涉及本插件二、发现 1 处过时依赖(受影响)
levels_page_render()的「隐藏核心禁言入口」逻辑(plugin.php L658-665,1.3.6 引入)- 旧事实:回贴编辑页的禁言入口是独立的
reply-mute-link按钮表单(post-action-form包裹)。 - 现状:核心已移除该按钮表单,改为回复编辑表单内
<select name="do" data-reply-actions>中的选项(index.php L3219):
<option value="mute_author" data-confirm="确定禁言该作者?">禁言作者</option>- 插件现有的 option 移除正则
~<option value="mute_author">[^<]*</option>~只匹配主贴编辑页的纯选项(L3164),不匹配带data-confirm属性的回贴编辑页选项("mute_author"后是空格而非>)。 - 实际影响:管理员在「编辑回复」页仍会看到并能使用核心原生「禁言作者」入口——无理由、无期限、无审计、且核心无解除 UI,正是 1.3.6 要杜绝的场景(主贴编辑页的移除仍有效,核心 POST 端点 L3183 仍存在)。
三、次要发现(非过时依赖,规范合规问题)
CSS 中约 21 处
font-size直接写数字(11/12/13/14/15px,含.levels-badge、.levels-table、.levels-modal-head等),违反更新后 PLUGIN.md 的「字号只用--font-size-xxs~xl变量、例外需先定义语义化变量」规则。不影响运行,但属最高约束标准的合规缺口。四、修正方案(待确认后执行)
levels_page_render()(plugin.php L658-665):
- option 移除正则放宽为
~<option value="mute_author"[^>]*>[^<]*</option>~,一条正则同时覆盖主贴(纯选项)与回贴(带data-confirm)两种形态; reply-mute-link的post-action-form匹配回调已无对应核心产物,属死代码,一并移除;- 更新注释说明回贴入口形态已变为编辑表单内下拉选项。
- 顺带修正字号合规:21 处
font-size映射为变量(11px→var(--font-size-xs)、12px→var(--font-size-sm)、14px→var(--font-size-md));13px/15px 无对应变量,在插件 CSS 顶部定义语义化变量--levels-font-size-caption(13px)/--levels-font-size-heading(15px)后引用。
- 旧事实:回贴编辑页的禁言入口是独立的
我哩个豆,又更新了。。。
插件应该不需要跟着更新吧。
不是自动更新吗?节省积分是..?