getConnection(); if (!isset($iduserlogin)) { die("Errore: ID utente non definito."); } // Recupera scuola dell'utente loggato $stmt = $pdo->prepare(" SELECT s.*, u.first_name, u.last_name, u.email FROM schools s RIGHT JOIN auth_users u ON s.owner_id = u.id WHERE u.id = ? "); $stmt->execute([$iduserlogin]); $school = $stmt->fetch(PDO::FETCH_ASSOC); $is_new = empty($school['id']); if ($is_new) { $school = [ 'id' => null, 'owner_id' => $iduserlogin, 'name' => '', 'slug' => '', 'website' => '', 'email' => '', 'phone' => '', 'description' => '', 'address_street' => '', 'address_city' => '', 'address_postal_code' => '', 'address_province' => '', 'address_country' => 'Italia', 'latitude' => null, 'longitude' => null, 'owner_name' => '', 'vat_number' => '', 'logo' => '', 'status' => 'active', 'first_name' => '', 'last_name' => '', 'email' => '' ]; } // Generatore slug function generateSlug($string) { $slug = iconv('UTF-8', 'ASCII//TRANSLIT', $string); $slug = preg_replace('/[^a-z0-9 -]/i', '', $slug); $slug = trim($slug); $slug = preg_replace('/ +/', '-', $slug); $slug = strtolower($slug); return $slug; } // POST - Salvataggio $success_message = $error = null; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $name = trim($_POST['name'] ?? ''); $slug = generateSlug(trim($_POST['slug'] ?? $name)); $website = trim($_POST['website'] ?? ''); $email = trim($_POST['email'] ?? ''); $phone = trim($_POST['phone'] ?? ''); $description = trim($_POST['description'] ?? ''); $address_street = trim($_POST['address_street'] ?? ''); $address_city = trim($_POST['address_city'] ?? ''); $address_postal_code = trim($_POST['address_postal_code'] ?? ''); $address_province = trim($_POST['address_province'] ?? ''); $address_country = trim($_POST['address_country'] ?? 'Italia'); $latitude = !empty($_POST['latitude']) ? floatval($_POST['latitude']) : null; $longitude = !empty($_POST['longitude']) ? floatval($_POST['longitude']) : null; $owner_name = trim($_POST['owner_name'] ?? ''); $vat_number = trim($_POST['vat_number'] ?? ''); $status = in_array($_POST['status'] ?? 'active', ['active', 'inactive', 'suspended']) ? $_POST['status'] : 'active'; // Validazioni if (empty($name)) $error = "Il nome della scuola è obbligatorio."; elseif (empty($slug)) $error = "Lo slug non può essere vuoto."; else { $stmt = $pdo->prepare("SELECT COUNT(*) FROM schools WHERE slug = ? AND id != ?"); $stmt->execute([$slug, $school['id'] ?? 0]); if ($stmt->fetchColumn() > 0) { $error = "Lo slug '$slug' è già in uso."; } } // Logo $logo = $school['logo'] ?? ''; if (!empty($_FILES['logo']['name']) && $_FILES['logo']['error'] === UPLOAD_ERR_OK) { $ext = strtolower(pathinfo($_FILES['logo']['name'], PATHINFO_EXTENSION)); if (in_array($ext, ['jpg', 'jpeg', 'png', 'gif'])) { $new_name = "photoschool/{$iduserlogin}-" . time() . "-logo.$ext"; if (move_uploaded_file($_FILES['logo']['tmp_name'], $new_name)) { if ($logo && file_exists($logo) && !$is_new) @unlink($logo); $logo = $new_name; } else { $error = "Errore caricamento logo."; } } else { $error = "Solo JPG, PNG, GIF ammessi."; } } if (!isset($error)) { $params = [ $name, $slug, $website ?: null, $email, $phone ?: null, $description, $address_street, $address_city, $address_postal_code, $address_province, $address_country, $latitude, $longitude, $owner_name, $vat_number, $logo, $status ]; if ($is_new) { $stmt = $pdo->prepare(" INSERT INTO schools ( owner_id, name, slug, website, email, phone, description, address_street, address_city, address_postal_code, address_province, address_country, latitude, longitude, owner_name, vat_number, logo, status ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) "); array_unshift($params, $iduserlogin); $success = $stmt->execute($params); if ($success) { $success_message = "Scuola creata con successo!"; $stmt = $pdo->prepare("SELECT * FROM schools WHERE owner_id = ? ORDER BY id DESC LIMIT 1"); $stmt->execute([$iduserlogin]); $school = $stmt->fetch(PDO::FETCH_ASSOC); $is_new = false; } else { $error = "Errore creazione scuola."; } } else { $params[] = $school['id']; $stmt = $pdo->prepare(" UPDATE schools SET name=?, slug=?, website=?, email=?, phone=?, description=?, address_street=?, address_city=?, address_postal_code=?, address_province=?, address_country=?, latitude=?, longitude=?, owner_name=?, vat_number=?, logo=?, status=? WHERE id=? "); $success = $stmt->execute($params); if ($success) { $success_message = "Profilo aggiornato con successo!"; $stmt = $pdo->prepare("SELECT * FROM schools WHERE id = ?"); $stmt->execute([$school['id']]); $school = $stmt->fetch(PDO::FETCH_ASSOC); } else { $error = "Errore aggiornamento."; } } } } ?>