diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a7ee3212b..945d69f498 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,45 @@ Todas as mudanças notáveis no projeto serão documentadas neste arquivo. O formato é baseado no [Keep a Changelog](https://keepachangelog.com/pt-BR/1.0.0/) e este projeto adere ao [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [unreleased] + +## [7.4.5] - 2024-06-17 +### Melhorias +- Melhora exibição do header da tabela de publicação de resultados +- Botão para recriar caches de permissão das entidades na página de gestão de usuários + +### Correções +- Corrige erro no carregamento da single de projetos +- Ajusta exibição dos campos do tipo checkebox do formulário +- Corrige endpoit apiFindRegistrations para que um usuario comum posso ver as inscrições na fase de publicação de resultado +- Corrige formulário de inscriçào em casos onde foi configurado tipo de proponente ou faixa após envio de inscrições +- Ajusta distribução de avaliações através dos finais das inscrições para que seja possível usar mais caracteres +- Evita que seja possível selecionar sub-agentes como administradores de entidades +- Corrige atualização do campo pessoa idosa +- Ordena os termos das entidades em ordem alfabética +- Só exibe categoria, tipo de proponente e faixa quando há essa informação na inscrição +- Validação da área de interesse das fases de coleta de dados +- Serialização de roles do usuário logado as vezes quebrando a página de gestão de usuários +- Implementa mc-update para garantir/corrigir que o campo de pessoa idosa corresponda com a data de nascimento fornecida no cadastro do agente +- Ajusta importação e exportação do formulário para garantir que as faixas e tipos de proponentes sejam enviados +- Corrige validação de erros dos metadados de inscrições +- Corrige validação de erros para campos não visíveis + +## [7.4.4] 2024-06-12 +### Correções +- Corrige lista de inscrições da publicação de resultado final +- Corrige exibição dos botões de baixar rascunhos e baixar lista de inscrições + +## [7.4.3] 2024-06-11 +### Correções +- Reordena db-updates para evitar problemas com colunas e tabelas nao criadas +- Corrige db-update que ajusta configurações dos campos das inscrições + +## [7.4.2] 2024-06-11 +## Correções +- Ajusta getter lastPhase() na inscrição para que quando for a última fase na inscrição base, ele consiga devolver a entidade de forma correta +- evita que a single da inscrição se quebre quando nao existe data de envio da inscrição + +## [7.4.1] 2024-06-10 ### Melhorias - Implementa hook no método registerRegistrationMetadata da oportunidade, para possibilitar incremento de novos registros atrevéz de plugins e módulos - Implementa novos hook's para possibilitar manipulação da tela de listagem de fases diff --git a/config/Metabase.php b/config/Metabase.php index 62ff9b5637..01fb009e7c 100644 --- a/config/Metabase.php +++ b/config/Metabase.php @@ -7,19 +7,242 @@ 'painel-agentes' => [ 'link' => 'https://metabase.mapas.tec.br/public/dashboard/898173be-47ae-4987-894c-b7e54914539c', 'text' => 'Saiba os números de agentes individuais cadastrados, quantos são criados mensalmente, por onde estão distribuídos no território e outras informações.', - 'title' => 'Painel sobre agentes individuais' + 'title' => 'Painel sobre agentes individuais', + 'entity' => 'Agent' ], 'painel-espacos' => [ 'link' => 'https://metabase.mapas.tec.br/public/dashboard/ea36c1b3-c3f3-4435-afc6-9faeea4c7c8f', 'text' => 'Saiba os números de espaços cadastrados, quantos são criados mensalmente, por onde estão distribuídos no território e outras informações.', - 'title' => 'Painel sobre espaços' + 'title' => 'Painel sobre espaços', + 'entity' => 'Space' ], 'painel-oportunidades' => [ 'link' => 'https://metabase.mapas.tec.br/public/dashboard/496d0b03-0476-4497-9a3d-719198cfe083', 'text' => 'Tenha acesso ao número de oportunidades e editais cadastrados, a quantidade de pessoas participantes inscritas, o perfil demográfico e mais informações.', - 'title' => 'Painel sobre oportunidades' + 'title' => 'Painel sobre oportunidades', + 'entity' => 'Opportunity' ], ], + 'cards' => [ + 'home' => [ + [ + 'type' => 'space', + 'label' => '', + 'icon'=> 'space', + 'iconClass'=> 'space__color', + 'panelLink'=> 'painel-espacos', + 'data'=> [ + [ + 'icon'=> 'space', + 'label' => 'Espaços cadastrados', + 'entity' => 'MapasCulturais\\Entities\\Space', + 'query' => [], + 'value' => null + ], + ] + ], + [ + 'type' => 'space', + 'label' => '', + 'icon'=> 'space', + 'iconClass'=> 'space__color', + 'panelLink'=> 'painel-espacos', + 'data'=> [ + [ + 'icon'=> 'space', + 'label'=> 'Espaços certificados', + 'entity'=> 'MapasCulturais\\Entities\\Space', + 'query'=> [ + '@verified'=> 1 + ], + 'value'=> null + ] + ] + ], + [ + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'icon'=> 'agent', + 'label' => 'Agentes cadastrados', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query' => [], + 'value' => null + ], + ] + ], + [ + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'icon'=> 'agent', + 'label' => 'Agentes individuais', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query' => ['type' => 'EQ(1)'], + 'value' => null + ], + ] + ], + [ + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'icon'=> 'agent', + 'label' => 'Agentes coletivos', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query' => ['type' => 'EQ(2)'], + 'value' => null + ], + ] + ], + // opportunity + [ + 'type' => 'opportunity', + 'label' => 'Oportunidades', + 'icon'=> 'opportunity', + 'iconClass'=> 'opportunity__color', + 'panelLink'=> 'painel-oportunidades', + 'data'=> [ + [ + 'label' => 'Oportunidades criadas', + 'entity' => 'MapasCulturais\\Entities\\Opportunity', + 'query' => [], + 'value' => null + ], + [ + 'label' => 'Oportunidades certificadas', + 'entity' => 'MapasCulturais\\Entities\\Opportunity', + 'query'=> [ + '@verified'=> 1 + ], + 'value' => null + ], + ] + ] + + ], + 'entities' => [ + [ + 'id' => 'espacos-cadastrados', + 'type' => 'space', + 'label' => '', + 'icon'=> 'space', + 'iconClass'=> 'space__color', + 'panelLink'=> 'painel-espacos', + 'data'=> [ + [ + 'icon'=> 'space', + 'label' => 'Espaços cadastrados', + 'entity' => 'MapasCulturais\\Entities\\Space', + 'query' => [], + 'value' => null + ], + ] + ], + [ + 'id' => 'espacos-certificados', + 'type' => 'space', + 'label' => '', + 'icon'=> 'space', + 'iconClass'=> 'space__color', + 'panelLink'=> 'painel-espacos', + 'data'=> [ + [ + 'icon'=> 'space', + 'label'=> 'Espaços certificados', + 'entity'=> 'MapasCulturais\\Entities\\Space', + 'query'=> [ + '@verified'=> 1 + ], + 'value'=> null + ] + ] + ], + [ + 'id' => 'agentes-cadastrados', + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'icon'=> 'agent', + 'label' => 'Agentes cadastrados', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query' => [], + 'value' => null + ], + ] + ], + [ + 'id' => 'agentes-individuais', + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'icon'=> 'agent', + 'label' => 'Agentes individuais', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query' => ['type' => 'EQ(1)'], + 'value' => null + ], + ] + ], + [ + 'id' => 'agentes-coletivos', + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'icon'=> 'agent', + 'label' => 'Agentes coletivos', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query' => ['type' => 'EQ(2)'], + 'value' => null + ], + ] + ], + [ + 'id' => 'agentes-cadastrados-7-dias', + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'icon'=> 'agent', + 'label' => 'Cadastrados nos últimos 7 dias', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query'=> [ + '@select' => 'createTimestamp' + ], + 'value' => null + ], + ] + ], + ] + + ] ] ] ]; diff --git a/config/cache.php b/config/cache.php index 2de3a9c6d8..24fa9c106a 100644 --- a/config/cache.php +++ b/config/cache.php @@ -36,7 +36,7 @@ 'app.useRegisterCache' => __env_not_false('CACHE_REGISTER'), 'app.useApiCache' => env('CACHE_API', false), 'app.useQuotasCache' => env('CACHE_QUOTAS', false), - 'app.useOpportunitySummaryCache' =>false, + 'app.useOpportunitySummaryCache' => __env_not_false('CACHE_OPPORTUNITY_SUMARY'), 'app.registeredAutoloadCache.lifetime' => env('CACHE_AUTOLOAD', YEAR_IN_SECONDS), diff --git a/dev/config.d/Metabase.php b/dev/config.d/Metabase.php index 62ff9b5637..6967ae669d 100644 --- a/dev/config.d/Metabase.php +++ b/dev/config.d/Metabase.php @@ -7,19 +7,242 @@ 'painel-agentes' => [ 'link' => 'https://metabase.mapas.tec.br/public/dashboard/898173be-47ae-4987-894c-b7e54914539c', 'text' => 'Saiba os números de agentes individuais cadastrados, quantos são criados mensalmente, por onde estão distribuídos no território e outras informações.', - 'title' => 'Painel sobre agentes individuais' + 'title' => 'Painel sobre agentes individuais', + 'entity' => 'Agent' ], 'painel-espacos' => [ 'link' => 'https://metabase.mapas.tec.br/public/dashboard/ea36c1b3-c3f3-4435-afc6-9faeea4c7c8f', 'text' => 'Saiba os números de espaços cadastrados, quantos são criados mensalmente, por onde estão distribuídos no território e outras informações.', - 'title' => 'Painel sobre espaços' + 'title' => 'Painel sobre espaços', + 'entity' => 'Space' ], 'painel-oportunidades' => [ 'link' => 'https://metabase.mapas.tec.br/public/dashboard/496d0b03-0476-4497-9a3d-719198cfe083', 'text' => 'Tenha acesso ao número de oportunidades e editais cadastrados, a quantidade de pessoas participantes inscritas, o perfil demográfico e mais informações.', - 'title' => 'Painel sobre oportunidades' + 'title' => 'Painel sobre oportunidades', + 'entity' => 'Opportunity' ], ], + 'cards' => [ + 'home' => [ + [ + 'type' => 'space', + 'label' => '', + 'icon'=> 'space', + 'iconClass'=> 'space__color', + 'panelLink'=> 'painel-espacos', + 'data'=> [ + [ + 'icon'=> 'space', + 'label' => 'Espaços cadastrados', + 'entity' => 'MapasCulturais\\Entities\\Space', + 'query' => [], + 'value' => null + ], + ] + ], + [ + 'type' => 'space', + 'label' => '', + 'icon'=> 'space', + 'iconClass'=> 'space__color', + 'panelLink'=> 'painel-espacos', + 'data'=> [ + [ + 'icon'=> 'space', + 'label'=> 'Espaços certificados', + 'entity'=> 'MapasCulturais\\Entities\\Space', + 'query'=> [ + '@verified'=> 1 + ], + 'value'=> null + ] + ] + ], + [ + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'icon'=> 'agent', + 'label' => 'Agentes cadastrados', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query' => [], + 'value' => null + ], + ] + ], + [ + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'icon'=> 'agent', + 'label' => 'Agentes individuais', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query' => ['type' => 'EQ(1)'], + 'value' => null + ], + ] + ], + [ + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'icon'=> 'agent', + 'label' => 'Agentes coletivos', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query' => ['type' => 'EQ(2)'], + 'value' => null + ], + ] + ], + // opportunity + [ + 'type' => 'opportunity', + 'label' => 'Oportunidades', + 'icon'=> 'opportunity', + 'iconClass'=> 'opportunity__color', + 'panelLink'=> 'painel-oportunidades', + 'data'=> [ + [ + 'label' => 'Oportunidades criadas', + 'entity' => 'MapasCulturais\\Entities\\Opportunity', + 'query' => [], + 'value' => null + ], + [ + 'label' => 'Oportunidades certificadas', + 'entity' => 'MapasCulturais\\Entities\\Opportunity', + 'query'=> [ + '@verified'=> 1 + ], + 'value' => null + ], + ] + ] + + ], + 'entities' => [ + [ + 'type' => 'space', + 'label' => '', + 'icon'=> 'space', + 'iconClass'=> 'space__color', + 'panelLink'=> 'painel-espacos', + 'data'=> [ + [ + 'id' => 'espacos-cadastrados', + 'icon'=> 'space', + 'label' => 'Espaços cadastrados', + 'entity' => 'MapasCulturais\\Entities\\Space', + 'query' => [], + 'value' => null + ], + ] + ], + [ + 'type' => 'space', + 'label' => '', + 'icon'=> 'space', + 'iconClass'=> 'space__color', + 'panelLink'=> 'painel-espacos', + 'data'=> [ + [ + 'id' => 'espacos-certificados', + 'icon'=> 'space', + 'label'=> 'Espaços certificados', + 'entity'=> 'MapasCulturais\\Entities\\Space', + 'query'=> [ + '@verified'=> 1 + ], + 'value'=> null + ] + ] + ], + [ + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'id' => 'agentes-cadastrados', + 'icon'=> 'agent', + 'label' => 'Agentes cadastrados', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query' => [], + 'value' => null + ], + ] + ], + [ + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'id' => 'agentes-individuais', + 'icon'=> 'agent', + 'label' => 'Agentes individuais', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query' => ['type' => 'EQ(1)'], + 'value' => null + ], + ] + ], + [ + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'id' => 'agentes-coletivos', + 'icon'=> 'agent', + 'label' => 'Agentes coletivos', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query' => ['type' => 'EQ(2)'], + 'value' => null + ], + ] + ], + [ + 'type' => 'agent', + 'label' => '', + 'icon'=> 'agent', + 'iconClass'=> 'agent__color', + 'panelLink'=> 'painel-agentes', + 'data'=> [ + [ + 'id' => 'agentes-cadastrados-7-dias', + 'icon'=> 'agent', + 'label' => 'Cadastrados nos últimos 7 dias', + 'entity' => 'MapasCulturais\\Entities\\Agent', + 'query'=> [ + '@select' => 'createTimestamp' + ], + 'value' => null + ], + ] + ], + ] + + ] ] ] ]; diff --git a/src/conf/agent-types.php b/src/conf/agent-types.php index 1250d45b39..d45b4ee8c7 100644 --- a/src/conf/agent-types.php +++ b/src/conf/agent-types.php @@ -189,15 +189,19 @@ 'private' => true, 'label' => \MapasCulturais\i::__('Pessoa idosa'), 'type' => 'readonly', - 'serialize' => function($value, $entity = null){ - if($entity->dataDeNascimento){ + 'serialize' => function($value, $entity = null) { + if ($entity->dataDeNascimento) { $today = new DateTime('now'); - $calc = (new DateTime($entity->dataDeNascimento))->diff($today); - return ($calc->y >= 60) ? "1" : "0"; - }else{ - return null; + $birthdate = new DateTime($entity->dataDeNascimento); + $age = $birthdate->diff($today)->y; + return ($age >= 60); + } else { + return false; } }, + 'unserialize' => function($value){ + return $value ? true : false; + }, 'available_for_opportunities' => true ), diff --git a/src/conf/opportunity-types.php b/src/conf/opportunity-types.php index 65d70ba9dc..f280c36085 100644 --- a/src/conf/opportunity-types.php +++ b/src/conf/opportunity-types.php @@ -10,35 +10,35 @@ function compareNamesOpportunity ($item1, $item2) { } $items = array( - 1 => array( 'name' => \MapasCulturais\i::__("Festival")), - 2 => array( 'name' => \MapasCulturais\i::__("Encontro")), - 3 => array( 'name' => \MapasCulturais\i::__("Sarau")), - 4 => array( 'name' => \MapasCulturais\i::__("Reunião")), - 5 => array( 'name' => \MapasCulturais\i::__("Mostra")), - 6 => array( 'name' => \MapasCulturais\i::__("Convenção")), 7 => array( 'name' => \MapasCulturais\i::__("Ciclo")), - 8 => array( 'name' => \MapasCulturais\i::__("Programa")), - 9 => array( 'name' => \MapasCulturais\i::__("Edital")), + 26 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Setorial")), + 27 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Nacional")), + 28 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Estadual")), + 29 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Municipal")), 10 => array( 'name' => \MapasCulturais\i::__("Concurso")), + 6 => array( 'name' => \MapasCulturais\i::__("Convenção")), + 19 => array( 'name' => \MapasCulturais\i::__("Congresso")), + 23 => array( 'name' => \MapasCulturais\i::__("Curso")), + 9 => array( 'name' => \MapasCulturais\i::__("Edital")), 11 => array( 'name' => \MapasCulturais\i::__("Exposição")), - 12 => array( 'name' => \MapasCulturais\i::__("Jornada")), + 2 => array( 'name' => \MapasCulturais\i::__("Encontro")), 13 => array( 'name' => \MapasCulturais\i::__("Exibição")), - 14 => array( 'name' => \MapasCulturais\i::__("Feira")), - 15 => array( 'name' => \MapasCulturais\i::__("Intercâmbio Cultural")), + 1 => array( 'name' => \MapasCulturais\i::__("Festival")), 16 => array( 'name' => \MapasCulturais\i::__("Festa Popular")), 17 => array( 'name' => \MapasCulturais\i::__("Festa Religiosa")), - 18 => array( 'name' => \MapasCulturais\i::__("Seminário")), - 19 => array( 'name' => \MapasCulturais\i::__("Congresso")), - 20 => array( 'name' => \MapasCulturais\i::__("Palestra")), - 21 => array( 'name' => \MapasCulturais\i::__("Simpósio")), + 14 => array( 'name' => \MapasCulturais\i::__("Feira")), 22 => array( 'name' => \MapasCulturais\i::__("Fórum")), - 23 => array( 'name' => \MapasCulturais\i::__("Curso")), - 24 => array( 'name' => \MapasCulturais\i::__("Oficina")), + 15 => array( 'name' => \MapasCulturais\i::__("Intercâmbio Cultural")), 25 => array( 'name' => \MapasCulturais\i::__("Jornada")), - 26 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Setorial")), - 27 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Nacional")), - 28 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Estadual")), - 29 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Municipal")), + 12 => array( 'name' => \MapasCulturais\i::__("Jornada")), + 5 => array( 'name' => \MapasCulturais\i::__("Mostra")), + 24 => array( 'name' => \MapasCulturais\i::__("Oficina")), + 20 => array( 'name' => \MapasCulturais\i::__("Palestra")), + 8 => array( 'name' => \MapasCulturais\i::__("Programa")), + 4 => array( 'name' => \MapasCulturais\i::__("Reunião")), + 3 => array( 'name' => \MapasCulturais\i::__("Sarau")), + 21 => array( 'name' => \MapasCulturais\i::__("Simpósio")), + 18 => array( 'name' => \MapasCulturais\i::__("Seminário")), // 30 => array( 'name' => \MapasCulturais\i::__("Parada e Desfile Militar")), // 31 => array( 'name' => \MapasCulturais\i::__("Parada e Desfile Cívico")), // 32 => array( 'name' => \MapasCulturais\i::__("Parada e Desfile Festivo")), diff --git a/src/conf/project-types.php b/src/conf/project-types.php index c0c9566185..007f879098 100644 --- a/src/conf/project-types.php +++ b/src/conf/project-types.php @@ -11,43 +11,43 @@ function compareNamesProject($a, $b){ } $items = array( - 1 => array( 'name' => \MapasCulturais\i::__("Festival")), - 2 => array( 'name' => \MapasCulturais\i::__("Encontro")), - 3 => array( 'name' => \MapasCulturais\i::__("Sarau")), - 4 => array( 'name' => \MapasCulturais\i::__("Reunião")), - 5 => array( 'name' => \MapasCulturais\i::__("Mostra")), - 6 => array( 'name' => \MapasCulturais\i::__("Convenção")), 7 => array( 'name' => \MapasCulturais\i::__("Ciclo")), - 8 => array( 'name' => \MapasCulturais\i::__("Programa")), - 9 => array( 'name' => \MapasCulturais\i::__("Edital")), + 19 => array( 'name' => \MapasCulturais\i::__("Congresso")), + 6 => array( 'name' => \MapasCulturais\i::__("Convenção")), 10 => array( 'name' => \MapasCulturais\i::__("Concurso")), + 26 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Setorial")), + 27 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Nacional")), + 28 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Estadual")), + 122 => ['name' => \MapasCulturais\i::__("Consulta")], + 29 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Municipal")), + 23 => array( 'name' => \MapasCulturais\i::__("Curso")), + 9 => array( 'name' => \MapasCulturais\i::__("Edital")), + 2 => array( 'name' => \MapasCulturais\i::__("Encontro")), 11 => array( 'name' => \MapasCulturais\i::__("Exposição")), - 12 => array( 'name' => \MapasCulturais\i::__("Jornada")), 13 => array( 'name' => \MapasCulturais\i::__("Exibição")), 14 => array( 'name' => \MapasCulturais\i::__("Feira")), - 15 => array( 'name' => \MapasCulturais\i::__("Intercâmbio Cultural")), + 1 => array( 'name' => \MapasCulturais\i::__("Festival")), 16 => array( 'name' => \MapasCulturais\i::__("Festa Popular")), 17 => array( 'name' => \MapasCulturais\i::__("Festa Religiosa")), - 18 => array( 'name' => \MapasCulturais\i::__("Seminário")), - 19 => array( 'name' => \MapasCulturais\i::__("Congresso")), - 20 => array( 'name' => \MapasCulturais\i::__("Palestra")), - 21 => array( 'name' => \MapasCulturais\i::__("Simpósio")), 22 => array( 'name' => \MapasCulturais\i::__("Fórum")), - 23 => array( 'name' => \MapasCulturais\i::__("Curso")), - 24 => array( 'name' => \MapasCulturais\i::__("Oficina")), + 35 => ['name' => \MapasCulturais\i::__("Inscrições")], + 15 => array( 'name' => \MapasCulturais\i::__("Intercâmbio Cultural")), 25 => array( 'name' => \MapasCulturais\i::__("Jornada")), - 26 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Setorial")), - 27 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Nacional")), - 28 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Estadual")), - 29 => array( 'name' => \MapasCulturais\i::__("Conferência Pública Municipal")), + 12 => array( 'name' => \MapasCulturais\i::__("Jornada")), + 5 => array( 'name' => \MapasCulturais\i::__("Mostra")), + 24 => array( 'name' => \MapasCulturais\i::__("Oficina")), + 20 => array( 'name' => \MapasCulturais\i::__("Palestra")), 30 => array( 'name' => \MapasCulturais\i::__("Parada e Desfile Militar")), 31 => array( 'name' => \MapasCulturais\i::__("Parada e Desfile Cívico")), 32 => array( 'name' => \MapasCulturais\i::__("Parada e Desfile Festivo")), 33 => array( 'name' => \MapasCulturais\i::__("Parada e Desfile Político")), 34 => array( 'name' => \MapasCulturais\i::__("Parada e Desfile de Ações Afirmativas")), - 35 => ['name' => \MapasCulturais\i::__("Inscrições")], 121 => ['name' => \MapasCulturais\i::__("Pesquisa")], - 122 => ['name' => \MapasCulturais\i::__("Consulta")] + 8 => array( 'name' => \MapasCulturais\i::__("Programa")), + 4 => array( 'name' => \MapasCulturais\i::__("Reunião")), + 3 => array( 'name' => \MapasCulturais\i::__("Sarau")), + 18 => array( 'name' => \MapasCulturais\i::__("Seminário")), + 21 => array( 'name' => \MapasCulturais\i::__("Simpósio")), ); uasort($items, 'compareNamesProject'); diff --git a/src/conf/space-types.php b/src/conf/space-types.php index 187384bf1f..f5f63e061d 100644 --- a/src/conf/space-types.php +++ b/src/conf/space-types.php @@ -9,11 +9,11 @@ \MapasCulturais\i::__('Espaços de Exibição de Filmes') => array( 'range' => array(10,19), 'items' => array( - 10 => array( 'name' => \MapasCulturais\i::__('Cine itinerante' )), - 11 => array( 'name' => \MapasCulturais\i::__('Cineclube' )), - 12 => array( 'name' => \MapasCulturais\i::__('Drive-in' )), + 10 => array( 'name' => \MapasCulturais\i::__('Cine itinerante')), + 11 => array( 'name' => \MapasCulturais\i::__('Cineclube')), + 12 => array( 'name' => \MapasCulturais\i::__('Drive-in')), 13 => array( 'name' => \MapasCulturais\i::__('Espaço Público Para Projeção de Filmes') ), - 14 => array( 'name' => \MapasCulturais\i::__('Sala de cinema' )), + 14 => array( 'name' => \MapasCulturais\i::__('Sala de cinema')), ), ), @@ -22,7 +22,7 @@ 'range' => array(20,29), 'items' => array( 20 => array( 'name' => \MapasCulturais\i::__('Biblioteca Pública') ), - 21 => array( 'name' => \MapasCulturais\i::__('Biblioteca Privada' )), + 21 => array( 'name' => \MapasCulturais\i::__('Biblioteca Privada')), 22 => array( 'name' => \MapasCulturais\i::__('Biblioteca Comunitária (incluí­dos os pontos de leitura)')), 23 => array( 'name' => \MapasCulturais\i::__('Biblioteca Escolar')), 24 => array( 'name' => \MapasCulturais\i::__('Biblioteca Nacional')), @@ -42,19 +42,19 @@ \MapasCulturais\i::__('Circos') => array( 'range' => array(90,99), 'items' => array( - 90 => array( 'name' => \MapasCulturais\i::__('Circo Itinerante' )), - 91 => array( 'name' => \MapasCulturais\i::__('Circo Fixo' )), - 92 => array( 'name' => \MapasCulturais\i::__('Terreno para Circo') ), + 90 => array( 'name' => \MapasCulturais\i::__('Circo Itinerante')), + 91 => array( 'name' => \MapasCulturais\i::__('Circo Fixo')), 93 => array( 'name' => \MapasCulturais\i::__('Circo Tradicional') ), - 94 => array( 'name' => \MapasCulturais\i::__('Circo Moderno' )), + 94 => array( 'name' => \MapasCulturais\i::__('Circo Moderno')), + 92 => array( 'name' => \MapasCulturais\i::__('Terreno para Circo') ), ) ), \MapasCulturais\i::__('Centros Culturais') => array( 'range' => array(40,49), 'items' => array( - 40 => array( 'name' => \MapasCulturais\i::__('Centro Cultural Público' )), - 41 => array( 'name' => \MapasCulturais\i::__('Centro Cultural Privado' )), + 40 => array( 'name' => \MapasCulturais\i::__('Centro Cultural Público')), + 41 => array( 'name' => \MapasCulturais\i::__('Centro Cultural Privado')), ) ), @@ -62,7 +62,7 @@ 'range' => array(50,59), 'items' => array( 50 => array( 'name' => \MapasCulturais\i::__('Arquivo Público') ), - 51 => array( 'name' => \MapasCulturais\i::__('Arquivo Privado' )), + 51 => array( 'name' => \MapasCulturais\i::__('Arquivo Privado')), ) ), @@ -70,53 +70,53 @@ 'range' => array(60,69), 'items' => array( 60 => array( 'name' => \MapasCulturais\i::__('Museu Público') ), - 61 => array( 'name' => \MapasCulturais\i::__('Museu Privado' )), + 61 => array( 'name' => \MapasCulturais\i::__('Museu Privado')), ) ), \MapasCulturais\i::__('Demais Equipamentos Culturais') => array( 'range' => array(100,199), 'items' => array( - 100 => array( 'name' => \MapasCulturais\i::__('Galeria de arte') ), - 101 => array( 'name' => \MapasCulturais\i::__('Livraria' )), - 102 => array( 'name' => \MapasCulturais\i::__('Sebo' )), - 103 => array( 'name' => \MapasCulturais\i::__('Videolocadora') ), - 104 => array( 'name' => \MapasCulturais\i::__('Lan-house' )), - 105 => array( 'name' => \MapasCulturais\i::__('Antiquário' )), - 106 => array( 'name' => \MapasCulturais\i::__('Ateliê' )), + 105 => array( 'name' => \MapasCulturais\i::__('Antiquário')), + 106 => array( 'name' => \MapasCulturais\i::__('Ateliê')), + 131 => array( 'name' => \MapasCulturais\i::__('Audioteca')), + 112 => array( 'name' => \MapasCulturais\i::__('Banca de jornal')), + 108 => array( 'name' => \MapasCulturais\i::__('Casa de espetáculo')), + 117 => array( 'name' => \MapasCulturais\i::__('Casa do Patrimônio')), 107 => array( 'name' => \MapasCulturais\i::__('Centro de artesanato') ), - 108 => array( 'name' => \MapasCulturais\i::__('Casa de espetáculo' )), - 109 => array( 'name' => \MapasCulturais\i::__('Danceteria' )), - 110 => array( 'name' => \MapasCulturais\i::__('Estúdio' )), - 111 => array( 'name' => \MapasCulturais\i::__('Concha acústica' )), - 112 => array( 'name' => \MapasCulturais\i::__('Banca de jornal' )), - 113 => array( 'name' => \MapasCulturais\i::__('Espaço para Eventos' )), - 114 => array( 'name' => \MapasCulturais\i::__('Creative Bureau' )), - 115 => array( 'name' => \MapasCulturais\i::__('Ponto de Leitura Afro' )), - 116 => array( 'name' => \MapasCulturais\i::__('Centro Comunitário' )), - 117 => array( 'name' => \MapasCulturais\i::__('Casa do Patrimônio' )), - 125 => array( 'name' => \MapasCulturais\i::__('Ponto de Cultura' )), - 118 => array( 'name' => \MapasCulturais\i::__('Usina Cultural' )), - 119 => array( 'name' => \MapasCulturais\i::__('Praça dos esportes e da cultura') ), - 120 => array( 'name' => \MapasCulturais\i::__('Espaço Mais Cultura' )), - 121 => array( 'name' => \MapasCulturais\i::__('Sala de dança' )), - 122 => array( 'name' => \MapasCulturais\i::__('Gafieira' )), - 123 => array( 'name' => \MapasCulturais\i::__('Espaço para apresentação de dança' )), - 126 => array( 'name' => \MapasCulturais\i::__('Centro cultural itinerante' )), - 127 => array( 'name' => \MapasCulturais\i::__('Trio elétrico' )), - 128 => array( 'name' => \MapasCulturais\i::__('Clube social' )), + 132 => array( 'name' => \MapasCulturais\i::__('Centro de Artes e Esportes Unificados - CEUs')), 129 => array( 'name' => \MapasCulturais\i::__('Centro de tradições') ), - 130 => array( 'name' => \MapasCulturais\i::__('Sala Multiuso' )), - 124 => array( 'name' => \MapasCulturais\i::__('Rádio Comunitária' )), - 131 => array( 'name' => \MapasCulturais\i::__('Audioteca' )), - 132 => array( 'name' => \MapasCulturais\i::__('Centro de Artes e Esportes Unificados - CEUs' )), - 133 => array( 'name' => \MapasCulturais\i::__('Coreto' )), + 116 => array( 'name' => \MapasCulturais\i::__('Centro Comunitário')), + 114 => array( 'name' => \MapasCulturais\i::__('Creative Bureau')), + 128 => array( 'name' => \MapasCulturais\i::__('Clube social')), + 126 => array( 'name' => \MapasCulturais\i::__('Centro cultural itinerante')), + 133 => array( 'name' => \MapasCulturais\i::__('Coreto')), + 111 => array( 'name' => \MapasCulturais\i::__('Concha acústica')), + 109 => array( 'name' => \MapasCulturais\i::__('Danceteria')), + 110 => array( 'name' => \MapasCulturais\i::__('Estúdio')), + 113 => array( 'name' => \MapasCulturais\i::__('Espaço para Eventos')), + 123 => array( 'name' => \MapasCulturais\i::__('Espaço para apresentação de dança')), + 120 => array( 'name' => \MapasCulturais\i::__('Espaço Mais Cultura')), + 100 => array( 'name' => \MapasCulturais\i::__('Galeria de arte') ), 134 => array( 'name' => \MapasCulturais\i::__('Ginásio Poliesportivo') ), - 135 => array( 'name' => \MapasCulturais\i::__('Sala de Leitura' )), - 136 => array( 'name' => \MapasCulturais\i::__('Pontos de Memória' )), - 137 => array( 'name' => \MapasCulturais\i::__('Núcleos de Produção Digital' )), + 122 => array( 'name' => \MapasCulturais\i::__('Gafieira')), + 104 => array( 'name' => \MapasCulturais\i::__('Lan-house')), + 101 => array( 'name' => \MapasCulturais\i::__('Livraria')), + 137 => array( 'name' => \MapasCulturais\i::__('Núcleos de Produção Digital')), + 115 => array( 'name' => \MapasCulturais\i::__('Ponto de Leitura Afro')), + 119 => array( 'name' => \MapasCulturais\i::__('Praça dos esportes e da cultura') ), + 125 => array( 'name' => \MapasCulturais\i::__('Ponto de Cultura')), + 136 => array( 'name' => \MapasCulturais\i::__('Pontos de Memória')), + 124 => array( 'name' => \MapasCulturais\i::__('Rádio Comunitária')), + 135 => array( 'name' => \MapasCulturais\i::__('Sala de Leitura')), + 130 => array( 'name' => \MapasCulturais\i::__('Sala Multiuso')), + 121 => array( 'name' => \MapasCulturais\i::__('Sala de dança')), + 102 => array( 'name' => \MapasCulturais\i::__('Sebo')), + 127 => array( 'name' => \MapasCulturais\i::__('Trio elétrico')), + 118 => array( 'name' => \MapasCulturais\i::__('Usina Cultural')), + 103 => array( 'name' => \MapasCulturais\i::__('Videolocadora') ), - 199 => array( 'name' => \MapasCulturais\i::__('Outros Equipamentos Culturais' )), // adicionado na importação dos dados do Ceará para receber as endidades do tipo "equipamento" + 199 => array( 'name' => \MapasCulturais\i::__('Outros Equipamentos Culturais')), // adicionado na importação dos dados do Ceará para receber as endidades do tipo "equipamento" ) ), @@ -124,19 +124,19 @@ 'range' => array(70,79), 'items' => array( 70 => array( 'name' => \MapasCulturais\i::__('Centro de Documentação Público') ), - 71 => array( 'name' => \MapasCulturais\i::__('Centro de Documentação Privado' )), + 71 => array( 'name' => \MapasCulturais\i::__('Centro de Documentação Privado')), ) ), \MapasCulturais\i::__('Espaços Religiosos') => array( 'range' => array(80,89), 'items' => array( - 80 => array( 'name' => \MapasCulturais\i::__('Templo' )), - 81 => array( 'name' => \MapasCulturais\i::__('Terreiro' )), - 82 => array( 'name' => \MapasCulturais\i::__('Mesquitas' )), - 83 => array( 'name' => \MapasCulturais\i::__('Sinagoga' )), - 84 => array( 'name' => \MapasCulturais\i::__('Igreja' )), 85 => array( 'name' => \MapasCulturais\i::__('Centro Espírita') ), + 84 => array( 'name' => \MapasCulturais\i::__('Igreja')), + 82 => array( 'name' => \MapasCulturais\i::__('Mesquitas')), + 83 => array( 'name' => \MapasCulturais\i::__('Sinagoga')), + 81 => array( 'name' => \MapasCulturais\i::__('Terreiro')), + 80 => array( 'name' => \MapasCulturais\i::__('Templo')), ) ), @@ -147,57 +147,57 @@ \MapasCulturais\i::__('Instituições Públicas de Ensino Regular') => array( 'range' => array(300,399), 'items' => array( - 300 => array( 'name' => \MapasCulturais\i::__('Instituição Pública de Ensino Regular Federal' )), - 301 => array( 'name' => \MapasCulturais\i::__('Instituição Pública de Ensino Regular Estadual' )), - 302 => array( 'name' => \MapasCulturais\i::__('Instituição Pública de Ensino Regular Municipal' )), - 303 => array( 'name' => \MapasCulturais\i::__('Instituição Pública de Ensino Regular Distrital' )), + 300 => array( 'name' => \MapasCulturais\i::__('Instituição Pública de Ensino Regular Federal')), + 301 => array( 'name' => \MapasCulturais\i::__('Instituição Pública de Ensino Regular Estadual')), + 302 => array( 'name' => \MapasCulturais\i::__('Instituição Pública de Ensino Regular Municipal')), + 303 => array( 'name' => \MapasCulturais\i::__('Instituição Pública de Ensino Regular Distrital')), ) ), \MapasCulturais\i::__('Instituições Privadas de Ensino Regular') => array( 'range' => array(400,499), 'items' => array( - 400 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Particular' )), - 401 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Comunitária' )), - 402 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Confessional' )), - 403 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Filantrópica' )), + 400 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Particular')), + 401 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Comunitária')), + 402 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Confessional')), + 403 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Filantrópica')), ) ), \MapasCulturais\i::__('Instituições Públicas exclusivamente voltada para formação artistica e cultural') => array( 'range' => array(601,699), 'items' => array( - 601 => array( 'name' => \MapasCulturais\i::__('Instituição Pública Federal exclusivamente voltada para formação artistica e cultural' )), - 602 => array( 'name' => \MapasCulturais\i::__('Instituição Pública Estadual exclusivamente voltada para formação artistica e cultural' )), - 603 => array( 'name' => \MapasCulturais\i::__('Instituição Pública Municipal exclusivamente voltada para formação artistica e cultural' )), - 604 => array( 'name' => \MapasCulturais\i::__('Instituição Pública Distrital exclusivamente voltada para formação artistica e cultural' )), + 601 => array( 'name' => \MapasCulturais\i::__('Instituição Pública Federal exclusivamente voltada para formação artistica e cultural')), + 602 => array( 'name' => \MapasCulturais\i::__('Instituição Pública Estadual exclusivamente voltada para formação artistica e cultural')), + 603 => array( 'name' => \MapasCulturais\i::__('Instituição Pública Municipal exclusivamente voltada para formação artistica e cultural')), + 604 => array( 'name' => \MapasCulturais\i::__('Instituição Pública Distrital exclusivamente voltada para formação artistica e cultural')), ) ), \MapasCulturais\i::__('Instituições Privadas exclusivamente voltada para formação artistica e cultural') => array( 'range' => array(700,799), 'items' => array( - 700 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Particular exclusivamente voltada para formação artistica e cultural' )), - 701 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Comunitária exclusivamente voltada para formação artistica e cultural' )), - 702 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Confessional exclusivamente voltada para formação artistica e cultural' )), - 703 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Filantrópica exclusivamente voltada para formação artistica e cultural' )), + 700 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Particular exclusivamente voltada para formação artistica e cultural')), + 701 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Comunitária exclusivamente voltada para formação artistica e cultural')), + 702 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Confessional exclusivamente voltada para formação artistica e cultural')), + 703 => array( 'name' => \MapasCulturais\i::__('Instituição Privada Filantrópica exclusivamente voltada para formação artistica e cultural')), ) ), \MapasCulturais\i::__('Escolas livres') => array( 'range' => array(800,899), 'items' => array( - 800 => array( 'name' => \MapasCulturais\i::__('Escola livre de Artes Cênicas' )), - 801 => array( 'name' => \MapasCulturais\i::__('Escola livre de Artes Visuais' )), - 802 => array( 'name' => \MapasCulturais\i::__('Escola livre de Audiovisual' )), - 803 => array( 'name' => \MapasCulturais\i::__('Escola livre de Hip Hop' )), - 804 => array( 'name' => \MapasCulturais\i::__('Escola livre de Cultura Digital' )), - 805 => array( 'name' => \MapasCulturais\i::__('Escola livre de Música' )), - 806 => array( 'name' => \MapasCulturais\i::__('Escola livre de Cultura Popular' )), - 807 => array( 'name' => \MapasCulturais\i::__('Escola livre de Gestão Cultural' )), + 800 => array( 'name' => \MapasCulturais\i::__('Escola livre de Artes Cênicas')), + 801 => array( 'name' => \MapasCulturais\i::__('Escola livre de Artes Visuais')), + 802 => array( 'name' => \MapasCulturais\i::__('Escola livre de Audiovisual')), + 803 => array( 'name' => \MapasCulturais\i::__('Escola livre de Hip Hop')), + 804 => array( 'name' => \MapasCulturais\i::__('Escola livre de Cultura Digital')), + 805 => array( 'name' => \MapasCulturais\i::__('Escola livre de Música')), + 806 => array( 'name' => \MapasCulturais\i::__('Escola livre de Cultura Popular')), + 807 => array( 'name' => \MapasCulturais\i::__('Escola livre de Gestão Cultural')), 808 => array( 'name' => \MapasCulturais\i::__('Escola livre de Pontinhos de cultura') ), - 809 => array( 'name' => \MapasCulturais\i::__('Escola livre de Patrimônio' )), - 810 => array( 'name' => \MapasCulturais\i::__('Escola livre de Design' )), + 809 => array( 'name' => \MapasCulturais\i::__('Escola livre de Patrimônio')), + 810 => array( 'name' => \MapasCulturais\i::__('Escola livre de Design')), ) ), @@ -208,25 +208,24 @@ \MapasCulturais\i::__('Bens culturais de natureza material') => array( 'range' => array(200, 299), 'items' => array( - 200 => array( 'name' => \MapasCulturais\i::__('Bens culturais de natureza material' )), - 201 => array( 'name' => \MapasCulturais\i::__('Bem Imóvel' )), - 202 => array( 'name' => \MapasCulturais\i::__('Bem Arqueológico' )), - 203 => array( 'name' => \MapasCulturais\i::__('Bem Paisagístico' )), - 204 => array( 'name' => \MapasCulturais\i::__('Bem Móvel ou Integrado' )), - 205 => array( 'name' => \MapasCulturais\i::__('Sitio Histórico' )), - 206 => array( 'name' => \MapasCulturais\i::__('Documentação' )), - 207 => array( 'name' => \MapasCulturais\i::__('Coleções' )), - - 210 => array( 'name' => \MapasCulturais\i::__('Bens culturais de natureza imaterial' )), // adicionado na importação dos dados do Ceará para receber as endidades do tipo "patrimonio-imaterial" - - 299 => array( 'name' => \MapasCulturais\i::__('Outros' )) // adicionado na importação dos dados do Ceará para receber as endidades do tipo "post" + 200 => array( 'name' => \MapasCulturais\i::__('Bens culturais de natureza material')), + 201 => array( 'name' => \MapasCulturais\i::__('Bem Imóvel')), + 202 => array( 'name' => \MapasCulturais\i::__('Bem Arqueológico')), + 203 => array( 'name' => \MapasCulturais\i::__('Bem Paisagístico')), + 204 => array( 'name' => \MapasCulturais\i::__('Bem Móvel ou Integrado')), + 210 => array( 'name' => \MapasCulturais\i::__('Bens culturais de natureza imaterial')), // adicionado na importação dos dados do Ceará para receber as endidades do tipo "patrimonio-imaterial" + 207 => array( 'name' => \MapasCulturais\i::__('Coleções')), + 206 => array( 'name' => \MapasCulturais\i::__('Documentação')), + 205 => array( 'name' => \MapasCulturais\i::__('Sitio Histórico')), + + 299 => array( 'name' => \MapasCulturais\i::__('Outros')) // adicionado na importação dos dados do Ceará para receber as endidades do tipo "post" ) ), \MapasCulturais\i::__('Temporário') => array( 'range' => array(500,600), 'items' => array( - 501 => array( 'name' => \MapasCulturais\i::__('Palco de Rua' )), + 501 => array( 'name' => \MapasCulturais\i::__('Palco de Rua')), ) ), ); diff --git a/src/core/ApiQuery.php b/src/core/ApiQuery.php index 2a1c6c73ca..e74ab31094 100644 --- a/src/core/ApiQuery.php +++ b/src/core/ApiQuery.php @@ -286,7 +286,7 @@ class ApiQuery { * List of parameters that will be used to run the DQL * @var array */ - protected $_dqlParams = []; + public $_dqlParams = []; /** * Fields that are being selected @@ -3065,6 +3065,8 @@ protected function parseQueryParams() { if($class::isPrivateEntity() && !isset($this->apiParams['@permissions'])){ $this->_addFilterByPermissions('view'); } + + $app->applyHookBoundTo($this, "{$this->hookPrefix}.parseQueryParams"); } protected function _addFilterBySeals($seals_ids){ diff --git a/src/core/App.php b/src/core/App.php index 5a38354141..a945563e9b 100644 --- a/src/core/App.php +++ b/src/core/App.php @@ -62,6 +62,7 @@ * @property-read Slim\App $slim instância do Slim * @property-read Hooks $hooks gerenciador de hooks * @property-read EntityManager $em Doctrine Entity Manager + * @property-read AuthProvider $auth Auth provider * @property-read string $siteName nome do site * @property-read string $siteDescription descrição do site * @property-read string $currentLCode código da linguagem configurada. ex: pt_BR diff --git a/src/core/Controllers/Opportunity.php b/src/core/Controllers/Opportunity.php index b31fd1c76d..3f5c722e8f 100644 --- a/src/core/Controllers/Opportunity.php +++ b/src/core/Controllers/Opportunity.php @@ -492,6 +492,17 @@ function apiFindRegistrations($opportunity, $query_data) { $current_phase_query_params['@select'] = implode(',', $current_phase_query_select); + if($phase->isLastPhase && $phase->publishedRegistrations && !$phase->canUser('@control')) { + $app->hook('ApiQuery(Registration).parseQueryParams', function() use ($current_phase_query_params) { + if($this->apiParams['opportunity'] == $current_phase_query_params['opportunity']) { + $this->joins = ""; + $params = $this->_dqlParams; + array_pop($params); + $this->_dqlParams = $params; + } + }); + } + $current_phase_query = new ApiQuery(Registration::class, $current_phase_query_params); if(isset($previous_phase_query) && !$phase->isLastPhase) { $current_phase_query->addFilterByApiQuery($previous_phase_query, 'number', 'number'); @@ -1048,7 +1059,9 @@ function GET_exportFields() { 'introInscricoes', 'useSpaceRelationIntituicao', 'registrationSeals', - 'registrationLimit' + 'registrationLimit', + 'registrationRanges', + 'registrationProponentTypes', ); $metadata = []; diff --git a/src/core/Controllers/Registration.php b/src/core/Controllers/Registration.php index decf99a6f3..6ab7a45a75 100644 --- a/src/core/Controllers/Registration.php +++ b/src/core/Controllers/Registration.php @@ -602,7 +602,7 @@ function POST_validateEntity() { $entity->$field = $value; } - if ($errors = $entity->getSendValidationErrors()) { + if ($errors = $entity->getValidationErrors()) { $this->errorJson($errors); } else { $this->json(true); @@ -623,7 +623,7 @@ function POST_validateProperties() { $entity->$field = $value; } - if ($_errors = $entity->getSendValidationErrors()) { + if ($_errors = $entity->getValidationErrors()) { $errors = []; foreach($this->postData as $field => $value){ if(key_exists($field, $_errors)){ diff --git a/src/core/Definitions/Metadata.php b/src/core/Definitions/Metadata.php index c1cffd6262..1b1b1b70f1 100644 --- a/src/core/Definitions/Metadata.php +++ b/src/core/Definitions/Metadata.php @@ -90,6 +90,10 @@ class Metadata extends \MapasCulturais\Definition{ public $field_type; + public array $options = []; + + public bool $numericKeyValueOptions = false; + /** * Creates a new Metadata Definition. * @@ -148,17 +152,20 @@ function __construct($key, $config) { $this->_validations = key_exists('validations', $config) && is_array($config['validations']) ? $config['validations'] : []; + $this->numericKeyValueOptions = $config['numericKeyValueOptions'] ?? false; + if (isset($config['options']) && is_array($config['options'])) { $new_array = []; foreach ($config['options'] as $k => $value) { - if (is_int($k)) { + if (is_int($k) && !$this->numericKeyValueOptions) { $k = $value; } $new_array[$k] = $value; } $config['options'] = $new_array; + $this->options = $new_array; } $this->serialize = $config['serialize'] ?? $this->getDefaultSerializer(); @@ -357,9 +364,10 @@ function getMetadata(){ 'field_type' => $this->field_type, ]; - if(key_exists('options', $this->config)){ - $result['options'] = $this->config['options']; - $result['optionsOrder'] = array_keys((array)$this->config['options']); + if($this->options){ + $result['options'] = $this->options; + $result['optionsOrder'] = array_keys($this->options); + $result['numericKeyValueOptions'] = $this->numericKeyValueOptions; } foreach($this->config as $key => $val) { diff --git a/src/core/Entities/EvaluationMethodConfiguration.php b/src/core/Entities/EvaluationMethodConfiguration.php index cc9a8db1a4..9fdf5c875c 100644 --- a/src/core/Entities/EvaluationMethodConfiguration.php +++ b/src/core/Entities/EvaluationMethodConfiguration.php @@ -17,6 +17,7 @@ * * @property-read \MapasCulturais\Definitions\EvaluationMethod $definition The evaluation method definition object * @property-read \MapasCulturais\EvaluationMethod $evaluationMethod The evaluation method plugin object + * @property-read string summaryCacheKey Chave do cache do resumo das avaliações * @property int $opportunity ownerId * @property-read \MapasCulturais\Entities\Opportunity owner * @property-read boolean publishedRegistration @@ -266,22 +267,32 @@ public function getPublishTimestamp() return $this->opportunity->publishTimestamp; } - /** + + /** + * Retorna uma chave única para o cache do resumo das avaliações. + * + * @return string A chave única para o cache do resumo da avaliações . + */ + public function getSummaryCacheKey(): string + { + return "evaluation-summary-{$this->id}"; + } + + /** * Retorna um resumo do número de inscrições de uma oportunidade * * @return array */ - public function getSummary() - { + public function getSummary($skip_cache = false): array { if($this->isNew()) { return []; } /** @var App $app */ $app = App::i(); - - if($app->config['app.useOpportunitySummaryCache']) { - $cache_key = __METHOD__ . ':' . $this->id; + + $cache_key = $this->summaryCacheKey; + if(!$skip_cache && $app->config['app.useOpportunitySummaryCache']) { if ($app->cache->contains($cache_key)) { return $app->cache->fetch($cache_key); } diff --git a/src/core/Entities/Opportunity.php b/src/core/Entities/Opportunity.php index a46d299d7a..dc09337b93 100644 --- a/src/core/Entities/Opportunity.php +++ b/src/core/Entities/Opportunity.php @@ -275,6 +275,16 @@ abstract class Opportunity extends \MapasCulturais\Entity * @ORM\Column(name="subsite_id", type="integer", nullable=true) */ protected $_subsiteId; + + /** + * @var \MapasCulturais\Entities\Subsite + * + * @ORM\ManyToOne(targetEntity="MapasCulturais\Entities\Subsite") + * @ORM\JoinColumns({ + * @ORM\JoinColumn(name="subsite_id", referencedColumnName="id", nullable=true, onDelete="SET NULL") + * }) + */ + protected $subsite; /** * @var string @@ -809,6 +819,8 @@ function importFields($importSource) { $newField->displayOrder = $field->displayOrder; $newField->conditional = $field->conditional; $newField->conditionalValue = $field->conditionalValue; + $newField->proponentTypes = $field->proponentTypes; + $newField->registrationRanges = $field->registrationRanges; $field->newField = $newField; @@ -850,6 +862,8 @@ function importFields($importSource) { $newFile->displayOrder = $file->displayOrder; $newFile->conditional = $file->conditional; $newFile->conditionalValue = $file->conditionalValue; + $newFile->proponentTypes = $field->proponentTypes; + $newField->registrationRanges = $field->registrationRanges; $app->em->persist($newFile); @@ -963,13 +977,22 @@ function isUserEvaluationsSent($user = null){ return $relation->status === EvaluationMethodConfigurationAgentRelation::STATUS_SENT; } + /** + * Retorna uma chave única para o cache do resumo da fase + * + * @return string A chave única para o cache do resumo da fase. + */ + public function getSummaryCacheKey(): string + { + return "opportunity-summary-{$this->id}"; + } + /** * Retorna um resumo do número de inscrições de uma oportunidade * * @return array */ - public function getSummary() - { + public function getSummary($skip_cache = false): array { if($this->isNew()) { return []; } @@ -977,8 +1000,10 @@ public function getSummary() /** @var App $app */ $app = App::i(); - if($app->config['app.useOpportunitySummaryCache']) { - $cache_key = __METHOD__ . ':' . $this->id; + $cache_key = $this->summaryCacheKey; + + if(!$skip_cache && $app->config['app.useOpportunitySummaryCache']) { + if ($app->cache->contains($cache_key)) { return $app->cache->fetch($cache_key); } diff --git a/src/core/Entities/Registration.php b/src/core/Entities/Registration.php index 84dd0d348b..8b6a7752e4 100644 --- a/src/core/Entities/Registration.php +++ b/src/core/Entities/Registration.php @@ -998,27 +998,40 @@ function isFieldVisisble(RegistrationFieldConfiguration|RegistrationFileConfigur $use_range = (bool) $opportunity->registrationRanges; $use_proponent_types = (bool) $opportunity->registrationProponentTypes; - if ($use_category && count($field->categories) > 0 && !in_array($this->category, $field->categories)) { + $field_categories = $field->categories ?: []; + $field_ranges = $field->registrationRanges ?: []; + $field_proponent_types = $field->proponentTypes ?: []; + + + if ($use_category && count($field_categories) > 0 && !in_array($this->category, $field_categories)) { return false; } - if ($use_range && count($field->registrationRanges) > 0 && !in_array($this->range, $field->registrationRanges)) { + if ($use_range && count($field_ranges) > 0 && !in_array($this->range, $field_ranges)) { return false; } - if ($use_proponent_types && count($field->proponentTypes) > 0 && !in_array($this->proponentType, $field->proponentTypes)) { + if ($use_proponent_types && count($field_proponent_types) > 0 && !in_array($this->proponentType, $field_proponent_types)) { return false; } + if($field->conditional){ + $_fied_name = $field->conditionalField; + $_fied_value = $field->conditionalValue; + return $this->$_fied_name == $_fied_value; + } + return true; } function getValidationErrors() { if($this->isNew()) { - return parent::getValidationErrors(); + $errors = parent::getValidationErrors(); } else { - return $this->getSendValidationErrors(); + $errors = [...parent::getValidationErrors(), ...$this->getSendValidationErrors()]; } + + return $errors; } function getSendValidationErrors(string $field_prefix = 'field_', $file_prefix = 'file_', $agent_prefix = 'agent_'){ @@ -1107,6 +1120,8 @@ function getSendValidationErrors(string $field_prefix = 'field_', $file_prefix = } $field_required = $rfc->required; + + /** @todo Verificar se este if ainda é necessário após a implementação do isFieldVisisble()*/ if($rfc->conditional){ $_fied_name = $rfc->conditionalField; $_fied_value = $rfc->conditionalValue; @@ -1138,6 +1153,7 @@ function getSendValidationErrors(string $field_prefix = 'field_', $file_prefix = $field_name = $field_prefix . $field->id; $field_required = $field->required; + /** @todo Verificar se este if ainda é necessário após a implementação do isFieldVisisble()*/ if($metadata_definition && $metadata_definition->config && $metadata_definition->config['registrationFieldConfiguration'] && $metadata_definition->config['registrationFieldConfiguration']->conditional){ $conf = $metadata_definition->config['registrationFieldConfiguration']; diff --git a/src/core/Entity.php b/src/core/Entity.php index e7b714eb4d..813036b152 100644 --- a/src/core/Entity.php +++ b/src/core/Entity.php @@ -1142,6 +1142,8 @@ public function getValidationErrors(){ if($this->usesTaxonomies()) $errors = $errors + $this->getTaxonomiesValidationErrors(); + $app->applyHookBoundTo($this, "{$this->hookPrefix}.validationErrors", [&$errors]); + return $errors; } diff --git a/src/core/Traits/ControllerEntityActions.php b/src/core/Traits/ControllerEntityActions.php index ffec686a62..4a500cc161 100644 --- a/src/core/Traits/ControllerEntityActions.php +++ b/src/core/Traits/ControllerEntityActions.php @@ -69,6 +69,8 @@ public function ALL_enqueuePCache() { } $entity->enqueueToPCacheRecreation($users); + + $this->json(true); } /** @@ -105,13 +107,6 @@ function POST_index($data = null) { } if($errors = $entity->validationErrors){ - if ($entity->getEntityType() == 'Opportunity' && in_array("term-area", array_keys($errors)) && $errors['term-area']) { - foreach($errors['term-area'] as &$termError) { - if(strpos($termError, i::__('área de atuação')) !== false) { - $termError = str_replace(i::__('área de atuação'), i::__('área de interesse'), $termError); - } - } - } $this->errorJson($errors); }else{ $this->_finishRequest($entity, true); diff --git a/src/core/Traits/EntityMetadata.php b/src/core/Traits/EntityMetadata.php index 20764e92c9..653ce1e1b0 100644 --- a/src/core/Traits/EntityMetadata.php +++ b/src/core/Traits/EntityMetadata.php @@ -370,7 +370,7 @@ function getMetadataValidationErrors(){ $unserialize = $metadata_definition->unserialize; if (is_callable($unserialize)) { - $val = $unserialize($val, $this); + $val = $unserialize($val, $this, $metadata_definition); } $metadata_value_errors = $metadata_definition->validate($this, $val); diff --git a/src/cypress/commands/checkFilterCountOf.js b/src/cypress/commands/checkFilterCountOf.js index a6de0c8c07..02f2ba3458 100644 --- a/src/cypress/commands/checkFilterCountOf.js +++ b/src/cypress/commands/checkFilterCountOf.js @@ -1,26 +1,28 @@ /* Checa a contagem de um elemento específico na página de filtros. */ function checkFilterCountOf(element) { cy.get('.foundResults').then(($foundResults) => { + const countPerPage = 20; var resultsTextArray = $foundResults.text().split(" "); var resultsCount = Number(resultsTextArray[0]); + const resultsCountPerPage = resultsCount < countPerPage ? resultsCount : countPerPage; switch (element) { case "opportunity": - cy.get(".upper." + element + "__color").should("have.length", resultsCount); + cy.get("span.upper." + element + "__color").should("have.length", resultsCountPerPage); cy.wait(1000); cy.contains(resultsCount + " Oportunidades encontradas"); break; case "project": - cy.get(".upper." + element + "__color").should("have.length", resultsCount); + cy.get("span.upper." + element + "__color").should("have.length", resultsCountPerPage); cy.wait(1000); cy.contains(resultsCount + " Projetos encontrados"); break; case "space": - cy.get(".upper." + element + "__color").should("have.length", resultsCount); + cy.get("span.upper." + element + "__color").should("have.length", resultsCountPerPage); cy.wait(1000); cy.contains(resultsCount + " Espaços encontrados"); diff --git a/src/cypress/commands/genNextMonth.js b/src/cypress/commands/genNextMonth.js new file mode 100644 index 0000000000..575c3f69b4 --- /dev/null +++ b/src/cypress/commands/genNextMonth.js @@ -0,0 +1,13 @@ +const months = [ + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", + "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" +]; + +function getNextMonth() { + const currentDate = new Date(); + const currentMonth = currentDate.getMonth(); + const nextMonth = (currentMonth + 1) % 12; + return months[nextMonth]; +} + +module.exports = getNextMonth; \ No newline at end of file diff --git a/src/cypress/e2e/eventsPage/index.cy.js b/src/cypress/e2e/eventsPage/index.cy.js index 65de35e630..559429ea3f 100644 --- a/src/cypress/e2e/eventsPage/index.cy.js +++ b/src/cypress/e2e/eventsPage/index.cy.js @@ -1,3 +1,5 @@ +const getNextMonth = require('../../commands/genNextMonth'); + describe("Events Page", () => { beforeEach(() => { cy.viewport(1920, 1080); @@ -18,7 +20,10 @@ describe("Events Page", () => { cy.get(".dp__menu_content_wrapper").should("exist"); cy.get(".dp__preset_ranges").should("exist"); cy.get(".dp__flex_display").should("exist"); - ["Hoje", "Amanhã", "Esta semana", "Este fim de semana", "Próximo fim de semana", "Próximos 7 dias", "Próximos 30 dias", "Junho", "2024"].forEach(dateRange => { + + const nextMonth = getNextMonth(); + + ["Hoje", "Amanhã", "Esta semana", "Este fim de semana", "Próximo fim de semana", "Próximos 7 dias", "Próximos 30 dias", nextMonth, "2024"].forEach(dateRange => { cy.contains(dateRange).should("exist"); }); }); diff --git a/src/db-updates.php b/src/db-updates.php index 7b9396ded6..dbf948eb80 100644 --- a/src/db-updates.php +++ b/src/db-updates.php @@ -160,6 +160,35 @@ function __try($sql, $cb = null){ $$ LANGUAGE plpgsql strict immutable;"); }, + 'create table system_role' => function () { + __exec("CREATE SEQUENCE system_role_id_seq INCREMENT BY 1 MINVALUE 1 START 1;"); + __exec("CREATE TABLE system_role ( + id INT NOT NULL, + slug VARCHAR(64) NOT NULL, + name VARCHAR(255) NOT NULL, + subsite_context BOOLEAN NOT NULL, + permissions JSON DEFAULT NULL, + create_timestamp TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, + update_timestamp TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, + status SMALLINT NOT NULL, + PRIMARY KEY(id));"); + __exec("COMMENT ON COLUMN system_role.permissions IS '(DC2Type:json_array)';"); + }, + + 'alter system_role.permissions comment' => function () { + __exec("COMMENT ON COLUMN system_role.permissions IS '(DC2Type:json)';"); + }, + + "Cria colunas proponent_type e registration na tabela registration" => function() use ($conn){ + if(!__column_exists('registration', 'proponent_type')) { + __exec("ALTER TABLE registration ADD COLUMN proponent_type VARCHAR(255) NULL"); + } + + if(!__column_exists('registration', 'range')) { + __exec("ALTER TABLE registration ADD COLUMN range VARCHAR(255) NULL"); + } + }, + 'migrate gender' => function() use ($conn) { $conn->executeQuery("UPDATE agent_meta SET value='Homem' WHERE key='genero' AND value='Masculino'"); $conn->executeQuery("UPDATE agent_meta SET value='Mulher' WHERE key='genero' AND value='Feminino'"); @@ -1922,13 +1951,19 @@ function __try($sql, $cb = null){ }, 'Adiciona a coluna description para a descrição da ocorrência' => function() { - __exec("ALTER TABLE event_occurrence ADD description TEXT DEFAULT NULL;"); + if(!__column_exists('event_occurrence', 'description')) { + __exec("ALTER TABLE event_occurrence ADD description TEXT DEFAULT NULL;"); + } }, 'Adiciona a coluna price para a o valor de entrada da ocorrência' => function() { - __exec("ALTER TABLE event_occurrence ADD price TEXT DEFAULT NULL;"); + if(!__column_exists('event_occurrence', 'price')) { + __exec("ALTER TABLE event_occurrence ADD price TEXT DEFAULT NULL;"); + } }, 'Adiciona a coluna priceInfo para a informações sobre o valor de entrada da ocorrência' => function() { - __exec("ALTER TABLE event_occurrence ADD priceInfo TEXT DEFAULT NULL;"); + if(!__column_exists('event_occurrence', 'priceInfo')) { + __exec("ALTER TABLE event_occurrence ADD priceInfo TEXT DEFAULT NULL;"); + } }, 'Apaga registro do db-update de "Definição dos cammpos cpf e cnpj com base no documento" para que rode novamente' => function() use ($conn, $app){ @@ -2001,11 +2036,25 @@ function __try($sql, $cb = null){ "migra valores das colunas do tipo array para do tipo json" => function() use ($conn) { $fields = $conn->fetchAll("SELECT id, config, field_options, categories from registration_field_configuration"); $count = count($fields); + + $json_validate = function (string $string): bool { + json_decode($string); + return json_last_error() === JSON_ERROR_NONE; + }; + + $check_serialize = function($value) use ($json_validate) { + if((is_string($value) && $json_validate($value)) || !$value) { + return $value; + } + + return json_encode(unserialize($value)); + }; + foreach($fields as $i => $field) { echo "migrando registration_field_configuration ({$i} / $count)\n"; - $field['config'] = json_encode(unserialize($field['config'])); - $field['field_options'] = json_encode(unserialize($field['field_options'])); - $field['categories'] = json_encode(unserialize($field['categories'])); + $field['config'] = $check_serialize($field['config']); + $field['field_options'] = $check_serialize($field['field_options']); + $field['categories'] = $check_serialize($field['categories']); $conn->executeQuery(" UPDATE registration_field_configuration @@ -2020,7 +2069,7 @@ function __try($sql, $cb = null){ $count = count($files); foreach($files as $i => $file) { echo "migrando registration_file_configuration ({$i} / $count)\n"; - $file['categories'] = json_encode(unserialize($file['categories'])); + $file['categories'] = $check_serialize($file['categories']); $conn->executeQuery(" UPDATE registration_file_configuration @@ -2033,7 +2082,7 @@ function __try($sql, $cb = null){ foreach($requests as $i => $request) { echo "migrando request ({$i} / $count)\n"; $id = $request['id']; - $metadata = json_encode(unserialize($request['metadata'])); + $metadata = $check_serialize($request['metadata']); $conn->executeQuery(" UPDATE request @@ -2080,16 +2129,6 @@ function __try($sql, $cb = null){ p1.action = p2.action;"); }, - "Cria colunas proponent_type e registration na tabela registration" => function() use ($conn){ - if(!__column_exists('registration', 'proponent_type')) { - __exec("ALTER TABLE registration ADD COLUMN proponent_type VARCHAR(255) NULL"); - } - - if(!__column_exists('registration', 'range')) { - __exec("ALTER TABLE registration ADD COLUMN range VARCHAR(255) NULL"); - } - }, - "Cria colunas registration_proponent_types e registration_ranges na tabela opportunity" => function() use ($conn){ if(!__column_exists('opportunity', 'registration_proponent_types')) { __exec("ALTER TABLE opportunity ADD COLUMN registration_proponent_types JSON NULL"); diff --git a/src/mc-updates.php b/src/mc-updates.php index d3e15e7e57..3f7c609f89 100644 --- a/src/mc-updates.php +++ b/src/mc-updates.php @@ -1,10 +1,11 @@ function () { @@ -437,5 +438,21 @@ $opportunity->enqueueRegistrationSync(); } }); + }, + 'Atualiza campo pessoa idosa' => function() { + DB_UPDATE::enqueue(Agent::class, "id > 0", function (Agent $agent) { + $app = \MapasCulturais\App::i(); + $app->disableAccessControl(); + if ($agent->dataDeNascimento) { + $today = new \DateTime('now'); + $calc = (new \DateTime($agent->dataDeNascimento))->diff($today); + $idoso = ($calc->y >= 60) ? "1" : "0"; + if($agent->idoso != $idoso){ + $agent->idoso = $idoso; + $agent->save(true); + } + } + $app->enableAccessControl(); + }); } ]; diff --git a/src/modules/BaseV1EmbedTools/assets/css/embedtools.css b/src/modules/BaseV1EmbedTools/assets/css/embedtools.css index 93bac85bdb..e4081442cb 100644 --- a/src/modules/BaseV1EmbedTools/assets/css/embedtools.css +++ b/src/modules/BaseV1EmbedTools/assets/css/embedtools.css @@ -325,6 +325,18 @@ textarea { line-height: 19px; } +.action-registrationform .registration-edit-mode ul.attachment-list li.attachment-list-item div[id^=field] .two-column { + display: inline-flex; +} + +.action-registrationform .registration-edit-mode ul.attachment-list li.attachment-list-item div[id^=field] .field_checkbox { + margin-bottom: 8px; +} + +.action-registrationform .registration-edit-mode ul.attachment-list li.attachment-list-item div[id^=field] .field_checkbox:last-child { + margin-bottom: 0; +} + .action-registrationform .registration-edit-mode ul.attachment-list li.attachment-list-item .title_section { background-color: #F5F5F5 !important; padding: 40px 0 24px!important; diff --git a/src/modules/Components/Module.php b/src/modules/Components/Module.php index 13826a95e6..14014b4a7b 100644 --- a/src/modules/Components/Module.php +++ b/src/modules/Components/Module.php @@ -90,7 +90,7 @@ function _init() } } - $this->jsObject['currentUserRoles'] = array_unique($roles); + $this->jsObject['currentUserRoles'] = array_values(array_unique($roles)); /* Definindo entidades desligadas */ $entities = ['agents', 'events', 'projects', 'opportunities', 'spaces', 'seals', 'subsites', 'apps']; diff --git a/src/modules/Components/components/entity-card/template.php b/src/modules/Components/components/entity-card/template.php index 352d448894..ab8562e358 100644 --- a/src/modules/Components/components/entity-card/template.php +++ b/src/modules/Components/components/entity-card/template.php @@ -122,8 +122,7 @@ - - + diff --git a/src/modules/Components/components/mc-link/script.js b/src/modules/Components/components/mc-link/script.js index d4c5d89311..d9e8ab1fb5 100644 --- a/src/modules/Components/components/mc-link/script.js +++ b/src/modules/Components/components/mc-link/script.js @@ -57,25 +57,35 @@ app.component('mc-link', { }, - data() { - let url = ''; - let classes = this.class; - let queryString = this.serializeQueryString(); - queryString = queryString ? `?${queryString}` : queryString; - - if (this.entity) { - url = this.entity.getUrl(this.route, this.params) + queryString; - classes += ` ${this.entity.__objectType}__color` ; - } else { - const parts = this.route.split('/'); - url = Utils.createUrl(parts[0], parts[1], this.params) + queryString; - } + computed: { + url() { + let url = ''; + let queryString = this.serializeQueryString(); + queryString = queryString ? `?${queryString}` : queryString; + + if (this.entity) { + url = this.entity.getUrl(this.route, this.params) + queryString; + } else { + const parts = this.route.split('/'); + url = Utils.createUrl(parts[0], parts[1], this.params) + queryString; + } - if (this.hash) { - url = url+'#'+this.hash; - } + if (this.hash) { + url = url+'#'+this.hash; + } + + return url; + }, + + classes() { + let classes = this.class; - return {url, classes}; + if (this.entity) { + classes += ` ${this.entity.__objectType}__color` ; + } + + return classes; + } }, methods: { diff --git a/src/modules/Entities/Module.php b/src/modules/Entities/Module.php index 91743aab16..292155eacb 100644 --- a/src/modules/Entities/Module.php +++ b/src/modules/Entities/Module.php @@ -3,6 +3,7 @@ namespace Entities; use MapasCulturais\App; +use MapasCulturais\Entity; class Module extends \MapasCulturais\Module{ @@ -17,6 +18,28 @@ function __construct(array $config = []) function _init(){ $app = App::i(); + // Atualiza o campo pessoa idosa no momento de login + $app->hook('GET(<<*>>)', function () use($app){ + if ($app->auth->isUserAuthenticated()) { + $cache_key = "profile:idoso:{$app->user->id}"; + if(!$app->cache->contains($cache_key)){ + $entity = $app->user->profile; + if($entity->dataDeNascimento){ + $app->log->debug('Entrou aqui 1'); + $today = new \DateTime('now'); + $calc = (new \DateTime($entity->dataDeNascimento))->diff($today); + $idoso = ($calc->y >= 60) ? "1" : "0"; + if($entity->idoso != $idoso){ + $app->log->debug('Entrou aqui 2'); + $entity->idoso = $idoso; + $entity->save(true); + } + } + $app->cache->save($cache_key,1,DAY_IN_SECONDS); + } + } + }); + $app->hook('Theme::isRequestedEntityMine', function () use($app) { $entity = $this->controller->requestedEntity; diff --git a/src/modules/Entities/components/entity-admins/script.js b/src/modules/Entities/components/entity-admins/script.js index 2d86e51929..f05f4a97bf 100644 --- a/src/modules/Entities/components/entity-admins/script.js +++ b/src/modules/Entities/components/entity-admins/script.js @@ -34,6 +34,8 @@ app.component('entity-admins', { if (idFilter) { query['id'] = idFilter; } + + query['parent'] = 'NULL()' return query; diff --git a/src/modules/Entities/components/entity-table/script.js b/src/modules/Entities/components/entity-table/script.js index 451001fe30..8427c76203 100644 --- a/src/modules/Entities/components/entity-table/script.js +++ b/src/modules/Entities/components/entity-table/script.js @@ -66,6 +66,7 @@ app.component('entity-table', { hideFilters: Boolean, hideSort: Boolean, hideActions: Boolean, + hideHeader: Boolean, }, created() { diff --git a/src/modules/Entities/components/entity-table/template.php b/src/modules/Entities/components/entity-table/template.php index a3029c903b..8cc7bd6a40 100644 --- a/src/modules/Entities/components/entity-table/template.php +++ b/src/modules/Entities/components/entity-table/template.php @@ -24,7 +24,7 @@