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