prepare( 'INSERT INTO map_layers (name, layer_key, color, is_visible, sort_order, description) VALUES (?, ?, ?, 1, (SELECT COALESCE(MAX(sort_order), 0) + 1 FROM map_layers AS m2), ?)' ); $stmt->execute([$name, $layerKey, $color, $description]); $feedback = 'Couche créée.'; } catch (Throwable $e) { $feedback = 'Erreur lors de la création (clé·· déjà utilisée ?) : ' . $e->getMessage(); $feedbackType = 'error'; } } } elseif ($action === 'toggle_visibility') { $layerId = filter_input(INPUT_POST, 'layer_id', FILTER_VALIDATE_INT); if ($layerId) { $stmt = $db->prepare('UPDATE map_layers SET is_visible = 1 - is_visible WHERE id = ?'); $stmt->execute([$layerId]); $feedback = 'Visibilité·· mise à jour.'; } } elseif ($action === 'update_color') { $layerId = filter_input(INPUT_POST, 'layer_id', FILTER_VALIDATE_INT); $color = sanitize_hex_color((string)($_POST['color'] ?? '')); if ($layerId && $color !== null) { $stmt = $db->prepare('UPDATE map_layers SET color = ? WHERE id = ?'); $stmt->execute([$color, $layerId]); $feedback = 'Couleur mise à jour.'; } else { $feedback = 'Couleur invalide.'; $feedbackType = 'error'; } } elseif ($action === 'delete_layer') { $layerId = filter_input(INPUT_POST, 'layer_id', FILTER_VALIDATE_INT); $confirmed = isset($_POST['confirm']) && $_POST['confirm'] === '1'; if (!$confirmed || !$layerId) { $feedback = 'Suppression refusé··e : confirmation manquante.'; $feedbackType = 'error'; } else { $stmt = $db->prepare('DELETE FROM map_layers WHERE id = ? LIMIT 1'); $stmt->execute([$layerId]); $feedback = $stmt->rowCount() > 0 ? 'Couche supprimé··e.' : 'Couche introuvable.'; } } } $layers = $db->query('SELECT id, name, layer_key, color, is_visible, sort_order, description FROM map_layers ORDER BY sort_order ASC')->fetchAll(PDO::FETCH_ASSOC); $user = current_admin_username(); ?> Couches cartographiques — NetMonster Admin

Couches cartographiques

Gé··rez les couches affich ées sur la carte (visibilité··, couleur, ordre). Toute suppression demande une confirmation explicite.

Nouvelle couche

Couches existantes ()

Ordre Nom Clé·· Couleur Visible Description Actions
Aucune couche configuré··e.