You've already forked Arcturus-Morningstar-Extended
mirror of
https://github.com/duckietm/Arcturus-Morningstar-Extended.git
synced 2026-06-19 23:16:19 +00:00
4e47dbee16
The User Info panel reads its CFH / Cautions / Bans / Trade locks counters from `users_settings.cfh_send` / `cfh_warnings` / `cfh_bans` (via totalBans) / `tradelock_amount`. Historically only `cfh_send` was ever incremented (by `InsertModToolIssue` on CFH submit), so a user could accumulate any number of Alert / Mute / Ban / TradeLock sanctions without the stats reflecting it — every panel showed all zeros even on accounts with a long sanction history visible in the modern `sanctions` table. The two systems aren't going away — `ModToolSanctions` (the modern one) tracks individual sanction events with probation timestamps, while the legacy `users_settings.cfh_*` columns are flat counters the ModTool UI displays. Both need to stay in sync. Wire them up: `ModToolManager.bumpUserSettingCounter(userId, column)` Static helper, column-whitelisted (`cfh_warnings` / `cfh_bans` / `cfh_abusive` / `tradelock_amount`) to keep the dynamic SQL safe. Single UPDATE per call; SQL exceptions logged, never thrown. `ModToolSanctionAlertEvent`, `ModToolSanctionMuteEvent` → bump `cfh_warnings`. Mute is a punitive but non-banning action; both it and Alert are recorded as a warning on the legacy counter, matching what the Cautions stat card represents in the new UI. `ModToolSanctionBanEvent` → bump `cfh_bans`. The `totalBans` field the composer sends ALREADY counts entries in the `bans` table, so the wire field reflects reality immediately — this column bump is a defensive duplicate so any code that reads `users_settings.cfh_bans` directly (e.g. plugin scripts, CMS dashboards) stays in sync. `ModToolSanctionTradeLockEvent` → bump `tradelock_amount`. Mirrors what `AllowTradingCommand` already does for the command-line path. `ModToolManager.closeTicketAsAbusive` → bump `cfh_abusive` for the REPORTER (issue.senderId), not the reported user. The Abusive counter measures false reports filed by the user, so it belongs on whoever opened the CFH that got closed as abusive. No client-side changes — counter columns are unchanged, only the write paths are.