Files
ms1inscription-v5/php/inc_fx_transferts.php
2026-05-13 09:43:32 -04:00

341 lines
17 KiB
PHP

<?php
// fonction qui récupère les demandes transferts envoyées
// param : id de l'epreuve commandee, no transfert
function fxGetTransferts($pec_id = 0, $strNoTransfert = '') {
global $objDatabase;
if ($pec_id != 0) {
$strWhere = " AND t.pec_id = " . intval($pec_id);
} else {
$strWhere = " AND t.no_transfert = '" . $strNoTransfert ."'";
}
$sqlTransferts = "SELECT t.*, s.ts_nom_fr, s.ts_nom_en FROM inscriptions_transferts t, inscriptions_transferts_statuts s WHERE t.ts_id = s.ts_id" . $strWhere . " ORDER BY t.tra_nom, t.tra_prenom";
$arrTransferts = $objDatabase->fxGetResults($sqlTransferts);
return $arrTransferts;
}
// fonction pour modifier les demandes de transferts envoyées pour une épreuve
// param : action, données post, langue d'affichage
function fxSetTransfert($strAction, $arrData, $strLangue) {
global $objDatabase;
$arrRetour = array('a' => $strAction);
switch ($strAction) {
case 'invite':
case 'inviter':
$sqlFrom = "SELECT * FROM inscriptions_comptes WHERE com_id = " . intval($arrData['com_id']);
$arrFrom = $objDatabase->fxGetRow($sqlFrom);
if ($arrFrom != null) {
if (isset($arrData['tra_nom_' . $arrData['pec_id']]) && trim($arrData['tra_nom_' . $arrData['pec_id']]) != '' && isset($arrData['tra_prenom_' . $arrData['pec_id']]) && trim($arrData['tra_prenom_' . $arrData['pec_id']]) != '' && isset($arrData['tra_courriel_' . $arrData['pec_id']]) && trim($arrData['tra_courriel_' . $arrData['pec_id']]) != '') {
// Trouver les infos de la course
$sqlEpreuve = "SELECT * FROM resultats_epreuves_commandees ec, inscriptions_epreuves e WHERE ec.epr_id = e.epr_id AND ec.pec_id_original = " . intval($arrData['pec_id']);
$arrEpreuve = $objDatabase->fxGetRow($sqlEpreuve);
if ($arrEpreuve != null) {
$arrInfos = array(
'prenom' => fxUnescape(utf8_decode($arrData['tra_prenom_' . $arrData['pec_id']])),
'nom' => fxUnescape(utf8_decode($arrData['tra_nom_' . $arrData['pec_id']])),
'courriel' => fxUnescape($arrData['tra_courriel_' . $arrData['pec_id']])
);
$arrMail = array(
'to_name' => $arrInfos['prenom'] . ' ' . $arrInfos['nom'],
'to_mail' => $arrInfos['courriel'],
'from_name' => fxUnescape($arrFrom['com_prenom']) . ' ' . fxUnescape($arrFrom['com_nom']),
'from_mail' => fxUnescape($arrFrom['com_courriel'])
);
$blnEnvoi = fxSendTransfert($arrEpreuve, $arrMail, $arrInfos, '', $strLangue);
if ($blnEnvoi) {
$arrTransferts = fxGetTransferts($arrData['pec_id']);
$arrRetour['state'] = 'success';
$arrRetour['message'] = fxMessage('p204', '', $strLangue);
$_SESSION['msg'] = 'p204';
$arrRetour['liste'] = fxShowTransferts($arrTransferts, $strLangue);
$arrRetour['reset'] = true;
$arrRetour['redirect'] = '';
} else {
$arrRetour['state'] = 'error';
$arrRetour['message'] = fxMessage('e203', '', $strLangue);
$_SESSION['msg'] = 'e203';
}
} else {
$arrRetour['state'] = 'error';
$arrRetour['message'] = fxMessage('e202', '', $strLangue);
$_SESSION['msg'] = 'e202';
}
} else {
$arrRetour['state'] = 'error';
$arrRetour['message'] = fxMessage('e200', '', $strLangue);
$_SESSION['msg'] = 'e200';
}
} else {
$arrRetour['state'] = 'error';
$arrRetour['message'] = fxMessage('e201', '', $strLangue);
$_SESSION['msg'] = 'e201';
}
break;
case 'cancel':
$sqlInfos = "SELECT * FROM inscriptions_transferts WHERE no_transfert = '" . $objDatabase->fxEscape($arrData['id']) . "'";
$arrInfos = $objDatabase->fxGetRow($sqlInfos);
if ($arrInfos != null) {
$sqlUpdate = "UPDATE inscriptions_transferts SET ts_id = 4 WHERE no_transfert = '" . $objDatabase->fxEscape($arrData['id']) . "'";
$qryUpdate = $objDatabase->fxQuery($sqlUpdate);
if (!$qryUpdate) {
$arrRetour['state'] = 'error';
$arrRetour['message'] = fxMessage('e0', 'Transfert NON annulé!');
fxcreer_log("Erreur lors de l'annulation du transfert:\n" . $sqlUpdate);
} else {
$arrRetour['state'] = 'success';
$arrRetour['message'] = fxMessage('p205', '', $strLangue);
$_SESSION['msg'] = 'p205';
}
$arrTransferts = fxGetTransferts($arrInfos['pec_id']);
$arrRetour['liste'] = fxShowTransferts($arrTransferts, $strLangue);
}
break;
case 'resend': // ENVOYER DE NOUVEAU LE TRANSFERT
$sqlInfos = "SELECT t.pec_id, t.no_transfert, t.tra_prenom, t.tra_nom, t.tra_courriel, c.com_prenom, c.com_nom, c.com_courriel FROM inscriptions_transferts t, inscriptions_comptes c WHERE t.com_id = c.com_id AND t.no_transfert = '" . $objDatabase->fxEscape($arrData['id']) . "'";
$arrInfos = $objDatabase->fxGetRow($sqlInfos);
if ($arrInfos != null) {
// Trouver les infos de la course
$sqlEpreuve = "SELECT * FROM resultats_epreuves_commandees ec, inscriptions_epreuves e WHERE ec.epr_id = e.epr_id AND ec.pec_id_original = " . intval($arrInfos['pec_id']);
$arrEpreuve = $objDatabase->fxGetRow($sqlEpreuve);
if ($arrEpreuve != null) {
$arrInfos2 = array(
'prenom' => fxUnescape(utf8_decode($arrInfos['tra_prenom'])),
'nom' => fxUnescape(utf8_decode($arrInfos['tra_nom'])),
'courriel' => fxUnescape($arrInfos['tra_courriel'])
);
$arrMail = array(
'to_name' => $arrInfos2['prenom'] . ' ' . $arrInfos2['nom'],
'to_mail' => $arrInfos2['courriel'],
'from_name' => fxUnescape($arrInfos['com_prenom']) . ' ' . fxUnescape($arrInfos['com_nom']),
'from_mail' => fxUnescape($arrInfos['com_courriel'])
);
$blnEnvoi = fxSendTransfert($arrEpreuve, $arrMail, $arrInfos2, $arrInfos['no_transfert'], $strLangue);
if ($blnEnvoi) {
$sqlUpdate = "UPDATE inscriptions_transferts SET ts_id = 5, tra_envoi = '" . fxGetDateTime() . "' WHERE no_transfert = '" . $objDatabase->fxEscape($arrData['id']) . "'";
$qryUpdate = $objDatabase->fxQuery($sqlUpdate);
if (!$qryUpdate) {
$arrRetour['state'] = 'error';
$arrRetour['message'] = fxMessage('e0', 'Transfert NON ré-envoyé!');
fxcreer_log("Erreur lors de l'envoi de nouveau du transfert:\n" . $sqlUpdate);
} else {
$arrRetour['state'] = 'success';
$arrRetour['message'] = fxMessage('p206', '', $strLangue);
$_SESSION['msg'] = 'p206';
}
$arrTransferts = fxGetTransferts($arrInfos['pec_id']);
$arrRetour['liste'] = fxShowTransferts($arrTransferts, $strLangue);
} else {
$arrRetour['state'] = 'error';
$arrRetour['message'] = fxMessage('e203', '', $strLangue);
$_SESSION['msg'] = 'e203';
}
} else {
$arrRetour['state'] = 'error';
$arrRetour['message'] = fxMessage('e202', '', $strLangue);
$_SESSION['msg'] = 'e202';
}
}
}
return $arrRetour;
}
// fonction qui envoie les transferts par courriel
// param : infos de l'épreuve, infos du courriel, numéro de transfert, langue d'affichage
function fxSendTransfert($arrEpreuve, $arrMail, $arrInfos, $strNoTransfert = '', $strLangue = 'fr') {
global $objDatabase, $vDomaine;
$strUrl = fxGetEvenementsUrl($arrEpreuve['eve_id']);
$strEpreuve = fxUnescape($arrEpreuve['epr_type_' . $strLangue]) . ' ' . fxUnescape($arrEpreuve['epr_nom_' . $strLangue]);
$sqlEvenement = "SELECT * FROM inscriptions_evenements e LEFT JOIN inscriptions_series s ON s.ser_id = e.ser_id, inscriptions_types_evenements t WHERE t.te_id = e.te_id AND e.eve_actif = 1 AND e.eve_date_fin >= '" . fxGetDate() . "' AND e.eve_label_url = '" . $objDatabase->fxEscape($strUrl) . "'";
$recEvenement = $objDatabase->fxGetRow($sqlEvenement);
if ($recEvenement != null) {
if ($strNoTransfert == '') {
$strNoTransfert = uniqid('TRA');
$sqlTransfert = "INSERT INTO inscriptions_transferts SET ts_id = 1, no_transfert = '" . $objDatabase->fxEscape($strNoTransfert) . "', tra_prenom = '" . $objDatabase->fxEscape($arrInfos['prenom']) . "', tra_nom = '" . $objDatabase->fxEscape($arrInfos['nom']) . "', tra_courriel = '" . $objDatabase->fxEscape($arrInfos['courriel']) . "', pec_id = " . intval($arrEpreuve['pec_id_original']) . ", com_id = " . intval($_SESSION['com_info']['com_id']) . ", tra_creation = '" . fxGetDateTime() . "', tra_envoi = '" . fxGetDateTime() . "'";
$qryTransfert = $objDatabase->fxQuery($sqlTransfert);
if (!$qryTransfert) {
fxcreer_log("Erreur lors de l'ajout du transfert:\n" . $sqlTransfert);
}
}
// former le tableau html contenant les infos de l'événement et l'épreuve
if ($strLangue == 'fr') {
$strEvent = 'Événement';
$strRace = 'Épreuve';
$strClosing = 'Date limite pour réserver';
} else {
$strEvent = 'Event';
$strRace = 'Race';
$strClosing = 'Deadline to book';
}
$strDetails = '
<table border="0" cellpadding="5" width="100%">
<tr>
<td align="right" width="40%">
<strong>' . $strEvent . ':</strong>
</td>
<td align="left" width="60%">
' . $recEvenement['eve_nom_' . $strLangue] . '
</td>
</tr>
<tr>
<td align="right" width="40%">
<strong>' . $strRace . ':</strong>
</td>
<td align="left" width="60%">
' . $strEpreuve . '
</td>
</tr>
<tr>
<td align="right" width="40%">
<strong>' . $strClosing . ':</strong>
</td>
<td align="left" width="60%">
' . fxShowDate($arrEpreuve['epr_date_limite'], $strLangue) . ' @ ' . $arrEpreuve['epr_heure_limite'] . '
</td>
</tr>
</table>
';
if ($strLangue == 'fr') {
$strSujet = "Transfert de l'épreuve " . $strEpreuve;
$strMessage = $arrMail['from_name'] . " vous transfert son inscription.<br /><br />" . $strDetails . "<br /><br />Veuillez cliquer le lien suivant pour vous inscrire:<br /><br /><a href=\"" . $vDomaine . "/" . $strUrl . "/" . $strLangue . "/transfert/?t=" . $strNoTransfert . "\" target=\"_blank\">" . $vDomaine . "/" . $strUrl . "/" . $strLangue . "/transfert/?t=" . $strNoTransfert . "</a><br /><br />Si vous ne pouvez cliquer le lien, copiez-le et collez-le dans votre navigateur.<br /><br />Ce message a été envoyé via le ste web de ms1inscription.com.";
} else {
$strSujet = "Transfert of the race " . $strEpreuve;
$strMessage = $arrMail['from_name'] . " is transferring his/her race to you.<br /><br />" . $strDetails . "<br /><br />Please click the link below to register:<br /><br /><a href=\"" . $vDomaine . "/" . $strUrl . "/" . $strLangue . "/transfer/?t=" . $strNoTransfert . "\" target=\"_blank\">" . $vDomaine . "/" . $strUrl . "/" . $strLangue . "/transfer/?t=" . $strNoTransfert . "</a><br /><br />If you can't click the link, copy and paste it to your browser.<br /><br />This message was sent from the website ms1inscription.com.";
}
return fxSendMail($strSujet, $strMessage, $arrMail['to_mail'], $arrMail['to_name'], $arrMail['from_mail'], $arrMail['from_name'], 0, 1, $strLangue);
} else {
return 0;
}
}
function fxShowTransferts($arrTransferts, $strLangue) {
$strRetour = '
<div class="table-responsive">
<table class="table table-striped">
';
if ($arrTransferts != null) {
$strRetour .= '
<thead>
<tr>
<th class="text-center">&nbsp;</th>
<th class="text-left" style="width: 35%;">' . afficheTexte('title_nom-prenom', 0) . '</th>
<th class="text-left" style="width: 30%;">' . afficheTexte('label_email', 0) . '</th>
<th class="text-left">' . afficheTexte('title_status', 0) . '</th>
</tr>
</thead>
<tbody>
';
for ($intCtr = 1; $intCtr <= count($arrTransferts); $intCtr++) {
switch (intval($arrTransferts[$intCtr]['ts_id'])) {
case 2:
$strClass = 'success';
break;
case 3:
case 4:
case 6:
case 7:
case 8:
$strClass = 'danger';
break;
case 5:
$strClass = 'warning';
break;
default:
$strClass = 'secondary';
}
$strRetour .= '
<tr>
<td class="text-center">
';
if ($arrTransferts[$intCtr]['ts_id'] != 2) {
if ($arrTransferts[$intCtr]['ts_id'] != 3 && $arrTransferts[$intCtr]['ts_id'] != 4) {
$strRetour .= '
<button class="btn btn-sm btn-danger btn_cancel_transfert rounded-0" data-no_transfert="' . $arrTransferts[$intCtr]['no_transfert'] . '" data-toggle="tooltip" title="' . afficheTexte('tooltip_cancel_transfert', 0, 0) . '" type="button"><i class="fa fa-times"></i></button>
';
}
$strRetour .= '
<button class="btn btn-sm btn-secondary btn_resend_transfert rounded-0" data-no_transfert="' . $arrTransferts[$intCtr]['no_transfert'] . '" data-toggle="tooltip" title="' . afficheTexte('tooltip_resend_transfert', 0, 0) . '" type="button"><i class="fa fa-refresh"></i></button>
';
}
else {
$strRetour .= '
&nbsp;
';
}
$strRetour .= '
</td>
<td class="text-left">' . fxUnescape($arrTransferts[$intCtr]['tra_nom']) . ', ' . fxUnescape($arrTransferts[$intCtr]['tra_prenom']) . '</td>
<td class="text-left">' . $arrTransferts[$intCtr]['tra_courriel'] . '</td>
<td class="text-left"><span class="badge badge-' . $strClass . '">' . fxUnescape($arrTransferts[$intCtr]['ts_nom_' . $strLangue]) . '</span></td>
</tr>
';
}
$strRetour .= '
</tbody>
<tfoot>
<tr>
<th class="text-center" colspan="4">' . count($arrTransferts) . '&nbsp;
';
if (count($arrTransferts) > 1)
$strRetour .= strtolower(afficheTexte('title_transfert_pluriel', 0, 0));
else
$strRetour .= strtolower(afficheTexte('title_transfert', 0, 0));
$strRetour .= '</th>
</tr>
</tfoot>
';
} else {
$strRetour .= '
<tr>
<td class="text-center">
<p><span></span></p>
' . afficheTexte('msg_no_transfert', 0, 0) . '
<p><span></span></p>
</td>
</tr>
';
}
$strRetour .= '
</table>
</div>
';
return $strRetour;
}