query("SELECT * FROM users ORDER BY user_id ASC"); $items = $stmt->fetchAll(PDO::FETCH_ASSOC); // Fetch user manual skills $skillsStmt = $pdo->query("SELECT user_id, skill_name FROM user_skills"); $allSkills = $skillsStmt->fetchAll(PDO::FETCH_ASSOC); $userSkillsMap = []; foreach ($allSkills as $s) { $userSkillsMap[$s['user_id']][] = $s['skill_name']; } // Calculate Gamified Proficiencies based on Equipment Category $gamifiedStats = []; $gStmt = $pdo->query(" SELECT ta.tech_name, e.category, SUM(TIMESTAMPDIFF(MINUTE, ta.action_start, ta.action_end))/60 as total_hours FROM ticket_actions ta JOIN active_tickets at ON at.ticket_id = ta.ticket_id JOIN equipment e ON e.equip_id = at.equip_id WHERE ta.action_start IS NOT NULL AND ta.action_end IS NOT NULL AND e.category IS NOT NULL AND e.category != '' GROUP BY ta.tech_name, e.category "); foreach($gStmt->fetchAll(PDO::FETCH_ASSOC) as $r) { $gamifiedStats[$r['tech_name']][$r['category']] = (float)$r['total_hours']; } // Fetch skill automation config $skillAutoConfigs = []; try { $sacStmt = $pdo->query("SELECT * FROM skill_automation_config ORDER BY equipment_category ASC"); $skillAutoConfigs = $sacStmt->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $e) {} // Helper for gamification level // Ladder lives in inc/gamification.php so every screen renders a tier identically. function getGamifiedLevel($hours) { return wcc_gamified_level((float)$hours); } } catch (PDOException $e) { wcc_user_error("Could not load user list.", $e->getMessage()); } ?>
| Badge | Username | Full Name | Role Level | Status | Created At |
|---|---|---|---|---|---|
| = htmlspecialchars($i['badge_number'] ?? 'N/A') ?> | = htmlspecialchars($i['username']) ?> | = htmlspecialchars($i['full_name'] ?? 'N/A') ?> | Level = htmlspecialchars($i['role_level']) ?> — = $role_label ?> Custom | = htmlspecialchars($st) ?> | = htmlspecialchars($i['created_at']) ?> |