Vue iCal


1Présentation

La vue iCal permet d'envoyer des flux au format iCalendar, utilisés pour transmettre des événements à ajouter dans un calendrier.

2Utilisation

Pour utiliser la vue iCal, il faut définir l'usage de cette vue. En plus de cela, il faut assigner une variable de templates nommée ical, qui est un tableau associatif avec les clés suivantes :

  • name : (optionel) Nom du calendrier.
  • description : (optionnel) Description du calendrier.
  • events : (obligatoire) Liste des événements du calendrier. Chaque élément de la liste doit être un tableau associatif avec les clés suivantes :
    • name : (obligatoire) Nom de l'événement.
    • description : (optionnel) Description de l'événement.
    • html : (optionnel) Description de l'événement au format HTML.
    • date : (optionnel) Date de l'événement au format 'YYYY-MM-DD' (si cette clé n'est pas définie, il faut définir les clés dateStart et dateEnd).
    • dateStart : (optionnel) Date de début de l'événement au format 'YYYY-MM-DD hh:mm:ssZ' ou 'YYYY-MM-DD hh:mm:ss+hh:mm' (si cette clé n'est pas définie, il faut définier la clé date).
    • dateEnd : (optionnel) Date de fin de l'événement au format 'YYYY-MM-DD hh:mm:ssZ' ou 'YYYY-MM-DD hh:mm:ss+hh:mm' (si cette clé n'est pas définie, il faut définier la clé date).
    • uid : (optionnel) Identifiant unique de l'événement (recommandé ;génère un identifiant aléatoire sinon).
    • dateCreation : (optionnel) Date de création de l'événement au format 'YYYY-MM-DD hh:mm:ssZ' ou 'YYYY-MM-DD hh:mm:ss+hh:mm'.
    • organizerName : (optionnel) Nom de l'organisateur de l'événement.
    • organizerEmail : (optionnel) Adresse email de l'organisateur de l'événement.

Voici un exemple de d'envoi de données au format RSS :

class ApiController extends \Temma\Web\Controller {
    public function getEventss() {
        $this['ical'] = [
            'name'   => 'Mon agenda',
            'events' => [
                [
                    'name'      => 'Dentiste',
                    'dateStart' => '2025-04-07 15:30:00+01:00',
                    'dateEnd'   => '2025-04-07 16:25:00+01:00',
                    'uid'       => 'evt-01',
                ],
        ];
        $this->_view('\Temma\Views\ICal');
    }
}
  • Lignes 3 à 12 : Définition des données qui seront transmises à la vue.
  • Ligne 13 : On spécifie que la vue à utiliser pour les données sortantes est la vue iCal (et non pas la vue Smarty habituelle).

À noter : La vue iCal n'a évidemment pas besoin de templates, dans la mesure où ce sont les données PHP qui sont directement sérialisées.

Les données reçues ressembleront à cela :

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Temma//ICalView 1.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-TIMEZONE:UTC
X-WR-CALNAME:Mon agenda
BEGIN:VEVENT
UID:evt-01
DTSTART:20250407T143000Z
DTEND:20250407T152500Z
SUMMARY:Dentiste
TRANSP:TRANSPARENT
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR

3Téléchargement

Si vous voulez que le flux iCal soit envoyé comme un pièce-jointe téléchargeable, définissez une variable de template nommée filename, contenant le nom du fichier.

Exemple :

$this['filename'] = 'event.ics';