| Current Path : /home/happyrenas/myreco.online/administration/panel/ |
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/happyrenas/myreco.online/administration/panel/visite_detail.php |
<?
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/../');
include("../../configuration.php");
include("../../includes/fonctions.php");
setlocale(LC_TIME, 'fr_FR.UTF-8');
include("auth.php");
///////////////////////
//PARAMETRES DE LA PAGE
///////////////////////
$totem = "visite";
$page = "visite";
$ariane1 = "Les lieux de visite";
$ariane2 = "Les lieux de visite";
$titre = "Les lieux de visite";
$datatable_nom = "visite_table";
$date_creation = date("Y-m-d");
$date_heure_creation = date("Y-m-d H:i");
$country_code_selected = $db->escape($_REQUEST['country_code_selected']);
$postal_code_selected = $db->escape($_REQUEST['postal_code_selected']);
$visite_id = $db->escape(trim($_REQUEST['visite_id']));
$name = $db->escape($_REQUEST['name']);
$categorie = $db->escape($_REQUEST['categorie']);
$statut = $db->escape($_REQUEST['statut']);
$reservation_links = $db->escape($_REQUEST['reservation_links']);
$site = $db->escape($_REQUEST['site']);
$is_bonus = $db->escape($_REQUEST['is_bonus']);
if ($_REQUEST['action']=="modifier" && $visite_id && $name)
{
$requete_update="UPDATE vis set name = '".$name."' , categorie = '".$categorie."',statut='".$statut."', reservation_links= '".$reservation_links."', site='".$site."', is_bonus='".$is_bonus."' where id =".$visite_id;
$db->query($requete_update);
$miseajour=1;
}
if ($_REQUEST['reset_liste_lieux_fait']=="oui" && $visite_id)
{
$requete_update_reset_liste_lieux_fait = "
UPDATE heb
SET liste_lieux_fait = 0
WHERE
proche_json LIKE '%\"visite_id\":\"$visite_id\"%'
OR median_json LIKE '%\"visite_id\":\"$visite_id\"%'
OR lointain_json LIKE '%\"visite_id\":\"$visite_id\"%'
";
$db->query($requete_update_reset_liste_lieux_fait);
$miseajour=1;
}
?>
<!DOCTYPE html>
<html lang="fr">
<?include("includes/head.php");?>
<style>
/* Réduire la hauteur des lignes de la table */
table.dataTable tbody tr {
height: 30px!important; /* Ajustez en fonction de vos besoins */
}
/* Réduire les marges internes des cellules */
table.dataTable td, table.dataTable th {
padding: 0.5rem!important; /* Réduire le padding */
/*white-space: nowrap; /* Empêche le texte de s'étendre sur plusieurs lignes */*/
}
table.dataTable td, table.dataTable th {
font-size: 0.9rem !important; /* Ajustez en fonction de vos besoins */
}
</style>
<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">
<div id="halt_loader_overlay"></div><div id="halt_loader" class=""><i class="fa fa-spinner fa-spin"></i> 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-lg-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 flex-wrap mr-2">
<h5 class="text-dark font-weight-bold mt-2 mb-2 mr-5"><?echo $country_code_selected;?></h5>
<div class="subheader-separator subheader-separator-ver mt-2 mb-2 mr-5 bg-gray-200"></div>
<h5 class="text-dark font-weight-bold mt-2 mb-2 mr-5">Département <?echo $postal_code_selected;?></h5>
<div class="d-flex align-items-center" id="kt_subheader_search">
<span class="text-dark-50 font-weight-bold" id="kt_subheader_total"></span>
</div>
</div>
<div class="d-flex align-items-center">
<div class="btn-group ml-2">
<a href="visite_liste.php?country_code_selected=<?echo $country_code_selected;?>&postal_code_selected=<?echo $postal_code_selected;?>" class="btn btn-outline-danger font-weight-bold btn-sm px-3 font-size-base">Retour</a>
</div>
</div>
</div>
</div>
<!--end::Subheader-->
<?
if ($visite_id){
$myquery = "SELECT * from vis where id=".$visite_id;
$fiche = $db->get_row($myquery);
}
?>
<div class="d-flex flex-column-fluid">
<div class="container-fluid">
<div class="row">
<div class="col-xl-6" >
<div class="card card-custom" style="border: 1px solid <?echo $couleur_bordure;?>;">
<div class="card-header flex-wrap py-3">
<div class="card-title">
<h3 class="card-label"><?echo $fiche->name;?></h3>
</div>
<div class="card-toolbar" id="card-toolbar">
<span class='badge badge-light'>
<i class='<?echo $tableau_categorie[$fiche->categorie]['icon'];?> text-<?echo $tableau_categorie[$fiche->categorie]['classe'];?>'></i>
</span>
</div>
</div>
<div class="card-body">
<!--begin::Tab Content-->
<div class="row">
<div class="col-12" >
<?
foreach ( $db->get_col_info("name") as $name )
{
$myquery = "SELECT COLUMN_NAME, COLUMN_COMMENT AS COLUMN_COMMENT FROM information_schema.COLUMNS a WHERE COLUMN_NAME='".$name."' AND TABLE_NAME = 'vis';";
$metadata = $db->get_row($myquery);
$fiche->$name=str_replace('"','"',$fiche->$name);
?>
<div class="form-group">
<label><?echo $name;?> <?if ($metadata->COLUMN_COMMENT){?><span class="text-primary"> [<?echo $metadata->COLUMN_COMMENT;?>]</span><?}?></label>
<div class="input-group">
<input type="text" style="background-color:#ddd;cursor:not-allowed;" class="form-control" disabled readonly value="<?echo $fiche->$name;?>" >
</div>
</div>
<?}?>
</div>
</div>
</div>
</div>
</div>
<?
$myquery = "SELECT * FROM vis WHERE id = " . $visite_id;
$fiche = $db->get_row($myquery);
?>
<div class="col-xl-6" >
<div class="row">
<div class="col-xl-12 mb-2" >
<div class="card card-custom" style="border: 1px solid <?echo $couleur_bordure;?>;">
<div class="card-body">
<div class="row">
<div class="col-xl-12 mb-2 ">
<?
$prefix = strtoupper(substr($fiche->token, 0, 2));
$photo_path = "/upload/visite/$prefix/{$fiche->token}.jpg";
$photo_abs_path = DOSSIER_RACINE.$photo_path;
if (file_exists($photo_abs_path)) {
echo '<img id="photoActuelle" src="../../../' . $photo_path . '?v=' . uniqid() . '" alt="Photo visite" style="max-width:300px">';
} else {
echo '<p id="photoActuelleMessage">Aucune photo trouvée ou récupérée.</p>';
}
?>
</div>
<div class="col-xl-12 mb-2 ">
<div class="form-group row align-items-center">
<div class="col-lg-6">
<div class="custom-file">
<input type="file" class="custom-file-input" id="photoInput">
<label class="custom-file-label" for="photoInput">Choisir une photo...</label>
</div>
<input type="hidden" id="token" value="<?= $fiche->token ?>">
</div>
<div class="col-lg-6">
<button type="button" class="btn btn-primary" id="uploadPhotoBtn">
<i class="fa fa-upload"></i> Uploader
</button>
</div>
</div>
<div class="form-group">
<div id="uploadResult" class="text-success small mb-2"></div>
<div id="photoPreview"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-12" >
<form id="formulaire_principal" action="visite_detail.php" method="post">
<input type="hidden" name="action" value="modifier">
<input type="hidden" name="visite_id" value="<?echo $visite_id;?>">
<input type="hidden" name="country_code_selected" value="<?echo $country_code_selected;?>">
<input type="hidden" name="postal_code_selected" value="<?echo $postal_code_selected;?>">
<div class="card card-custom" style="border: 1px solid <?echo $couleur_bordure;?>;">
<div class="card-header flex-wrap py-3">
<div class="card-title">
<h3 class="card-label">Données modifiables</h3>
</div>
<div class="card-toolbar" id="card-toolbar">
<div class="btn-group ml-2"><button type="submit" form="formulaire_principal" id="formulaire_principal" class="form_bouton btn btn-primary font-weight-bold btn-sm px-3 font-size-base">ENREGISTRER</button></div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-xl-12" >
<div class="form-group">
<label>Nom <span class="text-danger">*</span></label>
<div class="input-group">
<input type="text" name="name" class="form-control" placeholder="Nom" value="<?echo htmlspecialchars($fiche->name);?>" required>
</div>
</div>
<div class="form-group">
<label>Catégorie</label>
<div class="input-group">
<select class="form-control" id="categorie" name="categorie">
<?
foreach($tableau_categorie as $key => $data)
{
$selected = ($fiche->categorie == $key) ? "selected" : "";
echo "<option value='$key' $selected>{$data['label']}</option>";
}
?>
</select>
</div>
</div>
<div class="form-group">
<label>Affiché sur QrCode ?</label>
<div class="input-group">
<select class="form-control" id="statut" name="statut">
<?
foreach ($tableau_affichage_sur_qrcode as $key => $data) {
$selected = ($fiche->statut == $key) ? "selected" : "";
echo "<option value='$key' $selected>{$data['label']}</option>";
}
?>
</select>
</div>
</div>
<?
$lien_reservation = getLienReservation($fiche->id);
?>
<div class="form-group">
<label>Lien de réservation </label>
<div class="input-group">
<input type="url" name="reservation_links" class="form-control" placeholder="" value="<?echo $lien_reservation;?>" >
</div>
</div>
<div class="form-group">
<label>Site web </label>
<div class="input-group">
<input type="url" name="site" class="form-control" placeholder="" value="<?echo $fiche->site;?>" >
</div>
</div>
<div class="form-group">
<label>Bonus Algo </label>
<div class="checkbox-list">
<label class="checkbox">
<input type="checkbox" <?if ($fiche->is_bonus) {?> checked <?}?> value="1" name="is_bonus">
<span></span>
Bonus activé
</label>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
<?
$requete_comptage = "
SELECT COUNT(*) AS total
FROM heb
WHERE
liste_lieux_fait = 1 AND (
proche_json LIKE '%\"visite_id\":\"$visite_id\"%'
OR median_json LIKE '%\"visite_id\":\"$visite_id\"%'
OR lointain_json LIKE '%\"visite_id\":\"$visite_id\"%'
)
";
$calcul = $db->get_row($requete_comptage);
?>
<div class="col-xl-12 mt-2" >
<form id="formulaire_algo" action="visite_detail.php" method="post">
<input type="hidden" name="reset_liste_lieux_fait" value="oui">
<input type="hidden" name="visite_id" value="<?echo $visite_id;?>">
<input type="hidden" name="country_code_selected" value="<?echo $country_code_selected;?>">
<input type="hidden" name="postal_code_selected" value="<?echo $postal_code_selected;?>">
<div class="card card-custom" style="border: 1px solid <?echo $couleur_bordure;?>;">
<div class="card-header flex-wrap py-3">
<div class="card-title">
<h3 class="card-label">Algo</h3>
</div>
<div class="card-toolbar" id="card-toolbar">
<div class="btn-group ml-2"><button type="submit" form="formulaire_algo" id="formulaire_algo" class="form_bouton btn btn-warning font-weight-bold btn-sm px-3 font-size-base">Re-initialiser</button></div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-xl-12" >
<div class="form-group">
<label>hébergements ayant cet id de visite dans un des champs</label>
<div class="input-group">
<input type="text" name="" class="form-control" placeholder="Nom" value="<?echo $calcul->total;?>">
</div>
</div>
</div>
</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");?>
<script type="text/javascript" class="init">
$(document).ready(function() {
$('#photoInput').on('change', function () {
const fileName = $(this).val().split('\\').pop();
$(this).next('.custom-file-label').html(fileName);
});
$('#uploadPhotoBtn').on('click', function () {
const file = $('#photoInput')[0].files[0];
const token = $('#token').val();
if (!file || !token) {
alert('Merci de choisir une photo sur votre ordinateur avant de l\'uploader.');
return;
}
const formData = new FormData();
formData.append('photo', file);
formData.append('token', token);
showLoader(); // 🔄 Affiche le loader
$.ajax({
url: '../upload_photo_visite.php',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function (response) {
console.log(response.message);
$('#uploadResult').html(response.message);
if (response.photo_url) {
const imageUrl = response.photo_url + '?v=' + Math.random();
if ($('#photoActuelle').length) {
// L'image existe déjà → on change son src
$('#photoActuelle').attr('src', imageUrl);
} else {
// Si pas d'image (juste un message), on l’ajoute
$('#photoActuelleMessage').remove(); // supprime le <p>
$('#photoPreview').html('<img id="photoActuelle" src="' + imageUrl + '" style="max-width:300px">');
}
}
},
error: function () {
$('#uploadResult').html('Erreur lors de l\'upload AJAX.');
},
complete: function () {
hideLoader(); // ✅ Cache le loader à la fin, qu'il y ait succès ou erreur
}
});
});
////////////////////////
//NOTIFICATION EN HAUT//
////////////////////////
<?if ($miseajour==1) {$title="Mise à jour demandée";$message="La mise à jour a été effectuée avec succès";$type="success";}?>
<?if ($miseajour) {?>
$.notify({title: '<?echo $title;?>',message: '<?echo $message;?>',},{element: 'body',position: null,type: "<?echo $type;?>",allow_dismiss: true,newest_on_top: true,spacing: 10,delay : 1000,placement: {from: "top",align: "center"},offset: {x: 30,y: 30},z_index: 10000,animate: {enter: 'animate__animated animate__bounce',exit: 'animate__animated animate__bounce'}});
<?}?>
});
</script>
<?include("includes/end.php");?>
</body>
</html>