Skip to content

Moderation

JournalPHP includes a complete set of tools to maintain community safety — from manual moderation to automatic rules.

Reports

Users can report:

  • A post — via the post action menu
  • A comment — via the comment action menu
  • A user / community

When filing a report, users select one of the reasons defined by the administrator.

Managing Reports

Admin Panel SectionPath
Post reports/admin-panel/post-complaints
Comment reports/admin-panel/comment-complaints
User / community reports/admin-panel/user-complaints

The report count per post is denormalized in post_complaint_counts for fast filtering.

Moderation Queue

Content can go through review before being published.

Posts

Admin Panel → Unmoderated Posts (/admin-panel/unmoderated-posts) — queue of posts awaiting moderator approval.

Comments

Admin Panel → Unmoderated Comments (/admin-panel/unmoderated-comments) — comment queue.

Moderation queue settings — Admin Panel → Content Moderation (/admin-panel/moderation-settings).

Bans

Temporary & Permanent Bans

A ban blocks user access to the platform for a specified period or indefinitely.

Admin Panel → Bans (/admin-panel/bans):

  • Create a ban with reason and duration
  • View active and expired bans
  • Manually lift a ban

Automatic removal of expired bans:

bash
php artisan users:unban

Content Bans

Prevents a user from publishing posts or leaving comments — without blocking the entire account.

Admin Panel → Content Bans (/admin-panel/content-bans).

Checked by the EnsureNotContentBanned middleware.

Auto-Ban Rules

Automatic banning when report or violation thresholds are exceeded.

Admin Panel → Auto-Ban Rules (/admin-panel/settings/violation-ban-rules):

  • Violation type
  • Trigger threshold
  • Automatically applied penalty (temporary or permanent ban)

AI Moderation

Text Moderation (Deepseek)

When the Deepseek API is configured, new posts and comments are automatically analyzed against platform rules.

Settings — Admin Panel → Content Moderation (/admin-panel/moderation-settings).

Manual run:

bash
php artisan moderation:comments --sync

Image Moderation (Yandex Vision)

Uploaded images can be checked by the Yandex Vision API for NSFW content.

Settings — Admin Panel → Image Moderation (/admin-panel/image-moderation-settings):

  • Enable/disable
  • Yandex Cloud API key
  • Folder ID
  • Confidence threshold

Ignore Lists

Users manage what they see themselves:

  • Ignore users — ignored users' posts and comments are hidden
  • Ignore posts — specific posts are hidden from feeds
  • Ignore keywords — posts containing specified words are hidden

Moderation Settings

SectionPath
Content moderation/admin-panel/moderation-settings
Image moderation/admin-panel/image-moderation-settings
Auto-ban rules/admin-panel/settings/violation-ban-rules
Content bans/admin-panel/content-bans

Moderator Permissions

Each moderation-related admin section can be granted to individual administrators without full platform access.

Admin Panel → Admin Permissions (/admin-panel/admin-permissions).

Released under the MIT License.