function generer_match($nb_equipe) { $tableau_equipe = generer_tableau($nb_equipe); if ($nb_equipe & 1) { // Cas impair : on rajoute l'equipe 0 inexistante $tableau_equipe[$nb_equipe++] = 0; } $nb_journees = $nb_equipe - 1; for ($jour = 1; $jour <= $nb_journees; $jour++) { $tableau_equipe = tourne($tableau_equipe, $nb_equipe); $result[$jour] = generer_journee($tableau_equipe, $nb_equipe); } return $result; }
/** * Génère le calendrier, le select, la légende et les styles pour les congés * * @param int $id : l'ID du collaborateur dont on désire les congés * @return array : contient chaque morceau généré : style, select, recap et calendrier */ function generer_calendrier($id, $mois, $annee) { $retour = array(); /* * préparation de la liste des types d'absence, des styles et du select et du tableau */ $type_absences = array(); $result_type_absence = $GLOBALS['connexion']->query("SELECT * FROM TYPE_ABSENCE"); $retour['select'] = 'Choix du type de congés<br /><select name="type">'; $retour['style'] = ''; $retour['recap'] = '<table border="1"><thead><tr><th>type</th><th style="width:70px;">Validé</th><th style="width:70px;">Demandé</th></tr></thead><tbody>'; while ($row = $result_type_absence->fetch_assoc()) { $nom = str_replace(' ', '', $row['TYA_LIBELLE']); $type_absences[$row['TYA_NO']] = array('nom' => $nom, 'valide' => $row['TYA_COULEUR'], 'demande' => $row['TYA_COULEUR_DEM']); $retour['style'] .= ecrire_style($nom, $row['TYA_COULEUR_DEM']); $retour['style'] .= ecrire_style($nom . '-valid', $row['TYA_COULEUR']); $retour['select'] .= option($nom, $row['TYA_LIBELLE']); $retour['recap'] .= ajout_row_conge($row['TYA_LIBELLE'], $nom); } $retour['select'] .= '</select>'; $retour['recap'] .= '</tbody></table>'; /* * récupération de la liste des congés validés ou non pour la période donnée */ $conges = array(); $query = "SELECT TYA_NO, ABS_JOUR, ABS_NBH, ABS_VALIDATION FROM ABSENCE WHERE ABS_MOIS = '" . $mois . "' AND ABS_ANNEE = '" . $annee . "' AND COL_NO = '" . $id . "' AND ABS_ETAT != 3"; $result = $GLOBALS['connexion']->query($query); while ($row = $result->fetch_assoc()) { $conges[$row['ABS_JOUR']] = $type_absences[$row['TYA_NO']]['nom']; $conges[$row['ABS_JOUR']] .= $row['ABS_VALIDATION'] ? '-valid' : ''; $conges[$row['ABS_JOUR']] .= $row['ABS_NBH'] == 1 ? '' : '-b'; } /* * préparation du tableau des jours */ $semaine = 1; //nombre de semaine dans un mois $table = array(); //table du mois $nbjoursMois = nbjoursMois($mois, $annee); //connaitre le nb de jours dans le mois $jour = jour_semaine($mois, 1, $annee); //connaitre le jour du premier du mois $feries = getFeriesAnnee($annee); for ($i = 1; $i <= $nbjoursMois; $i++) { switch (true) { case isset($conges[$i]): $table[$semaine][$jour]['classe'] = $conges[$i]; $table[$semaine][$jour]['classe'] .= strpos($conges[$i], 'valid') === false ? ' clickable' : ''; break; case in_array(mktime(0, 0, 0, $mois, $i, $annee), $feries): $table[$semaine][$jour]['classe'] = 'feries'; break; case $jour == 6: $table[$semaine][$jour]['classe'] = 'samedi'; break; case $jour == 7: $table[$semaine][$jour]['classe'] = 'dimanche'; break; default: $table[$semaine][$jour]['classe'] = 'clickable'; break; } $table[$semaine][$jour]['valeur'] = $i; if ($jour == 7) { $jour = 0; $semaine++; } $jour++; } $retour['calendrier'] = generer_tableau($table); return $retour; }