• cxk123
    服务端草稿箱
    ID draft_box版本 1.1.0插件制作者 cxk123售价 30 积分1711 行 / 98.5 KBHook / 路由 / 后台页
    1.1.0:修「草稿箱里的回帖草稿泄露受限版块主题标题」——标题回显与核心主题页同一把尺子
    收费插件安装说明购买后点击“授权码”获取一次性授权码;在后台 > 插件广场点击在线安装或更新,并填写该授权码。已购买用户更新免费:每次在线安装或更新前,重新点击“授权码”获取新的一次性授权码即可,无需再次购买;也可直接下载新版后用后台“插件上传”更新。尊重并感谢他人劳动,请勿传播代码。
    app/plugins/draft_box/plugin.php
    开发日志已有 2 条

    此项目接受所有登录用户协助维护和提交更新。

    • cxk123
      cxk123
      版本 1.1.0 12de37085c78 更新:**1.1.0 · 草稿标题不再越权** - **修复(越权)**:草稿箱里「回复:《…》」显示的目标主题标题此前**没有版块可见性判定**,而保存草稿时又**采信客户端传来的版块标记** ⇒ 任何登录用户都能对连续的主题 id 造草稿、再从草稿箱读到「仅指定用户组可见」版块主题的**标题与存在性**。现在:读侧按核心同一口径过滤(无权限时显示占位,**不暴露标题也不暴露 id**),写侧**不再release
    • cxk123
      cxk123
      版本 1.0.0 d13670a38ce7 更新:1.0.0(首次上架)· 服务端草稿箱:把「写了半天全丢了」这件事从根上解决 【为什么值得装】 · 市场里唯一同类的 `draft_autosave` 是纯浏览器本机存储(localStorage):换台电脑、换个浏览器、 清一次缓存,草稿就没了,也没有草稿列表与配额管理。这一款把草稿**存到服务端**: 换设备、换浏览器、换会话都还在,发帖前还能在「草稿箱」里统一看与管理。 【能力一 · 服务端
    主楼
  • cxk123

    版本 1.0.0 更新:
    1.0.0(首次上架)· 服务端草稿箱:把「写了半天全丢了」这件事从根上解决

    【为什么值得装】
    · 市场里唯一同类的 draft_autosave 是纯浏览器本机存储(localStorage):换台电脑、换个浏览器、
    清一次缓存,草稿就没了,也没有草稿列表与配额管理。这一款把草稿存到服务端:
    换设备、换浏览器、换会话都还在,发帖前还能在「草稿箱」里统一看与管理。

    【能力一 · 服务端自动保存】
    · 发帖页与回帖框都会自动保存:默认 20 秒一拍,而且内容真的变了才写库
    (哈希比对,重复提交一万次也只有一行、一次时间戳)。
    · 同一用户 × 同一目标恒定只有一行:双开标签、连点保存、断线重连都不会长出重复草稿。
    · 自动保存与「保存草稿」按钮并存;关掉自动保存后按钮仍然可用。
    · 在浏览器里额外留一份本机副本:刷新、崩溃、断网都不会丢,pagehide 时还会补一次提交。

    【能力二 · 草稿箱与一键续写】
    · 草稿箱页列出自己的全部草稿:标题摘要、目标(版块 / 回复的是哪篇主题)、字数、更新时间。
    · 可按「全部 / 主题草稿 / 回帖草稿」筛选;顶部一条用量条显示已用与上限、保留期。
    · 点「恢复」跳到对应的发帖页或回复框并预填标题与正文接着写;没有点恢复之前,
    绝不会自动往编辑框里塞任何东西(不打断你正在写的内容)。
    · 草稿只在你自己名下:别人拿到草稿编号也只会看到「草稿不存在」。

    【能力三 · 不会静默覆盖你的东西】
    · 每条草稿都带内容哈希与版本号。如果同一份草稿在别处(另一台设备、另一个标签页)改过,
    保存会被拒绝,页面上给出「服务端版本 / 本机版本」两边的时间与哈希,让你明确选择以哪一份为准。
    · 提交成功后对应的草稿自动删除;编辑已经发布的帖子时不会误删你正在写的草稿。

    【能力四 · 配额与过期,明明白白】
    · 每人默认最多 20 条、保留 30 天,站长可改;满了会给明确提示(「草稿箱已满:请先删除一些」),
    不会悄悄失败。
    · 计划任务每天自动清理过期草稿,后台能看到清理记录与占用。

    【能力五 · 站长侧】
    · 后台一个「服务端草稿箱」页:开关、自动保存间隔、每人上限、保留天数、单条字数上限、
    按版块开关;总条数、总字数、参与人数、超期待清理;按用户占用 Top10;最近草稿流;
    清理记录与被拒记录;一键立即清理。
    · 后台看不到任何人的草稿正文与标题,只有类型、目标、字数、时间这些元数据。

    【匿名区口径(请务必看一眼)】
    · 草稿是存在服务器上、绑定真实账号的正文。匿名版块的草稿会变成一条长期存在的解匿线索,
    所以本站装了匿名区时,草稿默认在所有版块关闭,需要站长在后台逐个版块确认
    「本版没有开启匿名」之后才开放;回帖草稿还会额外复核目标主题是否已是匿名内容,命中一律拒写。
    · 判断只用核心的插件清单与匿名区公开的遮蔽契约,不读对方的数据表、不调对方的函数。

    【参数】
    · 新增 2 张自有表、3 枚索引,不动核心任何表结构;卸载时一并清干净(可选保留数据卸载)。
    · 首页、版块列表、主题页零额外查询;发帖页 +1;草稿箱列表 ≤4;后台 ≤6。
    · 兼容 SQLite / MySQL / PostgreSQL(时间戳全为整数秒,无窗口函数、无单库方言)。

    #1
  • 质量报告

    插件质量报告

    插件:draft_box

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    sidebar.feature_links首页/侧栏快捷功能否5----
    top.bar.actions顶部栏插件入口,同一请求只执行一次(展示位置:版块导航与搜索框前后)否5----
    reply.after_save回帖保存后否3---写 plugin_draft_box_drafts
    topic.after_save主题保存后否3---写 plugin_draft_box_drafts
    reply.form_extra回帖编辑表单否2----
    topic.form_extra主题发布/编辑表单否2---读 plugin_draft_box_drafts

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

    数据字典

    plugin_draft_box_drafts

    字段类型可空默认值约束
    -动态定义--无法静态解析

    plugin_draft_box_events

    字段类型可空默认值约束
    -动态定义--无法静态解析
    #2
  • cxk123

    版本 1.1.0 更新:
    1.1.0 · 草稿标题不再越权

    • 修复(越权):草稿箱里「回复:《…》」显示的目标主题标题此前没有版块可见性判定,而保存草稿时又采信客户端传来的版块标记 ⇒ 任何登录用户都能对连续的主题 id 造草稿、再从草稿箱读到「仅指定用户组可见」版块主题的标题与存在性。现在:读侧按核心同一口径过滤(无权限时显示占位,不暴露标题也不暴露 id),写侧不再把客户端传值当授权依据。
    • 另修:后台事件表「草稿」列恒为 0(读错列名)、事件表用户名退化成 #uid。

    升级:覆盖文件即生效,无数据结构变更。

    #3

发表回复

登录后回复