E-mail ide do súhrnu používateľa, keď je druh Priority::Low a digestible() a frekvencia používateľa nie je off (predvolená je notifications.digest.default, off). Povinné druhy, ktoré patria do súhrnu, sa doň tiež zaradia — stále prídu. Položka schránky vznikne v každom prípade hneď:
use RoundlyConsulting\Notifications\Enums\DigestFrequency;
Notifications::preferences($user)->digest(DigestFrequency::Daily); // at notifications.digest.time
Notifications::preferences($user)->digest(DigestFrequency::Weekly, '07:30'); // on notifications.digest.weekly_day
Notifications::preferences($user)->digest(DigestFrequency::Off);
Notifications::digests()->sendDue(); // int — what the sweep runs
Notifications::digests()->preview($user); // ?MailMessage — the digest of the user's parked items, never sentTermín a obdobie
Počíta sa pri odložení e-mailu v časovom pásme používateľa. Denne → dnes v daný čas, alebo zajtra, ak už prešiel (zmena času miestny termín zachová), obdobie Y-m-d. Týždenne → najbližší nastavený deň v daný čas (dnes, ak je to ten deň a čas ešte neprešiel), obdobie GGGG-[W]WW. Termín v tichých hodinách sa posunie na ich koniec; obdobie zostane.
Behy
Sweep zoskupí splatné odložené doručenia podľa príjemcu, frekvencie a obdobia, pre každú skupinu vytvorí jeden DigestRun (unikátny pre príjemcu, frekvenciu a obdobie), prevezme ho cez compare-and-set a odošle — druhý sweep ani opakovaná úloha nič nepošle. Každá položka sa znova overí (prístup, stlmenie, subjekt, druh) a neúspešné vypadnú. Ak nič nezostane, beh je empty a žiadny e-mail neodíde; inak odíde jeden e-mail zoskupený podľa kontextu a kategórie, najviac digest.max_items riadkov („a :count ďalších položiek v schránke“), a spustí sa DigestSent.
- Oneskorené položky — položka odložená pre obdobie, ktorého súhrn už odišiel, prejde do najbližšieho termínu používateľa.
- Zmena frekvencie — čakajúce položky sa presunú na nový termín; po vypnutí odídu ako jeden posledný súhrn pri najbližšom sweepe.
- Zlyhanie odoslania — beh sa opakuje v ďalších sweepoch až do notifications.mail.max_attempts, potom zlyhá aj so svojimi položkami.
- Pád — beh, ktorý sa po digest.lease (PT15M) stále odosiela, zlyhá spolu s položkami — nikdy sa nezoskupuje donekonečna ani potichu nestratí.
- Príjemca neexistuje → empty; príjemca bez adresy → failed(no_address). Resolver adries platí rovnako ako pri typovaných e-mailoch.
- Notifikácie iných balíkov (interop) do súhrnu nikdy nejdú.
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.