0
OP New Sysop Apr 18, 2026 12:03pm (edited 29x) view history

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

Log in or register to reply to this thread.