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

Tiché hodiny a časové pásma

Tiché hodiny sú miestne časy HH:MM v časovom pásme používateľa a môžu prechádzať cez polnoc:

$prefs = Notifications::preferences($user);

$prefs->quietHours('22:00', '07:00');   // local HH:MM, may cross midnight; equal times are refused
$prefs->quietHours(null);               // clears them
$prefs->quietHoursPreference();         // the user's, else notifications.quiet_hours.default, else null

$prefs->timezone('Europe/Bratislava');  // an IANA id; null clears it
$prefs->resolvedTimezone();
// config/notifications.php — for users without their own
'quiet_hours' => [
    'enabled' => true,
    'default' => ['start' => '22:00', 'end' => '07:00'],
],
  • Neurgentný e-mail vytvorený počas tichých hodín sa podrží do ich konca (spustí sa NotificationMailHeld).
  • Urgentné druhy sa nikdy nepodržia. Povinný znamená „nedá sa stlmiť“, nie „zobudí vás“: povinný neurgentný druh sa podrží.
  • Podržaný e-mail alebo e-mail na konci okna sa pri doručení overí znova a ak medzitým začali tiché hodiny, znova sa podrží.
  • Čas súhrnu, ktorý padne do tichých hodín, sa posunie na ich koniec.
  • Zmena času: miestny koniec, ktorý neexistuje (jarný posun), sa posunie dopredu (02:30 → 03:30); nejednoznačný použije prvý výskyt.
  • notifications.quiet_hours.enabled je globálny prepínač.

Určenie časového pásma

Predvolený resolver (notifications.timezone.resolver) použije prvé platné IANA id z:

  • HasNotificationTimezone::notificationTimezone() príjemcu;
  • uloženej preferencie ($prefs->timezone('Europe/Bratislava'));
  • atribútu notifications.timezone.attribute (timezone; prázdna hodnota ho vypne), čítaného len ak je medzi atribútmi — bezpečné aj v strict mode;
  • config('app.timezone').

Neplatné id sa preskočí a zaloguje raz na príjemcu a proces; pri doručení nikdy nevyhodí výnimku. Ak ho potrebujete čítať inde, naviažte vlastný ResolvesTimezone:

use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Notifications\Contracts\ResolvesTimezone;

final class WorkspaceTimezoneResolver implements ResolvesTimezone
{
    public function timezone(Model $recipient): string
    {
        return $recipient->workspace?->timezone ?? config('app.timezone');
    }
}

// config/notifications.php
'timezone' => ['resolver' => App\Notifications\WorkspaceTimezoneResolver::class, 'attribute' => 'timezone'],

Jazyk

E-maily sa vykresľujú v preferredLocale() príjemcu; nadpisy v schránke v jazyku požiadavky čitateľa so snímkou v jazyku príjemcu. Samostatná jazyková preferencia neexistuje.

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.