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

Presun komentárov

Comments::transfer($from, $to) presunie všetky komentáre jedného subjektu na iný a vráti, koľko ich presunul — pre zlúčenie dvoch záznamov, napríklad duplicitných tiketov alebo dvoch článkov o tej istej veci. V jednej transakcii presmeruje polymorfný vzťah commentable všetkých komentárov $from: komentáre najvyššej úrovne aj odpovede, neviditeľné, pending aj hidden a tiež mäkko zmazané, takže neskoršie obnovenie skončí na $to:

use RoundlyConsulting\Comments\Facades\Comments;

$moved = Comments::transfer($duplicate, $original);   // int — e.g. 4

Čo sa presunie spolu s komentármi

  • Odpovede si ponechajú parent_id a každý rodič sa presunie s nimi, takže vlákna zostanú celé.
  • Zmienky, páčiky, nahlásenia a prílohy patria komentáru, nie subjektu, preto ho nasledujú.
  • Zámok vlákna (locked_at) je na komentári a presunie sa s ním.
  • Zámok subjektu zostane, kde je: zamknutý $from zostane zamknutý — presun jeho komentárov preč je povolený — a $to sa nezamkne.
  • Komentáre, ktoré $from napísal ako autor, zostanú nedotknuté; presúvajú sa len komentáre na ňom.
  • updated_at sa nemení — presun nie je úprava.

Odmietnutia

Keď niektorá kontrola zlyhá, nič sa nepresunie, nič sa nezaznamená a žiadna udalosť sa neodošle:

  • $from a $to sú ten istý subjekt — rovnaký morph typ aj kľúč, hoci ako dve inštancie —, preto sa vyhodí InvalidCommentTransferException.
  • $to má zámok subjektu, preto sa vyhodí CommentsLockedException.
  • Pri zapnutom comments.authorization sa na $to kontroluje existujúca ability create — create(?Model $user, ?Model $commentable) s $to ako komentovaným subjektom — a zamietnutie vyhodí UnauthorizedCommentActionException. Policy, ktorá nerozširuje CommentPolicy, nepotrebuje žiadnu novú metódu.
use RoundlyConsulting\Comments\Exceptions\CommentsLockedException;
use RoundlyConsulting\Comments\Exceptions\InvalidCommentTransferException;

try {
    Comments::transfer($duplicate, $original);
} catch (InvalidCommentTransferException $e) {
    // $duplicate and $original are the same subject
} catch (CommentsLockedException $e) {
    // $original is locked
}

Po presune

Odošle sa CommentsTransferred s $from, $to a $count — aj vtedy, keď sa nič nepresunulo a $count je 0 — a Comments::fake() volanie zaznamená pre assertTransferred() (pozrite Testovanie):

use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Comments\Events\CommentsTransferred;

Event::listen(function (CommentsTransferred $event): void {
    $event->from;   // the subject the comments left
    $event->to;     // the subject they now belong to
    $event->count;  // how many moved — 0 is possible
});

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.