新增「未公开」状态;待审核改列表式,只留通过并公开
用户要求:
1. 待审核/全部问题都用列表形式
2. 待审核去掉「关闭说明」整块,后面只加一个「通过并公开」按钮
3. 标题本身就是进管理页的链接,去掉「进入管理」
4. 「未公开」应当是一种状态:提交后初始状态不是「待处理」而是「未公开」
状态流转(用户定义):
提交 → 未公开
├─ 通过并公开 → 待处理 → 处理中 → 已解决 → 已关闭
└─ 直接关闭 → 已关闭(不经过待处理)
每次状态变更、每次有人回复,都给提问人发信
实现:
- statuses 新增 hidden「未公开」,sort=0 排最前,其余顺延
幂等迁移:老库检测到没有 hidden 就整体后移一位再插入,
并把 visible=0 且 status=open 的存量数据归到 hidden
- new.php 初始状态按可见性决定:未公开→hidden,公开→open
(以前一律写 open,后台「待审核」里显示的全是「待处理」,状态反映不出事实)
- approve 动作:visible=1 且 hidden→open,并用更新后的行渲染邮件
- 详情页「通过并公开」按钮原来传原状态(未公开时通过后仍是未公开),改为固定传 open
- 待审核查询改为 status=hidden(兼容老数据 visible=0 且 open),
不再用 visible=0 AND status<>closed —— 那个条件会把「已关闭但未公开」也收进来
- 新增 fb_admin_pending_row() 列表行渲染:标题即链接、右侧单个按钮
- 删除 fb_admin_thread_card() 及「关闭说明」表单
- 新增 .plist/.prow 列表样式与 .st-hidden 状态徽标(中性灰)
- mailer 补 hidden 状态的文案,避免落到兜底
验证(线上真实数据):6 个状态齐全、提交落 hidden、
待审核能查到且不含已公开、通过后转 open 并移出待审核、
后续 doing/resolved/closed 推进正常、6 个状态邮件均能渲染、
待审核行结构 10 项断言全过(无关闭说明/无 note/无进入管理/标题可点)。
测试数据已清理,用户原有 4 条数据完好。
This commit is contained in:
+24
-6
@@ -399,18 +399,36 @@ SQL
|
||||
}
|
||||
}
|
||||
|
||||
// 3) 状态:空表时灌 5 个(4 个原有 + 新增「不予考虑」)
|
||||
// 3) 状态:空表时灌全部状态
|
||||
if ((int)$pdo->query('SELECT COUNT(*) FROM statuses')->fetchColumn() === 0) {
|
||||
$rows = [
|
||||
['open', '待处理', '您提交的反馈已收到,我们正在处理中。', 0],
|
||||
['doing', '处理中', '我们正在跟进这个问题,有进展会在这里同步。', 1],
|
||||
['resolved', '已解决', '这个问题已经处理好了,欢迎回来验证一下。', 2],
|
||||
['closed', '已关闭', '这个反馈已关闭,如有新情况可以重新提交。', 3],
|
||||
['wontfix', '不予考虑', '经评估这个反馈暂不处理,感谢你的建议。', 4],
|
||||
// key_name 名称 给用户看的说明(进邮件) 排序
|
||||
['hidden', '未公开', '您的反馈已提交,正在等待管理员查看。', 0],
|
||||
['open', '待处理', '您的反馈已公开,我们已收到,会尽快安排处理。', 1],
|
||||
['doing', '处理中', '我们正在跟进这个问题,有进展会在这里同步。', 2],
|
||||
['resolved', '已解决', '这个问题已经处理好了,欢迎回来验证一下。', 3],
|
||||
['closed', '已关闭', '这个反馈已关闭,如有新情况可以重新提交。', 4],
|
||||
['wontfix', '不予考虑', '经评估这个反馈暂不处理,感谢您的建议。', 5],
|
||||
];
|
||||
$st = $pdo->prepare('INSERT INTO statuses(key_name, name, user_note, sort_order, enabled)
|
||||
VALUES(?,?,?,?,1)');
|
||||
foreach ($rows as $r) { $st->execute($r); }
|
||||
} else {
|
||||
/* 老库补「未公开」状态。
|
||||
* 2026-11-03 新增:用户提交后先落「未公开」,审核通过才转「待处理」——
|
||||
* 「未公开」本身就是一种状态,不该只靠 threads.visible=0 这个附加字段隐式表达。 */
|
||||
$hasHidden = (int)$pdo->query("SELECT COUNT(*) FROM statuses WHERE key_name = 'hidden'")->fetchColumn();
|
||||
if ($hasHidden === 0) {
|
||||
// 先把现有状态整体后移一位,给「未公开」腾出 0 号位
|
||||
$pdo->exec('UPDATE statuses SET sort_order = sort_order + 1');
|
||||
$pdo->prepare('INSERT INTO statuses(key_name, name, user_note, sort_order, enabled)
|
||||
VALUES(?,?,?,?,1)')
|
||||
->execute(['hidden', '未公开', '您的反馈已提交,正在等待管理员查看。', 0]);
|
||||
|
||||
/* 存量数据:visible=0 且状态还是「待处理」的,语义上就是「没公开」,
|
||||
* 归到「未公开」;visible=1 的保持「待处理」不动。 */
|
||||
$pdo->exec("UPDATE threads SET status = 'hidden' WHERE visible = 0 AND status = 'open'");
|
||||
}
|
||||
}
|
||||
|
||||
// 4) 回填老帖子:software_id / category_id(只填 NULL 的,重复执行无副作用)
|
||||
|
||||
Reference in New Issue
Block a user