---
title: "Nahlásenia a moderácia — Posts for Laravel | Roundly"
description: "Nahlásenie príspevku s ochranou pred duplicitami aj od hostí, fronta na kontrolu, schválenie viacerými moderátormi a automatické stiahnutie."
url: https://roundly-consulting.com/sk/open-source/navody/posts-for-laravel/nahlasenia-a-moderacia
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Posts for Laravel](https://roundly-consulting.com/sk/open-source/navody/posts-for-laravel.md)

# Nahlásenia a moderácia

Priložený model Post implementuje Reportable cez concern HasPostReports, postavený na reports-for-laravel. Nahlasujúceho vždy odovzdávate explicitne:

```php
use RoundlyConsulting\Reports\Enums\Reason;
use RoundlyConsulting\Reports\Facades\Reports;

Reports::report($post)
    ->by($user)
    ->for(Reason::Spam)
    ->because('Obvious spam.')
    ->create();

// Anonymous / guest report:
Reports::report($post)->asGuest(hash('sha256', $request->ip()))->for('spam')->create();
```

Ochranu pred duplicitami, zoznam povolených dôvodov a ich názvy zabezpečuje reports: duplicitné nahlásenie vyhodí DuplicateReportException, neznámy dôvod UnknownReportReasonException.

## Fronta na kontrolu

Frontu príspevkov na kontrolu zostavíte priamo z dotazu na Post:

```php
use RoundlyConsulting\Reports\Enums\Status;

$post->hasBeenReported();                        // bool
$post->isReportedBy($user);                      // bool
$post->reportsCount(Status::Pending);            // int
$post->reports;                                  // every report on the post
$post->pendingReports;                           // pending reports only

Post::query()->withReportCounts()->get();        // eager reports_count
Post::query()->mostReported()->paginate();       // by total report count
Post::query()->reportedMoreThan(5)->get();       // over a threshold
```

## Schválenie viacerými moderátormi

reports rieši nahlásenia cez approvals-for-laravel, takže nahlásenie môže pred uzavretím vyžadovať súhlas viacerých moderátorov. Moderátori sú uložené Eloquent modely — zvyčajne váš User s traitom GivesApprovals z approvals, ktorý pridá reláciu givenApprovals():

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Approvals\Interfaces\GivesApprovalsInterface;
use RoundlyConsulting\Approvals\Traits\GivesApprovals;

class User extends Model implements GivesApprovalsInterface
{
    use GivesApprovals;
}
```

```php
use RoundlyConsulting\Approvals\Enums\ApprovalRule;

Reports::moderate($report)->requiring([$alice, $bob])->rule(ApprovalRule::Quorum)->quorum(2)->open();

Reports::resolve($report, by: $alice);              // 1 of 2 — stays open
Reports::resolve($report, by: $bob, note: 'Spam');  // quorum reached → Resolved → post archived

Reports::resolve($report, by: $mallory);            // not named → ModeratorRequiredException
```

Nahlásenie môžu uzavrieť len moderátori, ktorých žiadosť menuje, alebo ich zástupcovia: ktokoľvek iný — aj resolve() bez aktéra — dostane ModeratorRequiredException z reports, nič sa nezaznamená a príspevok zostane, ako je.

## Automatické stiahnutie

Keď je nahlásenie potvrdené (ReportResolved) alebo príspevok prekročí globálny reports.threshold (ReportThresholdReached), príspevok sa stiahne cez vlastný publikačný cyklus — $post->archive() alebo $post->unpublish(), takže ho Posts::fake() zaznamená — a znova spustí PostArchived alebo PostDrafted. Týka sa to publikovaného aj naplánovaného príspevku: naplánovaný sa z plánu vyradí, takže publishDue() moderovaný obsah nikdy nezverejní. Koncepty a archivované príspevky zostanú bez zmeny, takže opakovanie nič nepokazí, a predmety nahlásení, ktoré nie sú nakonfigurovaným modelom príspevku, sa ignorujú:

```php
'moderation' => [
    'on_resolved' => 'archive',   // 'archive' | 'draft' | null (disable the upheld-report path); anything else throws
    'auto_unpublish' => true,     // auto-archive on ReportThresholdReached
],
```

reports.threshold je v reports-for-laravel predvolene null, takže prahová vetva sa spustí až po jeho nastavení. Ak chcete viditeľnosť riadiť sami, nastavte on\_resolved na null a auto\_unpublish na false.

## 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 kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/posts-for-laravel.md)
