Export do kalendára (ICS)
Vygenerujte kalendárový text podľa RFC 5545 pre jeden termín alebo kolekciu. Balík zostáva bez HTTP vrstvy — vráti reťazec a spôsob doručenia je na vás:
use RoundlyConsulting\Appointments\Facades\Appointments;
$ics = Appointments::for($appointment)->ics(); // one event — or $appointment->toIcs()
$feed = Appointments::ics($user->appointments()->upcoming()->get()); // one VCALENDAR, many VEVENTs
return response($feed, 200, [
'Content-Type' => 'text/calendar; charset=utf-8',
'Content-Disposition' => 'attachment; filename="appointments.ics"',
]);Ukážkový výstup
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Roundly Consulting//Appointments for Laravel//EN
CALSCALE:GREGORIAN
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20260615T120000Z
DTSTART:20260701T090000Z
DTEND:20260701T100000Z
SUMMARY:Clinic visit
STATUS:TENTATIVE
DESCRIPTION:Bring your previous test results
LOCATION:Clinic A
GEO:51.5074;-0.1278
ORGANIZER;CN=Front desk:mailto:[email protected]
ATTENDEE;CN=Alex Example:mailto:[email protected]
END:VEVENT
END:VCALENDARČo obsahuje každá udalosť
| Vlastnosť | Zdroj |
|---|---|
UID | Uložené náhodné uuid termínu s hostiteľom z app.url (…@example.com) — jedinečné naprieč aplikáciami a stabilné aj po opätovnom naplnení databázy. |
DTSTART / DTEND | starts_at / ends_at v UTC; chýbajúci koniec sa odvodí z trvania. |
SUMMARY | name. |
DESCRIPTION | description, ak je vyplnený. |
STATUS | TENTATIVE pre pending; CONFIRMED pre confirmed a completed; CANCELLED pre cancelled, declined a no_show. |
LOCATION | Stĺpec location, inak meta.location. |
GEO | latitude;longitude, ak sú nastavené súradnice. |
ORGANIZER | Primárny e-mailový kontakt termínu; CN je meno kontaktu, inak jeho označenie. |
ATTENDEE | Jeden riadok na účastníka, ktorého model má primárny e-mail; CN je atribút name modelu. |
Účastníci bez primárneho e-mailu sa vynechajú: ATTENDEE musí byť kalendárová adresa — v praxi mailto: — a kalendárové aplikácie bez nej nemajú s čím pracovať. Ak ich chcete zahrnúť, pridajte modelom účastníkov HasContacts (pozrite Kontakty hostí).
Escapovanie a zalamovanie
Textové hodnoty sa escapujú podľa RFC 5545 §3.3.11: každý zlom riadka — CRLF z textarea, samostatné CR či LF — sa zmení na jedno escapované \n; spätné lomky, bodkočiarky a čiarky sa escapujú spätnou lomkou; ostatné riadiace znaky okrem tabulátora sa odstránia. Z hodnôt CN sa odstránia úvodzovky a riadiace znaky a ak obsahujú dvojbodku, bodkočiarku alebo čiarku, dajú sa do úvodzoviek. Dlhé riadky sa zalamujú po 75 oktetoch bez rozdelenia viacbajtového znaku UTF-8 a každý riadok končí CRLF.
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.