function affichage_calendrier($year, $mois, $first_jour, $timestamp_today, $printable, $selected, $tab_type_absence, $select_groupe, $DEBUG = FALSE) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); global $content; // recup du tableau des types de conges (seulement les conges) $tab_type_cong = recup_tableau_types_conges($DEBUG); if ($_SESSION['config']['gestion_conges_exceptionnels']) { $tab_type_cong_excep = recup_tableau_types_conges_exceptionnels($DEBUG); } /*****************************************/ /** Récupération des users à afficher: **/ $tab_all_users = recup_tableau_des_users_a_afficher($select_groupe, $DEBUG); if ($_SESSION['config']['gestion_groupes'] && $select_groupe != 0) { $tab_logins = array_keys($tab_all_users); $tab_logins = array_map("SQL::quote", $tab_logins); } else { $tab_logins = false; } /** FIN de Récupération des users à afficher: **/ /************************************************/ /*************************/ /** AFFICHAGE TABLEAU **/ if ($printable != 1) { // si version ecran : $content .= "<table cellpadding=\"1\" class=\"tablo-cal\" width=\"80%\">\n"; } else { // si version imprimable : $content .= "<table cellpadding=\"1\" cellspacing=\"0\" border=\"1\" width=\"80%\">\n"; } /*************************************/ // affichage premiere ligne (semaines) $content .= "<tr align=\"center\">\n"; // affichage nom prenom quotité $nb_colonnes = 3; $content .= "\t<td class=\"cal-user\" rowspan=\"2\">" . _('divers_nom_maj') . "</td>\n\n"; $content .= "\t<td class=\"cal-user\" rowspan=\"2\">" . _('divers_prenom_maj') . "</td>\n\n"; $content .= "\t<td class=\"cal-user\" rowspan=\"2\">%</td>"; // affichage des semaines // ... du premier jour voulu à la fin du mois for ($j = $first_jour; checkdate($mois, $j, $year); $j++) { $j_timestamp = mktime(0, 0, 0, $mois, $j, $year); $j_num_semaine = date_fr("W", $j_timestamp); // attention date_fr("w", $j_timestamp) renvoit 0 pour dimanche ! if (date_fr("w", $j_timestamp) == 0) { $j_num_jour_semaine = 7; } else { $j_num_jour_semaine = date_fr("w", $j_timestamp); } //DEBUG : $content .= "<td class=\"cal-day\" >$j_num_jour_semaine / $j_num_semaine</td>"; if ($j == $first_jour) { $colspan = 8 - $j_num_jour_semaine; $content .= "<td class=\"cal-day-first\" colspan=\"{$colspan}\" >" . _('divers_semaine') . " {$j_num_semaine}</td>\n"; } else { // on affiche que les lundi if ($j_num_jour_semaine == 1) { $content .= "<td class=\"cal-day\" colspan=\"7\" >" . _('divers_semaine') . " {$j_num_semaine}</td>\n"; } } } // ... si le premier jour voulu n'etait pas le premier du mois, on va jusqu'à la meme date du mois suivant. if ($first_jour != 1) { for ($j = 1; $j < $first_jour; $j++) { if ($mois == 12) { $mois_select = 1; $year_select = $year + 1; } else { $mois_select = $mois + 1; $year_select = $year; } $j_timestamp = mktime(0, 0, 0, $mois_select, $j, $year_select); $j_num_jour_semaine = date_fr("w", $j_timestamp); $j_num_semaine = date_fr("W", $j_timestamp); // attention date_fr("w", $j_timestamp) renvoit 0 pour dimanche ! if (date_fr("w", $j_timestamp) == 0) { $j_num_jour_semaine = 7; } else { $j_num_jour_semaine = date_fr("w", $j_timestamp); } //DEBUG : $content .= "<td class=\"cal-day\" >$j_num_jour_semaine / $j_num_semaine</td>"; if ($j == $first_jour) { $colspan = 8 - $j_num_jour_semaine; $content .= "<td class=\"cal-day-first\" colspan=\"{$colspan}\" >" . _('divers_semaine') . " {$j_num_semaine}</td>\n"; } else { // on affiche que les lundi if ($j_num_jour_semaine == 1) { $content .= "<td class=\"cal-day\" colspan=\"7\" >" . _('divers_semaine') . " {$j_num_semaine}</td>\n"; } } } } // if( $_SESSION['config']['affiche_soldes_calendrier'] || is_resp($_SESSION['userlogin']) || is_hr($_SESSION['userlogin']) || is_admin($_SESSION['userlogin']) ) // { // // affichage des libellé des conges // foreach($tab_type_cong as $id => $libelle) // { // $content .= "<td class=\"cal-user\" rowspan=\"2\">". _('divers_solde') ." $libelle</td>\n"; // $nb_colonnes=$nb_colonnes+1; // } // // // if ($_SESSION['config']['gestion_conges_exceptionnels']) // { // foreach($tab_type_cong_excep as $id => $libelle) // { // $content .= "<td class=\"cal-user\" rowspan=\"2\">". _('divers_solde') ." $libelle</td>\n"; // $nb_colonnes=$nb_colonnes+1; // } // } // } $content .= "</tr>\n\n"; /*************************************/ // affichage 2ieme ligne (dates) $content .= "<tr align=\"center\">\n"; // on affiche pas car on a fait de "rowspan" à la ligne supérieure // affichage d'une cellule vide sous les titres //$content .= " <td class=\"cal-user\" colspan=\"$nb_colonnes\"> </td>\n"; //dernier jour = dimanche ? $last = 7; // affichage des dates // ... du premier jour voulu à la fin du mois for ($j = $first_jour; checkdate($mois, $j, $year); $j++) { $j_timestamp = mktime(0, 0, 0, $mois, $j, $year); $j_name = date_fr("D", $j_timestamp); $last = date("N", $j_timestamp); $j_date_fr = date_fr("d-m-Y", $j_timestamp); $j_num_semaine = date_fr("W", $j_timestamp); $td_second_class = get_td_class_of_the_day_in_the_week($j_timestamp); // on affiche en gras le jour d'aujourd'hui if ($j_timestamp == $timestamp_today) { $text_titre_date = "<b>{$j_name} <br>{$j}</b>"; } else { $text_titre_date = "{$j_name} <br>{$j}"; } // on regarde si c'est la premiere cellule ou non if ($j == $first_jour) { $cal_day = "cal-day-first"; } else { $cal_day = "cal-day"; } // on affiche le titre -date (la date du jour) $content .= "<td class=\"{$cal_day} {$td_second_class}\" title=\"{$j_date_fr} / " . _('divers_semaine') . " {$j_num_semaine}\">{$text_titre_date}</td>"; } // ... si le premier jour voulu n'etait pas le premier du mois, on va jusqu'à la meme date du mois suivant. if ($first_jour != 1) { for ($j = 1; $j < $first_jour; $j++) { if ($mois == 12) { $mois_select = 1; $year_select = $year + 1; } else { $mois_select = $mois + 1; $year_select = $year; } $j_timestamp = mktime(0, 0, 0, $mois_select, $j, $year_select); $last = date("N", $j_timestamp); $j_name = date_fr("D", $j_timestamp); $j_date_fr = date_fr("d-m-Y", $j_timestamp); $j_num_semaine = date_fr("W", $j_timestamp); $td_second_class = get_td_class_of_the_day_in_the_week($j_timestamp); // on affiche en gras le jour d'aujourd'hui if ($j_timestamp == $timestamp_today) { $content .= "<td class=\"cal-day {$td_second_class}\" title=\"{$j_date_fr} / " . _('divers_semaine') . " {$j_num_semaine}\"><b>{$j_name} {$j}/{$mois_select}</b></td>"; } else { $content .= "<td class=\"cal-day {$td_second_class}\" title=\"{$j_date_fr} / " . _('divers_semaine') . " {$j_num_semaine}\">{$j_name} {$j}/{$mois_select}</td>"; } } } if ($last < 7) { for ($i = $last; $i < 7; $i++) { $content .= '<td></td>'; } } $content .= "</tr>\n"; /**************************************************/ /**************************************************/ /* recup des info de chaque jour pour tous les users et stockage dans 1 tableau de tableaux */ $tab_calendrier = recup_tableau_periodes($mois, $first_jour, $year, $tab_logins); /**************************************************/ /* recup des rtt de chaque jour pour tous les users et stockage dans 2 tableaux de tableaux */ /**************************************************/ //$tab_rtt_echange //tableau indexé dont la clé est la date sous forme yyyy-mm-dd //il contient pour chaque clé (chaque jour): un tableau indéxé ($tab_jour_rtt_echange) (clé= login) // qui contient lui même un tableau ($tab_echange) contenant les infos des echanges de rtt pour ce // jour et ce login (valeur du matin + valeur de l'apres midi ('Y' si rtt, 'N' sinon) ) //$tab_rtt_planifiees=array(); //tableau indexé dont la clé est le login_user // il contient pour chaque clé login : un tableau ($tab_user_grille) indexé dont la // clé est la date_fin_grille. // qui contient lui meme pour chaque clé : un tableau ($tab_user_rtt) qui contient enfin // les infos pour le matin et l'après midi ('Y' si rtt, 'N' sinon) sur 2 semaines // ( du sem_imp_lu_am au sem_p_ve_pm ) + la date de début et de fin de la grille $tab_rtt_echange = recup_tableau_rtt_echange($mois, $first_jour, $year, $tab_logins); $tab_rtt_planifiees = recup_tableau_rtt_planifiees($mois, $first_jour, $year, $tab_logins); $tab_cong_users = recup_tableau_conges_for_users(false, $tab_logins); /**************************************************/ /**************************************************/ // affichage lignes suivantes (users) // pour chaque user : foreach ($tab_all_users as $sql_login => $tab_current_user) { $sql_nom = $tab_current_user["nom"]; $sql_prenom = $tab_current_user["prenom"]; $sql_quotite = $tab_current_user["quotite"]; // nb de jour pris dans le mois en cours (pour un type d'absence donné) $nb_jours_current_month = array(); // recup dans un tableau de tableaux les nb et soldes de conges d'un user (indicé par id de conges) $tab_cong_user = $tab_cong_users[$sql_login]; if ($printable == 1) { $content .= "<tr align=\"center\" class=\"cal-ligne-user-edit\">\n"; } elseif ($selected == $sql_login) { $content .= "<tr align=\"center\" class=\"cal-ligne-user-selected\">\n"; } else { $content .= "<tr align=\"center\" class=\"cal-ligne-user\">\n"; } if ($printable == 1) { $text_nom = "<b>{$sql_nom}</b>"; } else { $text_nom = "<a href=\"{$PHP_SELF}?session={$session}&selected={$sql_login}&year={$year}&mois={$mois}&first_jour={$first_jour}&printable={$printable}&select_groupe={$select_groupe}\" method=\"GET\">{$sql_nom}</a>"; } // affichage nom prenom quotité $content .= "<td class=\"cal-user\">{$text_nom}</td><td class=\"cal-user\">{$sql_prenom}</td><td class=\"cal-user\">{$sql_quotite}%</td>"; // pour chaque jour : (du premier jour demandé à la fin du mois ...) for ($j = $first_jour; checkdate($mois, $j, $year); $j++) { $j_timestamp = mktime(0, 0, 0, $mois, $j, $year); $td_second_class = get_td_class_of_the_day_in_the_week($j_timestamp); $mois_select = $mois; $year_select = $year; // affichage de la cellule correspondant au jour et au user considéré $t_nb_j_type_abs = affiche_cellule_jour_user($sql_login, $j_timestamp, $year, $mois_select, $j, $td_second_class, $printable, $tab_calendrier, $tab_rtt_echange, $tab_rtt_planifiees, $tab_type_absence); foreach ($t_nb_j_type_abs as $id_type_abs => $nb_j_pris) { if (isset($nb_jours_current_month[$id_type_abs])) { $nb_jours_current_month[$id_type_abs] += $nb_j_pris; } else { $nb_jours_current_month[$id_type_abs] = $nb_j_pris; } } } // si le premier jour demandé n'est pas le 1ier du mois , on va jusqu'à la meme date le mois suivant : if ($first_jour != 1) { // pour chaque jour jusqu'a la date voulue : (meme num de jour le mois suivant) for ($j = 1; $j < $first_jour; $j++) { $j_timestamp = mktime(0, 0, 0, $mois + 1, $j, $year); $td_second_class = get_td_class_of_the_day_in_the_week($j_timestamp); if ($mois == 12) { $mois_select = 1; $year_select = $year + 1; } else { $mois_select = $mois + 1; $year_select = $year; } // affichage de la cellule correspondant au jour et au user considéré $t_nb_j_type_abs = affiche_cellule_jour_user($sql_login, $j_timestamp, $year, $mois_select, $j, $td_second_class, $printable, $tab_calendrier, $tab_rtt_echange, $tab_rtt_planifiees, $tab_type_absence); foreach ($t_nb_j_type_abs as $id_type_abs => $nb_j_pris) { if (isset($nb_jours_current_month[$id_type_abs])) { $nb_jours_current_month[$id_type_abs] += $nb_j_pris; } else { $nb_jours_current_month[$id_type_abs] = $nb_j_pris; } } } } if ($last < 7) { for ($i = $last; $i < 7; $i++) { $content .= '<td></td>'; } } // if( $_SESSION['config']['affiche_soldes_calendrier'] || is_resp($_SESSION['userlogin']) || is_hr($_SESSION['userlogin']) || is_admin($_SESSION['userlogin']) ) // { // // affichage des divers soldes // foreach($tab_cong_user as $id => $tab_conges) // { // // si des jours ont été pris durant le mois affiché, on indique combien : // if((isset($nb_jours_current_month[$id])) && ($_SESSION['config']['affiche_jours_current_month_calendrier']) ) // //$content .= "<td class=\"cal-user\">"./*$tab_conges['solde'].*/" ("./*$nb_jours_current_month[$id].*/")</td>"; // else // //$content .= "<td class=\"cal-user\">"./*$tab_conges['solde'].*/"</td>"; // } // } $content .= "\n</tr>\n"; } $content .= "</table>\n\n"; }
public static function affichage_calendrier($year, $mois, $first_jour, $timestamp_today, $printable, $selected, $tab_type_absence, $select_groupe) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); $nb_day = date('t', mktime(1, 1, 1, $mois, 1, $year)); $return = ''; // recup du tableau des types de conges (seulement les conges) $tab_type_cong = recup_tableau_types_conges(); if ($_SESSION['config']['gestion_conges_exceptionnels']) { $tab_type_cong_excep = recup_tableau_types_conges_exceptionnels(); } /*****************************************/ /** Récupération des users à afficher: **/ $tab_all_users = \calendrier\Fonctions::recup_tableau_des_users_a_afficher($select_groupe); if ($_SESSION['config']['gestion_groupes'] && $select_groupe != 0) { $tab_logins = array_keys($tab_all_users); $tab_logins = array_map("\\includes\\SQL::quote", $tab_logins); } else { $tab_logins = false; } /** FIN de Récupération des users à afficher: **/ /************************************************/ /*************************/ /** AFFICHAGE TABLEAU **/ if ($printable != 1) { // si version ecran : $return .= '<table class="calendar table table-responsive table-bordered table-stripped">'; } else { // si version imprimable : $return .= '<table>'; } $return .= '<tr><th colspan="2"></th><th colspan="' . $nb_day . '">' . _('divers_semaine') . '</th><th colspan="8">Solde</th></tr>'; /*************************************/ // affichage premiere ligne (semaines) $return .= '<tr align="center">'; // affichage nom prenom quotité $nb_colonnes = 3; $return .= '<th rowspan="2">Utilisateur</th>'; $return .= '<th rowspan="2">Quotité</th>'; // affichage des semaines // ... du premier jour voulu à la fin du mois for ($j = $first_jour; checkdate($mois, $j, $year); $j++) { $j_timestamp = mktime(0, 0, 0, $mois, $j, $year); $j_num_semaine = date_fr("W", $j_timestamp); // attention date_fr("w", $j_timestamp) renvoit 0 pour dimanche ! if (date_fr("w", $j_timestamp) == 0) { $j_num_jour_semaine = 7; } else { $j_num_jour_semaine = date_fr("w", $j_timestamp); } if ($j == $first_jour) { $colspan = 8 - $j_num_jour_semaine; $return .= '<th class="cal-day-first" colspan="' . $colspan . '" >' . $j_num_semaine . '</th>'; } else { $month_rest = $nb_day - $j; $colspan = 7; if ($month_rest < 6) { $colspan = $month_rest + 1; } // on affiche que les lundi if ($j_num_jour_semaine == 1) { $return .= '<th class="cal-day" colspan="' . $colspan . '" >' . $j_num_semaine . '</th>'; } } } // ... si le premier jour voulu n'etait pas le premier du mois, on va jusqu'à la meme date du mois suivant. if ($first_jour != 1) { for ($j = 1; $j < $first_jour; $j++) { if ($mois == 12) { $mois_select = 1; $year_select = $year + 1; } else { $mois_select = $mois + 1; $year_select = $year; } $j_timestamp = mktime(0, 0, 0, $mois_select, $j, $year_select); $j_num_jour_semaine = date_fr("w", $j_timestamp); $j_num_semaine = date_fr("W", $j_timestamp); // attention date_fr("w", $j_timestamp) renvoit 0 pour dimanche ! if (date_fr("w", $j_timestamp) == 0) { $j_num_jour_semaine = 7; } else { $j_num_jour_semaine = date_fr("w", $j_timestamp); } if ($j == $first_jour) { $colspan = 8 - $j_num_jour_semaine; $return .= '<td class="cal-day-first" colspan="' . $colspan . '">' . $j_num_semaine . '</td>'; } else { // on affiche que les lundi if ($j_num_jour_semaine == 1) { $return .= '<td class="cal-day" colspan="7" >' . $j_num_semaine . '</td>'; } } } } if ($_SESSION['config']['affiche_soldes_calendrier'] || is_resp($_SESSION['userlogin']) || is_hr($_SESSION['userlogin']) || is_admin($_SESSION['userlogin'])) { // affichage des libellé des conges $abs_libelle = recup_tableau_tout_types_abs(); foreach ($tab_type_cong as $id => $libelle) { $return .= '<th rowspan="2">' . $abs_libelle[$id]['short_libelle'] . '</th>'; $nb_colonnes = $nb_colonnes + 1; } if ($_SESSION['config']['gestion_conges_exceptionnels']) { foreach ($tab_type_cong_excep as $id => $libelle) { $return .= '<th rowspan="2">' . $abs_libelle[$id]['short_libelle'] . '</th>'; $nb_colonnes = $nb_colonnes + 1; } } } $return .= '</tr>'; /*************************************/ // affichage 2ieme ligne (dates) $return .= '<tr>'; // on affiche pas car on a fait de "rowspan" à la ligne supérieure // affichage d'une cellule vide sous les titres //echo " <td class=\"cal-user\" colspan=\"$nb_colonnes\"> </td>\n"; //dernier jour = dimanche ? $last = 7; // affichage des dates // ... du premier jour voulu à la fin du mois for ($j = $first_jour; checkdate($mois, $j, $year); $j++) { $j_timestamp = mktime(0, 0, 0, $mois, $j, $year); // $j_name=date_fr("D", $j_timestamp); $j_name = substr(date_fr("D", $j_timestamp), 0, 1); $last = date("N", $j_timestamp); $j_date_fr = date_fr("d-m-Y", $j_timestamp); $j_num_semaine = date_fr("W", $j_timestamp); $td_second_class = get_td_class_of_the_day_in_the_week($j_timestamp); // on affiche en gras le jour d'aujourd'hui if ($j_timestamp == $timestamp_today) { $text_titre_date = "<b>{$j_name} <br/>{$j}</b>"; } else { $text_titre_date = "{$j_name} <br/>{$j}"; } // on regarde si c'est la premiere cellule ou non if ($j == $first_jour) { $cal_day = "cal-day-first"; } else { $cal_day = "cal-day"; } // on affiche le titre -date (la date du jour) $return .= '<td class="' . $cal_day . ' ' . $td_second_class . '" title="' . $j_date_fr . ' / ' . _('divers_semaine') . ' ' . $j_num_semaine . '">' . $text_titre_date . '</td>'; } // ... si le premier jour voulu n'etait pas le premier du mois, on va jusqu'à la meme date du mois suivant. if ($first_jour != 1) { for ($j = 1; $j < $first_jour; $j++) { if ($mois == 12) { $mois_select = 1; $year_select = $year + 1; } else { $mois_select = $mois + 1; $year_select = $year; } $j_timestamp = mktime(0, 0, 0, $mois_select, $j, $year_select); $last = date("N", $j_timestamp); // $j_name=date_fr("D", $j_timestamp); $j_name = substr(date_fr("D", $j_timestamp), 0, 1); $j_date_fr = date_fr("d-m-Y", $j_timestamp); $j_num_semaine = date_fr("W", $j_timestamp); $td_second_class = get_td_class_of_the_day_in_the_week($j_timestamp); // on affiche en gras le jour d'aujourd'hui if ($j_timestamp == $timestamp_today) { $return .= '<td class="cal-day ' . $td_second_class . '" title="' . $j_date_fr . ' / ' . _('divers_semaine') . ' ' . $j_num_semaine . '"><strong>' . $j_name . ' ' . $j . '</strong></td>'; // echo "<td class=\"cal-day $td_second_class\" title=\"$j_date_fr / ". _('divers_semaine') ." $j_num_semaine\"><b>$j_name $j/$mois_select</b></td>"; } else { $return .= '<td class="cal-day ' . $td_second_class . '" title="' . $j_date_fr . ' / ' . _('divers_semaine') . ' ' . $j_num_semaine . '">' . $j_name . ' ' . $j . '</td>'; // echo "<td class=\"cal-day $td_second_class\" title=\"$j_date_fr / ". _('divers_semaine') ." $j_num_semaine\">$j_name $j/$mois_select</td>"; } } } // if ($last < 7) // for ($i = $last; $i <7; $i ++) // echo '<td></td>'; // echo "</tr>\n"; /**************************************************/ /**************************************************/ /* recup des info de chaque jour pour tous les users et stockage dans 1 tableau de tableaux */ $tab_calendrier = \calendrier\Fonctions::recup_tableau_periodes($mois, $first_jour, $year, $tab_logins); /**************************************************/ /* recup des rtt de chaque jour pour tous les users et stockage dans 2 tableaux de tableaux */ /**************************************************/ //$tab_rtt_echange //tableau indexé dont la clé est la date sous forme yyyy-mm-dd //il contient pour chaque clé (chaque jour): un tableau indéxé ($tab_jour_rtt_echange) (clé= login) // qui contient lui même un tableau ($tab_echange) contenant les infos des echanges de rtt pour ce // jour et ce login (valeur du matin + valeur de l'apres midi ('Y' si rtt, 'N' sinon) ) //$tab_rtt_planifiees=array(); //tableau indexé dont la clé est le login_user // il contient pour chaque clé login : un tableau ($tab_user_grille) indexé dont la // clé est la date_fin_grille. // qui contient lui meme pour chaque clé : un tableau ($tab_user_rtt) qui contient enfin // les infos pour le matin et l'après midi ('Y' si rtt, 'N' sinon) sur 2 semaines // ( du sem_imp_lu_am au sem_p_ve_pm ) + la date de début et de fin de la grille $tab_rtt_echange = recup_tableau_rtt_echange($mois, $first_jour, $year, $tab_logins); $tab_rtt_planifiees = recup_tableau_rtt_planifiees($mois, $first_jour, $year, $tab_logins); $tab_cong_users = recup_tableau_conges_for_users(false, $tab_logins); /**************************************************/ /**************************************************/ // affichage lignes suivantes (users) // pour chaque user : foreach ($tab_all_users as $sql_login => $tab_current_user) { $sql_nom = $tab_current_user["nom"]; $sql_prenom = $tab_current_user["prenom"]; $sql_quotite = $tab_current_user["quotite"]; // nb de jour pris dans le mois en cours (pour un type d'absence donné) $nb_jours_current_month = array(); // recup dans un tableau de tableaux les nb et soldes de conges d'un user (indicé par id de conges) $tab_cong_user = isset($tab_cong_users[$sql_login]) ? $tab_cong_users[$sql_login] : []; if ($printable == 1) { $return .= '<tr align="center" class="cal-ligne-user-edit">'; } elseif ($selected == $sql_login) { $return .= '<tr align="center" class="cal-ligne-user-selected">'; } else { $return .= '<tr align="center" class="cal-ligne-user">'; } if ($printable == 1) { $text_nom = "<strong>{$sql_nom}</strong>"; } else { $text_nom = "<a href=\"{$PHP_SELF}?session={$session}&selected={$sql_login}&year={$year}&mois={$mois}&first_jour={$first_jour}&printable={$printable}&select_groupe={$select_groupe}\" method=\"GET\">{$sql_nom} {$sql_prenom}</a>"; } // affichage nom prenom quotité $return .= '<td class="cal-user">' . $text_nom . '</td><td class="cal-percent">' . $sql_quotite . '%</td>'; // pour chaque jour : (du premier jour demandé à la fin du mois ...) for ($j = $first_jour; checkdate($mois, $j, $year); $j++) { $j_timestamp = mktime(0, 0, 0, $mois, $j, $year); $td_second_class = get_td_class_of_the_day_in_the_week($j_timestamp); $mois_select = $mois; $year_select = $year; // affichage de la cellule correspondant au jour et au user considéré $t_nb_j_type_abs = \calendrier\Fonctions::affiche_cellule_jour_user($sql_login, $j_timestamp, $year, $mois_select, $j, $td_second_class, $printable, $tab_calendrier, $tab_rtt_echange, $tab_rtt_planifiees, $tab_type_absence, $return); foreach ($t_nb_j_type_abs as $id_type_abs => $nb_j_pris) { if (isset($nb_jours_current_month[$id_type_abs])) { $nb_jours_current_month[$id_type_abs] += $nb_j_pris; } else { $nb_jours_current_month[$id_type_abs] = $nb_j_pris; } } } // si le premier jour demandé n'est pas le 1ier du mois , on va jusqu'à la meme date le mois suivant : if ($first_jour != 1) { // pour chaque jour jusqu'a la date voulue : (meme num de jour le mois suivant) for ($j = 1; $j < $first_jour; $j++) { $j_timestamp = mktime(0, 0, 0, $mois + 1, $j, $year); $td_second_class = get_td_class_of_the_day_in_the_week($j_timestamp); if ($mois == 12) { $mois_select = 1; $year_select = $year + 1; } else { $mois_select = $mois + 1; $year_select = $year; } // affichage de la cellule correspondant au jour et au user considéré $t_nb_j_type_abs = \calendrier\Fonctions::affiche_cellule_jour_user($sql_login, $j_timestamp, $year, $mois_select, $j, $td_second_class, $printable, $tab_calendrier, $tab_rtt_echange, $tab_rtt_planifiees, $tab_type_absence, $return); foreach ($t_nb_j_type_abs as $id_type_abs => $nb_j_pris) { if (isset($nb_jours_current_month[$id_type_abs])) { $nb_jours_current_month[$id_type_abs] += $nb_j_pris; } else { $nb_jours_current_month[$id_type_abs] = $nb_j_pris; } } } } //if ($last < 7) //for ($i = $last; $i <7; $i ++) // echo '<td></td>'; if ($_SESSION['config']['affiche_soldes_calendrier'] || is_resp($_SESSION['userlogin']) || is_hr($_SESSION['userlogin']) || is_admin($_SESSION['userlogin'])) { // affichage des divers soldes foreach ($tab_cong_user as $id => $tab_conges) { // si des jours ont été pris durant le mois affiché, on indique combien : if (isset($nb_jours_current_month[$id]) && $_SESSION['config']['affiche_jours_current_month_calendrier']) { $return .= '<td class="cal-user">' . $tab_conges['solde'] . ' (' . $nb_jours_current_month[$id] . ')</td>'; } else { $return .= '<td class="cal-user">' . $tab_conges['solde'] . '</td>'; } } } $return .= '</tr>'; } $return .= '</table>'; return $return; }