fix(report): fall back to schema defaults when the ban/report section was never saved
ban_settings()/report_settings() read the raw aksrt_settings option, so on sites that never saved the ban/report admin section the keys are absent and the preset reasons resolved to an empty list (frontend hard-coded fallback). Read the section through SchemaProvider instead — read_section_settings merges schema defaults, matching the reference theme _pz(key, default) semantics. Also drop the dead user_report_categories parse chain that fed a key nobody stores or consumes.
This commit is contained in:
@@ -105,6 +105,12 @@ test('ban/report settings page mirrors the reference theme schema', () => {
|
||||
assert.match(runtime, /ban_settings\(\): array/)
|
||||
assert.match(runtime, /report_settings\(\): array/)
|
||||
assert.match(runtime, /user_report_s/)
|
||||
// 缺键回退 schema 默认值(参考主题 _pz 语义):运行时经 read_domain 读取,
|
||||
// 裸 get_all() 会让未保存过分区的站点拿不到 ban_preset_reason 默认值。
|
||||
assert.match(runtime, /read_domain\('users', 'report'\)/)
|
||||
// 死链清理:user_report_categories 从不是真实存储键,解析器必须删除。
|
||||
assert.ok(!runtime.includes('parse_report_categories'), 'dead parse_report_categories must stay removed')
|
||||
assert.ok(!runtime.includes('user_report_categories'), 'dead user_report_categories key must stay removed')
|
||||
const appeal = read('src/User/BanAppeal.php')
|
||||
assert.match(appeal, /ban_appeal_keys/)
|
||||
assert.match(appeal, /ban_appeal_desc/)
|
||||
|
||||
Reference in New Issue
Block a user