| Current Path : /home/h/a/p/happyrenas/myreco.online/includes/ |
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/includes/fonctions_divers.php |
<?
/*******************************
* 🚚 SELECTEUR ACTIF/NON ACTIF
******************************/
function isActive($value, $current) {
return $value === $current ? ' active' : '';
}
/*******************************
* 🚚 INCREMENTER LES ECHECS API
*******************************/
function incrementerEchecAPI($db, $table, $token)
{
$db->query("
UPDATE `$table`
SET api_echecs = IFNULL(api_echecs, 0) + 1
WHERE token = '" . addslashes($token) . "'
");
$db->query("UPDATE api_historique SET api_echecs = api_echecs + 1");
}
/*******************************
* 🚚 INCREMENTER LES ECHECS TELECHARGEMENT PHOTO
*******************************/
function incrementerEchecsTelechargementPhoto($db, $table, $token)
{
$db->query("
UPDATE `$table`
SET telechargementphoto_echecs = IFNULL(telechargementphoto_echecs, 0) + 1
WHERE token = '" . addslashes($token) . "'
");
}
/**********************
* 🚚 COUPER UNE CHAINE
*********************/
function couperChaine($texte, $limite = 30) {
if (strlen($texte) <= $limite) {
return $texte;
}
// Couper à la limite sans casser un mot
$texte_coupe = substr($texte, 0, $limite);
$dernier_espace = strrpos($texte_coupe, ' ');
if ($dernier_espace !== false) {
$texte_coupe = substr($texte_coupe, 0, $dernier_espace);
}
return $texte_coupe . '...';
}
/****************************************
* 🚚 COMPTER ET DETAILLER UN CHAMP JSON
***************************************/
function analyserJsonCategorie($json_str) {
$result = [
'total' => 0,
'detail' => []
];
$data = json_decode($json_str, true);
if (is_array($data)) {
foreach ($data as $categorie => $items) {
if (is_array($items)) {
$nb = count($items);
$result['total'] += $nb;
$result['detail'][] = "$nb " . ucfirst($categorie);
}
}
}
return $result;
}
/********************************************
* 🚚 CALCUL DE LA DISTANCE ENTRE DEUX POINTS
********************************************/
function calculerDistance($lat1, $lon1, $lat2, $lon2) {
$rayonTerre = 6371; // Rayon moyen de la Terre en kilomètres
// Conversion des latitudes et longitudes en radians
$lat1 = deg2rad($lat1);
$lon1 = deg2rad($lon1);
$lat2 = deg2rad($lat2);
$lon2 = deg2rad($lon2);
// Calcul des différences de latitudes et longitudes
$deltaLat = $lat2 - $lat1;
$deltaLon = $lon2 - $lon1;
// Calcul de la distance en utilisant la formule Haversine
$a = sin($deltaLat / 2) * sin($deltaLat / 2) +
cos($lat1) * cos($lat2) *
sin($deltaLon / 2) * sin($deltaLon / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$distance = $rayonTerre * $c;
return $distance;
}
/********************************
* 🚚 CHARGEMENT DES TRADUCTIONS
*******************************/
function chargerTraductions($code_langue) {
global $db;
$requete = "SELECT cle_traduction, texte_traduction FROM traduction WHERE code_langue = '$code_langue'";
$resultats = $db->get_results($requete);
$traductions = [];
foreach ($resultats as $ligne) {
$traductions[$ligne->cle_traduction] = $ligne->texte_traduction;
}
return $traductions;
}
/**************************************
* 🚚 RETOURNER LA TRADUCTION D'UN MOT
*************************************/
function traduire($cle, $traductions) {
global $db;
return $traductions[$cle] ?? $cle;
}
/****************************
* 🚚 CONVERTIR EMOJI EN HTML
****************************/
function convertirEmojiEnEntiteHTML($texte) {
$utf32 = mb_convert_encoding($texte, 'UTF-32', 'UTF-8');
$longueur = mb_strlen($utf32, 'UTF-32');
$resultat = '';
for ($i = 0; $i < $longueur; $i++) {
$car = mb_substr($utf32, $i, 1, 'UTF-32');
$utf8char = mb_convert_encoding($car, 'UTF-8', 'UTF-32');
$codepoint = unpack("N", $car)[1];
// Remplacer uniquement les caractères au-delà de la plage ASCII étendue (symboles, émojis, etc.)
if ($codepoint > 127) {
$resultat .= '&#' . $codepoint . ';';
} else {
$resultat .= $utf8char;
}
}
return $resultat;
}
/*************************************************
* 🚚 RECUPERER LIEN DE RESERVATION LIEU DE VISITE
*************************************************/
function getLienReservation($id)
{
global $db;
// Récupérer les champs nécessaires depuis la base
$reponse = $db->get_row("SELECT reservation_links, order_links, booking_appointment_link FROM vis WHERE id = " . intval($id));
if (!$reponse) return null;
// Nettoyer les champs s'ils contiennent une virgule (on prend uniquement le premier lien)
if (strpos($reponse->reservation_links, ',') !== false) {
$reponse->reservation_links = trim(strtok($reponse->reservation_links, ','));
}
if (strpos($reponse->order_links, ',') !== false) {
$reponse->order_links = trim(strtok($reponse->order_links, ','));
}
// Priorité : reservation_links > booking_appointment_link > order_links
if (filter_var($reponse->reservation_links, FILTER_VALIDATE_URL)) {
return $reponse->reservation_links;
}
if (filter_var($reponse->booking_appointment_link, FILTER_VALIDATE_URL)) {
return $reponse->booking_appointment_link;
}
if (filter_var($reponse->order_links, FILTER_VALIDATE_URL)) {
return $reponse->order_links;
}
// Aucun lien valide trouvé
return null;
}
/********************
* 🚚 GESTION DES MRX
********************/
function extraireMRXDonnees($request)
{
global $db;
$params = [];
$mrx_array = [];
for ($i = 1; $i <= 15; $i++) {
$key = 'mrx' . $i;
$value = isset($request[$key]) ? $db->escape($request[$key]) : '';
$params[$key] = $value;
$mrx_array[] = $value;
}
$mrx_variable = http_build_query($params);
return [
'mrx_variable' => $mrx_variable,
'mrx_array' => $mrx_array,
'mrx_assoc' => $params // utile si tu veux le tableau associatif aussi
];
}
?>