From ebf02e518865eecc6464d39563455aff1fe9f2f4 Mon Sep 17 00:00:00 2001 From: lizandrogd <77708265+lizandrogd@users.noreply.github.com> Date: Tue, 13 Jan 2026 00:33:29 -0500 Subject: [PATCH] eliminar logs --- api/clear_logs.php | 110 ++++++++++++++++++++++++++++++++++++++++ assets/js/app_simple.js | 37 +++++++++++--- 2 files changed, 140 insertions(+), 7 deletions(-) create mode 100644 api/clear_logs.php diff --git a/api/clear_logs.php b/api/clear_logs.php new file mode 100644 index 0000000..2688958 --- /dev/null +++ b/api/clear_logs.php @@ -0,0 +1,110 @@ + false, 'error' => 'Método no permitido']); + exit; +} + +try { + $db = Database::getInstance(); + + // Obtener tipo de logs a limpiar (opcional) + $input = json_decode(file_get_contents('php://input'), true); + $type = $input['type'] ?? 'all'; // 'all', 'webhook', 'system' + + $deletedCount = 0; + $tablesCleared = []; + + // Verificar qué tablas existen + $existingTables = $db->fetchAll("SHOW TABLES"); + $tableNames = array_column($existingTables, 'Tables_in_' . DB_NAME); + + switch ($type) { + case 'webhook': + if (in_array('webhook_logs', $tableNames)) { + $result = $db->execute("DELETE FROM webhook_logs"); + $deletedCount += $db->fetchAll("SELECT ROW_COUNT() as count")[0]['count'] ?? 0; + $tablesCleared[] = 'webhook_logs'; + } + break; + + case 'system': + if (in_array('system_logs', $tableNames)) { + $result = $db->execute("DELETE FROM system_logs"); + $deletedCount += $db->fetchAll("SELECT ROW_COUNT() as count")[0]['count'] ?? 0; + $tablesCleared[] = 'system_logs'; + } + if (in_array('application_logs', $tableNames)) { + $result = $db->execute("DELETE FROM application_logs"); + $deletedCount += $db->fetchAll("SELECT ROW_COUNT() as count")[0]['count'] ?? 0; + $tablesCleared[] = 'application_logs'; + } + break; + + case 'all': + default: + // Limpiar todas las tablas de logs + if (in_array('webhook_logs', $tableNames)) { + $countBefore = $db->fetch("SELECT COUNT(*) as count FROM webhook_logs")['count'] ?? 0; + $db->execute("DELETE FROM webhook_logs"); + $deletedCount += $countBefore; + $tablesCleared[] = 'webhook_logs'; + } + + if (in_array('system_logs', $tableNames)) { + $countBefore = $db->fetch("SELECT COUNT(*) as count FROM system_logs")['count'] ?? 0; + $db->execute("DELETE FROM system_logs"); + $deletedCount += $countBefore; + $tablesCleared[] = 'system_logs'; + } + + if (in_array('application_logs', $tableNames)) { + $countBefore = $db->fetch("SELECT COUNT(*) as count FROM application_logs")['count'] ?? 0; + $db->execute("DELETE FROM application_logs"); + $deletedCount += $countBefore; + $tablesCleared[] = 'application_logs'; + } + break; + } + + // Registrar acción + $user = $_SESSION['user'] ?? null; + $userId = $user['id'] ?? null; + $username = $user['username'] ?? 'sistema'; + + error_log("Logs limpiados por usuario: {$username}. Tipo: {$type}. Registros eliminados: {$deletedCount}"); + + echo json_encode([ + 'success' => true, + 'message' => 'Logs limpiados correctamente', + 'deleted_count' => $deletedCount, + 'tables_cleared' => $tablesCleared, + 'type' => $type + ]); + +} catch (Exception $e) { + error_log("Error en clear_logs.php: " . $e->getMessage()); + http_response_code(500); + echo json_encode([ + 'success' => false, + 'error' => $e->getMessage(), + 'debug' => DEBUG_MODE ? $e->getTraceAsString() : null + ]); +} +?> diff --git a/assets/js/app_simple.js b/assets/js/app_simple.js index 5d3d2fe..f34dcee 100644 --- a/assets/js/app_simple.js +++ b/assets/js/app_simple.js @@ -4005,17 +4005,40 @@ window.refreshLogs = function() { }; // Función para limpiar logs -window.clearLogs = function() { +window.clearLogs = async function() { console.log('Limpiando logs...'); - if (confirm('¿Estás seguro de que quieres limpiar todos los logs? Esta acción no se puede deshacer.')) { - const logsContainer = document.getElementById('logs-container'); - if (logsContainer) { - logsContainer.innerHTML = '