• 233
    私信会话
    ID direct_messages版本 1.4.7插件制作者 233免费356 行 / 29.6 KBHook / 路由
    把往来私信按联系人整理成固定高度的帖子式会话,提供独立入口、未读数量和纯文本消息。
    app/plugins/direct_messages/plugin.php
    开发日志已有 9 条

    个人独立维护项目。

    • bbs1org
      bbs1org
      版本 1.4.7 a38b8ad955a8 更新:支持五级信任等级体系release
    • bbs1org
      bbs1org
      版本 1.4.7 6631fa607844 更新:增加五级信任等级体系权限设置支持
    • bbs1org
      bbs1org
      版本 1.4.6 502c56bde0c6 更新:修复未读bug
    • bbs1org
      bbs1org
      版本 1.3.3 62bdec8525e4 更新:左侧联系人栏会自动拉伸到右侧对话栏的高度。 联系人过多时,仅左侧列表内部滚动
    • bbs1org
      bbs1org
      版本 1.3.2 d9fc380656e4 更新:更新版本
    • bbs1org
      bbs1org
      版本 1.3.1 56466b49c69a 更新:桌面端联系人区域最大高度为对话区高度,联系人过多时显示独立纵向滚动条。 移动端保持页面自然滚动,不限制列表高度。
    • bbs1org
      bbs1org
      版本 1.3.1 ed333eb31407 更新:去掉“我的”消息左侧的竖线
    • bbs1org
      bbs1org
      版本 1.3.0 3d973cc4c553 更新:消息内容改用统一的 markdown_html() 解析,> 引用内容 会生成 <blockquote>。 新增私信内容区域的引用样式,包括左边框、缩进和 muted 文字颜色。 保留 Markdown 安全模式,避免引入不安全 HTML。
    • bbs1org
      bbs1org
      版本 1.3.0 6168f65a1781 更新:个人卡片入口文字改为“我的私信”。 新增会话摘要表,优化私信列表查询性能。 私信发送时增量更新最新消息和未读数量。 未读统计改为读取摘要数据,减少通知表查询。 消息分页改用游标方式,降低深页加载开销。 优化历史私信数据回填逻辑。 增加私信相关数据库索引及幂等迁移处理。 精简联系人和消息查询字段。 优化并发发送时的摘要更新,降低锁冲突风险。
    主楼
  • 质量报告

    插件质量报告

    插件:direct_messages

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    app.boot全站请求启动否5--app_notifications-
    user.menu_links个人卡片/移动端我的菜单(展示位置:个人卡片)否4----
    notification.after_create通知及未读数写入后否3----

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

    数据字典

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

    #1
  • one

    不错,还可以再优化一下:
    1、侧边没有解析Markdown。
    2、如果内容过多会把整个页面拉太长,可以固定到一个值超过后带滚动条。

    Markdown01.png
    私信.png

    #2
  • bbs1org

    个人建议,直接套 看帖页面的布局就行。简单。而且支持大篇幅。如果是这种对话ui,那么,就不应该支持makdown @233

    #3
  • one

    对的。是我表达不清楚。

    #4
  • 233

    补充完整说明: @bbs1org #3 界面已经按意见改成看帖式全宽消息,不再使用左右气泡;消息按纯文本显示,不再解析 Markdown;消息区固定高度并独立滚动,大段内容不会拉长整个页面。@idc #5 的 PostgreSQL 错误也已修复:先在子查询计算 partner_id,外层只按别名 GROUP BY,避免两处绑定参数被 PostgreSQL 当成不同表达式。版本 1.1.1。

    #7
  • idc

    2026-08-11 15:38:42 PDOException: SQLSTATE[42803]: Grouping error: 7 ERROR: column "app_notifications.sender_id" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: SELECT CASE WHEN sender_id=$1 THEN recipient_id ELSE sender_... ^ (index.php:298)

    #5
  • 233

    PostgreSQL 的分组错误已经修复并更新到 1.1.1,详细说明稍后补充。

    #6
  • 350

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

    🔒 安全问题

    未发现明显问题(SQL 全部参数化,输出均已 h() 转义,写操作有全局 CSRF 校验)。

    ⚡ 性能问题

    未发现明显问题(会话列表与用户信息通过 rows_by_ids 批量读取,未读计数有请求级缓存)。

    🐛 功能/规范缺陷

    1. 私有 Hook 未加插件前缀:plugin.php:75 的 notification.direct.allow 与 plugin.php:78 的 notification.direct.sent 占用了核心 notification. 命名空间。规则要求私有 Hook 以插件 ID 开头,建议改为 direct_messages.direct.allow 等。
    2. 读取页面即改状态:plugin.php:113 在 GET 加载私信页时直接调用 direct_messages_mark_read() 修改 app_notifications.read_at 与 app_users.unread_notifications,未走 POST。规则要求修改状态的操作只接受 POST,建议改为独立的 POST 标记已读接口。
    3. 直接改动核心缓存:plugin.php:65-67 写入核心内部全局 $GLOBALS['__me_cache']['unread_notifications'],依赖核心内部实现,易随核心升级失效,建议改用公开 API 同步未读数。

    ✅ 修复优先级

    先改 Hook 前缀与 GET 状态变更,再处理核心缓存耦合。

    #8
  • x

    @233
    paste-20260827-214317.png

    呃,这个现实的私信,能否调整为:我的私信
    不然两个字的话,在一堆四个字里面排列出来,强迫症看了受不了。感谢了!

    #9
  • bbs1org

    版本 1.3.0 更新:
    个人卡片入口文字改为“我的私信”。
    新增会话摘要表,优化私信列表查询性能。
    私信发送时增量更新最新消息和未读数量。
    未读统计改为读取摘要数据,减少通知表查询。
    消息分页改用游标方式,降低深页加载开销。
    优化历史私信数据回填逻辑。
    增加私信相关数据库索引及幂等迁移处理。
    精简联系人和消息查询字段。
    优化并发发送时的摘要更新,降低锁冲突风险。

    #10
  • bbs1org

    版本 1.3.0 更新:
    消息内容改用统一的 markdown_html() 解析,> 引用内容 会生成 <blockquote>。
    新增私信内容区域的引用样式,包括左边框、缩进和 muted 文字颜色。
    保留 Markdown 安全模式,避免引入不安全 HTML。

    #11
  • bbs1org

    版本 1.3.1 更新:
    去掉“我的”消息左侧的竖线

    #12
  • bbs1org

    版本 1.3.1 更新:
    桌面端联系人区域最大高度为对话区高度,联系人过多时显示独立纵向滚动条。
    移动端保持页面自然滚动,不限制列表高度。

    #13
  • bbs1org

    版本 1.3.2 更新:
    更新版本

    #14
  • bbs1org

    版本 1.3.3 更新:
    左侧联系人栏会自动拉伸到右侧对话栏的高度。
    联系人过多时,仅左侧列表内部滚动

    #15
  • x

    非常棒的更新!

    #16
  • 399

    🔁 复核回帖(AI 自动核对,对照 8/18 楼上 350 的审查报告与当前 v1.3.3 源码)

    结论:350 指出的 3 项在本版本(v1.3.3)中均未改动,逐条核对如下:

    1. 私有 Hook 未加前缀:plugin.php 176/179 行的 notification.direct.allow、notification.direct.sent 仍占用核心 notification. 命名空间,未改为 direct_messages.direct.allow 等插件前缀写法。
    1. GET 请求下改写已读状态:plugin.php:246 direct_messages_page() 页面加载分支(含 GET)仍直接调用 direct_messages_mark_read(),会修改 app_notifications.read_at 与 app_users.unread_notifications,未改为独立 POST 接口。
    1. 直接改动核心内部缓存:plugin.php:166-167 仍在直接写 $GLOBALS['__me_cache']['unread_notifications'],依赖核心内部实现细节。

    均为规范/耦合类问题(非安全高危项),未见新增问题;建议后续版本按原报告方向修正。

    #17
  • bbs1org

    版本 1.4.6 更新:
    修复未读bug

    #18
  • bbs1org

    版本 1.4.7 更新:
    增加五级信任等级体系权限设置支持

    #19
  • bbs1org

    版本 1.4.7 更新:
    支持五级信任等级体系

    #20

发表回复

登录后回复