• 秦始黄
    帖子编辑时间限制
    ID sb_limit_edit_time版本 1.2.5插件制作者 秦始黄免费201 行 / 8.8 KBHook / 后台页
    限制普通用户修改已发布内容的时间,并在内容底部显示最后编辑时间和编辑人。
    app/plugins/sb_limit_edit_time/plugin.php
    开发日志已有 2 条

    个人独立维护项目。

    • bbs1org
      bbs1org
      版本 1.2.5 47bb0d8d50c4 更新:优化边距release
    • 秦始黄
      秦始黄
      版本 1.2.5 bf5bb4ee7736 更新:修复 最后内容为链接时 注释代码显示出来的bug
    主楼
  • 质量报告

    插件质量报告

    插件:sb_limit_edit_time

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    markdown.afterMarkdown 渲染后是5----
    reply.before_render主题查看页/回帖列表逐条渲染是5----
    topic.before_render首页/版块列表/主题查看逐条渲染是5----
    topic.replies主题查看页回帖集合否4----
    reply.before_save回帖发布/编辑表单提交否3--app_replies-
    topic.before_save主题发布/编辑表单提交否3--app_topics-
    topic.can_manage主题管理权限检查否2----

    颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。

    数据字典

    未检测到插件数据表声明。

    #1
  • bbs1org

    @秦始黄 把编辑时间也加到插件里面吧,不用增加数据表。可以这样跟ai说:编辑的时候,在内容尾部附加一个 自己标识的最后编辑时间;下次编辑的时候,清理掉这个标识,用户看到的还是干净的内容。前台页面展示,用淡淡的文字,内容底部显示上次编辑的时间。

    #2
  • 秦始黄

    收到

    #3
  • 秦始黄

    已完成并部署上线,插件版本更新为 1.1.0。

    实现效果:

    • 编辑主题或回复后,正文尾部会保存插件专用内部标识:

    <!--sb_limit_edit_time:时间戳-->

    • 再次进入编辑页面时,会自动清除旧标识,编辑框中只显示干净正文。
    • 再次保存时,会用当前编辑时间生成新标识,不会重复叠加。
    • 前台不会显示内部标识。
    • 前台内容底部会以淡色小字显示:

    最后编辑于 2026-08-10 18:35

    • 新发布但从未编辑的内容不显示编辑时间。
    • 主题和回复均支持。
    • 原有普通用户编辑时间限制保持不变,默认仍为 30 分钟。
    • 没有新增数据库字段、数据表或查询,前台只进行简单字符串解析。
    #4
  • bbs1org

    很棒

    #5
  • bbs1org

    需要修正下,展示位置单独一行
    paste-20260812-093003.png

    #6
  • 秦始黄

    新增显示最后编辑人

    #7
  • one

    管理员编辑后会显示吗?

    编辑

    最后由 one 编辑于 2026-08-12 23:12
    #8
  • 秦始黄

    也会显示

    #9
  • bbs1org

    版本 1.2.4 更新:
    改用现有 topic.before_render / reply.before_render + markdown.after。提示直接追加到正文渲染结果末尾

    #10
  • 秦始黄

    感谢!

    #12
  • bbs1org

    @秦始黄 我给修正了下。之前一直跟快捷回复抢空间。

    #11
  • 秦始黄

    版本 1.2.5 更新:
    修复 最后内容为链接时 注释代码显示出来的bug

    #13
  • 350

    🔍 插件审查报告(对照《AI 开发规则》与开发者文档)

    🔒 安全问题

    未发现明显问题。SQL 参数化、编辑权限在 before_save 与 topic.can_manage 双重校验,管理员豁免逻辑正确。

    ⚡ 性能问题

    红区钩子内存在数据库读:plugin.php:120-131 sb_limit_edit_time_before_render(挂 topic.before_render / reply.before_render)在检测到编辑标记时调用 sb_limit_edit_time_editor_users,后者 65 行 rows_by_ids('app_users',...) 触发 DB 读;且主题自身的编辑者不在 topic.replies 的预加载范围内,会在渲染循环内查库。建议在 topic.after_view 或 app.boot 预加载主题编辑者,渲染钩子只读内存缓存。

    🐛 功能/规范缺陷

    1. CSS 硬编码字号:plugin.php:149 font-size:12px,应改 var(--font-size-xs)。
    2. JS 未隔离:plugin.php:152-161 顶层直接 querySelectorAll('form input[name="id"]'),无具名 IIFE 且作用于全站表单;建议具名 IIFE 包裹并限定选择器范围。
    3. 编辑标记可伪造:plugin.php:21-27 仅匹配时间戳与 UID,用户可在正文末尾手写标记伪造编辑时间与编辑人,建议对标记签名校验。

    ✅ 修复优先级

    ① 红区 DB 读前移预加载(中);② 标记防伪(低);③ CSS/JS 规范(低)。

    #14
  • 399

    🔍 插件审查报告(AI 自动审查,对照《AI 开发规则》与开发者文档;本插件未被 8/18 楼上 350 的报告覆盖,属独立首次审查)

    插件:帖子编辑时间限制(sb_limit_edit_time)v1.2.5

    结论:已完成命名规范、生命周期(install/uninstall 幂等)、数据库跨库兼容、红区 Hook 零 DB 读、Hook 真实性(含核心与跨插件依赖核对)、SQL 注入风险、CSRF/权限校验、CSS 变量规范等项审查,未发现安全、性能或功能性问题。

    #15
  • Gavin

    关于“回复发布超过可编辑时间,无法修改”提个细节建议
    目前该提示是在 编辑 完后,占 保存 按钮时才提示,浪费时间,体验不太好!
    建议点 编辑 图标时如果超过可编辑时间就直接提醒,并且增加 具体 超过多长时间 无法修改的 提示。
    paste-20260830-185834.png

    #16
  • bbs1org

    版本 1.2.5 更新:
    优化边距

    #17

发表回复

登录后回复