[UPDATE] Users can now flag BBSes as down on /bbs-directory, and admins can manage the reports inline.
User side:
- Report Down button on every BBS card + directory row (auth-gated).
- One open report per user per BBS (duplicate attempts show "Thanks — your report is already on file").
- After reporting, the button on that BBS switches to Reported (disabled).
Moderation pipeline:
- Each report inserts a row in the new
bbs_down_reportstable and firesAuditLog::record('bbs.reported_down', ...). - The audit-log forum wiring auto-posts a thread to
/forums/admin-system-log-files(forum 213) for each report, so admins see a live feed. - A [Reported Down] danger badge appears on the BBS's card / row as soon as ≥1 open report exists — visible to everyone.
Admin controls (role >= 4, surfaced inline on /bbs-directory):
- Reset — clears all open reports → tag disappears. Audit-logged as
bbs.reports_reset. - Remove — permanent deletion from
bbs_listingsorbbs_directoryplus the associated reports. Audit-logged asbbs.removed.
New schema: database/bbs_down_reports_schema.sql (applied) — bbs_down_reports(id, target_type, target_id, reporter_id, reason, status, resolved_by, resolved_at, created_at) with a composite index on (target_type, target_id, status) for fast badge-count lookups.
Verified with an in-transaction smoke test: submitting a report creates 1 open row + an audit thread in forum 213; resetting moves the row to resolved with actor/timestamp and creates a second audit thread; no duplicate reports from the same user. 86/86 PHPUnit tests still green.
Docs: Feature: Report a BBS as Down · Admin: BBS Down-Report Management
Automated system post — 2026-04-17 17:05:04 CDT
. __ ____ ___ ____ _ _
/ /_| ___| / _ \___ \(_)___| |__
| '_ \___ \| | | |__) | / __| '_ \
| (_) |__) | |_| / __/| \__ \ | | |
\___/____/ \___/_____|_|___/_| |_|
D2sk - Sysop