-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexcluir_evento.php
More file actions
118 lines (95 loc) · 3.28 KB
/
excluir_evento.php
File metadata and controls
118 lines (95 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
// Configurações
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');
// Arquivo JSON para armazenar informações dos eventos
$eventosJsonFile = 'eventos_cadastrados.json';
// Função para criar resposta de erro
function responderErro($mensagem, $codigo = 400) {
http_response_code($codigo);
echo json_encode(['sucesso' => false, 'mensagem' => $mensagem]);
exit;
}
// Verificar se a requisição é POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
responderErro('Método não permitido. Use POST.', 405);
}
// Obter dados da requisição
$dados = json_decode(file_get_contents('php://input'), true);
// Validar campos obrigatórios
if (empty($dados['evento_id'])) {
responderErro('ID do evento não fornecido');
}
// Verificar se o arquivo JSON existe
if (!file_exists($eventosJsonFile)) {
responderErro('Arquivo de eventos não encontrado', 404);
}
// Carregar eventos do JSON
$eventosJson = json_decode(file_get_contents($eventosJsonFile), true);
// Encontrar o evento pelo ID
$eventoEncontrado = false;
$eventoIndex = -1;
foreach ($eventosJson as $index => $evento) {
if ($evento['id'] === $dados['evento_id']) {
$eventoEncontrado = true;
$eventoIndex = $index;
break;
}
}
if (!$eventoEncontrado) {
responderErro('Evento não encontrado', 404);
}
// Verificar se o diretório do evento existe
$diretorioEvento = $eventosJson[$eventoIndex]['diretorio'];
if (!file_exists($diretorioEvento)) {
// Se o diretório não existe, apenas atualizar o status no JSON
$eventosJson[$eventoIndex]['status'] = 'expirado';
$eventosJson[$eventoIndex]['data_exclusao'] = date('Y-m-d H:i:s');
// Salvar JSON atualizado
file_put_contents($eventosJsonFile, json_encode($eventosJson, JSON_PRETTY_PRINT));
// Responder com sucesso
http_response_code(200);
echo json_encode([
'sucesso' => true,
'mensagem' => 'Evento marcado como expirado (diretório já não existia)',
'evento_id' => $dados['evento_id']
]);
exit;
}
// Excluir diretório do evento recursivamente
function excluirDiretorio($diretorio) {
if (!is_dir($diretorio)) {
return false;
}
$arquivos = array_diff(scandir($diretorio), ['.', '..']);
foreach ($arquivos as $arquivo) {
$path = $diretorio . '/' . $arquivo;
if (is_dir($path)) {
excluirDiretorio($path);
} else {
unlink($path);
}
}
return rmdir($diretorio);
}
// Tentar excluir o diretório
$exclusaoSucesso = excluirDiretorio($diretorioEvento);
// Atualizar o status do evento no JSON
if ($exclusaoSucesso) {
$eventosJson[$eventoIndex]['status'] = 'expirado';
$eventosJson[$eventoIndex]['data_exclusao'] = date('Y-m-d H:i:s');
// Salvar JSON atualizado
file_put_contents($eventosJsonFile, json_encode($eventosJson, JSON_PRETTY_PRINT));
// Responder com sucesso
http_response_code(200);
echo json_encode([
'sucesso' => true,
'mensagem' => 'Evento excluído com sucesso',
'evento_id' => $dados['evento_id']
]);
} else {
responderErro('Erro ao excluir diretório do evento', 500);
}
?>