= htmlspecialchars($title) ?>
= htmlspecialchars($subtitle) ?>
Nessuna scuola disponibile al momento
Riprova più tardi oppure contatta l’assistenza.
has('school_id')) { // $_SESSION['school_id'] = session('school_id'); // if (session()->has('school_name')) { // $_SESSION['school_name'] = session('school_name'); // } // } // se PHP ha school_id e Laravel no → copio in Laravel if (isset($_SESSION['school_id']) && function_exists('session') && !session()->has('school_id')) { session([ 'school_id' => $_SESSION['school_id'], 'school_name' => $_SESSION['school_name'] ?? null, ]); } /* |-------------------------------------------------------------------------- | AUTH CHECK |-------------------------------------------------------------------------- */ if (!isset($_SESSION['iduserlogin'])) { header('Location: login.php'); exit; } /* |-------------------------------------------------------------------------- | SE SCHOOL GIÀ IN SESSIONE → VAI AVANTI |-------------------------------------------------------------------------- */ // Se ho già una school_id in sessione, vado avanti SOLO se l'utente ha 1 scuola sola. // Se ne ha >1, devo sempre mostrare la selezione. if (!empty($_SESSION['school_id'])) { // Non faccio redirect qui: lo decido DOPO aver caricato $userSchools // (vedi sotto, dopo la query delle scuole utente) } $iduserlogin = $_SESSION['iduserlogin']; $dbHandler = DBHandlerSelect::getInstance(); $pdo = $dbHandler->getConnection(); /* |-------------------------------------------------------------------------- | DATI UTENTE |-------------------------------------------------------------------------- */ $stmt = $pdo->prepare("SELECT first_name, avatar FROM auth_users WHERE id = ?"); $stmt->execute([$iduserlogin]); $user = $stmt->fetch(); $first_name = htmlspecialchars($user['first_name'] ?? ''); /* |-------------------------------------------------------------------------- | POST → SELEZIONE SCUOLA |-------------------------------------------------------------------------- */ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['school_id'])) { $school_id = (int) $_POST['school_id']; $stmt = $pdo->prepare(" SELECT id, name FROM schools WHERE id = ? AND status = 'active' "); $stmt->execute([$school_id]); $school = $stmt->fetch(); if ($school) { // Iscrizione automatica se non esiste $check = $pdo->prepare(" SELECT 1 FROM user_schools WHERE user_id = ? AND school_id = ? "); $check->execute([$iduserlogin, $school_id]); if (!$check->fetch()) { $pdo->prepare(" INSERT INTO user_schools (user_id, school_id, status) VALUES (?, ?, 'active') ")->execute([$iduserlogin, $school_id]); } // Sessione $_SESSION['school_id'] = $school['id']; $_SESSION['school_name'] = $school['name']; $_SESSION['school_selected'] = 1; if (function_exists('session')) { session([ 'school_id' => $school['id'], 'school_name' => $school['name'], ]); } header('Location: user_dashboard.php'); exit; } } /* |-------------------------------------------------------------------------- | RECUPERO SCUOLE UTENTE |-------------------------------------------------------------------------- */ $stmt = $pdo->prepare(" SELECT s.id, s.name, s.logo, s.address_city FROM user_schools us JOIN schools s ON us.school_id = s.id WHERE us.user_id = ? AND us.status = 'active' AND s.status = 'active' ORDER BY s.name "); $stmt->execute([$iduserlogin]); $userSchools = $stmt->fetchAll(); // --- VALIDAZIONE school_id: se non appartiene all'utente, la resetto --- $allowedIds = array_map(fn($r) => (int)$r['id'], $userSchools); if (!empty($_SESSION['school_id']) && !in_array((int)$_SESSION['school_id'], $allowedIds, true)) { unset($_SESSION['school_id'], $_SESSION['school_name'], $_SESSION['school_selected']); if (function_exists('session')) { session()->forget('school_id'); session()->forget('school_name'); } } // Caso 1: una sola scuola -> auto-select e vado in dashboard if (count($userSchools) === 1) { $_SESSION['school_id'] = (int)$userSchools[0]['id']; $_SESSION['school_name'] = $userSchools[0]['name']; $_SESSION['school_selected'] = 1; if (function_exists('session')) { session([ 'school_id' => (int)$userSchools[0]['id'], 'school_name' => $userSchools[0]['name'], ]); } header('Location: user_dashboard.php'); exit; } // Caso 2: più scuole -> se school_id è presente MA non c'è selezione esplicita, mostro comunque la select // Se invece school_id + school_selected sono presenti, posso andare in dashboard if (count($userSchools) > 1 && !empty($_SESSION['school_id']) && !empty($_SESSION['school_selected'])) { header('Location: user_dashboard.php'); exit; } /* /* |-------------------------------------------------------------------------- | CASO: NESSUNA SCUOLA → MOSTRA PUBBLICHE |-------------------------------------------------------------------------- */ if (empty($userSchools)) { $stmt = $pdo->query(" SELECT id, name, logo, address_city FROM schools WHERE status = 'active' ORDER BY name "); $schools = $stmt->fetchAll(); $title = "Benvenuto!"; $subtitle = "Scegli la scuola dove vuoi prenotare le lezioni"; } else { $schools = $userSchools; $title = "Ciao $first_name!"; $subtitle = "Seleziona la scuola in cui entrare oggi"; } ?>
= htmlspecialchars($subtitle) ?>
Riprova più tardi oppure contatta l’assistenza.