<?php
// المسار الكامل للمجلد الذي تريد ضغطه
$rootPath = realpath('../../uploads/');

// 👇 حدد هنا المكان الذي تريد حفظ الملف المضغوط فيه
$destinationPath = realpath('../../backups/');

// إذا لم يكن المجلد موجودًا، أنشئه تلقائيًا
if (!$destinationPath) {
    mkdir('../../backups/', 0777, true);
    $destinationPath = realpath('../../backups/');
}

// تحقق من إمكانية الكتابة في المجلد
if (!is_dir($destinationPath) || !is_writable($destinationPath)) {
    exit("❌ لا يمكن الوصول إلى مجلد الحفظ أو ليس لديه صلاحية الكتابة.");
}

// اسم الملف الكامل داخل مجلد الحفظ
$zipFile = $destinationPath . '/backup.zip';

// إنشاء الأرشيف
$zip = new ZipArchive();
if ($zip->open($zipFile, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== true) {
    exit("❌ فشل في إنشاء الملف المضغوط.");
}

// إضافة الملفات داخل المجلد
$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootPath),
    RecursiveIteratorIterator::LEAVES_ONLY
);

foreach ($files as $name => $file) {
    if (!$file->isDir()) {
        $filePath = $file->getRealPath();
        $relativePath = substr($filePath, strlen($rootPath) + 1);
        $zip->addFile($filePath, $relativePath);
    }
}

$zip->close();

// التأكد من وجود الملف
if (!file_exists($zipFile)) {
    exit("❌ لم يتم العثور على الملف المضغوط بعد الإنشاء.");
}

// 🔽 إرسال الملف للتحميل مباشرة
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="' . basename($zipFile) . '"');
header('Content-Length: ' . filesize($zipFile));
header('Pragma: no-cache');
header('Expires: 0');
readfile($zipFile);

// اختياري: حذف الملف بعد الإرسال (احذف السطر لو تريد الاحتفاظ به)
unlink($zipFile);

exit;
?>
