<?php
// includes/auto_backup_runner.php
$backupDir = __DIR__ . '/../backups/';
$configFile = __DIR__ . '/../config/backup_config.json';

if (file_exists($configFile)) {
    $config = json_decode(file_get_contents($configFile), true);
    
    // بررسی فعال بودن و گذشتن زمان لازم
    if (isset($config['auto_enabled']) && $config['auto_enabled']) {
        $intervalSeconds = (int)$config['interval_hours'] * 3600;
        $timeSinceLastRun = time() - (int)$config['last_run'];
        
        if ($timeSinceLastRun >= $intervalSeconds) {
            // آپدیت زمان آخرین اجرا (برای جلوگیری از اجرای همزمان چندباره)
            $config['last_run'] = time();
            file_put_contents($configFile, json_encode($config));
            
            // نیاز به فراخوانی دستی تابع از فایل بک‌آپ نیست؛ مستقیماً یک کوئری می‌گیریم
            require_once __DIR__ . '/../config/db.php';
            
            $tables = ['users', 'banks', 'plans', 'settlements', 'transactions'];
            $sql = "-- VPNet Auto Backup\n-- Date: " . date('Y-m-d H:i:s') . "\n\nSET FOREIGN_KEY_CHECKS=0;\n\n";
            foreach($tables as $table) {
                $sql .= "DROP TABLE IF EXISTS `$table`;\n";
                $createStmt = $pdo->query("SHOW CREATE TABLE `$table`")->fetch(PDO::FETCH_NUM);
                $sql .= $createStmt[1] . ";\n\n";
                $rows = $pdo->query("SELECT * FROM `$table`")->fetchAll(PDO::FETCH_ASSOC);
                foreach($rows as $row) {
                    $values = array_map(function($val) use ($pdo) { return ($val === null) ? 'NULL' : $pdo->quote($val); }, array_values($row));
                    $sql .= "INSERT INTO `$table` (`" . implode("`, `", array_keys($row)) . "`) VALUES (" . implode(", ", $values) . ");\n";
                }
                $sql .= "\n";
            }
            $sql .= "SET FOREIGN_KEY_CHECKS=1;\n";
            
            if (!is_dir($backupDir)) { mkdir($backupDir, 0755, true); file_put_contents($backupDir.'.htaccess', "Deny from all"); }
            file_put_contents($backupDir . 'autobackup_' . date('Y_m_d_His') . '.sql', $sql);
            
            // نگه‌داشتن ۱۰ فایل آخر
            $files = glob($backupDir . 'autobackup_*.sql');
            usort($files, function($a, $b) { return filemtime($b) - filemtime($a); });
            if (count($files) > 10) {
                $toDelete = array_slice($files, 10);
                foreach($toDelete as $f) { unlink($f); }
            }
        }
    }
}
?>