prepare("INSERT INTO users (username, password, role) VALUES (:username, :password, :role)"); $stmt->execute(['username' => $username, 'password' => $hash, 'role' => $role]); $success = qh_t('User created successfully.', 'تم إنشاء المستخدم بنجاح.'); } catch (PDOException $e) { if ($e->getCode() == 23000) { $error = qh_t('Username already exists.', 'اسم المستخدم موجود مسبقاً.'); } else { $error = qh_t('Failed to create user.', 'فشل في إنشاء المستخدم.'); } } } } elseif ($action === 'update_user') { $id = (int)($_POST['id'] ?? 0); $username = trim($_POST['username'] ?? ''); $password = $_POST['password'] ?? ''; $role = $_POST['role'] ?? 'admin'; if ($id <= 0 || $username === '') { $error = qh_t('Invalid user data.', 'بيانات المستخدم غير صالحة.'); } else { try { if ($password !== '') { $hash = password_hash($password, PASSWORD_DEFAULT); $stmt = $pdo->prepare("UPDATE users SET username = :username, password = :password, role = :role WHERE id = :id"); $stmt->execute(['username' => $username, 'password' => $hash, 'role' => $role, 'id' => $id]); } else { $stmt = $pdo->prepare("UPDATE users SET username = :username, role = :role WHERE id = :id"); $stmt->execute(['username' => $username, 'role' => $role, 'id' => $id]); } $success = qh_t('User updated successfully.', 'تم تحديث المستخدم بنجاح.'); } catch (PDOException $e) { if ($e->getCode() == 23000) { $error = qh_t('Username already exists.', 'اسم المستخدم موجود مسبقاً.'); } else { $error = qh_t('Failed to update user.', 'فشل في تحديث المستخدم.'); } } } } elseif ($action === 'delete_user') { $id = (int)($_POST['id'] ?? 0); // Prevent deleting the last user $count = $pdo->query("SELECT COUNT(*) FROM users")->fetchColumn(); if ($count <= 1) { $error = qh_t('Cannot delete the last user in the system.', 'لا يمكن حذف آخر مستخدم في النظام.'); } elseif ($id > 0) { $stmt = $pdo->prepare("DELETE FROM users WHERE id = :id"); $stmt->execute(['id' => $id]); $success = qh_t('User deleted successfully.', 'تم حذف المستخدم بنجاح.'); } } } try { $users = $pdo->query("SELECT id, username, role, created_at FROM users ORDER BY id ASC")->fetchAll(); } catch (PDOException $e) { if (str_contains($e->getMessage(), "Unknown column 'role'")) { $pdo->exec("ALTER TABLE users ADD COLUMN role VARCHAR(20) DEFAULT 'admin'"); $users = $pdo->query("SELECT id, username, role, created_at FROM users ORDER BY id ASC")->fetchAll(); } elseif ($e->getCode() == '42S02') { $pdo->exec("CREATE TABLE IF NOT EXISTS users (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, role VARCHAR(20) DEFAULT 'admin', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci"); $users = []; $error = qh_t('Users table was missing and has been created.', 'كان جدول المستخدمين مفقوداً وتم إنشاؤه.'); } else { throw $e; } } $stats = qh_admin_stats(); $roles = [ 'admin' => qh_t('Admin', 'مدير'), 'reception' => qh_t('Reception', 'استقبال'), 'nursing' => qh_t('Nursing', 'تمريض'), 'doctor' => qh_t('Doctor', 'طبيب'), ]; qh_page_start( 'admin', qh_t('System Users', 'مستخدمو النظام'), qh_t('Manage system users and access.', 'إدارة مستخدمي النظام وصلاحيات الوصول.') ); ?>

ID
# 1): ?>