<?php
// api/backup_system.php - 全系統一鍵打包備份
// 🦁 用途：將網站根目錄的所有檔案壓縮成 ZIP 供天啟者下載
header("Content-Type: text/html; charset=utf-8");

// 設定備份檔名 (包含時間戳記)
$timestamp = date("Y-m-d_H-i-s");
$filename = "FlowZoo_Phase2_Stable_{$timestamp}.zip";
$filepath = "../" . $filename; // 檔案存在根目錄

// 要備份的根目錄 (上一層)
$rootPath = realpath('../');

echo "<body style='background:#0a0a0a; color:#00ff88; font-family:sans-serif; padding:50px; text-align:center;'>";
echo "<h1>📦 流量動物園全系統打包中...</h1>";

$zip = new ZipArchive();

if ($zip->open($filepath, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE) {
    die("<h2 style='color:red;'>❌ 無法建立壓縮檔！請檢查資料夾權限。</h2></body>");
}

// 建立遞迴迭代器
$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootPath),
    RecursiveIteratorIterator::LEAVES_ONLY
);

$count = 0;

foreach ($files as $name => $file) {
    // 跳過資料夾本身
    if (!$file->isDir()) {
        // 取得真實路徑
        $filePath = $file->getRealPath();
        
        // 取得在 ZIP 裡的相對路徑
        $relativePath = substr($filePath, strlen($rootPath) + 1);

        // 🛡️ 排除規則：不備份之前的備份檔、不備份 Git 檔、不備份系統檔
        if (strpos($relativePath, '.zip') !== false) continue;
        if (strpos($relativePath, '.git') !== false) continue;
        if (strpos($relativePath, 'error_log') !== false) continue;
        if (strpos($relativePath, '.DS_Store') !== false) continue;

        // 加入 ZIP
        $zip->addFile($filePath, $relativePath);
        $count++;
    }
}

$zip->close();

echo "<h2 style='color:#ffd700;'>🎉 打包完成！共封存了 {$count} 個帝國資產檔案。</h2>";
echo "<p style='color:#ccc;'>備份檔名：{$filename}</p>";
echo "<br>";
// 下載按鈕
echo "<a href='../{$filename}' download style='display:inline-block; padding:20px 40px; background:#4CAF50; color:#fff; text-decoration:none; font-weight:bold; border-radius:50px; font-size:1.2em; box-shadow: 0 0 20px rgba(76, 175, 80, 0.5);'>⬇️ 下載時空膠囊 (ZIP)</a>";

echo "<br><br><br>";
echo "<p style='color:#555; font-size:0.9em;'>下載完成後，建議透過 FTP 刪除伺服器上的 ZIP 檔以策安全。</p>";
echo "</body>";
?>