Visão iCal


1Apresentação

A visão iCal permite enviar feeds no formato iCalendar, usado para transmitir eventos a serem adicionados a um calendário.


2Uso

Para usar a visão iCal, você deve definir o uso dessa visão. Além disso, você deve atribuir uma variável de template chamada ical, que é um array associativo com as seguintes chaves:

  • name: (opcional) Nome do calendário.
  • description: (opcional) Descrição do calendário.
  • events: (obrigatório) Lista de eventos do calendário. Cada elemento da lista deve ser um array associativo com as seguintes chaves:
    • name: (obrigatório) Nome do evento.
    • description: (opcional) Descrição do evento.
    • html: (opcional) Descrição do evento em formato HTML.
    • date: (opcional) Data do evento no formato 'YYYY-MM-DD' (se essa chave não for definida, as chaves dateStart e dateEnd devem ser definidas).
    • dateStart: (opcional) Data de início do evento no formato 'YYYY-MM-DD hh:mm:ssZ' ou no formato 'YYYY-MM-DD hh:mm:ss+hh:mm' (se essa chave não for definida, a chave date deve ser definida).
    • dateEnd: (opcional) Data de término do evento no formato 'YYYY-MM-DD hh:mm:ssZ' ou 'YYYY-MM-DD hh:mm:ss+hh:mm' (se essa chave não for definida, a chave date deve ser definida).
    • uid: (opcional) Identificador único do evento (recomendado; caso contrário, um identificador aleatório é gerado).
    • dateCreation: (opcional) Data de criação do evento no formato 'YYYY-MM-DD hh:mm:ssZ' ou no formato 'YYYY-MM-DD hh:mm:ss+hh:mm'.
    • organizerName: (opcional) Nome do organizador do evento.
    • organizerEmail: (opcional) Endereço de email do organizador do evento.

Aqui está um exemplo de envio de dados em formato iCal:

class ApiController extends \Temma\Web\Controller {
    public function getEvents() {
        $this['ical'] = [
            'name'   => 'My agenda',
            'events' => [
                [
                    'name'      => 'Dentist',
                    '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');
    }
}
  • Linhas 3 a 13: Definição dos dados que serão transmitidos à visão.
  • Linha 14: Especificamos que a visão a ser usada para os dados de saída é a visão iCal (e não a visão Smarty usual).

Observação: A visão iCal obviamente não precisa de templates, já que são os dados PHP que são diretamente serializados.

Os dados recebidos terão esta aparência:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Temma//ICalView 1.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-TIMEZONE:UTC
X-WR-CALNAME:My agenda
BEGIN:VEVENT
UID:evt-01
DTSTART:20250407T143000Z
DTEND:20250407T152500Z
SUMMARY:Dentist
TRANSP:TRANSPARENT
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR
Também é possível transmitir os dados a exportar usando a variável de template @output em vez da variável ical. Se @output estiver definida, ela tem prioridade.

3Download

Se você quiser que o feed iCal seja enviado como um anexo para download, defina uma variável de template chamada filename, contendo o nome do arquivo.

Exemplo:

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