getConnection(); if (!isset($iduserlogin)) { header("Location: login.php"); exit; } // Solo admin if ((int)$kindofrole !== ROLE_ADMIN) { header("Location: index.php"); exit; } function e(?string $v): string { return htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8'); } function getFlash(): ?array { if (!isset($_SESSION['flash'])) return null; $f = $_SESSION['flash']; unset($_SESSION['flash']); return $f; } // --- Filtri --- $q_search = trim($_GET['q'] ?? ''); $q_role = isset($_GET['role']) && $_GET['role'] !== '' ? (int)$_GET['role'] : 0; $q_status = trim($_GET['status'] ?? ''); $where = ["1=1"]; $params = []; if ($q_search !== '') { $where[] = "(u.first_name LIKE ? OR u.last_name LIKE ? OR u.email LIKE ?)"; $like = '%' . $q_search . '%'; array_push($params, $like, $like, $like); } if ($q_role > 0) { $where[] = "u.role_id = ?"; $params[] = $q_role; } if ($q_status !== '') { $where[] = "u.status = ?"; $params[] = $q_status; } $whereSql = implode(' AND ', $where); // --- Utenti --- $sql = " SELECT u.id, u.first_name, u.last_name, u.email, u.phone, u.avatar, u.role_id, u.status, u.last_login, u.created_at, r.display_name AS role_label, (SELECT COUNT(*) FROM shops sh WHERE sh.owner_id = u.id) AS shops_count FROM auth_users u LEFT JOIN auth_roles r ON u.role_id = r.id WHERE $whereSql ORDER BY u.created_at DESC "; $stmt = $pdo->prepare($sql); $stmt->execute($params); $users = $stmt->fetchAll(PDO::FETCH_ASSOC); // Ruoli per i filtri/select $roles = $pdo->query("SELECT id, display_name FROM auth_roles ORDER BY id ASC")->fetchAll(PDO::FETCH_ASSOC); $flash = getFlash(); $ret = http_build_query(array_filter(['q' => $q_search, 'role' => $q_role ?: '', 'status' => $q_status])); function roleBadge(int $role_id): string { switch ($role_id) { case 1: return 'bg-danger'; // Admin case 2: return 'bg-primary'; // Owner case 3: return 'bg-secondary'; // User default: return 'bg-dark'; } } ?> Gestione Utenti
Gestione Utenti
utenti
Utente Ruolo Stato Saloni Ultimo accesso Azioni
Nessun utente trovato.
tu
0 ? (int)$u['shops_count'] : '—' ?>