fxQuery($sqlInsert);
}
}
break;
case 'mod':
if (isset($values)) {
$values_old1 = explode(',', $values_old);
foreach ($values as $id) {
// si c'est un nouvel item
if (!in_array($id, $values_old1)) {
$sqlInsert = "INSERT INTO " . $table . "(" . $link . ", " . $field . ") VALUES(" . intval($link_value) . ", " . intval($id) . ")";
$qryInsert = $GLOBALS['db_blog']->fxQuery($sqlInsert);
}
}
// vérifier si on doit en supprimer
if ($values_old != '') {
foreach ($values_old1 as $id) {
// si il existait avant, et plus maintenant
if (!in_array($id, $values)) {
$sqlDelete = "DELETE FROM " . $table . " WHERE " . $link . " = " . intval($link_value) . " AND " . $field . " = " . intval($id);
$qryDelete = mysql_query($sqlDelete);
}
}
}
}
elseif ($values_old != '') {
$sqlDelete = "DELETE FROM " . $table . " WHERE " . $link . " = " . intval($link_value);
$qryDelete = mysql_query($sqlDelete);
}
}
}
// fonction qui va cherdcher les étiquettes dans la bdd
// param : page, table, langue
/* function fxGetLabels($strPage, $strTable, $strLangue)
{
$sqlLabel1 = "SELECT info_clef,info_texte,pk_info,'client' as bd FROM info where info_prg='" . $page . "' and info_langue='" . $Langue . "'";
$tabLabel1 = $GLOBALS['db']->fxFetchArray(3, $sql_info);
$sqlLabel2 = "SELECT info_clef,info_texte,'centrale' as bd FROM info where info_prg='" . $page . "' and info_langue='" . $Langue . "'";
$tabLabel2 = $GLOBALS['db']->fxFetchArray(3, $sql_info);
$info = array_merge($info1, $info2);
} */
// MOT DE PASSE PERDU
function fxCourrielPerdu() {
$sqlPerdu = "SELECT * FROM usagers WHERE usa_courriel = '" . $GLOBALS['db']->fxEscape($_POST['courriel']) . "' AND usa_actif = 1";
$recPerdu = $GLOBALS['db']->fxGetRow($sqlPerdu);
if ($recPerdu != null)
$perdu = -1;
else {
require_once('mailer/class.phpmailer.php');
//include("mailer/class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer();
$body = "Bonjour " . $recPerdu['usa_prenom'] . ",\n\nsuite à votre demande, voici vos informations de connexion à l'administration de " . $GLOBALS['vClient'] . ":\n\nNom d'usager: " . $recPerdu['usa_login'] . "\nMot de passe: " . $recPerdu['usa_password'] . "\n\nVeuillez conserver ces informations.\nMerci\n\n\nMessage envoyé automatiquement le: " . fxShowDate(fxGetDate(), 'fr') . " @ " . fxGetTime();
$mail->SetFrom($GLOBALS['vEmail'], $GLOBALS['vClient']);
$mail->AddReplyTo($GLOBALS['vEmail'], $GLOBALS['vClient']);
$mail->Subject = $GLOBALS['vClient'] . " | Vos informations de connexion";
if (filter_var(fxUnescape($_POST['courriel']), FILTER_VALIDATE_EMAIL)) {
$mail->Body = $body;
$mail->AddAddress(fxUnescape($_POST['courriel']), fxUnescape($recPerdu['usa_prenom']) . ' ' . fxUnescape($recPerdu['usa_nom']));
if(!$mail->Send())
$error = 1;
else
$error = 0;
// Clear all addresses and attachments for next loop
$mail->ClearAddresses();
$mail->ClearAttachments();
}
if ($error == 0)
return 1;
else
return 0;
}
}
// fonction pour formatter une valeur sous la forme $ 9,999.99
function fxShowMoney($value, $lang) {
if ($lang == 'fr') {
$value = number_format($value, 2, ',', ' ') . ' $';
}
else {
$value = '$ ' . number_format($value, 2, '.', ',');
}
return $value;
}
// fonction pour creer un log
// param : message
// créé: 2014-06-2
function fxcreer_log($strDescription, $intType = 10, $int_Email = 0, $int_eve_id = 0, $int_epr_id = 0, $int_pra_id = 0, $str_no_panier = '', $int_com_id = 0, $str_com_courriel = '') {
//function fxcreer_log($strDescription, $intType = 10, $int_Email = 0, $int_eve_id = 0, $int_epr_id = 0, $int_pra_id = 0, $str_no_panier = '', $int_com_id = 0) {
if (isset($_SESSION['com_id']))
$int_com_id = $_SESSION['com_id'];
if (isset($_SESSION['no_panier']))
$str_no_panier = $_SESSION['no_panier'];
$sqlInsert = "INSERT INTO inscriptions_log SET log_description = '" . $strDescription . "', log_email = " . $int_Email . ", log_type = " . $intType . ", eve_id = " . $int_eve_id . ", epr_id = " . $int_epr_id . ", pra_id = " . $int_pra_id . ", no_panier = '" . $str_no_panier . "', log_time = NOW(), com_id = " . $int_com_id . ", log_prg = '" . $GLOBALS['vPage'] . "', log_com_courriel = '" . $str_com_courriel . "'";
$qryInsert = $GLOBALS['db']->fxQuery($sqlInsert);
return(true);
}
// fonction envoi un courriel (JSP)
// param : sujet, corps du message, courriel destinataire, nom destinataire, courriel expéditeur, nom expéditeur, smtp (oui/non), html (oui/non)
// retourne : vrai ou faux
function fxSendMail($subject, $body, $to_mail, $to_name, $from_mail, $from_name, $smtp, $html) {
require_once('../mailer/class.phpmailer.php');
$mail = new PHPMailer();
if ($smtp == 1) {
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPKeepAlive = true;
$mail->Host = "pop.progiweb.ca";
$mail->Port = 25;
$mail->Username = "send@progiweb.ca";
$mail->Password = "progiwebsend";
}
$mail->CharSet = "UTF-8";
$mail->SetFrom($GLOBALS['vEmail'], fxRemoveHtml($GLOBALS['vClient']));
$mail->AddReplyTo($from_mail, $from_name);
$mail->Subject = fxRemoveHtml($GLOBALS['vClient']) . " | " . $subject;
if (filter_var($to_mail, FILTER_VALIDATE_EMAIL)) {
if ($html == 1)
$mail->MsgHTML($body);
else
$mail->Body = $body;
$mail->AddAddress($to_mail, $to_name);
if (!$mail->Send())
$error = 1;
else
$error = 0;
// Clear all addresses and attachments for next loop
$mail->ClearAddresses();
$mail->ClearAttachments();
}
if ($error == 0)
return true;
else
return false;
}
// fonction qui enlève les tags html (JSP)
// param : string
// créé : 2012-08-02
function fxRemoveHtml($string) {
$string = html_entity_decode($string);
$string = str_replace("’", "'", $string);
$string = preg_replace('/\s\s+/', ' ', $string);
$string = strip_tags($string);
return $string;
}
// fonction pour formatter une valeur sous la forme $ 9,999.99
// param : valeur, langue, format (afficher $ CAD)
// créé : 2013-03-28
function fxShowPrix($strValue, $strLangue, $intFormat) {
if ($strLangue == 'fr') {
$strValue = number_format($strValue, 2, ',', ' ');
if ($intFormat == 1)
$strValue .= ' $';
}
else {
$strValue = number_format($strValue, 2, '.', ',');
if ($intFormat == 1)
$strValue = '$ ' . $strValue;
}
return $strValue;
}
// trouve la valeur d'une variable de la bdd
function fxGetVariable($strVarNom) {
global $db;
$sqlVariable = "SELECT var_valeur FROM variables WHERE var_nom = '" . $db->fxEscape($strVarNom) . "'";
$strVarValeur = $db->fxGetVar($sqlVariable);
return $strVarValeur;
}
/** @see php/inc_fonctions.php fxPromoteurLegacySiteEnabled */
function fxPromoteurLegacySiteEnabled()
{
static $blnEnabled = null;
if ($blnEnabled !== null) {
return $blnEnabled;
}
global $db;
if (!isset($db)) {
$blnEnabled = true;
return $blnEnabled;
}
$strVal = fxGetVariable('promoteur_legacy_actif');
$blnEnabled = ($strVal === null || $strVal === '' || intval($strVal) === 1);
return $blnEnabled;
}
function print_mem() {
/* Currently used memory */
$mem_usage = memory_get_usage();
/* Peak memory usage */
$mem_peak = memory_get_peak_usage();
echo 'The script is now using: ' . round($mem_usage / 1024) . 'KB of memory.
';
echo 'Peak usage: ' . round($mem_peak / 1024) . 'KB of memory.
';
}
/**
* Description : retourner le texte correspondan a la clef si il a été mis en mémoire
* Parametres : clef
* mem_echo =1 fait un echo sinon la valeur est retourné
* $mem_trduction lest admin on un bouton pour correction
* $mem_global=0 si 1 vas créér la variable avec global pas le nom de la page
* Créateur : stephan
* Date : 13-03-17
*/
function afficheTexte($clef, $mem_echo = 1, $mem_trduction = 1, $mem_global = 0) {
global $vtexte_page, $vPage;
$mem_id = "";
if (isset($vtexte_page[$clef]['info_texte']))
$mem_texte = $vtexte_page[$clef]['info_texte'];
else {
$mem_texte = '*' . $clef . '*';
if ($mem_global == 0)
$mem_page = $vPage;
else
$mem_page = "global";
// creation dans la bd info
$info1 = array("info_clef" => $clef, "info_langue" => "fr", "info_texte" => $clef, "info_prg" => $mem_page, "info_actif" => 1);
fxSetInfo('add', $info1, '', $mem_id);
$info1 = array("info_clef" => $clef, "info_langue" => "en", "info_texte" => $clef, "info_prg" => $mem_page, "info_actif" => 1);
fxSetInfo('add', $info1, '', $mem_id);
}
if ($mem_echo == 1)
echo $mem_texte;
return $mem_texte;
}
/**
* Description : lire le text dans la bd info
* Parametres : 1 - page
* 2 - langue A,F
* optionelle 3- 1 va chercher bd client en premier et centrale en deuxiemme (default)
* 2 jutse bd client
* 3 juste bd centrale
* Créateur : stephan
* Date : 13-03-15
*/
function obtenirTextepage() {
global $objDatabase;
$numargs = func_num_args();
$arg_list = func_get_args();
$page = $arg_list[0];
$Langue = $arg_list[1];
$centrale = $mem_corr = "";
$info = null;
if (array_key_exists(2, $arg_list)) {
$centrale = $arg_list[2];
}
switch ($centrale) {
case 3:
$sql_info = "SELECT info_clef,info_texte,pk_info,info_prg,'centrale' as bd FROM info where info_prg='" . $page . "' and info_langue='" . $Langue . "'";
$info = $GLOBALS['dbcentrale']->fxFetchArray(3, $sql_info);
break;
case 2:
$sql_info = "SELECT info_clef,info_texte,pk_info,info_prg,'client' as bd FROM info where (info_prg='" . $page . "' or info_prg='global') and info_langue='" . $Langue . "'";
$info = $objDatabase->fxFetchArray(3, $sql_info);
break;
case 1:
$sql_info = "SELECT info_clef,info_texte,pk_info,'client' as bd FROM info where info_prg='" . $page . "' and info_langue='" . $Langue . "'";
$info2 = $objDatabase->fxFetchArray(3, $sql_info);
$sql_info = "SELECT info_clef,info_texte,'centrale' as bd FROM info where info_prg='" . $page . "' and info_langue='" . $Langue . "'";
$info1 = $objDatabase->fxFetchArray(3, $sql_info);
$info = array_merge($info1, $info2);
break;
}
return $info;
}
/**
* Description : affiche le bouton modi texte et hide les textclef
* Parametres :
* Créateur : stephan
* Date : 13-03-22
*/
function modif_texte_bt() {
global $vadmin_texte;
if ($vadmin_texte == true)
echo "";
}
/**
* Description : Fonction pour ajouter le value dans une formes
* Parametres : $mem_champ nom du champs ,$mem_defaut,$mem_type add ou mod ,$mem_infos tableau des info
* Créateur : stephan
* Date : 13-04-20
*/
function fxFormFieldInfo($mem_champ, $mem_type, $mem_infos, $mem_defaut = "", $mem_array = 0) {
if ($mem_array == 0)
$mem_value = 'id="' . $mem_champ . '" name="' . $mem_champ . '"';
else
$mem_value = 'id="info['.$mem_array.'][' . $mem_champ . ']" name="info['.$mem_array.'][' . $mem_champ . ']"';
switch ($mem_type) {
// AJOUT
case 'add':
if (trim($mem_defaut != ''))
$mem_value = $mem_value . ' value="' . $mem_defaut . '"';
break;
case 'mod':
case 'checkout':
$mem_value = $mem_value . ' value="' . $mem_infos[$mem_champ] . '"';
break;
}
return $mem_value;
}
function fxFormFieldCheck($mem_champ, $mem_type, $mem_infos, $mem_valide, $mem_defaut = "",$mem_action="") {
$mem_value = '';
switch ($mem_type) {
// AJOUT
case 'add':
if (trim($mem_defaut != ''))
$mem_value = 'checked="checked"';
break;
case 'mod':
case 'checkout':
if($mem_action=="mod")
{
if ($mem_infos[$mem_champ] == $mem_valide)
$mem_value = 'checked';
else
$mem_value = 'disabled';
}else{
if ($mem_infos[$mem_champ] == $mem_valide)
$mem_value = 'checked="checked"';
}
break;
}
return $mem_value;
}
function fxFormFieldChecklist($mem_champ, $mem_type, $mem_infos, $mem_valide, $mem_defaut) {
$mem_value = '';
switch ($mem_type) {
// AJOUT
case 'add':
case 'addaffilie':
if ($mem_defaut == $mem_valide)
$mem_value = 'selected="selected"';
break;
case 'mod':
case 'checkout':
if ($mem_infos[$mem_champ] == $mem_valide)
$mem_value = 'selected="selected"';
break;
}
return $mem_value;
}
function fxSetInfo($strAction, $tabData, $strLangue, $id = 0) {
global $objDatabase;
$_SESSION['msg'] = "";
switch ($strAction) {
// AJOUT
case 'add':
// former le INSERT
$tabFieldsValues = fxListFieldsValues($tabData, 'pk_info', 'info', $GLOBALS['arrConDatabaseMain']['db']);
// vérifie si le info existe
$sqlValide = "SELECT COUNT(info_clef) from info where info_clef='" . $tabData['info_clef'] . "' and info_prg='" . $tabData['info_prg'] . "' and info_langue='".$tabData['info_langue']."'";
$nbValide = $objDatabase->fxGetVar($sqlValide);
if ($nbValide > 0) {
break;
}
// insérer les infos du participants
$sqlInsert = "INSERT INTO info " . $tabFieldsValues['set'] . ',info_creation=now()';
$qryInsert = $objDatabase->fxQuery($sqlInsert);
// récupérer le id ajouté
$intCompte = $objDatabase->fxGetLastId();
// $_SESSION['com_id'] = $intCompte;
break;
// MODIFICATION
case 'mod':
$tabFieldsValues = fxListFieldsValues($tabData, 'pk_info', 'info', $GLOBALS['arrConDatabaseMain']['db']);
// verification des champs obligatoire
// update les infos
$sqlUpdate = "UPDATE info " . $tabFieldsValues['set'] . ",info_maj=now() where ". $tabFieldsValues['key'];
$qryUpdate = $objDatabase->fxQuery($sqlUpdate);
// définir le message à affiche
break;
// SUPPRESSION
case 'del':
/* PLUS TARD
$sqlDelete = "DELETE FROM ".$bd." WHERE ".$memid." = " . intval($id);
$qryDelete = $objDatabase->fxQuery($sqlDelete); */
}
}
function afficheTexteReplace($mem_tab_replace, $mem_texte) {
foreach ($mem_tab_replace as $key => $value)
$mem_texte=str_replace($key, $value, $mem_texte);
return $mem_texte;
}
// fonction qui retourne les infos des champs de la table (SL / JSP)
// param : nom de la table, nom de la base de données
// créé : 2013-04-10
function fxGetFileds($strTable, $strBdd) {
global $objDatabase;
$sqlFields = "SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS WHERE TABLE_NAME = '" . $objDatabase->fxEscape($strTable) . "' AND TABLE_SCHEMA = '" . $objDatabase->fxEscape($strBdd) . "'";
$recFields = $objDatabase->fxGetResultsKey($sqlFields);
return $recFields;
}
function conf_getFiltreData($usa_id,$page,$var,$vardefault,$update=0,$typenum=1)
{
// list la bb client
$sqlsortie = "SELECT * FROM usa_filtre WHERE fil_usa_id = '" . $usa_id . "' AND fil_page = '" . $page . "' AND fil_var = '" . $var . "' ";
$sortie = $GLOBALS['db']->fxGetRow($sqlsortie);
if ($sortie==null){
$sqlInsert = "INSERT INTO usa_filtre SET fil_usa_id = '" . $usa_id . "', fil_page = '" . $page . "', fil_var = '" . $var . "', fil_value = '" . $vardefault."'" ;
$qryInsert = $GLOBALS['db']->fxQuery($sqlInsert);
$mem_return=$vardefault;
}else{
if ($update==1){
$sqlInsert = "update usa_filtre SET fil_value = '" . $vardefault."' WHERE fil_usa_id = '" . $usa_id . "' AND fil_page = '" . $page . "' AND fil_var = '" . $var . "' ";
$qryInsert = $GLOBALS['db']->fxQuery($sqlInsert);
$mem_return=$vardefault;
}else{
$mem_return=$sortie['fil_value'];
}
}
if ($typenum==0)
$mem_return='"'.$mem_return.'"';
return $mem_return;
}
// fonction qui compose le SQL pour les INSERT et UPDATE
// param : tableau des données, nom de la clé (PK), nom de la table, nom de la base de données
// créé : 2013-04-10
function fxListFieldsValues($tabData, $strKey, $strTable, $strBdd) {
global $objDatabase;
$tabFields = fxGetFileds($strTable, $strBdd);
$mem_set = "SET ";
$xvide = 0;
$listvide = "";
$mem_id = "";
foreach (array_keys($tabData) as $strField) {
$listvide[$xvide] = $strField;
$xvide += 1;
if (strstr($strField, 'btn') === false) {
if ($strField == $strKey)
$mem_id = $strField . " = " . intval($tabData[$strField]);
else {
if (isset($tabFields[$strField]['DATA_TYPE'])) {
switch ($tabFields[$strField]['DATA_TYPE']) {
case 'char':
case 'varchar':
case 'text':
case 'date':
$mem_set = $mem_set . $strField . " = '" . $objDatabase->fxEscape($tabData[$strField]) . "', ";
break;
case 'tinyint':
case 'int':
case 'smallint':
case 'mediumint':
case 'bigint':
$mem_set = $mem_set . $strField . " = " . intval($tabData[$strField]) . ", ";
break;
case 'double':
case 'float':
$mem_set = $mem_set . $strField . " = " . floatval($tabData[$strField]) . ", ";
break;
}
}
}
}
}
// enlever la virgule de trop et mettre dans le tableau à l'index 'set'
$memreturn['set'] = substr($mem_set, 0, -2);
// mettre dans le tableau à l'index 'key'
$memreturn['key'] = $mem_id;
// mettre dans le tableau les champs pas vide 'vide'
$memreturn['pasvide'] = $listvide;
return $memreturn;
}
function fx_copy_tout($sourceDir,$destinationDir){
// Crée le dossier de destination s'il n'existe pas
// echo($sourceDir);
if (!is_dir($destinationDir)) {
mkdir($destinationDir, 0755, true);
}
// Utilisez glob() pour récupérer tous les fichiers correspondant à *.*
$files = glob($sourceDir . '*.*');
foreach ($files as $file) {
$fileName = basename($file); // Récupère uniquement le nom du fichier
$destination = $destinationDir . $fileName;
if (copy($file, $destination)) {
} else {
$error = error_get_last();
error_log("Détails de l'erreur : " . $error['message']);
error_log( "Échec de la copie pour le fichier $fileName.");
}
}
}
function fxDuplicateRow($table, $id, $primaryKey, $updates = []) {
// Étape 1 : Récupérer l'enregistrement original
$sqlSelect = "SELECT * FROM $table WHERE $primaryKey = $id";
$originalRow = $GLOBALS['db']->fxGetRow($sqlSelect);
if (!$originalRow) {
return false; // Enregistrement non trouvé
}
// Étape 2 : Construire une requête d'insertion
unset($originalRow[$primaryKey]); // Retirer la clé primaire (auto-incrémentée)
foreach ($updates as $column => $value) {
$originalRow[$column] = $value; // Appliquer les mises à jour
}
// Générer les colonnes et les valeurs pour l'INSERT
$columns = array_keys($originalRow);
$values = array_map([$GLOBALS['db'], 'fxEscape'], array_values($originalRow));
$sqlInsert = "
INSERT INTO $table (" . implode(', ', $columns) . ")
VALUES ('" . implode("', '", $values) . "')
";
// Étape 3 : Exécuter la requête d'insertion
$GLOBALS['db']->fxQuery($sqlInsert);
// Retourner l'ID de la nouvelle ligne
return $GLOBALS['db']->fxGetLastId();
}
function print_rsl($arr){
?>
");
}
function fxcopieevenementv1($eve_id_source)
{
$db = $GLOBALS['db'];
// 1. Lire l'événement source
$sql = "SELECT * FROM inscriptions_evenements WHERE eve_id = $eve_id_source";
$row = $db->fxGetRow($sql);
if (!$row) {
// echo "❌ Événement source introuvable.🟦 INSERT événement :\n$sqlInsert"; $db->fxQuery($sqlInsert); $new_eve_id = $db->fxGetLastId(); // echo "✅ Nouvel événement copié avec eve_id : $new_eve_id