'rgpd_request', 'target_id' => $id, 'summary' => 'Apagamento RGPD de ' . audit_mask_email($req['email']) . ' — ' . $n . ' registos anonimizados', ]); session()->setFlashdata('success', 'Dados de ' . htmlspecialchars($req['email']) . ' anonimizados (' . $n . ' registos).'); } } header('Location: ' . base_url('views/admin/rgpd/index.php')); exit; } // Exportar dados (acesso, art.º 15.º) — CSV com tudo o que existe para o email. if (isset($_GET['csv']) && is_numeric($_GET['csv'])) { $req = db_rgpd_request_get($pdo, (int) $_GET['csv']); if ($req) { audit('rgpd.export', [ 'target_type' => 'rgpd_request', 'target_id' => (int) $_GET['csv'], 'summary' => 'Exportação RGPD (acesso) de ' . audit_mask_email($req['email']), ]); $rows = []; foreach (rgpd_find($pdo, $req['email']) as $table => $items) { foreach ($items as $it) { $rows[] = [rgpd_pii_tables()[$table] ?? $table, $it['name'], $it['email'], $it['phone'], $it['message'] ?? '', $it['created_at']]; } } csv_export('rgpd', 'dados-' . substr(md5($req['email']), 0, 8), 'Exportação RGPD (acesso) de ' . audit_mask_email($req['email']), ['Fonte', 'Nome', 'E-mail', 'Telefone', 'Mensagem', 'Data'], $rows); } } $requests = db_rgpd_requests_list($pdo); $page_title = 'Pedidos RGPD'; include __DIR__ . '/../../../includes/header.php'; ?> = link_tag('assets/vendor/datatables-2.3.4/dataTables.bootstrap5.min.css') ?> = link_tag('assets/vendor/datatables-2.3.4/responsive.bootstrap5.min.css') ?>
Pedidos de acesso (exportação) e apagamento feitos na Política de Privacidade. O apagamento anonimiza o nome/e-mail/telefone nas leads — a linha fica para estatística e audit.
| Data | Pedido | Mensagem | Estado | Ações | |
|---|---|---|---|---|---|
| Sem pedidos RGPD. | |||||
| = htmlspecialchars(format_date_pt((string) $r['created_at'])) ?> | = htmlspecialchars($r['email']) ?> | = $r['request_type'] === 'apagamento' ? 'Apagamento' : 'Acesso' ?> | = htmlspecialchars((string) $r['message']) ?> | = $r['status'] === 'novo' ? 'Novo' : 'Concluído' ?> | Exportar |