PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; return new PDO($dsn, $user, $pass, $options);}if ($_SERVER['REQUEST_METHOD'] === 'POST') { switch ((int)$step) { case 1: // System Check $step = 2; break; case 2: // Database Setup $host = $_POST['db_host'] ?? '127.0.0.1'; $port = $_POST['db_port'] ?? '3306'; $dbname = $_POST['db_name'] ?? 'omani_center'; $username = $_POST['db_user'] ?? 'root'; $password = $_POST['db_pass'] ?? ''; try { $pdo = dbConnect($host, $port, $dbname, $username, $password); // Store config in session (serialize to file temporarily) file_put_contents(ROOT_PATH.'install/.db_config.tmp', serialize([ 'host'=>$host, 'port'=>$port, 'dbname'=>$dbname, 'user'=>$username, 'pass'=>$password ])); $step = 3; } catch (\Throwable $e) { $error = 'فشل الاتصال بقاعدة البيانات: '.$e->getMessage(); } break; case 3: // Create Tables $tmpFile = ROOT_PATH.'install/.db_config.tmp'; if (!file_exists($tmpFile)) { $error = 'لم يتم العثور على إعدادات قاعدة البيانات المؤقتة. يرجى العودة والمحاولة مرة أخرى.'; break; } $config = @unserialize(file_get_contents($tmpFile)); if (!$config) { $error = 'فشل قراءة إعدادات قاعدة البيانات.'; break; } try { $pdo = dbConnect($config['host'], $config['port'], $config['dbname'], $config['user'], $config['pass']); $sql = file_get_contents(ROOT_PATH.'database/install.sql'); $pdo->exec($sql); $step = 4; } catch (\Throwable $e) { $error = 'فشل إنشاء الجداول: '.$e->getMessage(); } break; case 4: // Create Admin $tmpFile = ROOT_PATH.'install/.db_config.tmp'; if (!file_exists($tmpFile)) { $error = 'لم يتم العثور على إعدادات قاعدة البيانات المؤقتة. يرجى العودة والمحاولة مرة أخرى.'; break; } $config = @unserialize(file_get_contents($tmpFile)); if (!$config) { $error = 'فشل قراءة إعدادات قاعدة البيانات.'; break; } try { $pdo = dbConnect($config['host'], $config['port'], $config['dbname'], $config['user'], $config['pass']); // Check if admin exists $stmt = $pdo->prepare("SELECT id FROM users WHERE email = ?"); $stmt->execute(['admin@example.com']); if (!$stmt->fetch()) { $hashed = password_hash('secret', PASSWORD_DEFAULT); $stmt = $pdo->prepare("INSERT INTO users (name, email, password, created_at, updated_at) VALUES (?, ?, ?, NOW(), NOW())"); $stmt->execute(['مدير النظام', 'admin@example.com', $hashed]); } // Create lock file file_put_contents(LOCK_FILE, 'installed at '.date('Y-m-d H:i:s')); // Remove temp config @unlink($tmpFile); $step = 5; } catch (\Throwable $e) { $error = 'فشل إنشاء المستخدم المسؤول: '.$e->getMessage(); } break; case 5: // Finish break; }}?>