Files
ms1inscription-v5/php/inc_settings.php

558 lines
20 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
//ini_set( 'display_errors', 1 );
//error_reporting( E_ALL );
/*************
*
* Constantes *
*
**************/
define('_VERSION_CODE', '4.72.904'); // MSIN-4515 — Nom déquipe Face/Endos production
define('_DATE_CODE', '2026-07-29');
//MSIN-4290
define('QR_SECRET_KEY', 'ms1_qr_2026_cle_secrete_longue_et_fixe');
// MSIN-4401 — OCR dossard : Google Cloud Vision (TEXT_DETECTION).
// Sans cette cle, le scan cloud est desactive (pas de Tesseract hasardeux sur mobile).
// Creer une cle API Vision (restreindre par IP / referer) et coller ici.
if (!defined('MSIN_BIB_OCR_VISION_API_KEY')) {
define('MSIN_BIB_OCR_VISION_API_KEY', 'AIzaSyCodKZxVzp8MAWjLqC5uaKM9tvZjfsxzGo');
}
// Outil temporaire ms1_kc_set.php — modifier key_chain_http (lien /kc/{pk}/)
// KEYCHAIN_HTTP_EDIT_SECRET : paramètre ?k= dans l'URL (mot de passe d'accès à la page)
// KEYCHAIN_HTTP_EDIT_SHIFT : ajouté au numéro saisi (ex. 8 → pk 108 en base)
// KEYCHAIN_HTTP_EDIT_ALLOWED_COM_IDS : com_id autorisés (virgules) pour /ms1_kc_set.php sans ?k=
define('KEYCHAIN_HTTP_EDIT_SECRET', 'ms1_kc_http_edit_2026_c7e4a91f3b2d8e0f6a5c4b3d2e1f0a9');
define('KEYCHAIN_HTTP_EDIT_SHIFT', 100);
define('KEYCHAIN_HTTP_EDIT_ALLOWED_COM_IDS', '');
// MSIN-4401 — Qui peut créer / modifier / supprimer les définitions de kits (pas l'assignation).
// MSIN-4464 — Même liste pour la config traçabilité fiche (whitelist + rétention).
// Valeurs = com_courriel ou com_login (session superadm usa_info).
$arrEveAccesKitEditors = array(
'stephan@progiweb.ca','desjardins.lp@ms1timing.com',
);
/**************************************
*
* Profils connexion BD — source unique *
*
**************************************/
$tabConnClientPreprod = array(
'host' => 'localhost',
'user' => 'ms1incription_bd',
'pass' => '3+~=,y=eV)M;',
'db' => 'ms1incription_preprod',
);
$tabConnClientProd = array(
'host' => 'localhost',
'user' => 'ms1incription_bd',
'pass' => '3+~=,y=eV)M;',
'db' => 'ms1incription_prod',
);
$tabConnDevPreprod = array(
'host' => 'localhost',
'user' => 'devinscription_bd',
'pass' => 'x$@_v0-l_I((',
'db' => 'devinscription_preprod',
);
$tabConnDevProd = array(
'host' => 'localhost',
'user' => 'devinscription_bd',
'pass' => 'x$@_v0-l_I((',
'db' => 'devinscription_prod',
);
$tabConnCrmClient = array(
'host' => 'localhost',
'user' => 'ms1crm_bd',
'pass' => 'fPDJ,][ZGPwL',
'db' => 'ms1crm_prod',
);
$tabConnCrmDev = array(
'host' => 'localhost',
'user' => 'devcrmms1_bd',
'pass' => '.vB==c$s_Yk7',
'db' => 'devcrmms1_dev',
);
/**
* Branche le site sur un profil préprod + prod (même host/user/pass).
* $strMainRole : 'preprod' ou 'prod' → $strDatabaseMain
*/
function fxSettingsUseDbProfiles($tabPreprod, $tabProd, $strMainRole = 'preprod') {
global $strDatabaseHost, $strDatabaseUser, $strDatabasePass;
global $strDatabaseMain, $strDatabasePreProd, $strDatabaseProd;
$strDatabaseHost = $tabPreprod['host'];
$strDatabaseUser = $tabPreprod['user'];
$strDatabasePass = $tabPreprod['pass'];
$strDatabasePreProd = $tabPreprod['db'];
$strDatabaseProd = $tabProd['db'];
$strDatabaseMain = ($strMainRole === 'prod') ? $tabProd['db'] : $tabPreprod['db'];
}
function fxSettingsUseCrmProfile($tabCrm) {
global $strDatabaseHostcrm, $strDatabaseUsercrm, $strDatabasePasscrm, $strDatabaseMaincrm;
$strDatabaseHostcrm = $tabCrm['host'];
$strDatabaseUsercrm = $tabCrm['user'];
$strDatabasePasscrm = $tabCrm['pass'];
$strDatabaseMaincrm = $tabCrm['db'];
}
/**********************
*
* Variables globales *
*
**********************/
$strHost = (!empty($_SERVER['HTTP_HOST'])) ? trim($_SERVER['HTTP_HOST']) : '';
$currentFile = (!empty($_SERVER["PHP_SELF"])) ? trim($_SERVER["PHP_SELF"]) : '';
$parts = Explode('/', $currentFile);
$vPage = $parts[count($parts) - 1];
$vEmail = 'confirmation@ms1timing.com';
$vClient = 'ms1inscription';
$vNumero = '514-360-1610';
$vNumeroSF = '1-855-584-6464';
$vNumeroSFL = '1-855-5-TIMING';
date_default_timezone_set('America/Montreal');
$blnShowErrors = true;
$strConAdmin = '';
if (isset($_SESSION['usa_id'])) {
$strConAdmin = ' - Connecté en <span class="text-uppercase">admin</span> (' . $_SESSION['usa_info']['com_login'] . ')';
}
/**
* MSIN API ChronoTrack — credentials par environnement (inc_settings.php).
* Valeurs par défaut ci-dessous (utilisées par ms1inscriptiondev / préprod dev).
* Les autres blocs switch peuvent remplacer $tabChronotrackApi entièrement.
*/
function fxSettingsApplyChronotrackApi($tabCfg) {
if (defined('MSIN_API_CHRONOTRACK_BASE_URL')) {
return;
}
$strBaseUrl = (string)($tabCfg['base_url'] ?? 'https://api.chronotrack.com');
define('MSIN_API_CHRONOTRACK_BASE_URL', $strBaseUrl);
define('MSIN_API_CHRONOTRACK_CLIENT_ID', (string)($tabCfg['client_id'] ?? ''));
define('MSIN_API_CHRONOTRACK_CLIENT_SECRET', (string)($tabCfg['client_secret'] ?? ''));
define('MSIN_API_CHRONOTRACK_SERVICE_USER', (string)($tabCfg['service_user'] ?? ''));
define('MSIN_API_CHRONOTRACK_SERVICE_PASS', (string)($tabCfg['service_pass'] ?? ''));
if (!defined('MSIN_API_CHRONOTRACK_TOKEN_KEY')) {
define(
'MSIN_API_CHRONOTRACK_TOKEN_KEY',
(strpos($strBaseUrl, 'api-test') !== false) ? 'test' : 'prod'
);
}
}
// MSIN API ChronoTrack — true = api-test (QA, reset nocturne). Nécessite client_id enregistré côté CT test.
$blnChronotrackApiUseTestEndpoint = false;
$strChronotrackApiBaseUrl = $blnChronotrackApiUseTestEndpoint
? 'https://api-test.chronotrack.com'
: 'https://api.chronotrack.com';
$tabChronotrackApi = array(
'base_url' => $strChronotrackApiBaseUrl,
'client_id' => '047dcfdd',
'client_secret' => '5f14f8cb103316bfdf0558d1a6d0f20769603dde',
'service_user' => 'leith.s@ms1timing.com',
'service_pass' => 'Unimog22',
);
/**************************************
*
* Variables selon les environnements *
*
**************************************/
$vblnEnvironementPreProd = false;
$vblnEnvironementDev = false;
$arrConDatabaseClientPreProd = null;
$arrConDatabaseClientProd = null;
switch ($strHost) {
/****************************
* Environnement MYINTERNE *
****************************/
case "myinterne.com":
case "www.myinterne.com":
case "preprod.myinterne.com":
case "www.preprod.myinterne.com":
$vGoogleAnalytics = "";
$vblnEnvironementDev = false;
$blnShowErrors = false;
$vDomaine = $vDomaine2 = $vDomaineTiming = 'https://www.preprod.myinterne.com';
$vRepertoireFichiers = '/preprod';
$vEnvNotice = '
<div class="alert-warning py-2 text-center sticky-top">
<strong>Environnement Client <span class="text-uppercase">TEST</span>' . $strConAdmin . '</strong>
</div>
';
fxSettingsUseDbProfiles($tabConnClientPreprod, $tabConnClientProd, 'preprod');
fxSettingsUseCrmProfile($tabConnCrmClient);
// MSIN API ChronoTrack — remplir credentials par environnement
$tabChronotrackApi = array(
'base_url' => 'https://api.chronotrack.com',
'client_id' => '047dcfdd',
'client_secret' => '',
'service_user' => '',
'service_pass' => '',
);
$arrConFTP = array(
'host' => '127.0.0.1',
'user' => 'ms1inscription',
'pass' => 'ms1911',
'path_prod' => '/home/ms1incription/public_html',
'path_preprod'=> '/home/ms1incription/public_html/preprod'
);
$isPreprod = (strpos($strHost, 'preprod.') !== false);
if (!$isPreprod) {
$favicon = 'favicon.ico';
$faviconadm = 'favicon-rouge.ico';
fxSettingsUseDbProfiles($tabConnClientPreprod, $tabConnClientProd, 'prod');
$vblnEnvironementDev = false;
$vGoogleAnalytics = "";
$vPaypaladv = true;
$vPaypaladv_SANDBOX = false;
$vPaypal_devise = 'CAD';
define('PAYPAL_ENV', 'prod_client');
define('PAYPAL_ENV_FOOTER', 'prod_client');
define('PAYPAL_BASE_URL', 'https://api-m.paypal.com');
define('PAYPAL_CLIENT_ID', 'AU3fhK6opJ2cBkTghAHf02fsimwj345zn3TOPL5we3z0C9HNT_sU341OkIP9l-ucgE1JdBhmt3WlHb2v');
define('PAYPAL_CLIENT_SECRET', 'EDg0Y1ZxvUmrAxY9_-NZP3EsuoMRf2lu9st1mDn8Ha7f5z4hrk7_KKsu_tM_PSri86YuFRqbaVKBADlX');
define('PAYPAL_WEBHOOK_ID', '2EW679080K7814041');
define('PAYPAL_SANDBOX', false);
define('PAYPAL_CURRENCY', 'CAD');
if (isset($_SESSION['usa_id'])) {
$vEnvNotice = '
<div class="alert-warning py-2 text-center sticky-top">
<strong>Environnement Client <span class="text-uppercase">PROD</span>' . $strConAdmin . '</strong>
</div>
';
} else {
$vEnvNotice = '';
}
$vDomaine = $vDomaine2 = $vDomaineTiming = 'https://www.myinterne.com';
$vRepertoireFichiers = '';
$vGoogleAnalytics = "
<!-- Google tag (gtag.js) -->
<script async src=\"https://www.googletagmanager.com/gtag/js?id=G-9KF526LB6D\"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-8LEDDLNB94');
</script>
";
} else {
$favicon = 'favicon-jaune.ico';
$faviconadm = 'favicon-orange.ico';
$vblnEnvironementPreProd = true;
$vblnEnvironementDev = true;
$vPaypaladv = true;
$vPaypaladv_SANDBOX = true;
$vPaypal_devise = 'CAD';
define('PAYPAL_ENV', 'prod_test');
define('PAYPAL_ENV_FOOTER', 'prod_test');
define('PAYPAL_BASE_URL', 'https://api-m.sandbox.paypal.com');
define('PAYPAL_CLIENT_ID', 'AXiOtwcCb4Vqf7QylPje-K2xp9lOIfCv_HMW8oWn1k8cRJJ0sSu_sVNjtQqaoDll9-vN8LpmfrqfI82d');
define('PAYPAL_CLIENT_SECRET', 'EEs_rbmAZlZFgm8m8e8S9lmZD47I9sf44wjbYEqu99uVpgHb0PHa3aSYG8Pe3772kr9FWZ33iDrPL9Jr');
define('PAYPAL_WEBHOOK_ID', '58G68258926315914');
define('PAYPAL_SANDBOX', true);
define('PAYPAL_CURRENCY', 'CAD');
}
$vEnvNotice = '
<div class="alert-warning py-2 text-center sticky-top">
<strong>Environnement backup <span class="text-uppercase">PROD
</div>
';
break;
/****************************
* Environnement PRODUCTION client *
****************************/
case "ms1inscription.com":
case "www.ms1inscription.com":
case "preprod.ms1inscription.com":
case "www.preprod.ms1inscription.com":
$vGoogleAnalytics = "";
$vblnEnvironementDev = false;
$blnShowErrors = false;
$vDomaine = $vDomaine2 = $vDomaineTiming = 'https://www.preprod.ms1inscription.com';
$vRepertoireFichiers = '/preprod';
$vEnvNotice = '
<div class="alert-warning py-2 text-center sticky-top">
<strong>Environnement Client <span class="text-uppercase">TEST</span>' . $strConAdmin . '</strong>
</div>
';
fxSettingsUseDbProfiles($tabConnClientPreprod, $tabConnClientProd, 'preprod');
fxSettingsUseCrmProfile($tabConnCrmClient);
// MSIN API ChronoTrack — remplir credentials par environnement
$tabChronotrackApi = array(
'base_url' => 'https://api.chronotrack.com',
'client_id' => '047dcfdd',
'client_secret' => '',
'service_user' => '',
'service_pass' => '',
);
$arrConFTP = array(
'host' => '127.0.0.1',
'user' => 'ms1inscription',
'pass' => 'ms1911',
'path_prod' => '/home/ms1incription/public_html',
'path_preprod'=> '/home/ms1incription/public_html/preprod'
);
$isPreprod = (strpos($strHost, 'preprod.') !== false);
if (!$isPreprod) {
$favicon = 'favicon.ico';
$faviconadm = 'favicon-rouge.ico';
fxSettingsUseDbProfiles($tabConnClientPreprod, $tabConnClientProd, 'prod');
$vblnEnvironementDev = false;
$vGoogleAnalytics = "";
$vPaypaladv = true;
$vPaypaladv_SANDBOX = false;
$vPaypal_devise = 'CAD';
define('PAYPAL_ENV', 'prod_client');
define('PAYPAL_ENV_FOOTER', 'prod_client');
define('PAYPAL_BASE_URL', 'https://api-m.paypal.com');
define('PAYPAL_CLIENT_ID', 'AU3fhK6opJ2cBkTghAHf02fsimwj345zn3TOPL5we3z0C9HNT_sU341OkIP9l-ucgE1JdBhmt3WlHb2v');
define('PAYPAL_CLIENT_SECRET', 'EDg0Y1ZxvUmrAxY9_-NZP3EsuoMRf2lu9st1mDn8Ha7f5z4hrk7_KKsu_tM_PSri86YuFRqbaVKBADlX');
define('PAYPAL_WEBHOOK_ID', '2EW679080K7814041');
define('PAYPAL_SANDBOX', false);
define('PAYPAL_CURRENCY', 'CAD');
if (isset($_SESSION['usa_id'])) {
$vEnvNotice = '
<div class="alert-warning py-2 text-center sticky-top">
<strong>Environnement Client <span class="text-uppercase">PROD</span>' . $strConAdmin . '</strong>
</div>
';
} else {
$vEnvNotice = '';
}
$vDomaine = $vDomaine2 = $vDomaineTiming = 'https://www.ms1inscription.com';
$vRepertoireFichiers = '';
$vGoogleAnalytics = "
<!-- Google tag (gtag.js) -->
<script async src=\"https://www.googletagmanager.com/gtag/js?id=G-9KF526LB6D\"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-8LEDDLNB94');
</script>
";
} else {
$favicon = 'favicon-jaune.ico';
$faviconadm = 'favicon-orange.ico';
$vblnEnvironementPreProd = true;
$vblnEnvironementDev = true;
$vPaypaladv = true;
$vPaypaladv_SANDBOX = true;
$vPaypal_devise = 'CAD';
define('PAYPAL_ENV', 'prod_test');
define('PAYPAL_ENV_FOOTER', 'prod_test');
define('PAYPAL_BASE_URL', 'https://api-m.sandbox.paypal.com');
define('PAYPAL_CLIENT_ID', 'AXiOtwcCb4Vqf7QylPje-K2xp9lOIfCv_HMW8oWn1k8cRJJ0sSu_sVNjtQqaoDll9-vN8LpmfrqfI82d');
define('PAYPAL_CLIENT_SECRET', 'EEs_rbmAZlZFgm8m8e8S9lmZD47I9sf44wjbYEqu99uVpgHb0PHa3aSYG8Pe3772kr9FWZ33iDrPL9Jr');
define('PAYPAL_WEBHOOK_ID', '58G68258926315914');
define('PAYPAL_SANDBOX', true);
define('PAYPAL_CURRENCY', 'CAD');
}
break;
/*************************
* Environnement dev (ms1inscriptiondev) *
*************************/
case "ms1inscriptiondev.progiweb.net":
case "preprod.ms1inscriptiondev.progiweb.net":
$vGoogleAnalytics = "";
$vblnEnvironementDev = true;
$blnShowErrors = true;
$vDomaine = $vDomaine2 = $vDomaineTiming = 'https://preprod.ms1inscriptiondev.progiweb.net';
$vRepertoireFichiers = '/preprod';
$vEnvNotice = '
<div class="alert-danger py-2 text-center sticky-top" >
<strong style="font-size: 1em;">
Environnement de Dévelopement<span class="text-uppercase">TEST</span>' . $strConAdmin . '
</strong>
</div>
';
fxSettingsUseDbProfiles($tabConnDevPreprod, $tabConnDevProd, 'preprod');
fxSettingsUseCrmProfile($tabConnCrmDev);
// MSIN API ChronoTrack — voir $blnChronotrackApiUseTestEndpoint en tête de fichier
$tabChronotrackApi = array(
'base_url' => $strChronotrackApiBaseUrl,
'client_id' => '047dcfdd',
'client_secret' => '5f14f8cb103316bfdf0558d1a6d0f20769603dde',
'service_user' => 'leith.s@ms1timing.com',
'service_pass' => 'Unimog22',
);
// Cross-BD client (tunnel/VPN) — sync_static_db.php, validation avant prod
$arrConDatabaseClientPreProd = $tabConnClientPreprod;
$arrConDatabaseClientProd = $tabConnClientProd;
$arrConFTP = array(
'host' => '127.0.0.1',
'user' => 'ms1inscription',
'pass' => 'ms1911',
'path_prod' => '/home/devinscription/public_html',
'path_preprod'=> '/home/devinscription/public_html/preprod'
);
$isPreprod = (strpos($strHost, 'preprod.') !== false);
if (!$isPreprod) {
$vEnvNotice = '
<div class="alert-danger py-2 text-center sticky-top">
<strong>Environnement de Dévelopement <span class="text-uppercase">client</span>' . $strConAdmin . '</strong>
</div>
';
$favicon = 'favicon-blan-dev.ico';
$faviconadm = 'favicon-rouge-dev.ico';
fxSettingsUseDbProfiles($tabConnDevPreprod, $tabConnDevProd, 'prod');
$vblnEnvironementDev = false;
$vGoogleAnalytics = "";
$vPaypaladv = true;
$vPaypaladv_SANDBOX = true;
$vPaypal_devise = 'CAD';
define('PAYPAL_ENV', 'dev_client');
define('PAYPAL_ENV_FOOTER', 'dev_client');
define('PAYPAL_BASE_URL', 'https://api-m.sandbox.paypal.com');
define('PAYPAL_CLIENT_ID', 'AQXvt0u9caqG-l_S5H-qFra-rEGiDifuk-eCa1DeylT0o4Vgc6RpnHQfMZt7lREyWH8nur6-_cgGtazF');
define('PAYPAL_CLIENT_SECRET', 'EOsLApT-17U2hU2bm0wXl0ZRqCg0eBaXTr9iz97LLziMHUt8nwi8ymgcDkkJ_msbBCZnOlR8IOw1KpTH');
define('PAYPAL_WEBHOOK_ID', '5AD874137H322344J');
define('PAYPAL_SANDBOX', true);
define('PAYPAL_CURRENCY', 'CAD');
$vDomaine = $vDomaine2 = $vDomaineTiming = 'https://ms1inscriptiondev.progiweb.net';
$vRepertoireFichiers = '';
} else {
$favicon = 'favicon-jaune-dev.ico';
$faviconadm = 'favicon-orange-dev.ico';
$vblnEnvironementPreProd = true;
$vPaypaladv = true;
$vPaypaladv_SANDBOX = true;
$vPaypal_devise = 'CAD';
define('PAYPAL_ENV', 'dev_test');
define('PAYPAL_ENV_FOOTER', 'dev_test');
define('PAYPAL_BASE_URL', 'https://api-m.sandbox.paypal.com');
define('PAYPAL_CLIENT_ID', 'AXLKhIIMWSaiLlNi6EqDK7zU5c65J7hEXAZUauPm_Nnd-5A3vxO81QZej3X0T1pgiZ9Wki_FexheCPgB');
define('PAYPAL_CLIENT_SECRET', 'EEEZPzN0mTANRpj1e2KdP-U0x8UpHKjktbITVLDr2STpwnNkvKMDQ66XcdJyrK0yIsjcW4UjTY7cUr9N');
define('PAYPAL_WEBHOOK_ID', '87T78443WB181490Y');
define('PAYPAL_SANDBOX', true);
define('PAYPAL_CURRENCY', 'CAD');
}
break;
}
fxSettingsApplyChronotrackApi($tabChronotrackApi);
/*****************************
*
* Connexion base de données *
*
*****************************/
$arrConDatabaseMain = array(
'host' => $strDatabaseHost,
'user' => $strDatabaseUser,
'pass' => $strDatabasePass,
'db' => $strDatabaseMain
);
$arrConDatabaseProd = array(
'host' => $strDatabaseHost,
'user' => $strDatabaseUser,
'pass' => $strDatabasePass,
'db' => $strDatabaseProd
);
$arrConDatabasePreProd = array(
'host' => $strDatabaseHost,
'user' => $strDatabaseUser,
'pass' => $strDatabasePass,
'db' => $strDatabasePreProd
);
$arrConDatabasecrm = array(
'host' => $strDatabaseHostcrm,
'user' => $strDatabaseUsercrm,
'pass' => $strDatabasePasscrm,
'db' => $strDatabaseMaincrm
);
/************************************
*
* Affichage des messages d'erreurs *
*
************************************/
if ($blnShowErrors) {
error_reporting(E_ALL);
ini_set('display_errors', false);
ini_set('display_startup_errors', TRUE);
define('EOL', (PHP_SAPI == 'cli') ? PHP_EOL : '<br>');
}
// MSIN-3855
require_once $_SERVER['DOCUMENT_ROOT'] . "/paypal_advanced/config.php";