getConnection(); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL | E_STRICT); include('../../extra/auth.php'); if (!Auth::check()) { redirectTo('../../public/login'); exit; } $user = Auth::user(); $iduserlogin = $user->present()->id; $nameuser = $user->present()->first_name; $surnameuser = $user->present()->last_name; $emailuser = $user->present()->email; $avatar = $user->present()->avatar; $kindofrole = $user->present()->role_id; $kindofrole = (int)$user->present()->role_id; // Definisci ruolo studente (conferma che sia 2!) define('ROLE_STUDENTE', 2); // Avvia sessione se non attiva if (session_status() === PHP_SESSION_NONE) { session_start(); } $current_page = basename($_SERVER['PHP_SELF']); // Pagine escluse da TUTTI i redirect/redirect automatici $excluded_pages = [ 'login.php', 'logout.php', 'register.php', 'forgot-password.php', // se esiste 'student_profile.php', 'select_school.php' ]; // ================================================ // 1. CREAZIONE AUTOMATICA PROFILO STUDENTE (se manca) // ================================================ if ($kindofrole === ROLE_STUDENTE && !in_array($current_page, $excluded_pages)) { $stmt = $db->prepare("SELECT 1 FROM students WHERE user_id = ? LIMIT 1"); $stmt->execute([$iduserlogin]); $profile_exists = $stmt->fetchColumn(); if (!$profile_exists) { // Crea record minimo obbligatorio $stmt_insert = $db->prepare(" INSERT INTO students ( user_id, billing_country, shipping_same_as_billing, privacy_consent, created_at, updated_at ) VALUES ( ?, 'Italia', 1, 1, NOW(), NOW() ) "); $stmt_insert->execute([$iduserlogin]); // Imposta flag per non rifare controlli inutili $_SESSION['student_profile_completed'] = true; } else { $_SESSION['student_profile_completed'] = true; } } // ================================================ // 2. SALVA DATI UTENTE IN SESSIONE // ================================================ $_SESSION["iduserlogin"] = $iduserlogin; $_SESSION["nameuser"] = $nameuser; $_SESSION["surnameuser"] = $surnameuser; $_SESSION["emailuser"] = $emailuser; $_SESSION["photouser"] = $avatar; $photouser = $_SESSION["photouser"]; if (defined('SKIP_SCHOOL_CONTEXT') && SKIP_SCHOOL_CONTEXT === true) { return; // oppure salta SOLO i redirect scuola } // ================================================ // 3. LOGICA SCUOLA (solo se profilo base esiste) // ================================================ $has_school_association = false; $stmt_school_check = $db->prepare("SELECT 1 FROM user_schools WHERE user_id = ? LIMIT 1"); $stmt_school_check->execute([$iduserlogin]); $has_school_association = (bool) $stmt_school_check->fetchColumn(); if ($has_school_association) { // include('schoolid_select.php'); } // Carica impostazioni scuola solo se c'è school_id valida $pages_allow_no_school = ['school_profile.php']; if (isset($_SESSION['school_id']) && (int)$_SESSION['school_id'] > 0) { include('school_settings_loader.php'); } else { // Per studenti: se non ha scuola selezionata → vai a select_school if ($kindofrole === ROLE_STUDENTE && !in_array($current_page, $excluded_pages)) { header("Location: select_school.php"); exit; } // Per owner/admin: vai a school_profile se non è una pagina permessa elseif (!in_array($current_page, $pages_allow_no_school)) { header("Location: school_profile.php"); exit; } // Default impostazioni minime $schoolSettings = [ 'timezone' => 'Europe/Rome', 'locale' => 'it', ]; }