Files
ms1inscription-v5/php/inc_fx_modifierinscriptions.php

400 lines
18 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
function fxGetTabInscription($str_select, $int_id, $str_type, $str_key) {
global $objDatabase;
$query = "select " . $str_select . " from inscriptions_" . $str_type . " where " . $objDatabase->fxEscape($str_key) . "_id =" . intval($int_id);
return $objDatabase->fxGetVar($query);
}
/**
* @param $intParId
* @return bool
*/
function fxIsParEquipe($intPecId, $intEprId) {
global $objDatabase;
$return = false;
$query = 'select pec_equipe from resultats_epreuves_commandees where pec_id_original =' . intval($intPecId) . ' and epr_id = ' . intval($intEprId);
$rec = $objDatabase->fxGetResults($query);
for ($i = 1; $i <= count($rec); $i++) {
if ($rec[$i]['pec_equipe'] == 1)
$return = true;
}
return $return;
}
/**
* @param $intEveId
* @param $intPecId
* @param $intEprId
* @param int $intShow 0 = rien afficher, 1 = afficher un div et <ul> des membres de l'equipe
* @param int $intMod 0 = ne pas afficher les input de modification du no dossard, 1 = permettre modif no. dossard des participants
* @return mixed
*/
function fxGetMembresEquipe($intEveId, $intPecId, $intEprId, $intShow = 0, $intMod = 0) {
global $objDatabase;
$query = "
SELECT
p.com_id,
c.epr_id,
c.pec_id_original,
c.pec_nom_equipe,
c.eve_id,
p.par_id,
p.par_prenom,
p.par_nom,
p.par_nom_equipe,
c.no_equipe,
p.no_bib,
p.rol_id,
p.pec_id
FROM resultats_epreuves_commandees c
INNER JOIN resultats_participants p
ON p.pec_id = c.pec_id_original
WHERE c.pec_id = " . intval($intPecId) . "
AND c.epr_id = " . intval($intEprId) . "
ORDER BY p.no_bib
"; $rec = $objDatabase->fxGetResults($query);
if ($intShow == 1) {
echo "<b><i>" . afficheTexte('promoteur_epr_equipe', 0) . " : " . $rec[1]['pec_nom_equipe'] . "</i></b><br />";
for ($i = 1; $i <= count($rec); $i++) {
if($rec[$i]['rol_id'] == 1)
$strRole = "(C)";
else
$strRole = '(P)';
$strTooltip = fxGetRoleTab($rec[$i]['rol_id']);
echo '<li data-toggle="tooltip" title="' . $strTooltip['rol_txt'] . '">' . $rec[$i]['par_prenom'] . ' ' . $rec[$i]['par_nom'] . " " . $strRole;
if($intMod == 1) {
echo "<input style='width:5%' type='text' id='txt_no_bib_" . $rec[$i]['par_id'] . "' name='txt_no_bib_" . $rec[$i]['par_id'] . "' data-action='no_bib' data-pec_id='" . $rec[$i]['pec_id_original'] . "' value='" . $rec[$i]['no_bib'] . "' />";
echo '<input type="submit" data-pec_id="' . $intPecId . '" data-eve_id="' . $intEveId . '" data-par_id="' . $rec[$i]['par_id'] . '" data-epr_id="' . $intEprId . '" id="btn_no_bib_' . $rec[$i]['par_id'] . '" name="btn_no_bib_' . $rec[$i]['par_id'] . '" class="btn_bib tooltip" title="" value="ok" />';
}
echo "</li>";
}
}
return $rec;
}
function fxGetMembresEquipeold($intEveId, $intPecId, $intEprId, $intShow = 0, $intMod = 0) {
global $objDatabase;
$query = 'select p.com_id, c.epr_id, c.pec_id_original, c.pec_nom_equipe, c.eve_id, p.par_id, p.par_prenom, p.par_nom, p.par_nom_equipe, c.no_equipe, p.no_bib, p.rol_id from resultats_epreuves_commandees c, resultats_participants p where c.pec_id =' . intval($intPecId) . ' and c.epr_id =' . intval($intEprId) . ' and p.pec_id = c.pec_id_original ORDER BY p.no_bib';
$rec = $objDatabase->fxGetResults($query);
if ($intShow == 1) {
echo "<b><i>" . afficheTexte('promoteur_epr_equipe', 0) . " : " . $rec[1]['pec_nom_equipe'] . "</i></b><br />";
for ($i = 1; $i <= count($rec); $i++) {
if($rec[$i]['rol_id'] == 1)
$strRole = "(C)";
else
$strRole = '(P)';
$strTooltip = fxGetRoleTab($rec[$i]['rol_id']);
echo '<li data-toggle="tooltip" title="' . $strTooltip['rol_txt'] . '">' . $rec[$i]['par_prenom'] . ' ' . $rec[$i]['par_nom'] . " " . $strRole;
if($intMod == 1) {
echo "<input style='width:5%' type='text' id='txt_no_bib_" . $rec[$i]['par_id'] . "' name='txt_no_bib_" . $rec[$i]['par_id'] . "' data-action='no_bib' data-pec_id='" . $rec[$i]['pec_id_original'] . "' value='" . $rec[$i]['no_bib'] . "' />";
echo '<input type="submit" data-pec_id="' . $intPecId . '" data-eve_id="' . $intEveId . '" data-par_id="' . $rec[$i]['par_id'] . '" data-epr_id="' . $intEprId . '" id="btn_no_bib_' . $rec[$i]['par_id'] . '" name="btn_no_bib_' . $rec[$i]['par_id'] . '" class="btn_bib tooltip" title="" value="ok" />';
}
echo "</li>";
}
}
return $rec;
}
function fxGetCapitaine($int_pec_id, $int_epr_id) {
global $objDatabase;
$return = false;
$sql = 'select * from resultats_epreuves_commandees e, resultats_participants r where e.pec_id =' . intval($int_pec_id) . ' and e.epr_id =' . intval($int_epr_id) . ' and r.pec_id = e.pec_id_original';
$tabEquipe = $objDatabase->fxGetResults($sql);
if (is_array($tabEquipe)) {
for ($i = 1; $i <= count($tabEquipe); $i++) {
if (isset($tabEquipe[$i]['rol_id']) && $tabEquipe[$i]['rol_id'] == 1) {
$return = $tabEquipe[$i];
}
}
}
return $return;
}
function fxGetRole($intComId, $intPecId, $intEprId) {
global $objDatabase, $strLangue;
if($strLangue == 'fr')
$strEcho = 'Rôle : ';
else
$strEcho = 'Role: ';
$qry = "select rol_id from resultats_participants where com_id = " . $intComId . " and pec_id = " . $intPecId;
$rec = $objDatabase->fxGetRow($qry);
if($rec != null){
switch ($rec['rol_id']){
case 1:
return $strEcho . afficheTexte("role_captain", 0);
break;
case 3:
return $strEcho . afficheTexte("role_volunteer", 0);
break;
case 4:
return $strEcho . afficheTexte("role_pitmanager", 0);
break;
default:
return $strEcho . afficheTexte("role_participant", 0);
break;
}
}
else {
// return afficheTexte('no_participant', 0);
$tabOwner = fxGetOwner($intEprId, $intPecId);
if($tabOwner != null)
return $strEcho . " Owner";
else
return $strEcho . " Error fetching role.";
}
}
function fxCheckMAJ($int_pec_id, $int_par_id, $str_langue) {
global $objDatabase, $vDomaine;
// $qryParticipantsMAJ = 'SELECT par_mod_via_form, par_modification_promoteur, par_maj from resultats_participants where pec_id = ' . intval($int_pec_id) . " AND par_id = " . intval($int_par_id);
$qryParticipantsMAJ = 'select par_modification_promoteur, par_maj from resultats_participants where pec_id = ' . intval($int_pec_id) . " AND par_id = " . intval($int_par_id);
$tabParticipantsMAJ = $objDatabase->fxGetRow($qryParticipantsMAJ);
if($str_langue == 'fr')
$return = "<img class='tooltip' title='Modifiée le : " . fxShowDate($tabParticipantsMAJ['par_maj'], $str_langue) . " à " . fxShowTime($tabParticipantsMAJ['par_maj']) . "' src='". $vDomaine . "/images/error.png'/>&nbsp;&nbsp;Modifiée";
else
$return = "<img class='tooltip' title='Modified on: " . fxShowDate($tabParticipantsMAJ['par_maj'], $str_langue) . " at " . fxShowTime($tabParticipantsMAJ['par_maj']) . "' src='". $vDomaine . "/images/error.png'/>&nbsp;&nbsp;Modified";
// if($tabParticipantsMAJ['par_mod_via_form'] == 0 && $tabParticipantsMAJ['par_modification_promoteur'] == 0)
if($tabParticipantsMAJ['par_modification_promoteur'] == 0)
$return = "<img src='". $vDomaine . "/images/tick.png'/>&nbsp;&nbsp;" . afficheTexte('inc_modif_nonmodifiee', 0);
return $return;
}
function fxShowManageButton($tabData, $int_pec_equipe) {
global $objDatabase, $strLangue;
$sqlEpreuve = "SELECT * FROM inscriptions_epreuves WHERE epr_id = " . intval($tabData['epr_id']);
$tabEpreuve = $objDatabase->fxGetRow($sqlEpreuve);
if ($tabEpreuve['epr_invitation'] != 1) {
// if ($tabData['eve_id'] != 175) {
?>
<td id="td_bouton">
<?php
if (fxIsParEquipe($tabData['pec_id'], $tabData['epr_id'])) {
?>
<div class="div_teammates_<?php echo $tabData['pec_id']; ?>" sid="<?php echo $tabData['pec_id']; ?>">
<input type="image" style="background: transparent;border: none" src="images/information.png"/>
<div class="teammates_<?php echo $tabData['pec_id']; ?>"
data-test="<?php echo $tabData['pec_id']; ?>"
style="text-align: left;display: none" sid="<?php echo $tabData['epr_id']; ?>">
<?php fxGetMembresEquipe($tabEpreuve['eve_id'], $tabData['pec_id'], $tabData['epr_id'], 1); ?>
</div>
<?php
} else {
afficheTexte('epreuve_individuelle');
}
?>
</div>
<?php
} else {
?>
<td>
<?php
$qry = 'select eve_actif from inscriptions_evenements where eve_id = ' . intval($tabData['eve_id']);
$tabEveActif = $objDatabase->fxGetRow($qry);
if ($tabEveActif['eve_actif'] != 0) {
?>
<button type="button" value="<?php echo $tabData['pec_id']; ?>"
class="btn_canmore" name="btn_canmore"
data-pec_id_original="<?php echo $tabData['pec_id']; ?>"
data-epr_id="<?php echo $tabData['epr_id']; ?>"
data-eve_code="<?php
// get eve_label_url
$sqlEveURL = "SELECT eve_label_url FROM inscriptions_evenements WHERE eve_id = " . intval($tabData['eve_id']);
$strEveURL = $objDatabase->fxGetVar($sqlEveURL);
echo $strEveURL;
?>">
<?php
if (fxIsParEquipe($tabData['pec_id'], $tabData['epr_id']))
afficheTexte('btn_canmore');
else
if($tabData['rol_id'] == 2 && $int_pec_equipe == 1) // participant = "view team"
afficheTexte('btn_canmore');
//
else
afficheTexte('btn_canmore_solo')
?>
</button></td>
<?php
} else
if ($strLangue == 'fr') {
echo "Événement inactif.</td>";
} else {
echo "Inactive event.</td>";
}
}
// }
}
/*
* function qui annule ou retablit une inscription dans le tableau promoteur
* param $tabEpreuve un tableau de l'epreuve a modifier
* param $int_pec_id le no. de l'epreuve commandee
* */
function fxAnnulerRetablirInscription($tabEpreuve, $int_pec_id) {
global $objDatabase;
$tabRetour = array('state' => 'success');
// check registration status
$query = "select is_cancelled from resultats_epreuves_commandees where pec_id_original = " . intval($int_pec_id) . " and epr_id = " . intval($tabEpreuve['epr_id']);
$blnIsCancelled = $objDatabase->fxGetVar($query);
$query = "select * from resultats_epreuves_commandees where pec_id_original = " . intval($int_pec_id) . " and epr_id = " . intval($tabEpreuve['epr_id']);
$qryEpreuve = $objDatabase->fxGetRow($query);
// desactive l'abonnement
if (intval($tabEpreuve['tep_id']) == 4) {
if (intval($blnIsCancelled) == 1) {
// ajuster abonnement non actif
$sqlEpreuve = "UPDATE memberships SET mem_actif = 1 WHERE pec_id = " . intval($int_pec_id);
$qryEpreuve = $objDatabase->fxQuery($sqlEpreuve);
if (!$qryEpreuve) {
$tabRetour['state'] = 'error';
fxcreer_log("Erreur de gestion UPDATE memberships " . $_SESSION['com_info']['com_courriel']);
}
} else {
$sqlEpreuve = "UPDATE memberships SET mem_actif = 0 WHERE pec_id = " . intval($int_pec_id);
$qryEpreuve = $objDatabase->fxQuery($sqlEpreuve);
if (!$qryEpreuve) {
$tabRetour['state'] = 'error';
fxcreer_log("Erreur de gestion UPDATE memberships " . $_SESSION['com_info']['com_courriel']);
}
}
}
if (intval($blnIsCancelled) == 0) {
$tabRetour['action'] = 'annuler';
// ajuster qte epreuve
$sqlEpreuve = "UPDATE inscriptions_epreuves SET epr_qte = epr_qte + 1 WHERE epr_id = " . intval($tabEpreuve['epr_id']);
$qryEpreuve = $objDatabase->fxQuery($sqlEpreuve);
if (!$qryEpreuve) {
$tabRetour['state'] = 'error';
fxcreer_log("Erreur de gestion des quantit&eacute;s de l'&eacute;preuve." . $_SESSION['com_info']['com_courriel']);
}
$sqlInscription = "update resultats_epreuves_commandees set is_cancelled = 1 where pec_id_original = '" . intval($int_pec_id) . "' and epr_id =" . intval($tabEpreuve['epr_id']);
$qryInscription = $objDatabase->fxQuery($sqlInscription);
// MSIN-4574 — free dossard MS1 à lannulation (dispo + alignement CT)
$strMajCancel = function_exists('fxGetDateTime') ? fxGetDateTime() : date('Y-m-d H:i:s');
$sqlParticipants = "UPDATE resultats_participants SET is_cancelled = 1,"
. " no_bib = NULL, no_bib_remis = 0, no_bib_remis_date = NULL, no_bib_remis_par = NULL,"
. " par_date_bib = NULL, par_maj = '" . $objDatabase->fxEscape($strMajCancel) . "'"
. " WHERE pec_id = " . intval($int_pec_id);
$qryParticipants = $objDatabase->fxQuery($sqlParticipants);
if (!$qryInscription || !$qryParticipants) {
$tabRetour['state'] = 'error';
fxcreer_log("Erreur d'annulation d'inscription : " . $_SESSION['com_info']['com_courriel']);
} else {
// MSIN-4464 — audit annulation
if (!function_exists('fxFicheAuditRecordCancelRestoreForPec')) {
require_once dirname(__FILE__) . '/inc_fx_fiche_audit.php';
}
fxFicheAuditRecordCancelRestoreForPec(
intval($int_pec_id),
'0',
'1',
'annuler',
intval($tabEpreuve['eve_id'] ?? 0)
);
// MSIN-4574 — WITHDRAWN ChronoTrack (best-effort ; ne bloque pas lannulation MS1)
$strCtBoot = dirname(__FILE__) . '/chronotrack_api/inc_bootstrap.php';
if (is_file($strCtBoot)) {
require_once $strCtBoot;
}
if (function_exists('fxChronotrackApiSyncOnMs1Cancel')) {
$arrCtCancel = fxChronotrackApiSyncOnMs1Cancel(
intval($tabEpreuve['eve_id'] ?? 0),
intval($int_pec_id)
);
$tabRetour['chronotrack'] = $arrCtCancel;
}
}
} else {
$tabRetour['action'] = 'retablir';
if (intval($tabEpreuve['epr_qte_limitee']) == 1 && intval($tabEpreuve['epr_qte']) < 0) { // check remaining qty
$tabRetour['state'] = 'error';
echo fxMessage('m135');
} else {
$sqlInscription = "update resultats_epreuves_commandees set is_cancelled = 0 where pec_id_original = '" . intval($int_pec_id) . "' and epr_id =" . intval($tabEpreuve['epr_id']);
$qryInscription = $objDatabase->fxQuery($sqlInscription);
// MSIN-4574 — bumper par_maj pour re-push CT (CONF) ; dossard reste à réassigner
$strMajRestore = function_exists('fxGetDateTime') ? fxGetDateTime() : date('Y-m-d H:i:s');
$sqlParticipants = "UPDATE resultats_participants SET is_cancelled = 0,"
. " par_maj = '" . $objDatabase->fxEscape($strMajRestore) . "'"
. " where pec_id = '" . intval($int_pec_id) . "' and epr_id =" . intval($tabEpreuve['epr_id']);
$qryParticipants = $objDatabase->fxQuery($sqlParticipants);
if (!$qryInscription || !$qryParticipants) {
$tabRetour['state'] = 'error';
fxcreer_log("Erreur d'annulation d'inscription : " . $_SESSION['com_info']['com_courriel']);
} else {
// MSIN-4464 — audit rétablissement
if (!function_exists('fxFicheAuditRecordCancelRestoreForPec')) {
require_once dirname(__FILE__) . '/inc_fx_fiche_audit.php';
}
fxFicheAuditRecordCancelRestoreForPec(
intval($int_pec_id),
'1',
'0',
'retablir',
intval($tabEpreuve['eve_id'] ?? 0)
);
// MSIN-4574 — log + filet par_maj (déjà bumpé ci-dessus)
$strCtBoot = dirname(__FILE__) . '/chronotrack_api/inc_bootstrap.php';
if (is_file($strCtBoot)) {
require_once $strCtBoot;
}
if (function_exists('fxChronotrackApiSyncOnMs1Restore')) {
$tabRetour['chronotrack'] = fxChronotrackApiSyncOnMs1Restore(
intval($tabEpreuve['eve_id'] ?? 0),
intval($int_pec_id)
);
}
}
// ajuster qte epreuve
$sqlEpreuve = "UPDATE inscriptions_epreuves SET epr_qte = epr_qte - 1 WHERE epr_id = " . intval($tabEpreuve['epr_id']);
$qryEpreuve = $objDatabase->fxQuery($sqlEpreuve);
if (!$qryEpreuve) {
$tabRetour['state'] = 'error';
fxcreer_log("Erreur de gestion des quantit&eacute;s de l'&eacute;preuve." . $_SESSION['com_info']['com_courriel']);
}
}
}
return $tabRetour;
}