Nahlasovanie a automatické moderovanie
Komentáre sú subjektom nahlásení cez Reports for Laravel (Comment implementuje Reportable): nahlasujte urážlivé či spamové komentáre s deduplikáciou, typovanými dôvodmi aj v mene hosťa. Nahlasovateľ sa vždy odovzdáva explicitne:
use RoundlyConsulting\Reports\Facades\Reports;
Reports::report($comment)->by($user)->for('spam')->create();
Reports::report($comment)->asGuest($fingerprint)->for('abuse')->create();
$comment->hasBeenReported();
$comment->isReportedBy($user);Moderovacia fronta
// Moderation queue on the CommentQuery builder:
Comments::for($post)->mostReported()->get();
Comments::for($post)->reportedMoreThan(3)->get();
Comments::for($post)->withReportCounts()->get(); // each row: ->reports_countAutomatické skrytie
Keď sa nahlásenie potvrdí (ReportResolved) alebo komentár prekročí globálny reports.threshold (ReportThresholdReached), listener SyncCommentVisibilityFromReports komentár skryje — stav sa zmení na hidden a odošle sa CommentHidden rovnako ako pri ručnom skrytí. Subjekty, ktoré nie sú komentármi, ignoruje a koná len pri aktuálne schválenom komentári, takže nikdy neskryje dvakrát. Obe cesty sa riadia konfiguráciou:
// config/comments.php
'moderation' => [
'on_resolved' => 'hide', // null disables the upheld-report path
'auto_hide' => true, // false ignores ReportThresholdReached
],Cesta cez limit funguje, len ak je v konfigurácii Reports nastavený reports.threshold — predvolene je tam null (vypnuté).
Schválenie viacerými moderátormi
Reports rieši nahlásenia cez Approvals for Laravel, takže schválenie viacerými moderátormi nevyžaduje žiadny ďalší kód. Moderátori sú uložené Eloquent modely — typicky váš User s traitom GivesApprovals z Approvals (implements GivesApprovalsInterface), ktorý pridáva vzťah givenApprovals():
use RoundlyConsulting\Approvals\Enums\ApprovalRule;
use RoundlyConsulting\Reports\Exceptions\ModeratorRequiredException;
use RoundlyConsulting\Reports\Facades\Reports;
Reports::moderate($report)->requiring([$alice, $bob])->rule(ApprovalRule::Quorum)->quorum(2)->open();
Reports::resolve($report, by: $alice); // 1/2 — comment stays visible
Reports::resolve($report, by: $mallory); // not named → ModeratorRequiredException, nothing recorded
Reports::resolve($report, by: $bob); // quorum reached → comment hiddenKým je žiadosť otvorená, rozhodovať môžu len moderátori uvedení v requiring([...]) — alebo ich zástupca v Approvals; ktokoľvek iný, ako aj volanie bez by:, dostane ModeratorRequiredException z Reports.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.