true, 'message' => 'Backup creado', 'data' => ['filename' => $file, 'size' => round(filesize($backupDir . $file)/1024,2).' KB', 'date' => date('d/m/Y H:i:s')]]); exit; } elseif ($action === 'list') { $backups = []; foreach (glob($backupDir . '*.sql') as $f) { $backups[] = ['filename' => basename($f), 'size' => round(filesize($f)/1024,2).' KB', 'date' => date('d/m/Y H:i:s', filemtime($f)), 'url' => '/api/backups/' . basename($f)]; } usort($backups, fn($a,$b) => strtotime($b['date']) - strtotime($a['date'])); echo json_encode(['success' => true, 'data' => $backups]); exit; } } elseif ($method === 'DELETE') { $file = basename($_GET['id'] ?? ''); if ($file && file_exists($backupDir . $file)) { unlink($backupDir . $file); echo json_encode(['success' => true]); } else echo json_encode(['success' => false]); exit; } function generarBackupSQL($pdo) { $sql = "-- PetStop Backup " . date('Y-m-d H:i:s') . "\nSET NAMES utf8mb4;\nSET FOREIGN_KEY_CHECKS=0;\n\n"; foreach ($pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN) as $table) { $sql .= "DROP TABLE IF EXISTS `$table`;\n"; $sql .= $pdo->query("SHOW CREATE TABLE `$table`")->fetch()['Create Table'] . ";\n\n"; $rows = $pdo->query("SELECT * FROM `$table`")->fetchAll(PDO::FETCH_ASSOC); if (count($rows) > 0) { $sql .= "INSERT INTO `$table` VALUES "; $vals = []; foreach ($rows as $row) { $v = []; foreach ($row as $val) $v[] = is_null($val) ? 'NULL' : $pdo->quote($val); $vals[] = "(" . implode(',', $v) . ")"; } $sql .= implode(",\n", $vals) . ";\n\n"; } } return $sql . "SET FOREIGN_KEY_CHECKS=1;\n"; } ?>