diff --git a/config/functions_privacy.php b/config/functions_privacy.php index 7eb06ec..faa2316 100644 --- a/config/functions_privacy.php +++ b/config/functions_privacy.php @@ -9,22 +9,8 @@ // e o browser pede-a ao próprio site. function map_click_to_load(string $iframeHtml, string $mapsLink = ''): string { - if (trim($iframeHtml) === '') return ''; - static $n = 0; - $id = 'map-consent-' . (++$n); - $esc = fn(string $s): string => htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); - $link = $mapsLink !== '' - ? 'Abrir no Google Maps' - : ''; - return '
' . $iframeHtml . ''; + // O mapa aparece logo com a página; o nome ficou por compatibilidade. + return trim($iframeHtml); } function review_avatar_url(array $r): string { diff --git a/site/privacidade.php b/site/privacidade.php index 354814b..e1af9b6 100644 --- a/site/privacidade.php +++ b/site/privacidade.php @@ -86,7 +86,7 @@ if (($_SERVER['REQUEST_METHOD'] ?? 'GET') === 'POST') {O mapa da secção de contactos é do Google Maps e só é carregado se carregares em «Mostrar mapa»; nesse momento a Google recebe o teu endereço IP e pode guardar cookies, segundo a política da Google. As avaliações apresentadas vêm do perfil público do ginásio no Google; as fotos dos autores são guardadas neste site para o teu navegador não ter de as pedir à Google.
+O mapa da secção de contactos é do Google Maps: ao abrires a página a Google recebe o teu endereço IP e pode guardar cookies, segundo a política da Google. As avaliações apresentadas vêm do perfil público do ginásio no Google; as fotos dos autores são guardadas neste site para o teu navegador não ter de as pedir à Google.
Tens direito de acesso, retificação, apagamento, limitação, portabilidade e oposição, e de retirar o consentimento a qualquer momento (sem afetar o tratamento feito até aí). Podes pedir a exportação dos teus dados ou o seu apagamento com o formulário abaixo; respondemos no prazo de um mês. @@ -125,7 +125,7 @@ if (($_SERVER['REQUEST_METHOD'] ?? 'GET') === 'POST') {
Este site usa apenas um cookie técnico de sessão (FIT_SESS), necessário para os formulários e para a área reservada, que expira ao fechar o navegador. Não usamos cookies de publicidade nem de estatística. O Google Maps só coloca cookies se escolheres ver o mapa.
Este site usa apenas um cookie técnico de sessão (FIT_SESS), necessário para os formulários e para a área reservada, que expira ao fechar o navegador. Não usamos cookies de publicidade nem de estatística. O mapa do Google Maps pode colocar cookies da Google.
As comunicações são cifradas (HTTPS), o acesso ao backoffice é restrito e registado, e as cópias de segurança são cifradas.
diff --git a/views/user/edit.php b/views/user/edit.php new file mode 100644 index 0000000..5f15801 --- /dev/null +++ b/views/user/edit.php @@ -0,0 +1,101 @@ + 100) { + $error = 'Indique um nome (máx. 100 caracteres).'; + } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL) || strlen($email) > 190) { + $error = 'Email inválido.'; + } elseif (!in_array($role, $roles, true)) { + $error = 'Perfil inválido.'; + } elseif (mb_strlen($phone) > 20) { + $error = 'Telefone demasiado longo (máx. 20 caracteres).'; + } else { + $other = db_get_user_by_email($pdo, $email); + if ($other && (int) $other['id'] !== (int) $target['id']) { + $error = 'Já existe outro utilizador com esse email.'; + } + } + + if ($error === '') { + $fields = ['name', 'email', 'phone', 'role', 'is_active']; + $before = array_intersect_key($target, array_flip($fields)); + $new = ['name' => $name, 'email' => $email, 'phone' => $phone !== '' ? $phone : null, + 'role' => $role, 'is_active' => $active]; + $pdo->prepare('UPDATE users SET name=?, email=?, phone=?, role=?, is_active=? WHERE id=?') + ->execute([$name, $email, $new['phone'], $role, $active, (int) $target['id']]); + $changes = platform_audit_diff($before, $new); + if ($changes) { + audit('user.update', [ + 'target_type' => 'user', 'target_id' => (int) $target['id'], + 'target_label' => $name, 'changes' => $changes, + ]); + } + $saved = true; + $target = db_get_user($pdo, (int) $target['id']) ?? $target; + } else { + // Mantém o que foi escrito para o formulário não perder as alterações. + $target = array_merge($target, ['name' => $name, 'email' => $email, 'phone' => $phone, 'role' => $role, 'is_active' => $active]); + } +} + +$page_title = 'Editar utilizador'; +include __DIR__ . '/../../includes/header.php'; +?> +