• freepayzz
    关键词屏蔽
    ID keyword_moderation版本 1.0.5插件制作者 freepayzz免费288 行 / 21 KBHook / 后台页
    检测主题标题和内容中的违规关键词,支持拒绝发布或进入后台审核,并提供默认词库一键加入。
    app/plugins/keyword_moderation/plugin.php
    本插件的完善需要你的积极参与。安装使用中遇到任何,不要抱怨,请直接回帖描述,帮助开发者完善。
    开发日志已有 1 条

    个人独立维护项目。

    • freepayzz
      freepayzz
      版本 1.0.5 529ddbbb37d2 更新:旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。release
    主楼
  • 质量报告

    插件质量报告

    插件:keyword_moderation

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    sidebar.stack全站侧栏组件栈否5---写 plugin_keyword_moderation
    topic.before_render首页/版块列表/主题查看逐条渲染是5---读 plugin_keyword_moderation 修正❗️
    topic.after_save主题保存后否3--app_users, app_groups, app_notifications 修正❗️写 plugin_keyword_moderation
    topic.before_save主题发布/编辑表单提交否3----
    topic.form_extra主题发布/编辑表单否2----
    topic.list_rows非系统hook否1---写 plugin_keyword_moderation

    颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。Hook 位于系统循环,或操作确实位于回调循环体内时,会标记“修正❗️”。

    数据字典

    plugin_keyword_moderation

    字段类型可空默认值约束
    idid否-主键、自增
    topic_iduint否-唯一
    user_iduint否--
    keywordstext否--
    statusstring否'pending'-
    reasonstring否''-
    created_atuint否--
    reviewed_atuint否0-
    reviewed_byuint否0-
    #1
  • bbs1org

    @freepayzz 用户审核插件里面有这个功能

    #2
  • 350

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

    🔒 安全问题

    未发现明显问题。SQL 均参数化,输出已转义,审核/设置操作有 CSRF 与权限校验。

    ⚡ 性能问题

    • plugin.php:204 在红区钩子 topic.before_render 内执行 val("SELECT status FROM plugin_keyword_moderation WHERE topic_id=?"),违反红区零 DB 读规则。建议把待审状态按主题 ID 批量预加载到内存,渲染钩子内仅做内存读取。

    🐛 功能/规范缺陷

    • plugin.php:284 注册的 topic.list_rows 钩子在核心中并不存在,回调永远不会执行,导致首页/版块/搜索列表未过滤待审主题,标题仍对普通用户可见,与“待审主题对普通用户不可见”的说明不符。建议改用真实存在的钩子过滤列表(如 topic.before_render 的列表态处理),或向核心反馈补充列表数据钩子。
    • plugin.php:7-9 keyword_moderation_defaults() 用 array_values() 丢掉了关联键,默认值实际依赖各处 ?? 兜底。建议去掉 array_values,返回以 enabled/mode/notify_admins 等为键的关联数组。
    • plugin.php:238/254/269 页面用 need_admin(),审核操作却用 need_manage()/can_manage(),权限口径不一致,仅有内容管理权限(无后台权限)的管理员无法进入审核页。建议统一权限口径。
    • plugin.php:233 样式多处写死 font-size:13px/11px/12px;建议改用 var(--font-size-*) 语义变量。

    ✅ 修复优先级

    优先修复列表过滤失效(核心功能与内容可见性),其次红区 DB 读,再补默认值与权限口径,最后改 CSS 变量。

    #3
  • freepayzz

    旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。

    #4

发表回复

登录后回复