Source: src/Controllers/ForumController.php
Overview
No class-level docblock. Add one at the top of the file.
Extends: App\Controllers\BaseController
Public methods
home(): void
Undocumented.
index(): void
Undocumented.
showForum(string $slug): void
Undocumented.
tagFeatureRequest(string $threadId): void
POST /thread/{threadId}/feature-tag — Set priority/type/status tags on a Feature Requests thread. Authorized to forum mods, category super mods, admins, and super admins. Setting status to "deployed" locks the thread.
tagBugReport(string $threadId): void
POST /thread/{threadId}/bug-tag — Set severity/priority/status/repro tags on a Bug Reports thread. Parallel to tagFeatureRequest. Forum mods, category super mods, admins, and super admins may tag. Setting status to "verified" auto-locks the thread (mirrors fr_status='deployed' behavior on feature requests).
applyToMod(): void
POST /forums/apply-mod — Record a user's interest in moderating a forum or category. Sends a PM to the super admin and fires a confirmation notification back to the applicant.
showCategory(string $slug): void
Undocumented.
showThread(string $slug): void
Undocumented.
createThread(string $slug): void
Undocumented.
storeThread(string $slug): void
Undocumented.
storeReply(string $threadId): void
Undocumented.
deletePost(string $postId): void
Undocumented.
editPost(string $postId): void
Undocumented.
updatePost(string $postId): void
Undocumented.
postHistory(string $postId): void
Undocumented.
restorePost(string $postId): void
Undocumented.
lockThread(string $threadId): void
Undocumented.
pinThread(string $threadId): void
Undocumented.
purgePost(string $postId): void
Undocumented.
confirmDeleteForum(string $slug): void
Undocumented.
deleteForum(string $slug): void
Undocumented.
resignForum(string $slug): void
Undocumented.
createForum(): void
Undocumented.
storeForum(): void
Undocumented.
manageModerators(string $slug): void
Undocumented.
addSubModerator(string $slug): void
Undocumented.
removeSubModerator(string $slug): void
Undocumented.
searchFiles(): void
Undocumented.
bumpThread(string $threadId): void
POST /thread/{threadId}/bump — 50 credit bump pushing the thread to the top of sort=new. Author-only, 1/day.
highlightPost(string $postId): void
POST /forum/post/{postId}/highlight — author-only 24hr highlight for 100 credits.
sponsorThread(string $threadId): void
POST /thread/{threadId}/sponsor — debit credits and pin a thread to the top of its forum for 6 or 24 hours.
staffPick(string $threadId): void
POST /admin/threads/{threadId}/staff-pick — toggle a thread's staff-pick status. Mod+ only. Awards the author 100 credits on set; reverses the award on unset.
setBestAnswer(string $threadId): void
Undocumented.
crosspost(string $threadId): void
Undocumented.
showRules(string $slug): void
Undocumented.
editRules(string $slug): void
Undocumented.
saveRules(string $slug): void
Undocumented.
splitRules(string $raw): array
Split the rules blob into numbered rule entries. Each rule is a blank-line-separated block of Markdown. Empty input returns [].
setUserFlair(string $slug): void
Undocumented.
updateDescription(string $forumId): void
POST /forum/{forumId}/update-description — Moderator edits forum description.
banFromForum(string $forumId): void
POST /forum/{forumId}/ban-user — permanent forum ban. POST /forum/{forumId}/suspend-user — time-based forum suspension. POST /forum/{forumId}/shadow-ban-user — forum-scoped shadow ban.
All three share the same underlying table (forum_bans) with different column combinations:
- banPermanent: expires_at NULL, is_shadow 0
- suspend: expires_at set, is_shadow 0
- shadowBan: is_shadow 1 (expires_at optional)
Forum-scoped restrictions NEVER touch sessions — the target keeps site-wide access. Every action auto-creates an escalation report routed to the moderation queue so Sysops can consider whether the forum-level pattern warrants site-wide action.
suspendFromForum(string $forumId): void
Undocumented.
shadowBanFromForum(string $forumId): void
Undocumented.
banFromCategory(string $categoryId): void
Category-scoped restrictions (CategoryBan). Gated to super-mods of the category or role >= 4. Regular forum mods can see the active category restrictions on the mod-log but cannot issue them — that distinction is what makes category-scope a real escalation above forum-scope.
suspendFromCategory(string $categoryId): void
Undocumented.
shadowBanFromCategory(string $categoryId): void
Undocumented.
unbanFromCategory(string $categoryId): void
Undocumented.
unbanFromForum(string $forumId): void
POST /forum/{forumId}/unban-user — Remove a forum ban.
moveThread(string $threadId): void
POST /thread/{threadId}/move — Move a thread to another forum.
escalate(string $forumId): void
POST /forum/{forumId}/escalate — Escalate an issue to sysops.
modLog(string $forumId): void
GET /forum/{forumId}/mod-log — View moderator action log for a forum.
showForumUnread(string $slug): void
Threads in this forum that have activity after the user's last read.
showCategoryUnread(string $slug): void
Threads across every forum in this category that are new to the user.
showAllUnread(): void
Global "what's new to me" across every forum the user can see.
markAllRead(): void
POST: mark every thread in every forum the user can see as read.
markForumRead(string $slug): void
POST: mark every thread in this forum as read for the current user.
markCategoryRead(string $slug): void
POST: mark every thread in every forum in this category as read.
Auto-generated from source by bin/sync-class-docs.php on 2026-04-21 09:56 CDT. Re-runs overwrite this thread body.
. __ ____ ___ ____ _ _
/ /_| ___| / _ \___ \(_)___| |__
| '_ \___ \| | | |__) | / __| '_ \
| (_) |__) | |_| / __/| \__ \ | | |
\___/____/ \___/_____|_|___/_| |_|
D2sk - Sysop