#!/usr/bin/env php
<?php
/**
 * نسخ احتياطي تلقائي لقاعدة البيانات
 * يعمل من سطر الأوامر: php scripts/backup_db.php
 * أو عبر جدولة cron: 0 2 * * * php /path/to/scripts/backup_db.php
 */
$baseDir = dirname(__DIR__);
$config = require $baseDir . '/config/config.php';
$db = $config['db'];

$backupDir = $baseDir . '/backups';
if (!is_dir($backupDir)) {
    mkdir($backupDir, 0755, true);
}

$date = date('Y-m-d_H-i-s');
$filename = 'backup_' . $date . '.sql';
$filepath = $backupDir . '/' . $filename;

$host = $db['host'] ?? 'localhost';
$port = $db['port'] ?? 3306;
$name = $db['name'] ?? 'lab_lims';
$user = $db['user'] ?? 'root';
$pass = $db['pass'] ?? '';

$cmd = sprintf(
    'mysqldump -h %s -P %d -u %s %s %s > %s 2>&1',
    escapeshellarg($host),
    (int)$port,
    escapeshellarg($user),
    $pass !== '' ? '-p' . escapeshellarg($pass) : '',
    escapeshellarg($name),
    escapeshellarg($filepath)
);

exec($cmd, $output, $ret);
if ($ret !== 0) {
    fwrite(STDERR, "خطأ في النسخ الاحتياطي: " . implode("\n", $output) . "\n");
    exit(1);
}

echo "تم النسخ الاحتياطي: $filepath\n";

// حذف النسخ الأقدم من 7 أيام (اختياري)
$maxAge = 7 * 86400;
$files = glob($backupDir . '/backup_*.sql');
foreach ($files as $f) {
    if (filemtime($f) < time() - $maxAge) {
        unlink($f);
        echo "حذف نسخة قديمة: $f\n";
    }
}
