{source}

    getTag(); // fr-FR $user = JFactory::getUser(); $groups = $user->get('groups'); $mode='user'; foreach ($groups as $group) { if($group==8){$mode='admin';} } $txt_ouverture = "2022-06-26 08:00:00"; $txt_fermeture = "2022-09-01 23:59:59"; // date ouverture $ouverture=strtotime($txt_ouverture); $fermeture=strtotime($txt_fermeture); if(strtotime('now')<$ouverture || strtotime('now')>$fermeture){ // vérification de la date d'ouverture $ouvert=false; echo "Les inscriptions ne sont pas encore ouvertes, ouverture des inscriptions entre le ".$txt_ouverture." et le ".$txt_fermeture." "; if($mode=='admin'){    // les admins ont le droit de continuer quand même    $ouvert=true;    echo "
    Mode admin, inscriptions toujours ouvertes."; }else{    // on est pas admin donc stop    exit(); } }else{ $ouvert=true; } if($mode=='admin'){    // les admins ont le droit de continuer quand même    $ouvert=true;    echo "
    Mode admin, nombre maximum d'inscription augmenté +1000
    "; }  // references bancaires /* $rib = "10278 37193 00020453803 32"; $bic = "CMCIFR2A"; $banque = "CM CHAMBRAY LES TOURS"; $iban = "FR76 1027 8371 9300 0204 5380 332"; */ $rib = "10278 37487 00020453803 84"; $bic = "CMCIFR2A"; $banque = "CM TOURS VAL SUD EST"; $iban = "FR76 1027 8374 8700 0204 5380 384"; // cout des inscriptions $cout_repas=0; $cout_indiv=25; $cout_tandem=50; $cout_relai=100; $cout_pack_equipe=150; // 1 relai + 5 individuel // nombre max d'inscriptions $nb_max_indiv=250; $nb_max_tandem=50; $nb_max_relai=40; // recuperation des variables par lien GET direct (mode clic sur un lien de connexion) $gid=@$_GET['gid']; $mdp_md5=@$_GET['mdp_md5']; $connexion_groupe=@$_GET['connexion_groupe']; // recuperations des variables POST de formulaires if($gid=="") $gid=@$_POST['gid']; $pid=@$_POST['pid']; $iid=@$_POST['iid']; $pid1=@$_POST['pid1']; $pid2=@$_POST['pid2']; $pid3=@$_POST['pid3']; $pid4=@$_POST['pid4']; $pid5=@$_POST['pid5']; $groupe=@$_POST['groupe']; $prenom=@$_POST['prenom']; $nom=@$_POST['nom']; $sexe=@$_POST['sexe']; $date_naissance=@$_POST['date_naissance']; $tref_minutes=@$_POST['tref_minutes']; $tref_secondes=@$_POST['tref_secondes']; $repas=@$_POST['repas']; $dn_jour=@$_POST['dn_jour']; $dn_mois=@$_POST['dn_mois']; $dn_annee=@$_POST['dn_annee']; $telephone=@$_POST['telephone']; $email=@$_POST['email']; $tshirt=@$_POST['tshirt']; $mdp=@$_POST['mdp']; if($mdp_md5=="") $mdp_md5=@$_POST['mdp_md5']; $adresse_num=@$_POST['adresse_num']; $adresse_rue=@$_POST['adresse_rue']; $adresse_cp=@$_POST['adresse_cp']; $adresse_ville=@$_POST['adresse_ville']; $adresse_pays=@$_POST['adresse_pays']; $creer_groupe=@$_POST['creer_groupe']; if($connexion_groupe=="") $connexion_groupe=@$_POST['connexion_groupe']; $mdp_perdu=@$_POST['mdp_perdu']; $modifier_groupe=@$_POST['modifier_groupe']; $supprimer_groupe=@$_POST['supprimer_groupe']; $ajouter_participant=@$_POST['ajouter_participant']; $modifier_participant=@$_POST['modifier_participant']; $supprimer_participant=@$_POST['supprimer_participant']; $selectionner_participant=@$_POST['selectionner_participant']; $ajouter_individuel=@$_POST['ajouter_individuel']; $ajouter_tandem=@$_POST['ajouter_tandem']; $ajouter_relai=@$_POST['ajouter_relai']; $nom_tandem=@$_POST['nom_tandem']; $nom_relai=@$_POST['nom_relai']; $valider_inscription=@$_POST['valider_inscription']; $valider_paiement=@$_POST['valider_paiement']; $refuser_paiement=@$_POST['refuser_paiement']; $valider_rgpd=@$_POST['valider_rgpd']; $tarif=@$_POST['tarif']; $enc_tarif=@$_POST['enc_tarif']; $mode='consultation'; // ***************************** FONCTIONS ***************************** function nb_participants_restant($type,$nb_max_indiv=250,$nb_max_tandem=50,$nb_max_relai=40){ // recupere le nombre d'inscrits en type individuel ou tandem ou relai $db = JFactory::getDbo(); $q=$db->getQuery(true); $q->select('count(*) as nb') ->from($db->quoteName('le_inscription')) ->where($db->quoteName('type') . ' = '. $db->quote($type)); $db->setQuery($q); $nb = 0; $nbi = $db->loadResult(); if($type=='individuel') $nb = $nb_max_indiv-($nbi); if($type=='tandem') $nb = $nb_max_tandem-($nbi); if($type=='relai') $nb = $nb_max_relai-($nbi); return $nb; } // mise à jour du nombre de places restantes $nb_individuel_restant = nb_participants_restant('individuel'); $nb_tandem_restant = nb_participants_restant('tandem'); $nb_relai_restant = nb_participants_restant('relai'); function send_email($email,$titre,$texte,$copy_adm=true){ $mailer = JFactory::getMailer(); $mailer->isHtml(true); $mailer->Encoding = 'base64'; if($copy_adm){ $liste_email = array($email, Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.'); }else{ $liste_email = array($email); } $mailer->addRecipient($liste_email); $mailer->setSubject($titre); $mailer->setBody($texte); $send = $mailer->Send(); $lang = JFactory::getLanguage()->getTag(); if ( $send !== true ) { if($lang=='fr-FR'){ echo "
    Attention, l'email de confirmation n'a pas pu être envoyé à l'adresse $email
    "; }else{ echo "
    Warning, email could not be sent to $email
    "; } } else { if($lang=='fr-FR'){ echo "
    Un email vous a été envoyé à l'adresse $email (pensez à vérifier votre dossier SPAM si vous n'avez pas reçu l'email)
    "; }else{ echo "
    An email was sent to $email (please check your spam folder if you did not get this email)
    "; } } } function get_groupe_id($groupe,$mdp, $mdp_md5=""){ // recupere le gid du groupe s'il existe sinon renvoie 0 $pass_md5 = md5($mdp); $db = JFactory::getDbo(); $q=$db->getQuery(true); $q->select($db->quoteName('gid')) ->from($db->quoteName('le_groupe')) ->where($db->quoteName('groupe') . ' LIKE '. $db->quote($groupe) . ' AND ( ' . $db->quoteName('mdp') . ' = '. $db->quote($mdp) . ' OR ' . $db->quoteName('mdp') . ' = '. $db->quote($pass_md5) . ' OR ' . $db->quoteName('mdp') . ' = '. $db->quote($mdp_md5) . ' ) ') ->order('gid ASC'); $db->setQuery($q); $gid = 0+$db->loadResult(); return $gid; } function verif_groupe_id($gid,$mdp, $mdp_md5=""){ // recupere le gid du groupe s'il existe sinon renvoie 0 $pass_md5 = md5($mdp); $db = JFactory::getDbo(); $q=$db->getQuery(true); $q->select($db->quoteName('gid')) ->from($db->quoteName('le_groupe')) ->where($db->quoteName('gid') . ' = '. $db->quote($gid) . ' AND ( ' . $db->quoteName('mdp') . ' = '. $db->quote($mdp) . ' OR ' . $db->quoteName('mdp') . ' = '. $db->quote($pass_md5) . ' OR ' . $db->quoteName('mdp') . ' = '. $db->quote($mdp_md5) . ' ) ') ->order('gid ASC'); $db->setQuery($q); $gid = 0+$db->loadResult(); return $gid; } function get_groupe_info($gid){ // recupere les informations du groupe s'il existe sinon renvoie null $db = JFactory::getDbo(); $q=$db->getQuery(true); $q->select('le_groupe.*') ->from($db->quoteName('le_groupe')) ->where($db->quoteName('gid') . ' = '. $db->quote($gid)) ->order('gid ASC'); $db->setQuery($q); $ginfo = $db->loadAssoc(); return $ginfo; } function get_nom_participant($pid){ // recupere les informations prenom nom du participant $db = JFactory::getDbo(); $q=$db->getQuery(true); $q->select('le_participant.*') ->from($db->quoteName('le_participant')) ->where($db->quoteName('pid') . ' = '. $db->quote($pid)); $db->setQuery($q); $ginfo = $db->loadAssoc(); return "".@$ginfo['prenom']." ".@$ginfo['nom']; } function get_participant($pid){ // recupere les informations prenom nom du participant $db = JFactory::getDbo(); $q=$db->getQuery(true); $q->select('le_participant.*') ->from($db->quoteName('le_participant')) ->where($db->quoteName('pid') . ' = '. $db->quote($pid)); $db->setQuery($q); $ginfo = $db->loadAssoc(); return $ginfo; } function nb_tandem($gid,$pid,$sexe){ // vérifie le nombre de tandems avec un partenaire d'un certaine sexe pour un participant $db = JFactory::getDbo(); $q=$db->getQuery(true); $q->select('count(*) as nb_tandem') ->from($db->quoteName('le_inscription')) ->where( " gid=$gid AND type='tandem' AND ( pid1 = $pid AND pid2 IN (SELECT pid FROM le_participant WHERE gid=$gid AND sexe='$sexe' AND type='tandem') ) OR ( pid2 = $pid AND pid1 IN (SELECT pid FROM le_participant WHERE gid=$gid AND sexe='$sexe' AND type='tandem') ) " ); $db->setQuery($q); $ginfo = $db->loadAssoc(); return $ginfo['nb_tandem']; } function autorisation_nouveau_tandem($gid,$pid1,$pid2){ // vérifie si les pid1 et pid2 peuvent faire un nouveau tandem ? $p1=get_participant($pid1); $p2=get_participant($pid2); $nbp1=nb_tandem($gid,$pid1,$p2['sexe']); // nombre de tandem de p1 avec un partenaire du même sexe que p2 $nbp2=nb_tandem($gid,$pid2,$p1['sexe']); // nombre de tandem de p2 avec un partenaire du même sexe que p1 if($nbp1==0 && $nbp2==0){ return true; // p1 et p2 n'on pas déjà un tandem en cours avec un partenaire de ce sexe, inscription autorisée }else{ return false; // p1 ou p2 on déjà un tandem en cours, inscription interdite } } // ***************************** ACTIONS ***************************** // ETAPE 1 GESTION DES GROUPES // ETAPE 1.1 CREER UN GROUPE if($creer_groupe!=""){ // on a cliqué sur le bouton de création de groupe // creation d'un nouveau groupe // verification des informations minimales requises if($groupe!='' && $mdp!='' && $email!=''){ $gid=get_groupe_id($groupe,$mdp); // vérifier si le groupe n'existe pas déjà if($gid==0){ // le groupe n'existe pas if($valider_rgpd==''){ if($lang=='fr-FR'){ echo "L'acceptation des conditions de traitement des données du formulaire est nécessaire à la création de votre groupe et à la gestion des courses, veuillez s'il vous plait vous assurer de cocher la case d'acceptation dans le formulaire d'enregistrement."; }else{ echo "The process of the data collected by this form is requiered to register to this event, please ensure you checked the acceptation box in the form."; } }else{ if(filter_var($email, FILTER_VALIDATE_EMAIL)!=FALSE){ $pass_md5=md5($mdp); // crypter le mot de passe $query = $database->getQuery(true); // Préparer les colonnes $columns = array('groupe','mdp','responsable_prenom','responsable_nom','responsable_telephone','responsable_email','adresse_num','adresse_rue','adresse_cp','adresse_ville','adresse_pays', 'ts'); // Préparer les valeurs à ajouter $values = array($database->quote($groupe), $database->quote($pass_md5), $database->quote($prenom), $database->quote($nom), $database->quote($telephone), $database->quote($email), $database->quote($adresse_num), $database->quote($adresse_rue), $database->quote($adresse_cp), $database->quote($adresse_ville), $database->quote($adresse_pays), ' NOW() '); // Réaliser l'insertion dans la base de données $query ->insert($database->quoteName('le_groupe')) ->columns($database->quoteName($columns)) ->values(implode(',', $values)); // Executer la requête $database->setQuery($query); $database->execute(); $gid=get_groupe_id($groupe,$mdp); // récupérer l'identifiant du nouveau groupe créé $g=get_groupe_info($gid); if($lang=='fr-FR'){ echo "Groupe $groupe [$gid] créé !"; $titre = "[FCC37] Création de votre groupe ".$g['groupe']; $texte = "Bonjour,
    Nous vous confirmons la création de votre groupe ".$g['groupe']."
    Vous pouvez cliquer sur le lien ci-dessous pour gérer votre groupe:
    http://www.firefighterteam37.com/index.php?option=com_content&view=article&id=19&connexion_groupe=connexion_groupe&gid=".$g['gid']."&mdp_md5=".$g['mdp']."

    L'équipe du FireFighter Tours 37 "; }else{ echo "Team $groupe [$gid] created !"; $titre = "[FCC37] Team ".$g['groupe']." created"; $texte = "Hello,
    Your Team ".$g['groupe']." was created on our website
    You can update your team details using the link below:
    http://www.firefighterteam37.com/index.php?option=com_content&view=article&id=19&connexion_groupe=connexion_groupe&gid=".$g['gid']."&mdp_md5=".$g['mdp']."

    The FireFighter Tours 37 organisation team "; } @send_email($email,$titre,$texte); }else{ if($lang=='fr-FR'){ echo "Adresse email incorrecte ($email) !"; }else{ echo "Wrong email address ($email) !"; } } } } else{ // Attention groupe déjà existant, renvoyer le gid if($lang=='fr-FR'){ echo "Groupe déjà existant !"; }else{ echo "Team already existing !"; } } }else{ // Attention informations manquantes if($lang=='fr-FR'){ echo "Informations manquantes (nom du groupe + mot de passe + email requis au minimum)
    "; }else{ echo "Missing informations (name of the team + password + contact email required)
    "; } } $mode='creation'; } if($mdp_perdu!=""){ // on a cliqué sur le bouton de perte de mot de passe // envoyer un email avec le lien de connexion if($groupe!='' || $email!=''){ $db = JFactory::getDbo(); $q=$db->getQuery(true); $where=""; if($groupe!=''){ $where = "( ".$db->quoteName('groupe') . ' LIKE '. $db->quote($groupe). " ) "; } if($email!=''){ if($where!=''){ $where.= " OR "; } $where .= " responsable_email LIKE ".$db->quote($email); } $q->select('le_groupe.*') ->from('le_groupe') ->where($where) ->order('gid ASC'); $db->setQuery($q); $gp = $db->loadAssocList(); // liste ordonnée des groupe foreach ($gp as $key => $g) { // email titre text $email = $g['responsable_email']; if($lang=='fr-FR'){ $titre = "[FCC37] Mot de passe perdu pour ".$g['groupe']; $texte = "Bonjour,
    Vous avez demandé la réinitialisation du mot de passe de connection pour le groupe ".$g['groupe']."
    Veuillez cliquer sur le lien ci-dessous pour changer votre mot de passe:
    http://www.firefighterteam37.com/index.php?option=com_content&view=article&id=19&connexion_groupe=connexion_groupe&gid=".$g['gid']."&mdp_md5=".$g['mdp']."

    L'équipe du FireFighter Tours 37 "; echo "Demande de réinitialisationde mot de passe pour le groupe ".$g['groupe']."
    "; }else{ $titre = "[FCC37] Lost password request Team ".$g['groupe']; $texte = "Hello,
    You requested a link to fix a lost password for your Team : ".$g['groupe']."
    Clic the link below to change your password:
    http://www.firefighterteam37.com/index.php?option=com_content&view=article&id=19&connexion_groupe=connexion_groupe&gid=".$g['gid']."&mdp_md5=".$g['mdp']."

    The FireFighter Tours 37 organisation team "; echo "Lost password request initiated for Team ".$g['groupe']."
    "; } @send_email($email,$titre,$texte); } } $mode='creation'; $groupe=''; $gid!=''; } // ETAPE 1.2 SE CONNECTER A UN GROUPE if(($groupe!='' || $gid!='')){ // tentative de connexion a un groupe existant $gid_verif=verif_groupe_id($gid,$mdp,$mdp_md5); // tentative de connexion au groupe avec le mot de passe if($gid_verif!=$gid || $gid==0){ $gid=get_groupe_id($groupe,$mdp,$mdp_md5); // tentative de connexion au groupe avec le mot de passe } if($gid>0){ // groupe trouvé OK ! //echo "Groupe $groupe [$gid] trouvé !"; } else{ // erreur de connexion if($lang=='fr-FR'){ echo "Groupe non trouvé ou mot de passe erroné !"; }else{ echo "Unknown Team or Wrong password !"; } } } // ETAPE 1.3 MODIFIER UN GROUPE // GESTION DES DROITS D'ACCES SUR LE GROUPE // vérifier si le groupe sélectionné est en mode payement ou création ou admin $ginfo = @get_groupe_info($gid); // vérifier si le user est un admin ? $user = JFactory::getUser(); $groups = $user->get('groups'); foreach ($groups as $group){if($group==8){ $mode='admin'; // nombre max d'inscriptions forcage admin $nb_max_indiv=1250; $nb_max_tandem=1050; $nb_max_relai=1040; }} if($mode!='admin'){ if(@$ginfo=='' || @$ginfo['compta']==""){ // mode creation $mode='creation'; }else{ $etat_compta=$ginfo['compta']; // mode consultation $mode='consultation'; } } if($mode!='consultation' && $modifier_groupe!="" && $gid>0 && $groupe!='' && ($mdp_md5!="" || $mdp!="")){ // modification d'un groupe $query = $database->getQuery(true); if($mdp!=""){ // changement de mot de passe $mdp_md5=md5($mdp); } // sinon le mot de passe actuel est conserve if(filter_var($email, FILTER_VALIDATE_EMAIL)!=FALSE){ $p = new stdClass(); // modifie un groupe avec les nouvelles valeurs $p->gid = $gid; $p->groupe = $groupe; $p->mdp = $mdp_md5; $p->responsable_prenom = $prenom; $p->responsable_nom = $nom; $p->responsable_telephone = $telephone; $p->responsable_email = $email; $p->adresse_num = $adresse_num; $p->adresse_rue = $adresse_rue; $p->adresse_cp = $adresse_cp; $p->adresse_ville = $adresse_ville; $p->adresse_pays = $adresse_pays; // mise à jour en utilisant gid comme clé primaire. $result = JFactory::getDbo()->updateObject('le_groupe', $p, 'gid'); if($lang=='fr-FR'){ echo "Groupe $groupe modifié !"; }else{ echo "Team $groupe updated !"; } }else{ if($lang=='fr-FR'){ echo "Adresse email invalide ($email) !"; }else{ echo "Wrong email address ($email) !"; } } } // ETAPE 1.4 ENVOYER LE FORMULAIRE D'INSCRIPION DE GROUPE (passage en mode consultation) if($valider_inscription!="" && $gid>0 && ($mdp!="" || $mdp_md5!="") && $tarif>0){ // verification de securite pour la finalisation de l'inscription // validation du tarif $gid_verif = get_groupe_id($groupe,$mdp,$mdp_md5); if($gid_verif!=$gid){ // erreur de groupe ! echo "Erreur de mot de passe de groupe !"; }else{ // ok bon groupe // vérification du tarif $verif_tarif = md5("FCC37_".$tarif); if($verif_tarif!=$enc_tarif){ // erreur de tarif if($lang=='fr-FR'){ echo "Erreur de validation de tarif !"; }else{ echo "Error validating the rate !"; } }else{ // tarif valide // passer la commande en mode en attente de paiement $query = $database->getQuery(true); $p = new stdClass(); $p->gid = $gid; $p->tarif = $tarif; $p->compta = 'en attente de paiement'; $result = JFactory::getDbo()->updateObject('le_groupe', $p, 'gid'); if($lang=='fr-FR'){ echo "L'inscription de votre team a bien été enregistrée.
    Votre inscription sera validée à réception du payement ($tarif €).
    "; }else{ echo "Your team was registered.
    This registration will be fully validated once payement received ($tarif €).
    "; } // envoyer l'email d'information $ginfo=get_groupe_info($gid); $email = $ginfo['responsable_email']; $groupe = $ginfo['groupe']; $currentTime = new JDate('now'); $url = "http://www.firefighterteam37.com?option=com_content&view=article&id=19&connexion_groupe=connexion_groupe&gid=".$ginfo['gid']."&mdp_md5=".$ginfo['mdp']; if($lang=='fr-FR'){ $titre="[FCC37] Inscription envoyée pour le groupe ".$groupe; $texte = " Bonjour,

    Nous vous confirmons la demande d'inscription du groupe ".$groupe." au FireFighter Tours les 1 et 2 octobre 2022 à Tours.

    Vous pouvez consulter l'état de votre dossier d'inscription en cliquant sur le lien suivant:
    ".$groupe."

    Votre dossier sera validé à réception de votre paiement par virement bancaire (RIB PDF).

    L'équipe du FireFighter Tours 37
    FireFighter Team 37
    Formulaire d'inscription reçu le ".$currentTime." "; }else{ $titre="[FCC37] Registration sent for Team ".$groupe; $texte = " Hello,

    The registration of the Team ".$groupe." to the FireFighter Tours (1-2 october 2022 in Tours) was sent.

    You can check your team registration status using the link below:
    ".$groupe."

    Your registration will be validated once the paiement received (please use bank wire transfer (RIB PDF)).

    The FireFighter Tours 37 organising team
    FireFighter Team 37
    Registration sent on ".$currentTime." "; } @send_email($email,$titre,$texte,true); } } } // ETAPE 1.5 VALIDATION DE L'INSCRIPION DE GROUPE (paiement validé) if($mode=='admin' && $valider_paiement!="" && $gid>0 && ($mdp!="" || $mdp_md5!="")){ // validation du paiement par un admin $gid_verif = get_groupe_id($groupe,$mdp,$mdp_md5); if($gid_verif!=$gid){ // erreur de groupe ! if($lang=='fr-FR'){ echo "Erreur de mot de passe de groupe !"; }else{ echo "Wrong Team password !"; } }else{ // ok bon groupe // tarif valide // passer la commande en mode en paiement validé $query = $database->getQuery(true); $p = new stdClass(); $p->gid = $gid; $p->compta = 'paiement validé'; $result = JFactory::getDbo()->updateObject('le_groupe', $p, 'gid'); if($lang=='fr-FR'){ echo "Paiement FCC37_".sprintf('%04d',$gid)." validé."; }else{ echo "Payement FCC37_".sprintf('%04d',$gid)." validated."; } // envoyer l'email d'information $ginfo=get_groupe_info($gid); $email = $ginfo['responsable_email']; $groupe = $ginfo['groupe']; $currentTime = new JDate('now'); $url = "http://www.firefighterteam37.com?option=com_content&view=article&id=19&connexion_groupe=connexion_groupe&gid=".$ginfo['gid']."&mdp_md5=".$ginfo['mdp']; if($lang=='fr-FR'){ $titre="[FCC37] Inscription validée pour le groupe ".$groupe; $texte = " Bonjour,

    Nous vous confirmons la bonne réception du paiement de l'inscription de votre groupe ".$groupe." au FireFighter Tours les 1 et 2 octobre 2022 à Tours.

    Vous pouvez consulter l'état de votre dossier d'inscription en cliquant sur le lien suivant:
    ".$groupe."

    A très bientôt.

    L'équipe du FireFighter Tours 37
    FireFighter Team 37
    Inscription validée le ".$currentTime." "; }else{ $titre="[FCC37] Registration validated for Team ".$groupe; $texte = " Hello,

    We just validated the payement for Team ".$groupe." to the FireFighter Tours (1-2 october 2022 in Tours).

    You can check your registration status using the following link:
    ".$groupe."

    See you very soon.

    The FireFighter Tours 37 organising team
    FireFighter Team 37
    Registration validated on ".$currentTime." "; } @send_email($email,$titre,$texte,true); } } // ETAPE 1.6 MODIFICATION DE L'INSCRIPION DE GROUPE (passage en mode création / dossier incomplet) if($mode=='admin' && $refuser_paiement!="" && $gid>0 && ($mdp!="" || $mdp_md5!="")){ // invalidation du paiement par un admin $gid_verif = get_groupe_id($groupe,$mdp,$mdp_md5); if($gid_verif!=$gid){ // erreur de groupe ! if($lang=='fr-FR'){ echo "Erreur de mot de passe de groupe !"; }else{ echo "Wrong team password !"; } }else{ // ok bon groupe // tarif valide // re-passer la commande en mode creation (non envoyé) $query = $database->getQuery(true); $p = new stdClass(); $p->gid = $gid; $p->compta = ''; $result = JFactory::getDbo()->updateObject('le_groupe', $p, 'gid'); if($lang=='fr-FR'){ echo "Dossier d'inscription FCC37_".sprintf('%04d',$gid)." non validé."; }else{ echo "Registration FCC37_".sprintf('%04d',$gid)." discarded."; } // envoyer l'email d'information $ginfo=get_groupe_info($gid); $email = $ginfo['responsable_email']; $groupe = $ginfo['groupe']; $currentTime = new JDate('now'); $url = "http://www.firefighterteam37.com?option=com_content&view=article&id=19&connexion_groupe=connexion_groupe&gid=".$ginfo['gid']."&mdp_md5=".$ginfo['mdp']; if($lang=='fr-FR'){ $titre="[FCC37] Dossier d'inscription modifié pour le groupe ".$groupe; $texte = " Bonjour,

    L'inscription de votre groupe ".$groupe." au FireFighter Tours les 1 et 2 octobre 2022 à Tours a été modifiée.

    Votre dossier est désormais en mode création, vous pouvez modifier votre dossier d'inscription en cliquant sur le lien suivant:
    ".$groupe."

    Pensez à valider votre inscription une fois votre dossier complet.

    L'équipe du FireFighter Tours 37
    FireFighter Team 37
    Inscription modifiée le ".$currentTime." "; }else{ $titre="[FCC37] Registration updated for Team ".$groupe; $texte = " Hello,

    The registration for the Team ".$groupe." to the FireFighter Tours (1-2 october 2022 in Tours) was updated.

    Please check your Team registration status using the following link:
    ".$groupe."

    Please validate your registration form once fullfiled.

    The FireFighter Tours 37 organising team
    FireFighter Team 37
    Registration updated on ".$currentTime." "; } @send_email($email,$titre,$texte,true); } } // ETAPE 1.7 SUPPRESSION DE GROUPE if($mode=='admin' && $supprimer_groupe!="" && $gid>0 && ($mdp!="" || $mdp_md5!="")){ // invalidation du paiement par un admin $gid_verif = get_groupe_id($groupe,$mdp,$mdp_md5); if($gid_verif!=$gid){ // erreur de groupe ! if($lang=='fr-FR'){ echo "Erreur de mot de passe de groupe !"; }else{ echo "Wrong team password !"; } }else{ // ok bon groupe // envoyer l'email d'information $ginfo=get_groupe_info($gid); $email = $ginfo['responsable_email']; $groupe = $ginfo['groupe']; $currentTime = new JDate('now'); $url = "http://www.firefighterteam37.com"; // 1 supprimer les courses $query = $db->getQuery(true); $conditions = $db->quoteName('gid') . ' = ' . $gid; $query->delete($db->quoteName('le_inscription')); $query->where($conditions); $db->setQuery($query); $result = $db->execute(); // 2 supprimer les participants $query = $db->getQuery(true); $query->delete($db->quoteName('le_participant')); $query->where($conditions); $db->setQuery($query); $result = $db->execute(); // 3 supprimer le groupe $query = $db->getQuery(true); $query->delete($db->quoteName('le_groupe')); $query->where($conditions); $db->setQuery($query); $result = $db->execute(); if($lang=='fr-FR'){ echo "Groupe FCC37_".sprintf('%04d',$gid)." supprimé."; }else{ echo "Team FCC37_".sprintf('%04d',$gid)." deleted."; } if($lang=='fr-FR'){ $titre="[FCC37] Groupe ".$groupe." supprimé"; $texte = " Bonjour,

    L'inscription de votre groupe ".$groupe." au FireFighter Tours les 1 et 2 octobre 2022 à Tours a été supprimée.

    L'équipe du FireFighter Tours 37
    FireFighter Team 37
    Inscription supprimée le ".$currentTime." "; }else{ $titre="[FCC37] Team ".$groupe." deleted"; $texte = " Hello,

    The registration for the Team ".$groupe." to the FireFighter Tours (1-2 october 2022 in Tours) was deleted.

    The FireFighter Tours 37 organising team
    FireFighter Team 37
    Registration updated on ".$currentTime." "; } @send_email($email,$titre,$texte,true); } $gid=0; } // ETAPE 2 GESTION DES PARTICIPANTS // ETAPE 2.1 AJOUTER PARTICIPANT // ajouter un participant ou directement créer le team leader comme participant if($mode!='consultation' && ($ajouter_participant!="" || $creer_groupe!="") && $gid>0){ // ajout d'un participant $query = $database->getQuery(true); // Préparer les colonnes $columns = array('gid','prenom','nom','sexe','date_naissance', 'telephone','email','adresse_num','adresse_rue','adresse_cp','adresse_ville','adresse_pays','taille_tshirt','ts','tref_minutes','tref_secondes','repas'); // calculer la date de naissance yyyy-mm-dd $date_naissance = $dn_annee."-".$dn_mois."-".$dn_jour; // Préparer les valeurs à ajouter $values = array($database->quote($gid), $database->quote($prenom), $database->quote($nom), $database->quote($sexe), $database->quote($date_naissance), $database->quote($telephone), $database->quote($email), $database->quote($adresse_num), $database->quote($adresse_rue), $database->quote($adresse_cp), $database->quote($adresse_ville), $database->quote($adresse_pays), $database->quote($tshirt), ' NOW() ', $database->quote($tref_minutes),$database->quote($tref_secondes),$database->quote($repas)); // Réaliser l'insertion dans la base de données $query ->insert($database->quoteName('le_participant')) ->columns($database->quoteName($columns)) ->values(implode(',', $values)); // Executer la requête $database->setQuery($query); $database->execute(); if($lang=='fr-FR'){ echo "Participant $prenom $nom ajouté au groupe $groupe !"; }else{ echo "User $prenom $nom added to Team $groupe !"; } } // ETAPE 2.2 SELECTIONNER PARTICIPANT if($mode!='consultation' && $selectionner_participant!="" && $gid>0 && $pid>0){ // selection des informations d'un participant $db = JFactory::getDbo(); $q=$db->getQuery(true); $q->select('le_participant.*') ->from($db->quoteName('le_participant')) ->where($db->quoteName('pid') . ' = '. $db->quote($pid)) ->order('pid ASC'); $db->setQuery($q); $pinfo = $db->loadAssoc(); $pid=$pinfo['pid']; // clee primaire utilisee pour modifier le participant $gid=$pinfo['gid']; $prenom=$pinfo['prenom']; $nom=$pinfo['nom']; $sexe=$pinfo['sexe']; $telephone=$pinfo['telephone']; $email=$pinfo['email']; $adresse_num=$pinfo['adresse_num']; $adresse_rue=$pinfo['adresse_rue']; $adresse_cp=$pinfo['adresse_cp']; $adresse_ville=$pinfo['adresse_ville']; $adresse_pays=$pinfo['adresse_pays']; $tshirt=$pinfo['taille_tshirt']; $tref_minutes=$pinfo['tref_minutes']; $tref_secondes=$pinfo['tref_secondes']; $repas=$pinfo['repas']; // date naissance à decouper en 3 morceaux $pdate = explode('-',$pinfo['date_naissance']); $dn_jour=$pdate[2]; $dn_mois=$pdate[1]; $dn_annee=$pdate[0]; if($lang=='fr-FR'){ echo "Participant $prenom $nom sélectionné !"; }else{ echo "User $prenom $nom selected !"; } } // ETAPE 2.3 MODIFIER PARTICIPANT if($mode!='consultation' && $modifier_participant!="" && $gid>0 && $pid>0){ // modification d'un participant $query = $database->getQuery(true); // calculer la date de naissance yyyy-mm-dd $date_naissance = $dn_annee."-".$dn_mois."-".$dn_jour; $p = new stdClass(); // cree un participant avec les nouvelles valeurs $p->pid = $pid; // clee primaire utilisee pour modifier le participant $p->gid = $gid; $p->prenom = $prenom; $p->nom = $nom; $p->sexe = $sexe; $p->date_naissance = $date_naissance; $p->telephone = $telephone; $p->email = $email; $p->adresse_num = $adresse_num; $p->adresse_rue = $adresse_rue; $p->adresse_cp = $adresse_cp; $p->adresse_ville = $adresse_ville; $p->adresse_pays = $adresse_pays; $p->taille_tshirt = $tshirt; $p->tref_minutes = $tref_minutes; $p->tref_secondes = $tref_secondes; $p->repas = $repas; // Update their details in the users table using id as the primary key. $result = JFactory::getDbo()->updateObject('le_participant', $p, 'pid'); if($lang=='fr-FR'){ echo "Participant $prenom $nom modifié !"; }else{ echo "User $prenom $nom updated !"; } } // ETAPE 2.4 SUPPRIMER PARTICIPANT if($mode!='consultation' && $supprimer_participant!="" && $pid>0){ // suppression d'un participant $db = JFactory::getDbo(); $query = $db->getQuery(true); // delete all custom keys for user 1001. $conditions = array($db->quoteName('pid') . ' = ' . $pid); $query->delete($db->quoteName('le_participant')); $query->where($conditions); $db->setQuery($query); $result = $db->execute(); // supprimer aussi toutes les courses ou il était inscrit $query = $db->getQuery(true); $conditions = $db->quoteName('pid1') . ' = ' . $pid. " OR ". $db->quoteName('pid2') . ' = ' . $pid. " OR ". $db->quoteName('pid3') . ' = ' . $pid. " OR ". $db->quoteName('pid4') . ' = ' . $pid. " OR ". $db->quoteName('pid5') . ' = ' . $pid ; $query->delete($db->quoteName('le_inscription')); $query->where($conditions); $db->setQuery($query); $result = $db->execute(); if($lang=='fr-FR'){ echo "Participant $pid supprimé !"; }else{ echo "User $pid deleted !"; } } // ETAPE 3 GESTION DES COURSES // ETAPE 3.1 AJOUTER UNE COURSE // ETAPE 3.1.1 AJOUTER UNE COURSE INDIVIDUELLE if($mode!='consultation' && $ajouter_individuel!="" && $gid>0 && $pid1>0){ // ajout d'une participation individuelle // vérification du nombre de places restantes if($nb_individuel_restant>0){ $inscription = new stdClass(); $inscription->gid=$gid; $inscription->type='individuel'; $inscription->pid1=$pid1; $result = JFactory::getDbo()->insertObject('le_inscription', $inscription); if($lang=='fr-FR'){ echo "Inscription individuelle du participant $pid1 ajoutée !"; }else{ echo "User $pid1 individual registration added !"; } }else{ if($lang=='fr-FR'){ echo "Inscription individuelle du participant $pid1 refusée (nombre maximum d'inscriptions atteint) !"; }else{ echo "User $pid1 individual registration rejected (maximum registration reached) !"; } } } // ETAPE 3.1.2 AJOUTER UNE COURSE EN TANDEM if($mode!='consultation' && $ajouter_tandem!="" && $gid>0 && $pid1>0 && $pid2>0 && $pid1!=$pid2){ // ajout d'une participation tandem // vérification le pid1 peut il participer ? $ok = autorisation_nouveau_tandem($gid,$pid1,$pid2) && autorisation_nouveau_tandem($gid,$pid2,$pid1); // verification, le pid2 peut il participer ? if($nb_tandem_restant>0){ if($ok){ $inscription = new stdClass(); $inscription->gid=$gid; $inscription->type='tandem'; $inscription->pid1=$pid1; $inscription->pid2=$pid2; $inscription->equipe=$nom_tandem; $result = JFactory::getDbo()->insertObject('le_inscription', $inscription); if($lang=='fr-FR'){ echo "Inscription tandem des participants $pid1 et $pid2 ajoutée !"; }else{ echo "Tandem registration for users $pid1 and $pid2 added !"; } }else{ if($lang=='fr-FR'){ echo "Inscription tandem des participants $pid1 et $pid2 interdite (un seul tandem par participant) !"; }else{ echo "Tandem registration for users $pid1 and $pid2 forbidden (only one tandem per user) !"; } } }else{ if($lang=='fr-FR'){ echo "Inscription tandem des participants $pid1 et $pid2 refusée (nombre maximum d'inscriptions atteint) !"; }else{ echo "Tandem registration for users $pid1 and $pid2 rejected (maximum registration reached) !"; } } } // ETAPE 3.1.3 AJOUTER UNE COURSE EN RELAI if($mode!='consultation' && $ajouter_relai!="" && $gid>0 && $pid1>0 && $pid2>0 && $pid3>0 && $pid1!=$pid2 && $pid1!=$pid3 && ($pid1!=$pid4 || $pid4=='') && ($pid1!=$pid5 || $pid5=='') && $pid2!=$pid3 && ($pid2!=$pid4 || $pid4=='') && ($pid2!=$pid5 || $pid5=='') && ($pid3!=$pid4 || $pid4=='') && ($pid3!=$pid5 || $pid5=='') && ($pid4!=$pid5 || $pid5=='') ){ // ajout d'une participation relai if($nb_relai_restant>0){ $inscription = new stdClass(); $inscription->gid=$gid; $inscription->type='relai'; $inscription->pid1=$pid1; $inscription->pid2=$pid2; $inscription->pid3=$pid3; $inscription->pid4=$pid4; $inscription->pid5=$pid5; $inscription->equipe=$nom_relai; $result = JFactory::getDbo()->insertObject('le_inscription', $inscription); if($lang=='fr-FR'){ echo "Inscription relai ajoutée !"; }else{ echo "Relay registration added !"; } }else{ if($lang=='fr-FR'){ echo "Inscription relai des participants refusée (nombre maximum d'inscriptions atteint) !"; }else{ echo "Relay registration rejected (maximum registration reached) !"; } } } // ETAPE 3.2 SUPPRIMER UNE COURSE if($mode!='consultation' && $iid>0 && $gid>0){ // suppression d'une inscription $db = JFactory::getDbo(); $query = $db->getQuery(true); $conditions = array($db->quoteName('iid') . ' = ' . $iid); $query->delete($db->quoteName('le_inscription')); $query->where($conditions); $db->setQuery($query); $result = $db->execute(); if($lang=='fr-FR'){ echo "Inscription $iid supprimée !"; }else{ echo "Registration $iid deleted !"; } } // ***************************** AFFICHAGES ***************************** // VARIABLES D'AFFICHAGES COMMUNES AUX FORMULAIRES (Sexe, Tshirt, Jours) $sel_sexe="

    "; }else{ $sel_sexe.="MF"; } /* modif pas de repas cette annee if($lang=='fr-FR'){ $sel_repas="

    "; }else{ $sel_repas.="OuiNon"; } }else{ $sel_repas="

    "; }else{ $sel_repas.="YesNo"; } } */ $sel_repas="Pas de repas cette année"; $sel_tshirt="

    "; $sel_jour="

    "; $sel_mois="

    "; $sel_annee="

    "; $sel_tref_minutes="

    "; $sel_tref_secondes="

    "; // AFFICHAGE 1 : FORMULAIRE DE CREATION DE GROUPE OU DE CONNEXION if($gid==0){  if($lang=='fr-FR'){ if($mode=='admin'){ echo "

    Tarifs Nombre de places restantes Nombre de places totales
    Individuel ".$cout_indiv." € ".nb_participants_restant('individuel',$nb_max_indiv,$nb_max_tandem,$nb_max_relai)." ".$nb_max_indiv."
    Tandem ".$cout_tandem." € ".nb_participants_restant('tandem',$nb_max_indiv,$nb_max_tandem,$nb_max_relai)." ".$nb_max_tandem."
    Relai ".$cout_relai." € ".nb_participants_restant('relai',$nb_max_indiv,$nb_max_tandem,$nb_max_relai)." ".$nb_max_relai."
    Pack spécial équipe
    (1 relai + 5 individuels)
    ".$cout_pack_equipe." € Ouverture des inscriptions du ".strftime('%d/%m/%Y %T',$ouverture)." au ".strftime('%d/%m/%Y %T',$fermeture)."
    Les inscriptions non réglées sous une semaine seront annulées
    Repas Pas de repas cette année

    "; }else{ echo "

    Tarifs Nombre de places totales
    Individuel ".$cout_indiv." € ".$nb_max_indiv."
    Tandem ".$cout_tandem." € ".$nb_max_tandem."
    Relai ".$cout_relai." € ".$nb_max_relai."
    Pack spécial équipe
    (1 relai + 5 individuels)
    ".$cout_pack_equipe." € Ouverture des inscriptions du ".strftime('%d/%m/%Y %T',$ouverture)." au ".strftime('%d/%m/%Y %T',$fermeture)."
    Les inscriptions non réglées sous une semaine seront annulées
    Repas Pas de repas cette année

    "; } echo "

    Nom de la team et email de contact (obligatoires), vérifiez votre dossier SPAM si vous ne recevez pas l'email de confirmation :
    Nom de la Team
    Email
    Mot de passe
    Coordonnées de facturation de la team (Team Leader) :
    Prénom
    Nom
    Sexe ".$sel_sexe."
    Date Naissance
    ".$sel_jour." ".$sel_mois." ".$sel_annee."
    Téléphone
    Taille TShirt ".$sel_tshirt."
    Repas ".$sel_repas."
    Temps référence
    ".$sel_tref_minutes." ".$sel_tref_secondes."
    Numéro de rue
    Nom de rue
    Code postal
    Ville
    Pays
    En cochant cette case, vous acceptez que les données collectées dans les formulaires ci-après soit utilisées dans le cadre de l'organisation et de la gestion de la manifestation FireFigther Tours 2022 organisée par l'UDSP37 comme détaillé dans nos mentions légales
    Créer la Team

    "; }else{ if($mode=='admin'){ echo "

    Rates Remaining racings Total racings
    Individual ".$cout_indiv." € ".nb_participants_restant('individuel',$nb_max_indiv,$nb_max_tandem,$nb_max_relai)." ".$nb_max_indiv."
    Tandem ".$cout_tandem." € ".nb_participants_restant('tandem',$nb_max_indiv,$nb_max_tandem,$nb_max_relai)." ".$nb_max_tandem."
    Relay ".$cout_relai." € ".nb_participants_restant('relai',$nb_max_indiv,$nb_max_tandem,$nb_max_relai)." ".$nb_max_relai."
    Special Team Pack
    (1 relay + 5 individuals)
    ".$cout_pack_equipe." € Registration opening date : ".strftime('%d/%m/%Y %T',$ouverture)."
    Payement must be sent within one week (unpaid registrations will be discarded)
    Meal No meal this year

    "; }else{ echo "

    Rates Total racings
    Individual ".$cout_indiv." € ".$nb_max_indiv."
    Tandem ".$cout_tandem." € ".$nb_max_tandem."
    Relay ".$cout_relai." € ".$nb_max_relai."
    Special Team Pack
    (1 relay + 5 individuals)
    ".$cout_pack_equipe." € Registration opening date : ".strftime('%d/%m/%Y %T',$ouverture)."
    Payement must be sent within one week (unpaid registrations will be discarded)
    Meal No meal this year

    "; } echo "

    Team Name and Contact Email (mandatory), please check your spam folder if you did not get our emails:
    Team Name
    Email
    Password
    Team Leader contact information :
    Fisrt name
    Last name
    Sex ".$sel_sexe."
    Birth Date (dd mm yyyy)
    ".$sel_jour." ".$sel_mois." ".$sel_annee."
    Phone
    TShirt size ".$sel_tshirt."
    Meal ".$sel_repas."
    Reference time
    ".$sel_tref_minutes." ".$sel_tref_secondes."
    Street number
    Street
    Postal code
    City
    Country
    Please check this box to allow the FireFighter Team 37 and UDSP37 to use the collected information of the following forms required to organize and set up the FireFigther Tours 2022 (detailled legal information : mentions légales)
    Create the Team

    "; } } // AFFICHAGE 2 : GROUPE SELECTIONNE, affichage mode groupe function nb_repas($gid){ // recupere les informations des participants du groupe $db = JFactory::getDbo(); $q=$db->getQuery(true); $q->select('(0+sum(repas)) as nb_repas') ->from($db->quoteName('le_participant')) ->where($db->quoteName('gid') . ' = '. $db->quote($gid)); $db->setQuery($q); $gp = $db->loadAssoc(); // liste ordonnée des participants return $gp['nb_repas']; } function liste_participants($gid,$pid){ // liste des participants de la team // recupere les informations des participants du groupe $db = JFactory::getDbo(); $q=$db->getQuery(true); $q->select('le_participant.*') ->from($db->quoteName('le_participant')) ->where($db->quoteName('gid') . ' = '. $db->quote($gid)) ->order('pid ASC'); $db->setQuery($q); $gp = $db->loadAssocList(); // liste ordonnée des participants $liste_part=""; foreach ($gp as $key => $p) { if($pid==$p['pid']){ $selected=" selected "; }else{ $selected=""; } $liste_part.="".$p['nom']." ".$p['prenom'].""; } return $liste_part; } function tableau_participants($gid,$mdp_md5){ // liste des participants de la team // recupere les informations des participants du groupe $db = JFactory::getDbo(); $q=$db->getQuery(true); $q->select('le_participant.*') ->from($db->quoteName('le_participant')) ->where($db->quoteName('gid') . ' = '. $db->quote($gid)) ->order('pid ASC'); $db->setQuery($q); $gp = $db->loadAssocList(); // liste ordonnée des participants $lang = JFactory::getLanguage()->getTag(); if($lang=='fr-FR'){ $tableau_participants=" "; }else{ $tableau_participants="

    Nom Prénom S Age Téléphone Email Adresse T R Ref Modif Inscriptions

    "; } foreach ($gp as $key => $p) { // rechercher ses inscriptions à des courses $q=$db->getQuery(true); $q->select('le_inscription.*') ->from($db->quoteName('le_inscription')) ->where($db->quoteName('pid1') . ' = '. $db->quote($p['pid']) . " OR " . $db->quoteName('pid2') . ' = '. $db->quote($p['pid']) . " OR " . $db->quoteName('pid3') . ' = '. $db->quote($p['pid']) . " OR " . $db->quoteName('pid4') . ' = '. $db->quote($p['pid']) . " OR " . $db->quoteName('pid5') . ' = '. $db->quote($p['pid']) ) ->order('iid ASC'); $db->setQuery($q); $pi = $db->loadAssocList(); // liste ordonnée des participants $liste_insc="";// variable contant la liste de ses inscriptions foreach ($pi as $ikey => $insc) { $liste_insc.=" "; if($insc['type']=='individuel'){ $liste_insc.=""; } if($insc['type']=='relai'){ $liste_insc.=""; } if($insc['type']=='tandem'){ $liste_insc.=""; } $liste_insc.=""; } $tableau_participants.= ""; } $tableau_participants.="

    Last name First name S Age Phone Email Address T R Ref Updated Registrations
    ".$p['nom']." ".$p['prenom']." ".$p['sexe']." ".$p['date_naissance']." (".$p['age'].") ".$p['telephone']." ".$p['email']." ".$p['adresse_num']." ".$p['adresse_rue']." ".$p['adresse_cp']." ".$p['adresse_ville']." ".$p['adresse_pays']." ".$p['taille_tshirt']." ".$p['repas']." ".$p['tref_minutes'].":".$p['tref_secondes']." ".$p['ts']." ".$liste_insc."

    "; return $tableau_participants; } if($gid>0){ // groupe connecté, mode gestion des participants $ginfo = get_groupe_info($gid); $groupe = $ginfo['groupe']; $mdp_md5=$ginfo['mdp']; if($lang=='fr-FR'){ echo "
    Bienvenue ".$ginfo['responsable_prenom'].", Team Leader du groupe ".$ginfo['groupe']." (FCC37_".sprintf('%04d',$gid).") en mode ".$mode; echo " ".strftime('%d/%m/%Y %T'); if($mode=='admin'){ echo "
    Il reste ".nb_participants_restant('individuel',$nb_max_indiv,$nb_max_tandem,$nb_max_relai)."/".$nb_max_indiv." places individuelles, ". nb_participants_restant('tandem',$nb_max_indiv,$nb_max_tandem,$nb_max_relai)."/".$nb_max_tandem." tandems, ". nb_participants_restant('relai',$nb_max_indiv,$nb_max_tandem,$nb_max_relai)."/".$nb_max_relai." relais."; } }else{ echo "
    Welcome ".$ginfo['responsable_prenom'].", Team Leader of ".$ginfo['groupe']." (FCC37_".sprintf('%04d',$gid).") mode ".$mode; echo " ".strftime('%d/%m/%Y %T'); if($mode=='admin'){ echo "
    ".nb_participants_restant('individuel',$nb_max_indiv,$nb_max_tandem,$nb_max_relai)."/".$nb_max_indiv." individuals, ". nb_participants_restant('tandem',$nb_max_indiv,$nb_max_tandem,$nb_max_relai)."/".$nb_max_tandem." tandems, ". nb_participants_restant('relai',$nb_max_indiv,$nb_max_tandem,$nb_max_relai)."/".$nb_max_relai." relays registrations remaining."; } } $tableau_participants = tableau_participants($gid, $mdp_md5); // liste des participants if($lang=='fr-FR'){ $sel_part="

    "; }else{ $sel_part="

    "; } if($lang=='fr-FR'){ $frm_gestion_groupe = "

    Modifier les coordonnées de contact et adresse de facturation pour le groupe ".$groupe." :
    Nom du groupe Numéro de rue
    Mot de passe Nom de rue
    Prénom Team Leader Code postal
    Nom Team Leader Ville
    Téléphone Pays
    Email

    "; // formulaire d'ajout de participants $frm_gestion_participants = "

    Ajouter/modifier/supprimer un participant à la team :
    Prénom
    Nom
    Sexe ".$sel_sexe."
    Date Naissance
    ".$sel_jour." ".$sel_mois." ".$sel_annee."
    Téléphone
    Email
    Taille TShirt ".$sel_tshirt."
    Repas ".$sel_repas."
    Temps référence
    ".$sel_tref_minutes." ".$sel_tref_secondes."
    Numéro de rue
    Nom de rue
    Code postal
    Ville
    Pays
    Selection du participant ".$sel_part."

    "; }else{ $frm_gestion_groupe = "

    Update contact information for Team ".$groupe." :
    Team Name Street number
    Password Street name
    Team Leader first name Postal code
    Team Leader last name City
    Phone Country
    Email

    "; // formulaire d'ajout de participants $frm_gestion_participants = "

    Add/updated/delete a user to the team:
    First name
    Last name
    Sex ".$sel_sexe."
    Birth date
    ".$sel_jour." ".$sel_mois." ".$sel_annee."
    Phone
    Email
    TShirt Size ".$sel_tshirt."
    Meal ".$sel_repas."
    Reference time
    ".$sel_tref_minutes." ".$sel_tref_secondes."
    Street number
    Street name
    Postal code
    City
    Country
    Select user ".$sel_part."

    "; } // listing des inscriptions de la team et calcul des couts $q=$db->getQuery(true); $q->select('le_inscription.*') ->from($db->quoteName('le_inscription')) ->where($db->quoteName('gid') . ' = '. $db->quote($gid)) ->order('type, iid'); $db->setQuery($q); $pi = $db->loadAssocList(); // liste ordonnée des inscriptions if($lang=='fr-FR'){ $tableau_courses = " "; }else{ $tableau_courses = "

    Type de course Nom équipe Participants

    "; } $nb_indiv=0; $nb_tandem=0; $nb_relai=0; foreach ($pi as $ikey => $insc) { $liste_insc=" "; if($insc['type']=='individuel'){ $liste_insc.=""; $nom_eq='Indiv '.$insc['iid']; $nom_part = get_nom_participant($insc['pid1']); $nb_indiv++; } if($insc['type']=='tandem'){ $liste_insc.=""; if($insc['equipe']!=""){ $nom_eq=$insc['equipe']; }else{ $nom_eq='Tandem '.$insc['iid']; } $nom_part = get_nom_participant($insc['pid1'])." / ".get_nom_participant($insc['pid2']); $nb_tandem++; } if($insc['type']=='relai'){ $liste_insc.=""; if($insc['equipe']!=""){ $nom_eq=$insc['equipe']; }else{ $nom_eq='Relai '.$insc['iid']; } $nom_part = get_nom_participant($insc['pid1'])." / ".get_nom_participant($insc['pid2'])." / ".get_nom_participant($insc['pid3'])." / ".get_nom_participant($insc['pid4'])." / ".get_nom_participant($insc['pid5']); $nb_relai++; } $liste_insc.=""; $tableau_courses.= ""; } if($lang=='fr-FR'){ $tableau_courses.= "

    Race type Race team name Registered users
    ".$liste_insc." ".$nom_eq." ".$nom_part."



    Cliquez sur le bouton gris de la course pour la supprimer.
    "; }else{ $tableau_courses.= "

    Click the gray buttons to delete race registration.
    "; } // calcul du tarif $nb_repas=nb_repas($gid); $total_sans_pack=(($nb_repas*$cout_repas)+($cout_indiv*$nb_indiv)+($cout_tandem*$nb_tandem)+($cout_relai*$nb_relai)); // gestion des packs équipes $total_min_avec_pack=$total_sans_pack; $nb_pack_equipe=0; $nb_indiv_restant=$nb_indiv; $nb_tandem_restant=$nb_tandem; $nb_relai_restant=$nb_relai; $quota_indiv_ajoutable=0; for($pack_relai=1;$pack_relai<=$nb_relai;$pack_relai++){ // on tente d'ajouter un pack pour chaque relai $nb_relai_restant=$nb_relai-(1*$pack_relai); $nb_indiv_restant=$nb_indiv-(5*$pack_relai); $nb_tandem_restant=$nb_tandem-(0*$pack_relai); if($nb_indiv_restant<0){ $nb_indiv_restant=0; }else{ $quota_indiv_ajoutable=0; } if($nb_tandem_restant<0){ $nb_tandem_restant=0;} if($nb_relai_restant<0){ $nb_relai_restant=0;} $total_avec_pack=($nb_repas*$cout_repas)+($pack_relai*$cout_pack_equipe)+($cout_indiv*$nb_indiv_restant)+($cout_tandem*$nb_tandem_restant)+($cout_relai*$nb_relai_restant); if($total_avec_pack<=$total_min_avec_pack){ // meilleure solution trouvée $total_min_avec_pack=$total_avec_pack; $nb_pack_equipe=$pack_relai; $quota_indiv_ajoutable=abs($nb_indiv-(5*$pack_relai)); } } if($lang=='fr-FR'){ $liste_detail_nb_courses=""; $liste_detail_nb_courses.= "Nombre de repas : $nb_repas * $cout_repas € = ".($cout_repas*$nb_repas)." €
    "; $liste_detail_nb_courses.= "Nombre de courses individuelles : $nb_indiv * $cout_indiv € = ".($cout_indiv*$nb_indiv)." €
    "; $liste_detail_nb_courses.= "Nombre de tandems : $nb_tandem * $cout_tandem € = ".($cout_tandem*$nb_tandem)." €
    "; $liste_detail_nb_courses.= "Nombre de relais : $nb_relai * $cout_relai € = ".($cout_relai*$nb_relai)." €
    "; $liste_detail_nb_courses.= "Nombre de pack spécial équipe (1 relai + 5 individuels) : $nb_pack_equipe * $cout_pack_equipe € = ".($nb_pack_equipe*$cout_pack_equipe)." €
    "; $liste_detail_nb_courses.= "Total sans pack spécial équipe : ".$total_sans_pack." €
    "; if($nb_pack_equipe>0){ $liste_detail_nb_courses.= "Total à payer avec $nb_pack_equipe pack(s) spécial équipe : ".$total_min_avec_pack." €
    "; if($quota_indiv_ajoutable>0){ $liste_detail_nb_courses.= "pour le même prix vous pouvez encore ajouter ".$quota_indiv_ajoutable." course(s) individuelle(s) !
    "; } }else{ $liste_detail_nb_courses.= "Total à payer : ".$total_sans_pack." €
    "; } }else{ $liste_detail_nb_courses=""; $liste_detail_nb_courses.= "Number of Meals : $nb_repas * $cout_repas € = ".($cout_repas*$nb_repas)." €
    "; $liste_detail_nb_courses.= "Number of individual races : $nb_indiv * $cout_indiv € = ".($cout_indiv*$nb_indiv)." €
    "; $liste_detail_nb_courses.= "Number of tandem races : $nb_tandem * $cout_tandem € = ".($cout_tandem*$nb_tandem)." €
    "; $liste_detail_nb_courses.= "Number of relay races : $nb_relai * $cout_relai € = ".($cout_relai*$nb_relai)." €
    "; $liste_detail_nb_courses.= "Nombre Special Team Packs (1 relay + 5 individuals) : $nb_pack_equipe * $cout_pack_equipe € = ".($nb_pack_equipe*$cout_pack_equipe)." €
    "; $liste_detail_nb_courses.= "Total without special team pack : ".$total_sans_pack." €
    "; if($nb_pack_equipe>0){ $liste_detail_nb_courses.= "Total to pay with $nb_pack_equipe special team pack(s) : ".$total_min_avec_pack." €
    "; if($quota_indiv_ajoutable>0){ $liste_detail_nb_courses.= "you can still add ".$quota_indiv_ajoutable." individual(s) race(s) for the same price !
    "; } }else{ $liste_detail_nb_courses.= "Total to pay : ".$total_sans_pack." €
    "; } } // encryptage du tarif pour éviter la fraude $frm_gestion_paiement=""; $tarif=$total_min_avec_pack; $enc_tarif = md5("FCC37_".$total_min_avec_pack); if($mode!='consultation'){ if($lang=='fr-FR'){ $frm_gestion_paiement= "

    Montant final à régler:
    $total_min_avec_pack €

    Merci d'indiquer le code suivant dans votre virement bancaire:
    FCC37_".sprintf('%04d',$gid)."

    "; }else{ $frm_gestion_paiement= "

    Total to pay (Euros):
    $total_min_avec_pack €

    Please use the following code in your wire transfer label:
    FCC37_".sprintf('%04d',$gid)."

    "; } if($mode=='admin'){ if($lang=='fr-FR'){ $frm_gestion_paiement.= "


    "; }else{ $frm_gestion_paiement.= "


    "; } } }else{ if($lang=='fr-FR'){ $frm_gestion_paiement= "

    Montant final à régler:
    $total_min_avec_pack €

    Merci d'indiquer le code suivant dans votre virement bancaire:
    FCC37_".sprintf('%04d',$gid)."

    Etat de l'inscription :
    $etat_compta"; }else{ $frm_gestion_paiement= "

    Total to pay (Euros):
    $total_min_avec_pack €

    Please use the following code in your wire transfer label:
    FCC37_".sprintf('%04d',$gid)."

    Regsitration status :
    $etat_compta"; } } // LE RIB if($lang=='fr-FR'){ $frm_gestion_paiement.= "


    RIB PDF
    Titulaire:Union Departementale Sapeurs Pompiers 37
    IBAN : $iban
    BIC : $bic
    RIB : $rib
    Banque : $banque
    "; }else{ $frm_gestion_paiement.= "


    RIB PDF
    Owner:Union Departementale Sapeurs Pompiers 37
    IBAN : $iban
    BIC : $bic
    RIB : $rib
    Bank : $banque
    "; } // formulaire d'ajout de competitions $frm_course_indiv=""; $frm_course_tandem=""; $frm_course_relai=""; $sel_part1=""; $sel_part2=""; $sel_part3=""; $sel_part4=""; $sel_part5=""; // individuel $q=$db->getQuery(true); // proposer uniquement les compétiteur non déjà inscrit en individuel $sel_part1=""; if($lang=='fr-FR'){ $frm_course_indiv.="

    Ajouter une inscription individuelle à la team : ".$cout_indiv."€
    Selection du participant ".$sel_part1."

    "; }else{ $frm_course_indiv.="

    Add an individual race to the team : ".$cout_indiv."€
    Select user ".$sel_part1."

    "; } // tandem $q=$db->getQuery(true); // proposer uniquement les compétiteurs non déjà inscrit en tandem comme participant $liste_part=""; $q->select('le_participant.*') ->from($db->quoteName('le_participant')) ->where($db->quoteName('gid') . ' = '. $db->quote($gid) . " AND " . $db->quoteName('pid') . " NOT IN (SELECT pid1 FROM le_inscription WHERE gid=".$gid." AND type='tandem' UNION SELECT pid2 FROM le_inscription WHERE gid=".$gid." AND type='tandem') " ) ->order('pid ASC'); $db->setQuery($q); $pp = $db->loadAssocList(); // liste ordonnée des participants foreach ($pp as $ikey => $p) { if($pid==$p['pid']){ $selected=" selected "; }else{ $selected=""; } $liste_part.="".$p['nom']." ".$p['prenom'].""; } $sel_part1=""; // proposer tous les compétiteurs comme 2eme participant $q=$db->getQuery(true); $liste_part=""; $q->select('le_participant.*') ->from($db->quoteName('le_participant')) ->where($db->quoteName('gid') . ' = '. $db->quote($gid) ) ->order('pid ASC'); $db->setQuery($q); $pp = $db->loadAssocList(); // liste ordonnée des participants foreach ($pp as $ikey => $p) { if($pid==$p['pid']){ $selected=" selected "; }else{ $selected=""; } $liste_part.="".$p['nom']." ".$p['prenom'].""; } $sel_part2=""; // tandem if($lang=='fr-FR'){ $frm_course_tandem.= "

    Ajouter une inscription tandem à la team : ".$cout_tandem."€
    Nom équipe tandem
    Selection du participant 1 ".$sel_part1."
    Selection du participant 2 ".$sel_part2."

    "; }else{ $frm_course_tandem.= "

    Add a tandem race to the team : ".$cout_tandem."€
    Tandem team name
    User 1 ".$sel_part1."
    User 2 ".$sel_part2."

    "; } // relai // proposer uniquement les compétiteurs non déjà inscrit en relai comme participants $q=$db->getQuery(true); $liste_part=""; $q->select('le_participant.*') ->from($db->quoteName('le_participant')) ->where($db->quoteName('gid') . ' = '. $db->quote($gid) . " AND " . $db->quoteName('pid') . " NOT IN ( SELECT pid1 FROM le_inscription WHERE gid=".$db->quote($gid)." AND type='relai' UNION SELECT pid2 FROM le_inscription WHERE gid=".$db->quote($gid)." AND type='relai' UNION SELECT pid3 FROM le_inscription WHERE gid=".$db->quote($gid)." AND type='relai' UNION SELECT pid4 FROM le_inscription WHERE gid=".$db->quote($gid)." AND type='relai' UNION SELECT pid5 FROM le_inscription WHERE gid=".$db->quote($gid)." AND type='relai' ) " ) ->order('pid ASC'); $db->setQuery($q); $pp = $db->loadAssocList(); // liste ordonnée des participants foreach ($pp as $ikey => $p) { if($pid==$p['pid']){ $selected=" selected "; }else{ $selected=""; } $liste_part.="".$p['nom']." ".$p['prenom'].""; } $sel_part1=""; $sel_part2=""; $sel_part3=""; $sel_part4=""; $sel_part5=""; if($lang=='fr-FR'){ $frm_course_relai.= "

    Ajouter une inscription relai à la team : ".$cout_relai."€
    Nom équipe relai
    Selection du participant 1 ".$sel_part1."
    Selection du participant 2 ".$sel_part2."
    Selection du participant 3 ".$sel_part3."
    Selection du participant 4 ".$sel_part4."
    Selection du participant 5 ".$sel_part5."

    "; }else{ $frm_course_relai.= "

    Add a relay race to the team : ".$cout_relai."€
    Relay team name
    User 1 ".$sel_part1."
    User 2 ".$sel_part2."
    User 3 ".$sel_part3."
    User 4 ".$sel_part4."
    User 5 ".$sel_part5."

    "; } // inscription à des courses impossibles si la date n'est pas ouverte if(!$ouvert && $lang=='fr-FR' && $mode!='admin'){ $frm_course_indiv="Inscriptions individuelles fermées
    Ouverture des inscriptions le ".strftime('%d/%m/%Y %T',$ouverture)."
    "; $frm_course_tandem="Inscriptions tandems fermées
    Ouverture des inscriptions le ".strftime('%d/%m/%Y %T',$ouverture)."
    "; $frm_course_relai="Inscriptions relais fermées
    Ouverture des inscriptions le ".strftime('%d/%m/%Y %T',$ouverture)."
    "; $frm_gestion_paiement=""; } if(!$ouvert && $lang!='fr-FR' && $mode!='admin'){ $frm_course_indiv="Individual registration close
    Registration will open on ".strftime('%d/%m/%Y %T',$ouverture)."
    "; $frm_course_tandem="Tandem registration close
    Registration will open on ".strftime('%d/%m/%Y %T',$ouverture)."
    "; $frm_course_relai="Relay registration close
    Registration will open on ".strftime('%d/%m/%Y %T',$ouverture)."
    "; $frm_gestion_paiement=""; } // tableau des différentes zones d'information de la page de gestion de groupes if($lang=='fr-FR'){ echo "

       
    ".$frm_gestion_groupe."
    ETAPE 1 : Saisissez tous les membres de votre équipe
    Liste des participants Gestion des participants
    ".$tableau_participants." ".$frm_gestion_participants."
    ETAPE 2 : Constituez vos équipes de courses
    Liste des courses Gestion des courses
    ".$tableau_courses." ".$frm_course_indiv."
    ".$frm_course_tandem."
    ".$frm_course_relai."
    ETAPE 3 : Finalisez et envoyez votre formulaire pour valider votre inscription
    Nombres de courses totales Validation de l'inscription
    ".$liste_detail_nb_courses." ".$frm_gestion_paiement."

    "; }else{ echo "

       
    ".$frm_gestion_groupe."
    STEP 1 : Add all your team competitors
    List of the team competitors Competitors management
    ".$tableau_participants." ".$frm_gestion_participants."
    STEP 2 : Build your racing teams
    List of the races Races management
    ".$tableau_courses." ".$frm_course_indiv."
    ".$frm_course_tandem."
    ".$frm_course_relai."
    STEP 3 : Validate and send your registration
    Total number of races Registration validation
    ".$liste_detail_nb_courses." ".$frm_gestion_paiement."

    "; } } // fin du mode gestion de groupe ?> {/source}

    Please publish modules in offcanvas position.