Eventos
Eventos representam atividades culturais com suporte a agendamento, incluindo ocorrências únicas e recorrentes.
Um evento é uma atividade cultural que acontece em um tempo e lugar específicos. Eventos vão de apresentações de um único dia a exposições de longa duração com recorrência complexa. Eles pertencem a agentes, são agendados em espaços e podem ser agrupados em projetos.
Apresentações
Shows, peças de teatro, espetáculos de dança e apresentações ao vivo.
Exposições
Exposições de arte, feiras e mostras que acontecem ao longo de períodos estendidos.
Oficinas e palestras
Oficinas, palestras, seminários e atividades formativas.
Campos principais
| Campo | Descrição |
|---|---|
name | Nome do evento. Obrigatório. |
shortDescription | Resumo curto, com até 400 caracteres. Obrigatório. |
longDescription | Descrição completa com suporte a texto rico. |
type | Identificador numérico do tipo. Configurado por instalação. |
rules | Regras ou condições adicionais do evento. |
project | Vínculo opcional com o projeto ao qual este evento pertence. |
status | 1 = publicado, 0 = rascunho, -2 = arquivado, -9 = desabilitado, -10 = lixeira. |
createTimestamp | Momento em que o evento foi criado. Somente leitura. |
updateTimestamp | Momento da última modificação do evento. Somente leitura. |
Campos adicionais, como preço, informações de acessibilidade, classificação indicativa e idiomas, são armazenados como metadados e variam conforme a instalação.
Ocorrências e recorrência
O evento em si é um descritor: ele define o que o evento é. Quando e onde ele acontece é registrado em EventOccurrence. Um mesmo evento pode ter várias ocorrências em diferentes espaços e datas.
Campos de EventOccurrence
| Campo | Descrição |
|---|---|
space | Espaço onde a ocorrência acontece. |
_startsOn | Data de início. |
_endsOn | Data de término (para eventos com vários dias). |
_startsAt | Hora de início. |
_endsAt | Hora de término. |
frequency | Frequência da recorrência (diária, semanal, mensal). |
count | Número de recorrências. |
_until | Data final da recorrência. |
rule | Regra completa de recorrência em formato iCal RRULE. |
description | Observações específicas da ocorrência. |
Eventos recorrentes
A plataforma usa uma função armazenada no PostgreSQL (recurring_event_occurrence_for) para expandir regras de recorrência em instâncias concretas de ocorrência para um intervalo de datas. Isso significa que a recorrência é calculada dinamicamente a partir da regra armazenada, evitando gravar cada data individualmente no banco.
-- Usado internamente para expandir eventos recorrentes em ocorrências
SELECT *
FROM recurring_event_occurrence_for(
:date_from,
:date_to,
'Etc/UTC',
NULL
)
WHERE event_id = :event_id;Consultas de ocorrências aceitam os parâmetros date_from e date_to. Quando não são informados, ambos assumem a data atual, retornando apenas as ocorrências de hoje.
Relação com espaços
Uma ocorrência de evento está sempre ligada a um espaço específico. Você pode consultar ocorrências filtradas por espaço e intervalo de datas usando findOccurrencesBySpace():
// Busca todas as ocorrências de um evento em um espaço específico entre duas datas
$occurrences = $event->findOccurrencesBySpace(
$space,
'2024-03-01',
'2024-03-31'
);Relação com projetos
Eventos podem opcionalmente pertencer a um projeto. Quando um evento é vinculado a um projeto, os gestores desse projeto passam a ter controle sobre o evento. Criar um evento dentro de um projeto exige a titularidade do projeto ou uma permissão explícita do seu proprietário.
Se um sistema de workflow estiver habilitado, vincular um evento a um projeto pode disparar um fluxo de aprovação (RequestEventProject).
// Atribuir um projeto a um evento dispara checagens de permissão
$event->setProject($project);
$event->save();Permissões
| Ação | Quem pode executá-la |
|---|---|
| Criar | Qualquer usuário autenticado, ou visitante, dependendo da configuração. |
| Ver rascunho | Agente proprietário ou agentes com permissão @control sobre o evento ou projeto. |
| Publicar | Proprietário, administradores ou agentes com permissão @control. |
| Modificar | Proprietário ou agentes com @control. Se o projeto mudou, também exige controle sobre o projeto. |
Ciclo de status
Criando um evento
No painel, selecione Meus Eventos.
Clique em Novo Evento e preencha os campos obrigatórios: nome e descrição curta.
Selecione o espaço onde o evento acontece e depois defina a data, o horário e, se ele se repetir, a regra de recorrência.
Se o evento fizer parte de um projeto cultural, vincule-o ao projeto. Isso exige permissão do proprietário do projeto.
Adicione descrição longa, informações de preço, acessibilidade e tags de classificação.
Altere o status de Rascunho para Publicado para tornar o evento visível no calendário público.
Histórico de revisões
Toda alteração em um evento é registrada no sistema de revisões. Os dados de revisão incluem um snapshot de todas as ocorrências, com nome do espaço, localização, endereço e detalhes de agenda, além do projeto vinculado no momento de cada salvamento.
Esse material é fruto do Programa de Difusão Nacional - Funarte Redes das Artes, realizado pelo Laboratório do Futuro (entidade vinculada à Universidade Federal do Ceará) no ano de 2025.