XIUNOX 更新日志 2026-08-22 [复制链接]

管理员组

[xnx_quest] 1.4.17 → 1.4.18

  • 修复任务列表缓存注册键与实际键不一致:$cacheKeys 注册的是 quest_list,而 getQuestList 实际使用的键是 quest_list_all / quest_list_enabled。file/mysql/redis 驱动有原生 deleteByPrefix 不受影响;memcached 驱动(无原生前缀删除,靠注册表回退逐键删除)下任务列表缓存永远删不掉,后台新建/删除任务后列表只能等 300s TTL 自然过期才刷新。已改为注册两个实际键。


[核心] Redis 缓存驱动 SCAN 空页缺陷修复

  • cache_redis.class.php + xiunophp.min.php 同步修复:旧写法 while($keys = $link->scan($iterator, $pattern, 100)) 在迭代遇到空数组页时把空数组当 false 提前退出循环,键空间越大首页为空概率越高,前缀删除静默失败返回 0 键——表现为所有插件的 pluginDeletePrefix 失效(后台新建/删除任务、签到等缓存清理不生效,数据只能等 TTL 自然过期),后台"清空缓存"同样失效。

  • 改为 while(TRUE) + 仅 scan 返回 FALSE 或游标归零时退出,空页继续迭代。

  • 顺带修复 cache_redis.class.php truncate() 传入 $this->cachepre 被拼成 bbs_bbs_* 恒匹配不到键的双前缀问题。

  • 部署后需重启 PHP-FPM 或清 OPcache 使 min.php 新字节码生效。


[核心] 新增插件通知聚合中心

统一三通道门面 plugin_notify_fire()(站内消息 + 邮件 + 红点一次调用分发,支持 throttle 节流/通道限定/接收者与邮箱覆盖,委托 AdminNotifyService 复用其 SMTP/管理员查询能力)。

  • 红点拉取式聚合plugin_notice_count_all() 遍历已启用插件的 hook/plugin_notice_count.php 隔离执行收集 count/url,KV 聚合单键 core_plugin_notice TTL 60s 自愈。

  • 后台通知设置页:新增 插件 → 通知设置 页(全局默认提醒邮箱、每插件三通道开关+专属邮箱、测试邮件预填当前管理员邮箱)。

  • 侧边栏与列表红点:侧边栏插件菜单聚合徽章(>99 显示 99+),插件列表卡片红点角标(有 url 时点击直达待处理页)。

  • 开发者文档docs/plugindev/18-plugin-notify-hub.md 完整手册 + docs/xiunox-plugin-dev/references/notify-patterns.md 速查版。

  • 三语新增 27 个语言键。


[xnx_verify] 1.2.9 → 1.3.1

1.3.0

  • 试点接入通知聚合中心:新增 hook/plugin_notice_count.php 红点数据源(待审核认证申请实时计数)。

  • 提交申请通知升级为 plugin_notify_firenew_pending 事件,300s 节流,旧核心回退 AdminNotifyService::audit 兼容)。

  • 审核通过/拒绝后主动失效红点聚合缓存,待办清零时清节流键。

1.3.1

  • 管理员通知配置整合到统一通知设置中心:设置页移除旧"管理员通知"区块,替换为跳转提示卡片。

  • upgrade.php 幂等迁移旧值到 plugin_notify_config,迁移后删除旧键;install.php 新装不再写入旧键。

  • 三语清理 7 个旧键,新增 2 个迁移提示键。


[xnx_quest] 1.4.18 → 1.4.19

  • 接入通知聚合中心:新增 hook/plugin_notice_count.php 红点数据源(复用 getPendingCount 与后台审核 Tab badge 同口径缓存)。

  • 两个申请入口(submitApplication / submitCustomApplication)提交成功后调用 plugin_notify_firenew_pending 事件 300s 节流,双入口共享同事件防刷屏)。

  • reviewApplication 审核通过/拒绝后主动失效红点缓存,待办清零清节流键。

  • 三语新增 quest_notify_admin_subject/body


[xnx_medal] 1.0.8 → 1.0.9

  • 新增红点数据源(待审核勋章申请计数)。

  • 勋章申请提交通知升级 plugin_notify_firenew_pending 事件 300s 节流,旧核心回退 audit+ignore_enabled)。

  • auditApply 审核后红点实时消失、待办清零清节流键。

  • 设置页移除旧通知表单,替换为跳转统一设置页提示卡片。

  • upgrade.php 幂等迁移旧值到 plugin_notify_config

  • 三语清理 7 个旧键,新增 2 个迁移提示键。


[xnx_ad_selfbuy] 1.3.3 → 1.3.4

  • 新增红点数据源(待审核广告订单计数,URL 带 tab=audit)。

  • createOrder 新订单通知升级 plugin_notify_firenew_pending 事件 300s 节流)。

  • auditOrder 审核后红点实时消失、待办清零清节流键。

  • 后台管理页移除旧通知配置区块,替换为跳转提示卡片;upgrade.php 幂等迁移。

  • 三语清理 7 个旧键,新增 2 个迁移提示键。


[xnx_appcenter] 1.15.35 → 1.15.37

1.15.36

  • 接入通知聚合中心(双审核流):新增红点数据源(待审应用 + 待审开发者双表合计,URL 指 app_audit Tab)。

  • 应用提审两处升级 plugin_notify_fire 共享 new_pending 事件,开发者申请用 dev_new_pending 独立事件,均 300s 节流。

  • 审核后红点实时消失、各自待办清零清对应节流键。

  • 设置页移除旧通知区块,替换为跳转提示卡片。

  • upgrade.php 幂等迁移(替换旧 v1.5.0 补键块防打架)。

  • 三语清理 9 个旧键,新增 2 个迁移提示键。

1.15.37

  • 修复 PNG 校验误伤下载包/截图:promoteAttach 为图标/截图/下载包共用函数,v1.15.36 加在函数内部的 PNG 校验导致编辑应用上传 zip 或截图时误报「应用图标仅支持 PNG」;改为 $must_png 参数,仅图标两个调用点传 true,截图与下载包不校验。


[xnx_report] 1.0.2 → 1.0.3

  • 新增红点数据源(待处理举报计数)。

  • 核心 ReportService::notifyAuditAdminsAdminNotifyService::audit 升级 plugin_notify_firenew_pending 事件 300s 节流)。

  • maybeClearAuditDebounce 开头加 plugin_notice_flush 覆盖全部处理入口。

  • 设置页移除旧通知区块(kv+setting 双写两处清键)。

  • upgrade.php 重写为幂等迁移(从 kv 与 setting 表两处读旧值迁移)。

  • 语言包清理 7 个旧键,新增 2 个迁移提示键。


[xnx_friendlink] 1.1.2 → 1.1.3

  • 新增红点数据源(待审核友链申请计数,URL 指向插件独立后台管理页)。

  • route/apply.phpnotify_create(仅站内消息)升级 plugin_notify_fire 三通道(new_pending 事件 300s 节流,旧核心回退保留原 notify_create),硬编码中文消息改 lang 键。

  • 审核后红点实时消失、待办清零清节流键。

  • 设置页移除 notify_admin_on_apply 开关,新增跳转提示卡片。

  • upgrade.php 新建幂等迁移。

  • 三语新增 4 个通知语言键。


[xnx_home_block] v1.0.5

  • 帖子列表新增置顶帖(仅全站置顶)、公告帖 Tab。

  • 后台新增帖子/会员列表 Tab 多选开关(勾选启用 + 序号自定义排列顺序,全部不勾即隐藏该区域)。

  • 推荐贴 ID 输入框改为单行,支持英文逗号或回车分隔。


[xnx_recharge] 积分充值插件 v1.0.0 → v1.0.3

v1.0.0(骨架)

  • conf.json 预登记 10 个 hook 点。

  • install.php 建表 xnx_recharge_plan / xnx_recharge_order(含 order_no 唯一键与三组查询索引)+ 16 项默认支付配置。

  • uninstall.php DROP 两表 + setting_delete

  • discover_register.php 发现页自注册。

  • model_inc_file.php 注册三个 Service 占位类(RechargeService/AlipayService/WechatPayService)。

  • model_cron_5_minutes_end.php 定时关单 hook。

  • 三语语言包 81 键。

v1.0.1(AlipayService)

  • RSA2 签名/验签(请求签名保留 sign_type,通知验签剔除 sign/sign_type)。

  • 当面付 precreate(同步响应验签+斜杠二次验签兜底)、wap.pay 跳转 URL。

  • 异步通知验签与金额元/分字符串精确换算,密钥 PEM 头自动补全(PKCS#8/PKCS#1 双格式探测)。

v1.0.2(支付异步回调链路)

  • hook/index_inc_route_before.php 在全局 CSRF 前分发 recharge-notify-alipay/wechat 路由。

  • route/notify.php 实现支付宝 RSA2 验签入账 + 微信 APIv3 验签解密入账,验签失败走 queryOrder 查单兜底,幂等由 completeOrder 行锁保证。

v1.0.3(前台充值功能)

  • hook/model_route_table_end.php 注册 recharge/recharge-pay/recharge-status/recharge-return/recharge-notify-* 六条路由。

  • route/recharge.php 四分支:默认充值页、pay 下单、status 轮询、return 同步回跳。

  • view/htm/recharge.htmpay_result.htm 三栏骨架,含余额三卡、套餐网格、渠道卡、扫码 Modal。

  • static/js/recharge.js 原生 IIFE(套餐/渠道单选联动、fetch POST、二维码复用实例、3s 轮询、AbortController 超时)。

  • static/css/recharge.css 卡片选中态(border 高亮+CSS 变量适配暗色)。


[文档] 插件通知聚合中心接入文档

  • 新增 docs/plugindev/18-plugin-notify-hub.md 完整手册(三通道架构/红点 hook 协议/fire 参数表/旧通知配置迁移规范/接入检查清单/xnx_verify 范例)。

  • 新增 docs/xiunox-plugin-dev/references/notify-patterns.md 速查版。

  • SKILL.md 速查参考与 Hook 选择速查表、双 README 导航、两版 hooks-catalog 均登记 plugin_notice_count.php 协议 hook。

  • docs/plugin-notify-guide.md 改为跳转 stub(单源维护)。


[优化] 统一通知设置页

  • 全局默认提醒邮箱 placeholder 示例改为逗号分隔双邮箱样式,tip 文案注明“支持填写多个,用逗号分隔”(实际解析早已支持逗号/分号/空格/换行分隔并自动去重校验,本次仅补 UI 提示),三语同步。

最新回复
  • xiunox 一级用户组

    本次更新重点清晰:核心层修复了 memcached 与 Redis 前缀删除的隐患,并新增统一通知聚合中心,整体架构向“可插拔、可审计”演进。几点提醒:

    1. Redis scan 空页问题修复很关键,建议部署后确认 OPcache 已刷新,避免旧字节码导致“假修复”;
    2. 通知聚合中心采用了 KV 聚合 + TTL 自愈,注意多实例并发时 throttle 的原子性需依赖 Redis/MySQL 锁,避免通知重复;
    3. 各插件升级迁移逻辑均已幂等,但仍建议升级前先备份 kvsetting 表,尤其是 xnx_appcenter 这类多表迁移场景。

    总体质量扎实,期待后续版本。【 AI 自动回复,仅供参考】

    21天前

请先登录后再回复 登录