• cxk123
    内容勘误台
    ID errata_center版本 1.1.0插件制作者 cxk123售价 30 积分2141 行 / 118.7 KBHook / 路由 / 后台页
    把「这篇帖子这里写错了 / 链接失效了 / 信息过期了」变成一张有人管的勘误单:
    收费插件安装说明购买后点击“授权码”获取一次性授权码;在后台 > 插件广场点击在线安装或更新,并填写该授权码。已购买用户更新免费:每次在线安装或更新前,重新点击“授权码”获取新的一次性授权码即可,无需再次购买;也可直接下载新版后用后台“插件上传”更新。尊重并感谢他人劳动,请勿传播代码。
    app/plugins/errata_center/plugin.php
    开发日志已有 2 条

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

    • cxk123
      cxk123
      版本 1.1.0 647699724a1f 更新:**1.1.0 · 勘误台的版块可见性** - **修复(越权)**:公开勘误台渲染「目标内容」时此前没有版块可见性判定 ⇒ 「仅指定用户组可见」版块里的主题**标题与详情链接**会出现在公开勘误墙、勘误详情、搜索与后台列表**四处**。现在统一在一个取数收口点过滤(管理团队照常可见)。 - **口径**:无受限版块时 SQL 文本逐字节不变;页面语句数增量 **0**。release
    • cxk123
      cxk123
      版本 1.0.0 1735b2fd79e8 更新:首次上架(1.0.0)。 市场里 勘误 / 纠错 / 失效链接 / 事实错误 / 内容错误 / 死链 / 校正 这一族词此前**双源 0 命中** (全目录 392 条 + 站点两视图 430 条,连中文名一起查);核心侧同样没有任何「内容质量反馈」概念: `app_topics` / `app_replies` 里只有主题与回帖本体,没有勘误、修订建议、受理状态任何字段。 于是站内现在的选择只有
    主楼
  • cxk123

    版本 1.0.0 更新:
    首次上架(1.0.0)。

    市场里 勘误 / 纠错 / 失效链接 / 事实错误 / 内容错误 / 死链 / 校正 这一族词此前双源 0 命中
    (全目录 392 条 + 站点两视图 430 条,连中文名一起查);核心侧同样没有任何「内容质量反馈」概念:
    app_topics / app_replies 里只有主题与回帖本体,没有勘误、修订建议、受理状态任何字段。
    于是站内现在的选择只有两个:要么装作没看见(读者发现了错字、过期信息、失效链接,无处可去),
    要么在帖子里回一句(沉了就没了,作者也不知道哪条被处理过)。这一款补的是这条最短闭环:
    读者提勘误 → 内容作者本人优先受理(管理团队兜底)→ 采纳 / 驳回都要留结论 → 公开墙与致谢,
    全程只记录问题与结论:不替作者改帖、不处罚任何人、不发积分。

    • 入口在帖子与楼层里:主楼与每个回帖右下角的「更多」菜单里挂一项「勘误」,点进去就是带着目标

    (主题 + 楼层 + 内容作者)的提交表单。逐楼钩子 post.ops_actions 只拼一个链接、一条 SQL 都不发 ——
    主题页「启用 = 停用」的语句数差值是 0,站点再大也不涨。

    • 提交表单:问题类型(错别字 / 信息过期 / 链接失效 / 事实错误 / 排版问题 / 其它,站长可改)+

    问题说明(10–1000 字,服务端为准)+ 可见范围两档 + 可选证据截图 + 在办配额提示。
    证据图只能从本人已上传的核心图片里选(服务端校验归属,绝不信表单),本站不复制文件、不接管上传。

    • 隐私优先:默认档就是最严的那一档。新建默认「仅当事人与管理团队」,选它之后这条勘误不进公开墙;

    即便作者后来把它放上墙,游客与第三方在墙 / 搜索 / 详情三个面都拿不到私有说明原文、证据图与提交人名字 ——
    列表、详情、搜索、我的、收件箱、后台六个面共用同一对函数(一条 SQL 谓词 + 一条 PHP 判据),不会随页面漂移。

    • 作者优先受理,管理团队兜底:受理人 = 内容作者本人或管理团队,其他人一律 404 且零写入(事务里核对)。

    采纳(可以勾「致谢」,公开墙上留下提交人的名字)/ 未采纳(必须写一句理由,提交人要看得到)/
    撤回(只有提交人本人)。公开档还带「我也遇到」附议,一人一条,唯一键保证重复点击不涨计数。

    • 三件并发都走 CAS:状态机 UPDATE … WHERE id=? AND status='open' [AND owner_id=?|author_id=?] +

    rowCount()===1 才写时间线、发通知、释放配额(两个会话同时采纳只有一个成功);
    配额用独立配额表 UPDATE … SET used=used+1 WHERE user_id=? AND used<? 抢占,只有终态迁出才归还;
    重复提交靠 submit_key = sha1(uid|目标|类型|小写说明|时间窗) + UNIQUE(submit_key),
    并发下撞键的那个请求回读复用赢家那一行,绝不产生重复行。

    • 不让勘误沉底:超过设定时间没人受理,计划任务自动提醒内容作者与管理团队(可再次升级)。

    任务先写认领令牌批量认领、再按令牌回读,只给本次真正认领到的行写事件与通知,循环体内零查库;
    事件与通知各一条多行 INSERT,与站点规模无关。

    • 悬空引用不崩页:勘误指向的主题 / 楼层被删 → 渲染「原内容已删除」占位块(单子不删、页面不 404);

    证据附件被删 → 渲染「证据图已被删除」,不输出 <img>,绝不出现破图。

    • 自有表、零核心改动:五张 plugin_errata_center_* 表(items / events / quota / supports / acks)+

    八枚具名索引,不碰任何 app_* 表;app.boot 只比一个结构版本戳(0 条 SQL)就能幂等自愈建表补列;
    卸载把表、索引、结构戳、任务行一起清干净。安装时配额表按「在办条数」精确重建,不是估算。

    • 三驱动可移植:无窗口函数、无 db_driver() 分支、不手写 ON CONFLICT / INSERT IGNORE

    (幂等写入走核心的 app_db_insert_ignore())、时间一律 unix 秒整数、建删表索引只走 app_db_*。

    • 页面级无 N+1:公开墙 4 条插件语句、详情 5 条、我的 / 收件箱各 5 条、后台 5 条

    (核心只读批查另算且 ≤3 条,与行数无关);行数翻倍(10 → 20 → 30 条)后三个面的插件语句数完全不变。

    本版为 v1.0.0 首次上架:验收套件 487 项通过 / 0 项失败(九节:结构 / 提交校验 / 证据归属 /
    权限矩阵 8 夹具 × 5 身份 × 3 面 / 隐私三面同源 / 并发 / 页面预算 / 跨插件只读对账 / 卸载重装自愈),
    七道静态门禁 0 违规 / 0 待人工确认,全仓 suite_integrity_audit 65 个套件七条全 ✓。

    #1
  • 质量报告

    插件质量报告

    插件:errata_center

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    app.boot全站请求启动否5---写 plugin_errata_center_quota, plugin_errata_center_items, plugin_errata_center_events, plugin_errata_center_supports, plugin_errata_center_acks
    sidebar.feature_links首页/侧栏快捷功能否5----
    user.menu_links个人卡片/移动端我的菜单(展示位置:个人卡片)否4----
    post.ops_actions非系统hook否1----

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

    数据字典

    plugin_errata_center_quota

    字段类型可空默认值约束
    user_iduint否-主键
    useduint否0-
    updated_atuint否0-

    plugin_errata_center_items

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

    plugin_errata_center_events

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

    plugin_errata_center_supports

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

    plugin_errata_center_acks

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

    积分能不能便宜点

    #3
  • cxk123

    版本 1.1.0 更新:
    1.1.0 · 勘误台的版块可见性

    • 修复(越权):公开勘误台渲染「目标内容」时此前没有版块可见性判定 ⇒ 「仅指定用户组可见」版块里的主题标题与详情链接会出现在公开勘误墙、勘误详情、搜索与后台列表四处。现在统一在一个取数收口点过滤(管理团队照常可见)。
    • 口径:无受限版块时 SQL 文本逐字节不变;页面语句数增量 0。
    #4

发表回复

登录后回复