• one

    直接把插件和以下内容发给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.php 3388→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、L3192 reply_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_after ctx 新增 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 全部行号引用经核对仍然准确)。

    主楼
  • bbs1org

    是的。没有hook变化。只有删除优化。

    #1
  • one

    一次核对至少又是200积分+。

    #2
  • dcve

    建议,现在把内核固定几个稳定版本,像一些删除优化作为开发版发布,稳定版单独发布。要不然一直更新,插件还要适配,太折腾了!

    #5
  • bbs1org

    插件不用变动

    #7
  • one

    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_render ctx 含 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_changed ctx 含 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 变量、例外需先定义语义化变量」规则。不影响运行,但属最高约束标准的合规缺口。

    四、修正方案(待确认后执行)

    1. levels_page_render()(plugin.php L658-665):
    • option 移除正则放宽为 ~<option value="mute_author"[^>]*>[^<]*</option>~,一条正则同时覆盖主贴(纯选项)与回贴(带 data-confirm)两种形态;
    • reply-mute-link 的 post-action-form 匹配回调已无对应核心产物,属死代码,一并移除;
    • 更新注释说明回贴入口形态已变为编辑表单内下拉选项。
    1. 顺带修正字号合规: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)后引用。
    #3
  • dcve

    我哩个豆,又更新了。。。

    #4
  • zaiwai

    插件应该不需要跟着更新吧。

    #6
  • one

    不涉及以上变化的插件无需跟进。

    #9
  • webmaster

    不是自动更新吗?节省积分是..?

    #8

发表回复

登录后回复