Životný cyklus moderovania
Každá recenzia má ReviewStatus s hodnotou Pending, Approved alebo Rejected. Nové recenzie čakajú na schválenie, pokiaľ nie je zapnuté auto_approve, builder nezavolal approved() alebo ich neschválil moderátor.
use RoundlyConsulting\Reviews\Facades\Reviews;
Reviews::approve($review); // marks approved, stamps approved_at
Reviews::reject($review, 'Spam'); // marks rejected, stores the reason in meta
$review->isPending();
$review->isApproved();
$review->isRejected();
$review->meta?->get('rejection_reason'); // 'Spam'- approve() nastaví stav approved, zapíše approved_at a spustí ReviewApproved.
- reject() nastaví stav rejected, vymaže approved_at, uloží voliteľný dôvod do meta.rejection_reason a spustí ReviewRejected s týmto dôvodom.
- Obe operácie sú idempotentné — schválenie už schválenej (alebo zamietnutie už zamietnutej) recenzie nič nezmení a nespustí žiadnu udalosť.
- Schválenie zamietnutej recenzie odstráni jej neaktuálny rejection_reason.
- Recenzia, ktorá skončí schválená alebo zamietnutá pri vytvorení či po úprave, spustí rovnaké udalosti.
Fronta na moderovanie
Reviews::query() pokrýva všetky predmety a rešpektuje vymenený reviews.model:
use RoundlyConsulting\Reviews\Facades\Reviews;
// The moderation queue — every subject, oldest first, owner responses excluded:
$queue = Reviews::query()->pending()->topLevel()->oldest()->paginate(20);
// Or newest first, as the README does:
Reviews::query()->pending()->latestFirst()->paginate();Automatické schvaľovanie
V dôveryhodnom prostredí REVIEWS_AUTO_APPROVE=true schváli každú novú — aj znova moderovanú upravenú — recenziu hneď a moderátora preskočí. Ak chcete dôverovať len niektorým recenziám, schváľte ich jednotlivo cez ->approved() v builderi.
Enum stavu
ReviewStatus aj ModerationDecision používajú pomocníkov z Enums for Laravel, takže values(), labels(), options(), toOptions(), validationRule(), readable() a vyhľadávanie prípadov máte k dispozícii hneď:
use RoundlyConsulting\Reviews\Enums\ReviewStatus;
$review->status; // ReviewStatus::Pending
$review->status->isApproved(); // bool
ReviewStatus::values(); // collect(['pending', 'approved', 'rejected'])
ReviewStatus::validationRule(); // 'in:pending,approved,rejected'
ReviewStatus::toOptions(); // value => label map for select inputs
ReviewStatus::Approved->readable(); // 'Approved'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.