| Current Path : /home/h/a/p/happyrenas/myreco.online/administration/gestion/ |
Linux webd005.cluster105.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 |
| Current File : /home/h/a/p/happyrenas/myreco.online/administration/gestion/ma_carte.php |
<?
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/../');
include("../../configuration.php");
include("../../includes/fonctions.php");
setlocale(LC_TIME, 'fr_FR.UTF-8');
///////////////////////
//PARAMETRES DE LA PAGE
///////////////////////
$totem = "ma_carte";
$page = "ma_carte";
$ariane = "ma_carte";
$ariane1 = "ma_carte";
$titre = "ma_carte";
// Zone et catégorie actives (par défaut si rien en GET)
$zones_actives = $_GET['zones'] ?? ['proche'];
$categories_actives = $_GET['categories'] ?? ['a_voir'];
$visite_proprio_actives = $_GET['visite_proprio'];
if ($visite_proprio_actives) {
$zones_actives = $_GET['zones'];
$categories_actives = $_GET['categories'];
}
?>
<!DOCTYPE html>
<html lang="fr">
<?include("includes/head.php");?>
<body id="kt_body" class="page-loading-enabled page-loading header-fixed header-mobile-fixed subheader-enabled subheader-fixed aside-enabled aside-fixed page-loading" style="background-color:#ECE8E4!important;">
<div id="halt_loader_overlay"></div><div id="halt_loader" class=""><i class="fa fa-spinner fa-spin"></i> <?echo $trad['Chargement des informations, merci de patienter'] ?? '⚠️';?></div>
<div class="d-flex flex-column flex-root">
<!--begin::Page-->
<div class="d-flex flex-row flex-column-fluid page">
<?include("includes/header_left.php");?>
<!--begin::Wrapper-->
<div class="d-flex flex-column flex-row-fluid wrapper" id="kt_wrapper">
<?include("includes/header_top.php");?>
<!--begin::Content-->
<div class="content d-flex flex-column flex-column-fluid" id="kt_content">
<!--begin::Subheader-->
<div class="subheader py-2 py-4 subheader-solid" id="kt_subheader">
<div class="container-fluid d-flex align-items-center justify-content-between flex-wrap flex-sm-nowrap">
<div class="d-flex align-items-center">
<div class="btn-group ml-2">
<a class="btn btn-secondary btn-sm" href="index.php?token=<?echo $token;?>"><?echo $trad['Mon compte'] ?? '⚠️';?></a>
</div>
<div class="btn-group ml-2">
<a class="btn btn-secondary btn-sm" href="etablissement_ajout.php?token=<?echo $token;?>"><?echo $trad['Ajouter un lieu'] ?? '⚠️';?></a>
</div>
<div class="btn-group ml-2">
<a class="btn btn-secondary btn-sm" href="lieux_visite.php?token=<?echo $token;?>"><?echo $trad['Supprimer un lieu'] ?? '⚠️';?></a>
</div>
<div class="btn-group ml-2">
<a class="btn btn-secondary btn-sm" href="mon_qrcode.php?token=<?echo $token;?>"><?echo $trad['Mon QR code'] ?? '⚠️';?></a>
</div>
<div class="btn-group ml-2">
<a class="btn btn-primary btn-sm" href="ma_carte.php?token=<?echo $token;?>"><?echo $trad['Ma carte'] ?? '⚠️';?></a>
</div>
<div class="btn-group ml-2">
<a class="btn btn-secondary btn-sm" href="find.php?token=<?echo $token;?>"><?echo $trad['find'] ?? '⚠️';?></a>
</div>
</div>
</div>
</div>
<!--end::Subheader-->
<?
$myquery = "SELECT * from heb where token='".$token."'";
$fiche = $db->get_row($myquery);
$resultat = verifierOuRecupererPhoto($fiche->token, "heb");
$hebergement_photo ='img/hebergement.png';
if ($resultat['url']) {$hebergement_photo=$resultat['url'];}
$visite_photo ='img/visite.png';
$tableau_liste = recupererLieuxCarte($fiche, $zones_actives, $categories_actives, false);
if (in_array('visite_proprio', $visite_proprio_actives)) {
$tableau_liste_proprio = recupererLieuxCarteProprio($fiche);
}
//echo "<pre>";
//print_r($tableau_liste_proprio);
//echo "</pre>";
?>
<div class="d-flex flex-column-fluid">
<div class="<?echo $container_type;?>">
<div class="row">
<div class="col-xl-12" >
<div class="card card-custom" style="border: 1px solid <?echo $couleur_bordure;?>;background-color:#fcfcfa;">
<div class="card-header card-header-tabs-line">
<h3 class="card-title "><?echo $trad['Ma carte'] ?? '⚠️';?></h3>
<div class="card-toolbar">
</div>
</div>
<div class="card-body">
<form method="get" action="ma_carte.php">
<input type="hidden" name="token" value="<?= htmlspecialchars($token) ?>">
<div class="row">
<div class="col-md-4">
<!-- Zones -->
<div class="form-group">
<label><?= $trad["Zone de distance"] ?? 'Zone de distance'; ?></label>
<div class="checkbox-list">
<?php
$zones_possibles = ['proche' => 'Proche (0-30km)', 'median' => 'Median(30-60km)', 'lointain' => 'Lointain(60-100km)'];
foreach ($zones_possibles as $val => $label): ?>
<label class="checkbox checkbox-outline">
<input type="checkbox" name="zones[]" value="<?= $val ?>" <?= in_array($val, $zones_actives ?? []) ? 'checked' : '' ?>>
<span></span><?= $label ?>
</label>
<?php endforeach; ?>
</div>
</div>
<!-- Catégories -->
<div class="form-group">
<label><?= $trad["Type de lieu"] ?? 'Type de lieu'; ?></label>
<div class="checkbox-list">
<?php
$categories_possibles = [
'a_voir' => $trad['A voir'] ?? 'À voir',
'restaurant' => $trad['Restaurant'] ?? 'Restaurant',
'ludique' => $trad['Ludique'] ?? 'Ludique',
'soiree' => $trad['En soirée'] ?? 'Soirée'
];
// couleurs associées
$categories_couleurs = [
'a_voir' => 'blue',
'restaurant' => 'green',
'ludique' => 'purple',
'soiree' => 'orange'
];
// classes associées
$categories_classes = [
'a_voir' => 'primary',
'restaurant' => 'success',
'ludique' => 'info',
'soiree' => 'warning'
];
foreach ($categories_possibles as $val => $label): ?>
<label class="checkbox checkbox-<?= $categories_classes[$val] ?>" style="color: <?= $categories_couleurs[$val] ?>;">
<input type="checkbox" name="categories[]" value="<?= $val ?>"
<?= in_array($val, $categories_actives ?? []) ? 'checked' : '' ?>>
<span></span><?= $label ?>
</label>
<?php endforeach; ?>
</div>
</div>
<!-- Les recos du proprio -->
<div class="form-group">
<label><?= $trad["Type de lieu"] ?? 'Type de lieu'; ?></label>
<div class="checkbox-list">
<label class="checkbox" style="color: #fcde72;">
<input type="checkbox" name="visite_proprio[]" value="visite_proprio" <?= in_array('visite_proprio', $visite_proprio_actives ?? []) ? 'checked' : '' ?>>
<span></span>Mes recos</b>
</label>
</div>
</div>
<button type="submit" class="btn btn-primary w-100">Filtrer</button>
</div>
<div class="col-md-8">
<div id="map" style="height: 500px; border: 1px solid #ccc;"></div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<!--end::Content-->
</div>
<!--begin::Footer-->
<?include("includes/footer.php");?>
<!--end::Footer-->
</div>
<!--end::Wrapper-->
</div>
<!--end::Page-->
</div>
<!--end::Main-->
<?include("includes/extrav2.php");?>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function () {
var latCentre = <?= str_replace(',', '.', $fiche->latitude) ?>;
var lngCentre = <?= str_replace(',', '.', $fiche->longitude) ?>;
var map = L.map('map'); // Pas de setView ici
L.tileLayer('https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap',
maxZoom: 18
}).addTo(map);
// 📍 Icône rouge pour l’hébergement
var redIcon = new L.Icon({
iconUrl: 'img/marker-icon-red.png',
shadowUrl: 'img/marker-shadow.png',
iconSize: [25, 41],
iconAnchor: [12, 41],
popupAnchor: [1, -34],
shadowSize: [41, 41]
});
// Icônes personnalisées
var icons = {
a_voir: new L.Icon({ iconUrl: 'img/marker-icon-blue.png', shadowUrl: 'img/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }),
restaurant: new L.Icon({ iconUrl: 'img/marker-icon-green.png', shadowUrl: 'img/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }),
soiree: new L.Icon({ iconUrl: 'img/marker-icon-orange.png', shadowUrl: 'img/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }),
ludique: new L.Icon({ iconUrl: 'img/marker-icon-violet.png', shadowUrl: 'img/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }),
visite_proprio: new L.Icon({ iconUrl: 'img/marker-icon-yellow.png', shadowUrl: 'img/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] })
};
// 📍 Tableau pour stocker les coordonnées
var boundsArray = [];
// ➤ Marqueur hébergement
var markerHeb = L.marker([latCentre, lngCentre], { icon: redIcon }).addTo(map)
.bindPopup(`<b><?= addslashes($fiche->name) ?> (<?= count($tableau_liste) ?> lieux)</b><br><img src="<?= $hebergement_photo ?>" width="120">`)
.openPopup();
boundsArray.push([latCentre, lngCentre]);
// ➤ Marqueurs des lieux
<?php foreach ($tableau_liste as $lieu): ?>
var latlng = [<?= $lieu['latitude'] ?>, <?= $lieu['longitude'] ?>];
var categorie = "<?= $lieu['categorie'] ?>";
var icon = icons[categorie] || icons.a_voir;
var marker = L.marker(latlng, { icon: icon }).addTo(map);
marker.bindPopup(`<b><?= addslashes($lieu['name']) ?></b><br>
<i>Catégorie : <?= $lieu['categorie'] ?></i><br>
(<?= $lieu['distance'] ?> km)<br>
<br><img src="https://www.myreco.online<?echo $lieu['photo_locale'];?>" width="200">
`);
boundsArray.push(latlng);
<?php endforeach; ?>
// ➤ Marqueurs des lieux
<?php foreach ($tableau_liste_proprio as $lieu): ?>
var latlng = [<?= $lieu['latitude'] ?>, <?= $lieu['longitude'] ?>];
var categorie = "Mes recos";
var icon = icons['visite_proprio'] || icons.a_voir;
var marker = L.marker(latlng, { icon: icon }).addTo(map);
marker.bindPopup(`<b><?= addslashes($lieu['name']) ?></b><br>
<i>Catégorie : Mes recos</i><br>
<br><img src="https://www.myreco.online<?echo $lieu['photo_locale'];?>" width="200">
`);
boundsArray.push(latlng);
<?php endforeach; ?>
// ➤ Adapter le zoom automatiquement à tous les marqueurs
map.fitBounds(boundsArray, { padding: [30, 30] });
});
</script>
<?include("includes/end.php");?>
</body>
</html>