-
+
Situazione Clienti
diff --git a/public/userarea/school_profile.php b/public/userarea/school_profile.php
index df1e16b..71e9ba1 100644
--- a/public/userarea/school_profile.php
+++ b/public/userarea/school_profile.php
@@ -1,41 +1,37 @@
getConnection();
-// ID dell'utente loggato (assumiamo sia definito)
if (!isset($iduserlogin)) {
die("Errore: ID utente non definito.");
}
-// Recupera i dati della scuola associata all'utente
+// Recupera scuola dell'utente loggato
$stmt = $pdo->prepare("
SELECT s.*, u.first_name, u.last_name, u.email
- FROM auth_users u
- LEFT JOIN schools s ON s.owner_id = u.id
+ FROM schools s
+ RIGHT JOIN auth_users u ON s.owner_id = u.id
WHERE u.id = ?
");
$stmt->execute([$iduserlogin]);
-$school = $stmt->fetch();
+$school = $stmt->fetch(PDO::FETCH_ASSOC);
-if (!$school) {
- die("Errore: Utente non trovato.");
-}
+$is_new = empty($school['id']);
-// Determina se è una nuova scuola
-$is_new = !isset($school['id']);
if ($is_new) {
$school = [
'id' => null,
'owner_id' => $iduserlogin,
'name' => '',
+ 'slug' => '',
'website' => '',
'email' => '',
'phone' => '',
@@ -44,176 +40,139 @@ if ($is_new) {
'address_city' => '',
'address_postal_code' => '',
'address_province' => '',
- 'address_country' => '',
- 'latitude' => '',
- 'longitude' => '',
+ 'address_country' => 'Italia',
+ 'latitude' => null,
+ 'longitude' => null,
'owner_name' => '',
'vat_number' => '',
'logo' => '',
'status' => 'active',
- 'created_at' => '',
- 'updated_at' => '',
- 'slug' => '',
- 'first_name' => $school['first_name'],
- 'last_name' => $school['last_name'],
- 'email' => $school['email']
+ 'first_name' => '',
+ 'last_name' => '',
+ 'email' => ''
];
}
-// Funzione per generare uno slug valido
+// Generatore slug
function generateSlug($string)
{
- $slug = strtolower($string); // Converti in minuscolo
- $slug = preg_replace('/[^a-z0-9-]+/', '-', $slug); // Sostituisci caratteri non validi con trattini
- $slug = preg_replace('/-+/', '-', $slug); // Rimuovi trattini multipli
- $slug = trim($slug, '-'); // Rimuovi trattini all'inizio e alla fine
+ $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;
}
-// Gestione del form
-if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- $name = $_POST['name'] ?? '';
- $website = $_POST['website'] ?? null;
- $email = $_POST['email'] ?? '';
- $phone = $_POST['phone'] ?? null;
- $description = $_POST['description'] ?? null;
- $address_street = $_POST['address_street'] ?? '';
- $address_city = $_POST['address_city'] ?? '';
- $address_postal_code = $_POST['address_postal_code'] ?? '';
- $address_province = $_POST['address_province'] ?? null;
- $address_country = $_POST['address_country'] ?? '';
- $latitude = $_POST['latitude'] ? floatval($_POST['latitude']) : null;
- $longitude = $_POST['longitude'] ? floatval($_POST['longitude']) : null;
- $owner_name = $_POST['owner_name'] ?? '';
- $vat_number = $_POST['vat_number'] ?? '';
- $status = in_array($_POST['status'], ['active', 'inactive', 'suspended']) ? $_POST['status'] : 'active';
- $slug = isset($_POST['slug']) ? generateSlug($_POST['slug']) : '';
+// POST - Salvataggio
+$success_message = $error = null;
- // Validazione dello slug
- if (empty($slug)) {
- $error = "Errore: Lo slug non può essere vuoto.";
- } else {
- // Controlla se lo slug è univoco
+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]);
- $slug_exists = $stmt->fetchColumn();
-
- if ($slug_exists) {
- $error = "Errore: Lo slug '$slug' è già in uso. Scegli un altro slug.";
+ if ($stmt->fetchColumn() > 0) {
+ $error = "Lo slug '$slug' è già in uso.";
}
}
- // Gestione del caricamento del logo
- $logo = $school['logo'];
- if (isset($_FILES['logo']) && $_FILES['logo']['error'] === UPLOAD_ERR_OK) {
- $file = $_FILES['logo'];
- $timestamp = time();
- $original_name = basename($file['name']);
- $extension = strtolower(pathinfo($original_name, PATHINFO_EXTENSION));
- $allowed_extensions = ['jpg', 'jpeg', 'png', 'gif'];
-
- if (in_array($extension, $allowed_extensions)) {
- $new_filename = "photoschool/{$iduserlogin}-{$timestamp}-{$original_name}";
- if (move_uploaded_file($file['tmp_name'], $new_filename)) {
- $logo = $new_filename;
- if ($school['logo'] && file_exists($school['logo']) && !$is_new) {
- unlink($school['logo']);
- }
+ // 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 durante il caricamento del logo.";
+ $error = "Errore caricamento logo.";
}
} else {
- $error = "Estensione del file non consentita. Usa JPG, JPEG, PNG o GIF.";
+ $error = "Solo JPG, PNG, GIF ammessi.";
}
}
- // Se non ci sono errori, procedi con il salvataggio
if (!isset($error)) {
- // Aggiorna auth_users (opzionale, se vuoi aggiornare first_name e last_name)
- $stmt = $pdo->prepare("UPDATE auth_users SET first_name = ?, last_name = ? WHERE id = ?");
- $stmt->execute([$school['first_name'], $school['last_name'], $iduserlogin]);
+ $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, website, email, phone, description, address_street, address_city, address_postal_code, address_province, address_country, latitude, longitude, owner_name, vat_number, logo, status, slug)
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+ 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
");
- $success = $stmt->execute([
- $iduserlogin,
- $name,
- $website,
- $email,
- $phone,
- $description,
- $address_street,
- $address_city,
- $address_postal_code,
- $address_province,
- $address_country,
- $latitude,
- $longitude,
- $owner_name,
- $vat_number,
- $logo,
- $status,
- $slug
- ]);
+ array_unshift($params, $iduserlogin);
+ $success = $stmt->execute($params);
if ($success) {
$success_message = "Scuola creata con successo!";
- $stmt = $pdo->prepare("
- SELECT s.*, u.first_name, u.last_name, u.email
- FROM auth_users u
- LEFT JOIN schools s ON s.owner_id = u.id
- WHERE u.id = ?
- ");
+ $stmt = $pdo->prepare("SELECT * FROM schools WHERE owner_id = ? ORDER BY id DESC LIMIT 1");
$stmt->execute([$iduserlogin]);
- $school = $stmt->fetch();
+ $school = $stmt->fetch(PDO::FETCH_ASSOC);
$is_new = false;
} else {
- $error = "Errore durante la creazione della scuola.";
+ $error = "Errore creazione scuola.";
}
} else {
+ $params[] = $school['id'];
$stmt = $pdo->prepare("
- UPDATE schools
- SET name = ?, website = ?, email = ?, phone = ?, description = ?, address_street = ?, address_city = ?,
- address_postal_code = ?, address_province = ?, address_country = ?, latitude = ?, longitude = ?,
- owner_name = ?, vat_number = ?, logo = ?, status = ?, slug = ?
- WHERE owner_id = ?
+ 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([
- $name,
- $website,
- $email,
- $phone,
- $description,
- $address_street,
- $address_city,
- $address_postal_code,
- $address_province,
- $address_country,
- $latitude,
- $longitude,
- $owner_name,
- $vat_number,
- $logo,
- $status,
- $slug,
- $iduserlogin
- ]);
+ $success = $stmt->execute($params);
if ($success) {
- $success_message = "Dati aggiornati con successo!";
- $stmt = $pdo->prepare("
- SELECT s.*, u.first_name, u.last_name, u.email
- FROM auth_users u
- LEFT JOIN schools s ON s.owner_id = u.id
- WHERE u.id = ?
- ");
- $stmt->execute([$iduserlogin]);
- $school = $stmt->fetch();
+ $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 durante l'aggiornamento dei dati.";
+ $error = "Errore aggiornamento.";
}
}
}
@@ -226,23 +185,54 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
-
+
Profilo Scuola
-
-
-
+
+
+
@@ -255,169 +245,172 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {