NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Reviews for Laravel

Automatické moderovanie

Každá nová recenzia, ktorá nie je vynútene schválená — a každá úprava hodnotenia, nadpisu či textu recenzie (pozrite Úpravy a mazanie) — prejde nakonfigurovaným ReviewModerator. Ten vráti ModerationOutcome: schváliť, zamietnuť (s voliteľným dôvodom) alebo ponechať na neskôr. Predvolený NullModerator vždy odpovie pending, recenzie si teda ponechajú predvolený stav.

Filter zakázaných slov

Pribalený WordListModerator bez závislostí automaticky zamietne každú recenziu, ktorej nadpis alebo text obsahuje zakázané slovo — ako celé slovo, bez ohľadu na veľkosť písmen a v akomkoľvek písme, takže idiót či дурак zachytí rovnako ako scam. Čisté recenzie ostanú čakať na bežné schválenie:

// config/reviews.php
'moderator' => RoundlyConsulting\Reviews\Moderation\WordListModerator::class,
'moderation' => ['banned_words' => ['spam', 'scam']],

Alebo zoznam ponechajte v prostredí:

REVIEWS_BANNED_WORDS=spam,scam,casino

Zamietnutá recenzia dostane ako meta.rejection_reason preložiteľnú správu reviews::messages.review.banned_word.

Vlastný moderátor

Implementujte kontrakt a zaregistrujte ho cez konfiguračný kľúč moderator. Vytvára sa z kontajnera, takže funguje aj injektovanie cez konštruktor:

use RoundlyConsulting\Reviews\Contracts\ReviewModerator;
use RoundlyConsulting\Reviews\DataTransferObjects\ModerationOutcome;
use RoundlyConsulting\Reviews\Models\Review;

final class TrustedBuyerModerator implements ReviewModerator
{
    public function moderate(Review $review): ModerationOutcome
    {
        if (str_contains((string) $review->content, 'http')) {
            return ModerationOutcome::reject('Links are not allowed');
        }

        if ($review->verified && $review->rating !== null) {
            return ModerationOutcome::approve();
        }

        return ModerationOutcome::pending();   // leave it for a human
    }
}

// config/reviews.php
'moderator' => App\Reviews\TrustedBuyerModerator::class,
  • ModerationOutcome::approve() — okamžite schválené, nastaví sa approved_at.
  • ModerationOutcome::reject('dôvod') — zamietnuté, dôvod sa uloží do meta.rejection_reason.
  • ModerationOutcome::pending() — ponechané v default_status na posúdenie človekom.

Moderátor vidí celú, ešte neuloženú recenziu: $review->author a $review->reviewable sú už priradené a $review->exists odlíši vytvorenie (false) od úpravy (true, getOriginal() drží predchádzajúce hodnoty). Zamietnuté recenzie a odpovede vlastníka sa znova nemoderujú.

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

Odoslaní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.