XIUNO BBS X版 更新记录贴 20260701

贰先生 管理 21小时前

插件缓存优化(6个插件新增 CacheHelper::remember 缓存 + registerKeys 注册)

  1. CheckinService: getStats/getTodayCheckinUsers/getMoodStats 添加 CacheHelper::remember 缓存(60s TTL),减少侧栏每页查库 [缓存失效]

  2. MedalService: getAllMedals/getRecentGrants/getTopUsers 添加 CacheHelper::remember 缓存(300s/60s/300s TTL),grantMedal/revokeMedal/wearMedal/unwearMedal/createMedal/updateMedal/deleteMedal 时调用 clearCache 清除 [缓存失效]

  3. TagService: findByTid/findFeatured 添加 CacheHelper::remember 缓存(300s TTL),addTagToThread/removeTagFromThread 时清除缓存 [缓存失效]

  4. StatusService: getStatusList/getOverviewStats/getContributors 添加 CacheHelper::remember 缓存(300s/60s/300s TTL),addOption/updateOption/deleteOption/setThreadStatus 时清除缓存 [缓存失效]

  5. InviteService: getRecentInviteLogs/getInviteRankList 添加 CacheHelper::remember 缓存(60s/300s TTL),sendRewards 时清除缓存 [缓存失效]

  6. MagicService: getActiveKeywords 添加 CacheHelper::remember 缓存(300s TTL),addKeyword/updateKeyword/deleteKeyword 时清除缓存 [缓存失效]

  7. 所有6个插件均添加 CacheHelper::registerKeys() 注册缓存键,后台统计面板可显示已注册缓存键 [状态不同步]

缓存预热修复 + Redis 密码验证加强 + 缓存统计持久化 + DEBUG 模式下 Redis 错误不输出到页面

  1. 缓存预热全站统计(runtime)调用 runtime_init() 代替 runtime_get(),后者需要参数 $k 且只读取不重建 [逻辑错误]

  2. Redis 测试连接增加 PING 验证和实际读写测试,确保密码错误或权限不足时返回失败而非成功 [配置不同步]

  3. 缓存设置保存前增加连接验证,Redis/Memcached 密码错误或地址不可达时拒绝保存,避免保存后网站白屏 [配置不同步]

  4. 同步 zh-cn/zh-tw/en-us 语言包新增 admin_cache_connection_failed [语言包不同步]

  5. 缓存命中/未命中统计持久化到缓存(24小时TTL),后台页面可读取跨请求累积的命中率,不再显示全0 [状态不同步]

  6. 预热结果改为页面内 alert 持久显示(可关闭),不再用 toast 一闪而过 [状态不同步]

  7. 缓存驱动 error() 方法改用 xn_log 写日志,不再 trigger_error 输出到页面;DEBUG 模式下 Redis 连接失败时 trigger_error 会导致 headers already sent,页面渲染中断,帖子列表不显示 [信息泄露]

  8. thread.func.php 新增 thread_soft_delete/thread_soft_delete_batch/thread_restore/thread_restore_batch 四个软删除与恢复函数 [新功能]

  9. post.func.php 新增 post_soft_delete/post_restore 两个软删除与恢复函数 [新功能]

notify_read 空 body 修复 + 未读数实时更新

  1. view/htm/my_notify.htm markRead URL 从 str_replace('read','read-NID',url) 改为 route_url('my_notify_read_nid',['nid'=>'NID']),修复路径风格伪静态下路由不匹配 [伪静态路径]

  2. view/htm/footer.inc.htm notify_read_template 同上改用 route_url 生成 [伪静态路径]

  3. route/my.php 开头添加路径风格伪静态下 notify 子路由修正:param(1)='notify'+param(2)='read' 自动合并为 $action='notify_read' [伪静态路径]

  4. route/my.php notify_read 分支 nid 取值兼容路径偏移:param(2) 非数字时自动取 param(3) [伪静态路径]

  5. route/my.php 末尾添加 http_404() 默认处理,避免未匹配 action 返回 200+空 body [边界未校验]

  6. admin/view/htm/thread_list.htm URL 模板从 replace('{page}') 改为 replace('PAGE'),规范占位符命名 [伪静态路径]

  7. view/htm/my_notify.htm markRead 成功后调用 updateNotifyBadge() 更新顶部导航未读数+铃铛图标,原来只在 count=0 时清空不更新数字和图标 [状态不同步]

  8. view/htm/my_notify.htm 全部标已读也调用 updateNotifyBadge(0) 更新铃铛图标 [状态不同步]

  9. view/js/bbs.js updateNoticeBadge() 添加铃铛图标更新逻辑,与 updateBadge() 保持一致 [状态不同步]

  10. view/js/bbs.js 添加 noticeReadUpdated 事件监听器,htmx 单条标记已读后更新顶部导航徽章 [状态不同步]

  11. route/my.php notify_read/readone htmx 分支添加 HX-Trigger:noticeReadUpdated 返回 unread_count [状态不同步]

  12. route/my.php notify delete htmx 分支添加 noticeReadUpdated 事件,删除未读通知时同步更新顶部导航未读数 [状态不同步]

评论排序(sort=hot/desc)不生效修复

  1. route/thread.php 置顶评论排序逻辑 usort 中非置顶评论固定按 pid 升序排列,覆盖了 SQL 层面的 likes DESC/pid DESC 排序结果,导致 sort=hot 和 sort=desc 无效 [逻辑错误]

  2. 修复:将 usort 改为分组法——置顶评论提取到前面,非置顶评论保持 SQL 查询原始顺序(尊重用户选择的排序方式) [逻辑错误]

登录回跳与举报通知等修复

  1. 修复登录回跳:user_http_referer() 增加 param('next') 支持(表单字段名不匹配导致回跳失效),放宽 URL 正则允许无路径 URL [字段名不一致]

  2. 修复举报管理员通知:增加每次举报通知管理员(notify_admins_new),管理员查询覆盖 gid=1,2,使用 notify_create 替代直接 SQL [逻辑错误]

  3. 修复 IP 获取:ip() 函数增加本机反向代理自动识别,当 REMOTE_ADDR 为 127.0.0.1/::1 时自动从 X-Forwarded-For 获取真实 IP [配置不同步]

  4. 签到插件添加 ip 字段:install.php 添加 ALTER TABLE 升级,CheckinService 写入日志时记录 $longip [边界未校验]

  5. 邀请插件添加 ip 字段:install.php 添加 ALTER TABLE 升级,InviteService 写入邀请日志时记录 $longip [边界未校验]

  6. 修复附件上传 500 错误:finfo_file 容错处理(magic 数据库缺失时不崩溃),自动创建上传临时目录 [边界未校验]

  7. 修复表前缀硬编码:route/search.php 7处和 lib/HealthCheckService.php 3处硬编码 bbs_ 表前缀改为动态获取 [变量未定义]

  8. 修复后台版块添加 Icon 多余冒号:forum_create.htm 模板中 label 冒号与语言包冒号重复 [状态不同步]

  9. 后台版块列表增加版块ID(FID badge)、版块链接(url函数生成)、版主显示(用户名链接)

  10. 后台用户组权限语言包优化:PermissionService 硬编码中文标签改为 lang() 动态获取,同步 zh-cn/zh-tw/en-us 三个语言包 [语言包不同步]

  11. 后台导航设置:分类标题增加 icon 选择(移除 d-none 条件),排序列移至最后一列

  12. 后台主题列表:硬编码颜色名改为 lang() 调用 [语言包不同步]

  13. 缓存目录确认:cache_file connect() 已实现自动创建 tmp/cache/ 目录

  14. 帖子详情页左侧栏按钮重构:圆形白底(4rem)、居中图标(20px)、右上角角标数字(attr(badge)),点赞/收藏激活后图标和角标变主色(bg-primary),暗黑模式自适应(var(--bs-body-bg))[状态不同步]

  15. 左侧栏按钮悬浮提示:title 改为 data-tip + CSS ::before 即时提示,出现在按钮右侧 [配置不同步]

  16. 举报插件侧栏按钮同步优化为圆形白底样式 [状态不同步]

最新回复
  • 段先生 Lv2
    这个更新内容写的确实非常详细😁,有朝一日,新的生态起来了,作者你再回望曾经的这段日子,会非常感慨吧
    15小时前
  • 值得等待的生态就是好生态!
    13小时前

请先登录后再回复 登录

uid:1 管理
关注
随遇而安,随缘而行
发帖 40
评论 236
粉丝 9
关注 1
发新帖
目录

扫码手机打开本帖