exec("CREATE TABLE IF NOT EXISTS roles ( id INT AUTO_INCREMENT PRIMARY KEY, role_name VARCHAR(255) NOT NULL UNIQUE )"); // Function to log activity function log_activity($user_id, $action) { global $pdo; $stmt = $pdo->prepare("INSERT INTO activities (user_id, action) VALUES (:user_id, :action)"); $stmt->execute(['user_id' => $user_id, 'action' => $action]); } // Handle Create and Update if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['add_role'])) { $name = trim($_POST['role_name']); if (!empty($name)) { $stmt = $pdo->prepare("INSERT INTO roles (role_name) VALUES (:role_name)"); $stmt->execute(['role_name' => $name]); $new_role_id = $pdo->lastInsertId(); log_activity($_SESSION['user_id'], "Created role {$name} (ID: {$new_role_id})"); } } elseif (isset($_POST['update_role'])) { $id = $_POST['role_id']; $name = trim($_POST['role_name']); if (!empty($name) && !empty($id)) { $stmt = $pdo->prepare("UPDATE roles SET role_name = :role_name WHERE id = :id"); $stmt->execute(['role_name' => $name, 'id' => $id]); log_activity($_SESSION['user_id'], "Updated role {$name} (ID: {$id})"); } } header("Location: roles.php"); exit; } // Handle Delete if (isset($_GET['delete_id'])) { $id = $_GET['delete_id']; // Get role name for logging $stmt = $pdo->prepare("SELECT role_name FROM roles WHERE id = :id"); $stmt->execute(['id' => $id]); $deleted_role = $stmt->fetch(); $stmt = $pdo->prepare("DELETE FROM roles WHERE id = :id"); $stmt->execute(['id' => $id]); if ($deleted_role) { log_activity($_SESSION['user_id'], "Deleted role {$deleted_role['role_name']} (ID: {$id})"); } header("Location: roles.php"); exit; } // Fetch all roles $roles = $pdo->query("SELECT * FROM roles ORDER BY id DESC")->fetchAll(); // Fetch role for editing $editing_role = null; if (isset($_GET['edit_id'])) { $id = $_GET['edit_id']; $stmt = $pdo->prepare("SELECT * FROM roles WHERE id = :id"); $stmt->execute(['id' => $id]); $editing_role = $stmt->fetch(); } } catch (PDOException $e) { die("Database error: " . $e->getMessage()); } ?>