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

Export do vCard

use RoundlyConsulting\Contacts\Facades\Contacts;

$user = User::create(['name' => 'Jane Doe']);
$user->addEmail('[email protected]', label: 'Work');
$user->addPhone('+421 900 000 000', label: 'Mobile');
$user->addUrl('example.com', label: 'Office, main');

Contacts::for($user)->vCard();   // a vCard 3.0 string for the owner's contacts
$contact->toVCard();             // a single contact

Vlastník vyššie sa exportuje takto:

BEGIN:VCARD
VERSION:3.0
N:Jane Doe;;;;
FN:Jane Doe
EMAIL;TYPE=work:[email protected]
TEL;TYPE=cell:+421900000000
item1.URL:https://example.com
item1.X-ABLabel:Office\, main
END:VCARD

Vizitka je platná vCard 3.0 (RFC 2426) s koncami riadkov CRLF:

  • N a FN sú vždy prítomné. N sa zostaví zo štruktúrovaných atribútov mena vlastníka, ak ich má — last_name/family_name/surname, first_name/given_name, middle_name/additional_name, name_prefix/honorific_prefix, name_suffix/honorific_suffix. Inak zobrazované meno vyplní pozíciu priezviska v N (N:Jane Doe;;;;).
  • FN je name vlastníka, inak spojené štruktúrované časti, inak Contact. Čítajú sa len atribúty, ktoré model naozaj má, takže Model::shouldBeStrict() je bezpečný.
  • Kontakty email, phone, url a address sa mapujú na EMAIL, TEL, URL a ADR; druhy social a custom sa exportujú ako NOTE.
  • Popisy: popis, ktorý zodpovedá registrovanému typu vlastnosti (work, home, cell, fax, pager…; mobile sa zmení na cell), sa zapíše ako TYPE=work. Každý iný popis sa zachová ako itemN.X-ABLabel na zoskupenej vlastnosti — vo forme vlastného popisu, ktorú čítajú kontakty Apple aj Google.
  • Text je escapovaný (spätná lomka, čiarka, bodkočiarka a každý zlom riadka ako \n), URL zostávajú bez escapovania a dlhé riadky sa zalamujú po 75 oktetoch bez rozdelenia UTF-8 znaku.

Exportér a sťahovanie

VCardExporter zostaví vizitku z ľubovoľnej množiny kontaktov; toVCard() jedného kontaktu použije ako meno Contact. Reťazec ponúknite na stiahnutie z controllera:

use RoundlyConsulting\Contacts\Support\VCardExporter;

VCardExporter::forOwner($user);                                     // same as Contacts::for($user)->vCard()
VCardExporter::forContacts($user->contactsOfType('email'), 'Jane Doe');  // any set, with a name

return response(Contacts::for($user)->vCard(), 200, [
    'Content-Type' => 'text/vcard',
    'Content-Disposition' => 'attachment; filename="jane-doe.vcf"',
]);

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.