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';