function enregistrement_edition($login, $DEBUG = FALSE) { $PHP_SELF = $_SERVER['PHP_SELF']; $tab_solde_user = array(); $sql1 = 'SELECT su_abs_id, su_solde FROM conges_solde_user where su_login = \'' . SQL::quote($login) . '\''; $ReqLog1 = SQL::query($sql1); while ($resultat1 = $ReqLog1->fetch_array()) { $sql_id = $resultat1["su_abs_id"]; $tab_solde_user[$sql_id] = $resultat1["su_solde"]; } $new_edition_id = get_last_edition_id() + 1; $aujourdhui = date("Y-m-d"); $num_for_user = get_num_last_edition_user($login) + 1; /*************************************************/ /* Insertion dans le table conges_edition_papier */ /*************************************************/ $sql_insert = "INSERT INTO conges_edition_papier\n\t\t\tSET ep_id={$new_edition_id}, ep_login='******', ep_date='{$aujourdhui}', ep_num_for_user={$num_for_user} "; $result_insert = SQL::query($sql_insert); /*************************************************/ /* Insertion dans le table conges_solde_edition */ /*************************************************/ // recup du tableau des types de conges (seulement les conges) $tab_type_cong = recup_tableau_types_conges($DEBUG); foreach ($tab_type_cong as $id_abs => $libelle) { $sql_insert_2 = "INSERT INTO conges_solde_edition\n\t\t\t\tSET se_id_edition={$new_edition_id}, se_id_absence={$id_abs}, se_solde={$tab_solde_user[$id_abs]} "; $result_insert_2 = SQL::query($sql_insert_2); } if ($_SESSION['config']['gestion_conges_exceptionnels']) { $tab_type_conges_exceptionnels = recup_tableau_types_conges_exceptionnels($DEBUG); foreach ($tab_type_conges_exceptionnels as $id_abs => $libelle) { $sql_insert_3 = "INSERT INTO conges_solde_edition SET se_id_edition={$new_edition_id}, se_id_absence={$id_abs}, se_solde={$tab_solde_user[$id_abs]} "; $result_insert_3 = SQL::query($sql_insert_3); } } /********************************************************************************************/ /* Update du num edition dans la table periode pour les Conges et demandes de cette edition */ /********************************************************************************************/ // recup de la liste des id des absence de type conges ! $sql_list = "SELECT ta_id FROM conges_type_absence WHERE ta_type='conges' OR ta_type='conges_exceptionnels'"; $ReqLog_list = SQL::query($sql_list); $list_abs_id = ""; while ($resultat_list = $ReqLog_list->fetch_array()) { if ($list_abs_id == "") { $list_abs_id = $resultat_list['ta_id']; } else { $list_abs_id = $list_abs_id . ", " . $resultat_list['ta_id']; } } $sql_update = 'UPDATE conges_periode SET p_edition_id=\'' . $new_edition_id . '\' WHERE p_login = \'' . $login . '\' AND p_edition_id IS NULL AND (p_type IN (\'' . $list_abs_id . '\') ) AND (p_etat!=\'demande\') '; $ReqLog_update = SQL::query($sql_update); return $new_edition_id; }
/*********************************/ /* COMPOSITION DU HEADER... */ /*********************************/ $add_css = '<style>#onglet_menu .onglet{ width: ' . str_replace(',', '.', 100 / count($onglets)) . '% ;}</style>'; header_menu('admin', $_SESSION['config']['titre_admin_index'], $add_css); /*********************************/ /* AFFICHAGE DES ONGLETS... */ /*********************************/ echo '<div id="onglet_menu">'; foreach ($onglets as $key => $title) { echo '<div class="onglet ' . ($onglet == $key ? ' active' : '') . '" > <a href="' . $PHP_SELF . '?session=' . $session . '&onglet=' . $key . '">' . $title . '</a> </div>'; } echo '</div>'; /*********************************/ /* AFFICHAGE DE L'ONGLET ... */ /*********************************/ /** initialisation des tableaux des types de conges/absences **/ // recup du tableau des types de conges (seulement les conges) $tab_type_cong = recup_tableau_types_conges($DEBUG); // recup du tableau des types de conges exceptionnels (seulement les conges exceptionnels) $tab_type_conges_exceptionnels = recup_tableau_types_conges_exceptionnels($DEBUG); echo '<div class="' . $onglet . ' main-content">'; include ROOT_PATH . 'admin/admin_' . $onglet . '.php'; echo '</div>'; /*********************************/ /* AFFICHAGE DU BOTTOM ... */ /*********************************/ bottom(); exit;
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"; }
function commit_update($u_login_to_update, &$tab_new_user, &$tab_new_jours_an, &$tab_new_solde, &$tab_new_reliquat, $tab_checkbox_sem_imp, $tab_checkbox_sem_p, $DEBUG = FALSE) { //$DEBUG=TRUE; $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); $result = TRUE; // recup du tableau des types de conges (seulement les conges) $tab_type_conges = recup_tableau_types_conges($DEBUG); $tab_type_conges_excep = array(); if ($_SESSION['config']['gestion_conges_exceptionnels']) { $tab_type_conges_excep = recup_tableau_types_conges_exceptionnels($DEBUG); } if ($DEBUG) { echo "tab_new_jours_an = <br>\n"; print_r($tab_new_jours_an); echo "<br>\n"; echo "tab_new_solde = <br>\n"; print_r($tab_new_solde); echo "<br>\n"; echo "tab_new_reliquat = <br>\n"; print_r($tab_new_reliquat); echo "<br>\n"; echo "tab_type_conges = <br>\n"; print_r($tab_type_conges); echo "<br>\n"; echo "tab_type_conges_excep = <br>\n"; print_r($tab_type_conges_excep); echo "<br>\n"; } echo "{$u_login_to_update}---" . $tab_new_user['nom'] . "---" . $tab_new_user['prenom'] . "---" . $tab_new_user['quotite'] . "---" . $tab_new_user['is_resp'] . "---" . $tab_new_user['resp_login'] . "---" . $tab_new_user['is_admin'] . "---" . $tab_new_user['is_hr'] . "---" . $tab_new_user['is_active'] . "---" . $tab_new_user['see_all'] . "---" . $tab_new_user['email'] . "---" . $tab_new_user['login'] . "<br>\n"; $valid_1 = TRUE; $valid_2 = TRUE; $valid_3 = TRUE; $valid_reliquat = TRUE; // verification de la validite de la saisie du nombre de jours annuels et du solde pour chaque type de conges foreach ($tab_type_conges as $id_conges => $libelle) { $valid_1 = $valid_1 && verif_saisie_decimal($tab_new_jours_an[$id_conges], $DEBUG); //verif la bonne saisie du nombre d?cimal $valid_2 = $valid_2 && verif_saisie_decimal($tab_new_solde[$id_conges], $DEBUG); //verif la bonne saisie du nombre d?cimal $valid_reliquat = $valid_reliquat && verif_saisie_decimal($tab_new_reliquat[$id_conges], $DEBUG); //verif la bonne saisie du nombre d?cimal } // si l'application gere les conges exceptionnels ET si des types de conges exceptionnels ont été définis if ($_SESSION['config']['gestion_conges_exceptionnels'] && count($tab_type_conges_excep) > 0) { $valid_3 = TRUE; // vérification de la validité de la saisie du nombre de jours annuels et du solde pour chaque type de conges exceptionnels foreach ($tab_type_conges_excep as $id_conges => $libelle) { $valid_3 = $valid_3 && verif_saisie_decimal($tab_new_solde[$id_conges], $DEBUG); //verif la bonne saisie du nombre décimal } } else { $valid_3 = TRUE; } if ($DEBUG) { echo "valid_1 = {$valid_1} // valid_2 = {$valid_2} // valid_3 = {$valid_3} // valid_reliquat = {$valid_reliquat} <br>\n"; } // si aucune erreur de saisie n'a ete commise if ($valid_1 && $valid_2 && $valid_3 && $valid_reliquat) { // UPDATE de la table conges_users $sql = 'UPDATE conges_users SET u_nom=\'' . SQL::quote($tab_new_user['nom']) . '\', u_prenom=\'' . SQL::quote($tab_new_user['prenom']) . '\', u_is_resp=\'' . SQL::quote($tab_new_user['is_resp']) . '\', u_resp_login=\'' . SQL::quote($tab_new_user['resp_login']) . '\',u_is_admin=\'' . SQL::quote($tab_new_user['is_admin']) . '\',u_is_hr=\'' . SQL::quote($tab_new_user['is_hr']) . '\',u_is_active=\'' . SQL::quote($tab_new_user['is_active']) . '\',u_see_all=\'' . SQL::quote($tab_new_user['see_all']) . '\',u_login=\'' . SQL::quote($tab_new_user['login']) . '\',u_quotite=\'' . SQL::quote($tab_new_user['quotite']) . '\',u_email=\'' . SQL::quote($tab_new_user['email']) . '\' WHERE u_login=\'' . SQL::quote($u_login_to_update) . '\''; SQL::query($sql); /*************************************/ /* Mise a jour de la table conges_solde_user */ foreach ($tab_type_conges as $id_conges => $libelle) { $sql = 'REPLACE INTO conges_solde_user SET su_nb_an=\'' . strtr(round_to_half($tab_new_jours_an[$id_conges]), ",", ".") . '\',su_solde=\'' . strtr(round_to_half($tab_new_solde[$id_conges]), ",", ".") . '\',su_reliquat=\'' . strtr(round_to_half($tab_new_reliquat[$id_conges]), ",", ".") . '\',su_login=\'' . SQL::quote($u_login_to_update) . '\',su_abs_id=' . intval($id_conges) . ';'; echo $sql; SQL::query($sql); } if ($_SESSION['config']['gestion_conges_exceptionnels']) { foreach ($tab_type_conges_excep as $id_conges => $libelle) { $sql = 'REPLACE INTO conges_solde_user SET su_nb_an=0, su_solde=\'' . strtr(round_to_half($tab_new_solde[$id_conges]), ",", ".") . '\', su_reliquat=\'' . strtr(round_to_half($tab_new_reliquat[$id_conges]), ",", ".") . '\', su_login=\'' . SQL::quote($u_login_to_update) . '\', su_abs_id=' . intval($id_conges) . ';'; echo $sql; SQL::query($sql); } } /*************************************/ /* Mise a jour de la table artt si besoin : */ $tab_grille_rtt_actuelle = get_current_grille_rtt($u_login_to_update, $DEBUG); $tab_new_grille_rtt = tab_grille_rtt_from_checkbox($tab_checkbox_sem_imp, $tab_checkbox_sem_p, $DEBUG); if ($tab_grille_rtt_actuelle != $tab_new_grille_rtt) { /* if($tab_grille_rtt_actuelle==$tab_new_grille_rtt) { // on ne touche pas à la table artt } else { */ $new_date_deb_grille = $tab_new_user['year'] . "-" . $tab_new_user['mois'] . "-" . $tab_new_user['jour']; /****************************/ /*** phase 1 : ***/ // si la derniere grille est ancienne, on l'update (on update la date de fin de grille) // sinon, si la derniere grille date d'aujourd'hui, on la supprime // on regarde si la grille artt a deja été modifiée aujourd'hui : $sql = 'SELECT a_date_fin_grille FROM conges_artt WHERE a_login=\'' . SQL::quote($u_login_to_update) . '\' AND a_date_debut_grille=\'' . SQL::quote($new_date_deb_grille) . '\';'; $result_grille = SQL::query($sql); $count_grille = $result_grille->num_rows; if ($count_grille == 0) { // date de fin de la grille précedent : // $new_date_fin_grille = $new_date_deb_grille -1 jour ! $new_jour_num = (int) $tab_new_user['jour']; $new_mois_num = (int) $tab_new_user['mois']; $new_year_num = (int) $tab_new_user['year']; $new_date_fin_grille = date("Y-m-d", mktime(0, 0, 0, $new_mois_num, $new_jour_num - 1, $new_year_num)); // int mktime(int hour, int minute, int second, int month, int day, int year ) // UPDATE de la table conges_artt // en fait, on update la dernière grille (on update la date de fin de grille), et on ajoute une nouvelle // grille (avec sa date de début de grille) // on update la dernière grille (on update la date de fin de grille) $sql = 'UPDATE conges_artt SET a_date_fin_grille=\'' . SQL::quote($new_date_fin_grille) . '\' WHERE a_login=\'' . SQL::quote($u_login_to_update) . '\' AND a_date_fin_grille=\'9999-12-31\' '; SQL::query($sql); } else { $sql = 'DELETE FROM conges_artt WHERE a_login=\'' . SQL::quote($u_login_to_update) . '\' AND a_date_debut_grille=\'' . SQL::quote($new_date_deb_grille); SQL::query($sql); } /****************************/ /*** phase 2 : ***/ // on Insert la nouvelle grille (celle qui commence aujourd'hui) // on met à 'Y' les demi-journées de rtt (et seulement celles là) $list_columns = ""; $list_valeurs = ""; $i = 0; if ($tab_checkbox_sem_imp != "") { while (list($key, $val) = each($tab_checkbox_sem_imp)) { if ($i != 0) { $list_columns = $list_columns . ", "; $list_valeurs = $list_valeurs . ", "; } $list_columns = $list_columns . " {$key} "; $list_valeurs = $list_valeurs . " '{$val}' "; $i = $i + 1; } } if ($tab_checkbox_sem_p != "") { while (list($key, $val) = each($tab_checkbox_sem_p)) { if ($i != 0) { $list_columns = $list_columns . ", "; $list_valeurs = $list_valeurs . ", "; } $list_columns = $list_columns . " {$key} "; $list_valeurs = $list_valeurs . " '{$val}' "; $i = $i + 1; } } if ($list_columns != "" && $list_valeurs != "") { $sql = "INSERT INTO conges_artt (a_login, {$list_columns}, a_date_debut_grille ) VALUES ('{$u_login_to_update}', {$list_valeurs}, '{$new_date_deb_grille}') "; SQL::query($sql); } } // Si changement du login, (on a dèja updaté la table users (mais pas les responsables !!!)) on update toutes les autres tables // (les grilles artt, les periodes de conges et les échanges de rtt, etc ....) avec le nouveau login if ($tab_new_user['login'] != $u_login_to_update) { // update table artt $sql = 'UPDATE conges_artt SET a_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE a_login=\'' . SQL::quote($u_login_to_update) . '\' '; SQL::query($sql); // update table echange_rtt $sql = 'UPDATE conges_echange_rtt SET e_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE e_login=\'' . SQL::quote($u_login_to_update) . '\' '; SQL::query($sql); // update table edition_papier $sql = 'UPDATE conges_edition_papier SET ep_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE ep_login=\'' . SQL::quote($u_login_to_update) . '\' '; SQL::query($sql); // update table groupe_grd_resp $sql = 'UPDATE conges_groupe_grd_resp SET ggr_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE ggr_login=\'' . SQL::quote($u_login_to_update) . '\' '; SQL::query($sql); // update table groupe_resp $sql = 'UPDATE conges_groupe_resp SET gr_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE gr_login=\'' . SQL::quote($u_login_to_update) . '\' '; SQL::query($sql); // update table conges_groupe_users $sql = 'UPDATE conges_groupe_users SET gu_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE gu_login=\'' . SQL::quote($u_login_to_update) . '\' '; SQL::query($sql); // update table periode $sql = 'UPDATE conges_periode SET p_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE p_login=\'' . SQL::quote($u_login_to_update) . '\' '; SQL::query($sql); // update table conges_solde_user $sql = 'UPDATE conges_solde_user SET su_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE su_login=\'' . SQL::quote($u_login_to_update) . '\' '; SQL::query($sql); // update table conges_users $sql = 'UPDATE conges_users SET u_resp_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE u_resp_login=\'' . SQL::quote($u_login_to_update) . '\' '; SQL::query($sql); } if ($tab_new_user['login'] != $u_login_to_update) { $comment_log = "modif_user (old_login = {$u_login_to_update}) new_login = "******"modif_user login = {$u_login_to_update}"; } log_action(0, "", $u_login_to_update, $comment_log, $DEBUG); echo _('form_modif_ok') . " !<br><br> \n"; } else { echo _('form_modif_not_ok') . " !<br><br> \n"; } }
function affiche_formulaire_ajout_user(&$tab_new_user, &$tab_new_jours_an, &$tab_new_solde, $onglet, $DEBUG = FALSE) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); // recup du tableau des types de conges (seulement les conges) $tab_type_conges = recup_tableau_types_conges($DEBUG); // recup du tableau des types de conges exceptionnels (seulement les conges exceptionnels) if ($_SESSION['config']['gestion_conges_exceptionnels']) { $tab_type_conges_exceptionnels = recup_tableau_types_conges_exceptionnels($DEBUG); } if ($DEBUG) { echo "tab_type_conges = <br>\n"; print_r($tab_type_conges); echo "<br>\n"; } /*********************/ /* Ajout Utilisateur */ /*********************/ // TITRE echo "<h1>" . _('admin_new_users_titre') . "</h1>\n"; echo '<form action="' . $PHP_SELF . '?session=' . $session . '&onglet=' . $onglet . '" method="POST">'; /****************************************/ // tableau des infos de user echo "<table class=\"table table-hover table-responsive table-condensed table-striped\" >\n"; echo "<thead>\n"; echo "<tr>\n"; if ($_SESSION['config']['export_users_from_ldap']) { echo "<th>" . _('divers_nom_maj_1') . " " . _('divers_prenom_maj_1') . "</th>\n"; } else { echo "<th>" . _('divers_login_maj_1') . "</th>\n"; echo "<th>" . _('divers_nom_maj_1') . "</th>\n"; echo "<th>" . _('divers_prenom_maj_1') . "</th>\n"; } echo "<th>" . _('divers_quotite_maj_1') . "</th>\n"; echo "<th>" . _('admin_new_users_is_resp') . "</th>\n"; echo "<th>" . _('divers_responsable_maj_1') . "</th>\n"; echo "<th>" . _('admin_new_users_is_admin') . "</th>\n"; echo "<th>" . _('admin_new_users_is_hr') . "</th>\n"; echo "<th>" . _('admin_new_users_see_all') . "</th>\n"; if (!$_SESSION['config']['export_users_from_ldap']) { echo "<th>" . _('admin_users_mail') . "</th>\n"; } if ($_SESSION['config']['how_to_connect_user'] == "dbconges") { echo "<th>" . _('admin_new_users_password') . "</th>\n"; echo "<th>" . _('admin_new_users_password') . "</th>\n"; } echo "</tr>\n"; echo "</thead>\n"; echo "<tbody>\n"; $text_nom = "<input class=\"form-control\" type=\"text\" name=\"new_nom\" size=\"10\" maxlength=\"30\" value=\"" . $tab_new_user['nom'] . "\">"; $text_prenom = "<input class=\"form-control\" type=\"text\" name=\"new_prenom\" size=\"10\" maxlength=\"30\" value=\"" . $tab_new_user['prenom'] . "\">"; if (!isset($tab_new_user['quotite']) || $tab_new_user['quotite'] == "") { $tab_new_user['quotite'] = 100; } $text_quotite = "<input class=\"form-control\" type=\"text\" name=\"new_quotite\" size=\"3\" maxlength=\"3\" value=\"" . $tab_new_user['quotite'] . "\">"; $text_is_resp = "<select class=\"form-control\" name=\"new_is_resp\" ><option value=\"N\">N</option><option value=\"Y\">Y</option></select>"; // PREPARATION DES OPTIONS DU SELECT du resp_login $text_resp_login = "******"form-control\" name=\"new_resp_login\" id=\"resp_login_id\" ><option value=\"no_resp\">" . _('admin_users_no_resp') . "</option>"; $sql2 = "SELECT u_login, u_nom, u_prenom FROM conges_users WHERE u_is_resp = \"Y\" ORDER BY u_nom, u_prenom"; $ReqLog2 = SQL::query($sql2); while ($resultat2 = $ReqLog2->fetch_array()) { $current_resp_login = $resultat2["u_login"]; if ($tab_new_user['resp_login'] == $current_resp_login) { $text_resp_login = $text_resp_login . "<option value=\"{$current_resp_login}\" selected>" . $resultat2["u_nom"] . " " . $resultat2["u_prenom"] . "</option>"; } else { $text_resp_login = $text_resp_login . "<option value=\"{$current_resp_login}\">" . $resultat2["u_nom"] . " " . $resultat2["u_prenom"] . "</option>"; } } $text_resp_login = $text_resp_login . "</select>"; $text_is_admin = "<select class=\"form-control\" name=\"new_is_admin\" ><option value=\"N\">N</option><option value=\"Y\">Y</option></select>"; $text_is_hr = "<select class=\"form-control\" name=\"new_is_hr\" ><option value=\"N\">N</option><option value=\"Y\">Y</option></select>"; $text_see_all = "<select class=\"form-control\" name=\"new_see_all\" ><option value=\"N\">N</option><option value=\"Y\">Y</option></select>"; $text_email = "<input class=\"form-control\" type=\"text\" name=\"new_email\" size=\"10\" maxlength=\"99\" value=\"" . $tab_new_user['email'] . "\">"; $text_password1 = "<input class=\"form-control\" type=\"password\" name=\"new_password1\" size=\"10\" maxlength=\"15\" value=\"\" autocomplete=\"off\" >"; $text_password2 = "<input class=\"form-control\" type=\"password\" name=\"new_password2\" size=\"10\" maxlength=\"15\" value=\"\" autocomplete=\"off\" >"; $text_login = "******"form-control\" type=\"text\" name=\"new_login\" size=\"10\" maxlength=\"98\" value=\"" . $tab_new_user['login'] . "\">"; // AFFICHAGE DE LA LIGNE DE SAISIE D'UN NOUVEAU USER echo "<tr class=\"update-line\">\n"; // Aj. D.Chabaud - Université d'Auvergne - Sept. 2005 if ($_SESSION['config']['export_users_from_ldap']) { // Récupération de la liste des utilisateurs via un ldap : // on crée 2 tableaux (1 avec les noms + prénoms, 1 avec les login) // afin de pouvoir construire une liste déroulante dans le formulaire qui suit... $tab_ldap = array(); $tab_login = array(); recup_users_from_ldap($tab_ldap, $tab_login, $DEBUG); // construction de la liste des users récupérés du ldap ... array_multisort($tab_ldap, $tab_login); // on trie les utilisateurs par le nom $lst_users = "<select multiple size=9 name=new_ldap_user[]><option>------------------</option>\n"; $i = 0; foreach ($tab_login as $login) { $lst_users .= "<option value={$tab_login[$i]}>{$tab_ldap[$i]}</option>\n"; $i++; } $lst_users .= "</select>\n"; echo "<td>{$lst_users}</td>\n"; } else { echo "<td>{$text_login}</td>\n"; echo "<td>{$text_nom}</td>\n"; echo "<td>{$text_prenom}</td>\n"; } echo "<td>{$text_quotite}</td>\n"; echo "<td>{$text_is_resp}</td>\n"; echo "<td>{$text_resp_login}</td>\n"; echo "<td>{$text_is_admin}</td>\n"; echo "<td>{$text_is_hr}</td>\n"; echo "<td>{$text_see_all}</td>\n"; if (!$_SESSION['config']['export_users_from_ldap']) { echo "<td>{$text_email}</td>\n"; } if ($_SESSION['config']['how_to_connect_user'] == "dbconges") { echo "<td>{$text_password1}</td>\n"; echo "<td>{$text_password2}</td>\n"; } echo "</tr>\n"; echo "</tbody>\n"; echo "</table>\n"; echo "<br>\n"; /****************************************/ //tableau des conges annuels et soldes echo "<table class=\"table table-hover table-responsive table-condensed table-striped\" >\n"; // ligne de titres echo "<thead>\n"; echo "<tr>\n"; echo "<th></th>\n"; echo "<th>" . _('admin_new_users_nb_par_an') . "</th>\n"; echo "<th>" . _('divers_solde') . "</th>\n"; echo "</tr>\n"; echo "</thead>\n"; echo "<tbody>\n"; $i = true; // ligne de saisie des valeurs foreach ($tab_type_conges as $id_type_cong => $libelle) { echo '<tr class="' . ($i ? 'i' : 'p') . '">'; $value_jours_an = isset($tab_new_jours_an[$id_type_cong]) ? $tab_new_jours_an[$id_type_cong] : 0; $value_solde_jours = isset($tab_new_solde[$id_type_cong]) ? $tab_new_solde[$id_type_cong] : 0; $text_jours_an = "<input class=\"form-control\" type=\"text\" name=\"tab_new_jours_an[{$id_type_cong}]\" size=\"5\" maxlength=\"5\" value=\"{$value_jours_an}\">"; $text_solde_jours = "<input class=\"form-control\" type=\"text\" name=\"tab_new_solde[{$id_type_cong}]\" size=\"5\" maxlength=\"5\" value=\"{$value_solde_jours}\">"; echo "<td>{$libelle}</td>\n"; echo "<td>{$text_jours_an}</td>\n"; echo "<td>{$text_solde_jours}</td>\n"; echo "</tr>\n"; $i = !$i; } if ($_SESSION['config']['gestion_conges_exceptionnels']) { foreach ($tab_type_conges_exceptionnels as $id_type_cong => $libelle) { echo '<tr class="' . ($i ? 'i' : 'p') . '">'; $value_solde_jours = isset($tab_new_solde[$id_type_cong]) ? $tab_new_solde[$id_type_cong] : 0; $text_jours_an = "<input type=\"hidden\" name=\"tab_new_jours_an[{$id_type_cong}]\" size=\"5\" maxlength=\"5\" value=\"0\"> "; $text_solde_jours = "<input class=\"form-control\" type=\"text\" name=\"tab_new_solde[{$id_type_cong}]\" size=\"5\" maxlength=\"5\" value=\"{$value_solde_jours}\">"; echo "<td>{$libelle}</td>\n"; echo "<td>{$text_jours_an}</td>\n"; echo "<td>{$text_solde_jours}</td>\n"; echo "</tr>\n"; $i = !$i; } } echo "</tbody>\n"; echo "</table>\n"; echo "<br>\n\n"; // saisie de la grille des jours d'abscence ARTT ou temps partiel: saisie_jours_absence_temps_partiel($tab_new_user['login'], $DEBUG); // si gestion des groupes : affichage des groupe pour y affecter le user if ($_SESSION['config']['gestion_groupes']) { echo "<br>\n"; affiche_tableau_affectation_user_groupes("", $DEBUG); } echo "<hr>\n"; echo "<input type=\"hidden\" name=\"saisie_user\" value=\"ok\">\n"; echo "<input class=\"btn btn-success\" type=\"submit\" value=\"" . _('form_submit') . "\">\n"; echo "<a class=\"btn\" href=\"{$PHP_SELF}?session={$session}\">" . _('form_cancel') . "</a>\n"; echo "</form>\n"; }
function saisie_nouveau_conges2($user_login, $year_calendrier_saisie_debut, $mois_calendrier_saisie_debut, $year_calendrier_saisie_fin, $mois_calendrier_saisie_fin, $onglet) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); $new_date_fin = date('d/m/Y'); $return = ''; $return .= '<form NAME="dem_conges" action="' . $PHP_SELF . '?session=' . $session . '&onglet=' . $onglet . '" method="POST"> <div class="row"> <div class="col-md-6"> <div class="form-inline">'; $return .= '<div class="form-group"><label for="new_deb">' . _('divers_date_debut') . '</label><input type="text" class="form-control date" name="new_debut" value="' . $new_date_fin . '"></div>'; $return .= '<input type="radio" name="new_demi_jour_deb" '; if ($_SESSION['config']['rempli_auto_champ_nb_jours_pris']) { // attention : IE6 : bug avec les "OnChange" sur les boutons radio!!! (on remplace par OnClick) if (isset($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') != FALSE) { $return .= 'onClick="compter_jours();return true;"'; } else { $return .= 'onChange="compter_jours();return false;"'; } } $return .= 'value="am" checked> ' . _('form_am'); $return .= '<input type="radio" name="new_demi_jour_deb" '; if ($_SESSION['config']['rempli_auto_champ_nb_jours_pris']) { if (isset($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') != FALSE) { $return .= 'onClick="compter_jours();return true;"'; } else { $return .= 'onChange="compter_jours();return false;"'; } } $return .= 'value="pm"> ' . _('form_pm'); $return .= '</div>'; $return .= '</div>'; $return .= '<div class="col-md-6">'; $return .= '<div class="form-inline">'; $return .= '<div class="form-group">'; $return .= '<label for="new_fin">' . _('divers_date_fin') . '</label><input type="text" class="form-control date" name="new_fin" value="' . $new_date_fin . '">'; $return .= '</div>'; $return .= '<input type="radio" name="new_demi_jour_fin" '; if ($_SESSION['config']['rempli_auto_champ_nb_jours_pris']) { // attention : IE6 : bug avec les "OnChange" sur les boutons radio!!! (on remplace par OnClick) if (isset($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') != FALSE) { $return .= 'onClick="compter_jours();return true;"'; } else { $return .= 'onChange="compter_jours();return false;"'; } } $return .= 'value="am"> ' . _('form_am'); $return .= '<input class="form-controm" type="radio" name="new_demi_jour_fin" '; if ($_SESSION['config']['rempli_auto_champ_nb_jours_pris']) { if (isset($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') != FALSE) { $return .= 'onClick="compter_jours();return true;"'; } else { $return .= 'onChange="compter_jours();return false;"'; } } $return .= 'value="pm" checked> ' . _('form_pm'); $return .= '</div>'; $return .= '</div>'; $return .= '</div>'; $return .= '<hr/>'; /*****************/ /* boutons radio */ /*****************/ // recup du tableau des types de conges $tab_type_conges = recup_tableau_types_conges(); // recup du tableau des types d'absence $tab_type_absence = recup_tableau_types_absence(); // recup d tableau des types de conges exceptionnels $tab_type_conges_exceptionnels = recup_tableau_types_conges_exceptionnels(); $already_checked = false; $return .= '<div class="row type-conges">'; // si le user a droit de saisir une demande de conges ET si on est PAS dans une fenetre de responsable // OU si le user n'a pas droit de saisir une demande de conges ET si on est dans une fenetre de responsable // OU si le user est un RH ou un admin if ($_SESSION['config']['user_saisie_demande'] && $user_login == $_SESSION['userlogin'] || $_SESSION['config']['user_saisie_demande'] == FALSE && $user_login != $_SESSION['userlogin'] || is_hr($_SESSION['userlogin']) || is_admin($_SESSION['userlogin'])) { // congés $return .= '<div class="col-md-4">'; $return .= '<label>' . _('divers_conges') . '</label>'; foreach ($tab_type_conges as $id => $libelle) { if ($id == 1) { $return .= '<input type="radio" name="new_type" value="' . $id . '" checked>' . $libelle . '<br>'; $already_checked = true; } else { $return .= '<input type="radio" name="new_type" value="' . $id . '">' . $libelle . '<br>'; } } $return .= '</div>'; } // si le user a droit de saisir une mission ET si on est PAS dans une fenetre de responsable // OU si le resp a droit de saisir une mission ET si on est PAS dans une fenetre dd'utilisateur // OU si le resp a droit de saisir une mission ET si le resp est resp de lui meme if ($_SESSION['config']['user_saisie_mission'] && $user_login == $_SESSION['userlogin'] || $_SESSION['config']['resp_saisie_mission'] && $user_login != $_SESSION['userlogin'] || $_SESSION['config']['resp_saisie_mission'] && is_resp_of_user($_SESSION['userlogin'], $user_login)) { // absences $return .= '<div class="col-md-4">'; $return .= '<label>' . _('divers_absences') . '</label>'; foreach ($tab_type_absence as $id => $libelle) { if (!$already_checked) { $return .= '<input type="radio" name="new_type" value="' . $id . '" checked>' . $libelle . '<br>'; $already_checked = true; } else { $return .= '<input type="radio" name="new_type" value="' . $id . '">' . $libelle . '<br>'; } } $return .= '</div>'; } // si le user a droit de saisir une demande de conges ET si on est PAS dans une fenetre de responsable // OU si le user n'a pas droit de saisir une demande de conges ET si on est dans une fenetre de responsable if ($_SESSION['config']['gestion_conges_exceptionnels'] && ($_SESSION['config']['user_saisie_demande'] && $user_login == $_SESSION['userlogin'] || $_SESSION['config']['user_saisie_demande'] == FALSE && $user_login != $_SESSION['userlogin'])) { // congés exceptionnels $return .= '<div class="col-md-4">'; $return .= '<label>' . _('divers_conges_exceptionnels') . '</label>'; foreach ($tab_type_conges_exceptionnels as $id => $libelle) { if ($id == 1) { $return .= '<input type="radio" name="new_type" value="' . $id . '" checked> ' . $libelle . '<br>'; } else { $return .= '<input type="radio" name="new_type" value="' . $id . '">' . $libelle . '<br>'; } } $return .= '</div>'; } $return .= '</div>'; $return .= '<hr/>'; $return .= '<label>' . _('divers_comment_maj_1') . '</label><input class="form-control" type="text" name="new_comment" size="25" maxlength="30" value="">'; // zones de texte $return .= '<label>' . _('saisie_conges_nb_jours') . ' </label>'; if ($_SESSION['config']['disable_saise_champ_nb_jours_pris']) { // zone de texte en readonly et grisée $text_nb_jours = '<input type="text" name="new_nb_jours" size="10" maxlength="30" value="" style="background-color: #D4D4D4; " readonly="readonly">'; } else { $text_nb_jours = '<input type="text" name="new_nb_jours" size="10" maxlength="3" value="">'; } $return .= $text_nb_jours; if ($_SESSION['config']['affiche_bouton_calcul_nb_jours_pris']) { $return .= '<input type="button" class="btn btn-success" onclick="compter_jours();return false;" value="' . _('saisie_conges_compter_jours') . '">'; } $return .= '<p id="comment_nbj" style="color:red"> </p>'; $return .= '<br>'; $return .= '<input type="hidden" name="user_login" value="' . $user_login . '">'; $return .= '<input type="hidden" name="new_demande_conges" value=1>'; $return .= '<input type="hidden" name="session" value="' . $session . '">'; // boutons du formulaire $return .= '<input type="submit" class="btn btn-success" value="' . _('form_submit') . '">'; $return .= '<a class="btn" href="' . $PHP_SELF . '?session=' . $session . '">' . _('form_cancel') . '</a>'; $return .= '</form>'; return $return; }
function edition($user_login, $edit_id, $session, $DEBUG = FALSE) { $tab_info_user = recup_info_user_pour_edition($user_login, $DEBUG); // recup infos de l'édition $tab_info_edition = recup_info_edition($edit_id, $DEBUG); // recup du tableau des types de conges exceptionnels (seulement les conge sexceptionnels ) $tab_type_cong = recup_tableau_types_conges($DEBUG); // recup du tableau des types de conges (seulement les conges) if ($_SESSION['config']['gestion_conges_exceptionnels']) { $tab_type_conges_exceptionnels = recup_tableau_types_conges_exceptionnels($DEBUG); } else { $tab_type_conges_exceptionnels = array(); } // recup du tableau de tous les types de conges $tab_type_all_cong = recup_tableau_tout_types_abs($DEBUG); head_ed($tab_info_user, $tab_info_edition, $tab_type_cong, $tab_type_conges_exceptionnels, $edit_id, $DEBUG); if ($DEBUG) { echo "tab_info_user :<br>\n"; print_r($tab_info_user); echo "<br><br>\n"; echo "tab_info_edition :<br>\n"; print_r($tab_info_edition); echo "<br><br>\n"; echo "tab_type_cong :<br>\n"; print_r($tab_type_cong); echo "<br><br>\n"; echo "tab_type_conges_exceptionnels :<br>\n"; print_r($tab_type_conges_exceptionnels); echo "<br><br>\n"; echo "tab_type_all_cong :<br>\n"; print_r($tab_type_all_cong); echo "<br><br>\n"; echo "numero edition = {$edit_id}<br>\n"; } /*********************************************/ /* Tableau Historique des Conges et demandes */ /*********************************************/ echo "\n<!-- Tableau Historique des Conges et demandes -->\n"; echo "<tr align=\"center\">\n"; echo "<td>\n"; // Récupération des informations // on ne recup QUE les periodes de l'edition choisie $sql2 = "SELECT p_login, p_date_deb, p_demi_jour_deb, p_date_fin, p_demi_jour_fin, p_nb_jours, p_commentaire, p_type, p_etat, p_date_demande, p_date_traitement "; $sql2 = $sql2 . "FROM conges_periode "; $sql2 = $sql2 . "WHERE p_edition_id = {$edit_id} "; $sql2 = $sql2 . "ORDER BY p_date_deb ASC "; $ReqLog2 = SQL::query($sql2); $count2 = $ReqLog2->num_rows; if ($count2 == 0) { echo "<b>" . _('editions_aucun_conges') . "</b><br>\n"; } else { // AFFICHAGE TABLEAU if ($_SESSION['config']['affiche_date_traitement']) { echo "<table cellpadding=\"2\" class=\"tablo-edit\" width=\"850\">\n"; } else { echo "<table cellpadding=\"2\" class=\"tablo-edit\" width=\"750\">\n"; } /*************************************/ /* affichage anciens soldes */ /*************************************/ echo "\n<!-- affichage anciens soldes -->\n"; echo "<tr>\n"; echo "<td colspan=\"5\">\n"; $edition_precedente_id = get_id_edition_precedente_user($user_login, $edit_id, $DEBUG); if ($edition_precedente_id == 0) { echo "<b>" . _('editions_soldes_precedents_inconnus') . " !... "; } else { $tab_edition_precedente = recup_info_edition($edition_precedente_id, $DEBUG); foreach ($tab_type_cong as $id_abs => $libelle) { echo _('editions_solde_precedent') . " <b>{$libelle} : " . $tab_edition_precedente['conges'][$id_abs] . "</b><br>\n"; } foreach ($tab_type_conges_exceptionnels as $id_abs => $libelle) { echo _('editions_solde_precedent') . " <b>{$libelle} : " . $tab_edition_precedente['conges'][$id_abs] . "</b><br>\n"; } } echo "<td>\n"; echo "</tr>\n"; /*************************************/ /* affichage lignes de l'edition */ /*************************************/ echo "\n<!-- affichage lignes de l'edition -->\n"; echo "<tr>\n"; echo " <td class=\"titre-edit\">" . _('divers_type_maj_1') . "</td>\n"; echo " <td class=\"titre-edit\">" . _('divers_etat_maj_1') . "</td>\n"; echo " <td class=\"titre-edit\">" . _('divers_nb_jours_maj_1') . "</td>\n"; echo " <td class=\"titre-edit\">" . _('divers_debut_maj_1') . "</td>\n"; echo " <td class=\"titre-edit\">" . _('divers_fin_maj_1') . "</td>\n"; echo " <td class=\"titre-edit\">" . _('divers_comment_maj_1') . "</td>\n"; if ($_SESSION['config']['affiche_date_traitement']) { echo "<td class=\"titre-edit\">" . _('divers_date_traitement') . "</td>\n"; } echo "</tr>\n"; while ($resultat2 = $ReqLog2->fetch_array()) { $sql_p_date_deb = eng_date_to_fr($resultat2["p_date_deb"]); $sql_p_demi_jour_deb = $resultat2["p_demi_jour_deb"]; if ($sql_p_demi_jour_deb == "am") { $demi_j_deb = _('divers_am_short'); } else { $demi_j_deb = _('divers_pm_short'); } $sql_p_date_fin = eng_date_to_fr($resultat2["p_date_fin"]); $sql_p_demi_jour_fin = $resultat2["p_demi_jour_fin"]; if ($sql_p_demi_jour_fin == "am") { $demi_j_fin = _('divers_am_short'); } else { $demi_j_fin = _('divers_pm_short'); } $sql_p_nb_jours = $resultat2["p_nb_jours"]; $sql_p_commentaire = $resultat2["p_commentaire"]; $sql_p_type = $resultat2["p_type"]; $sql_p_etat = $resultat2["p_etat"]; $sql_p_date_demande = $resultat2["p_date_demande"]; $sql_p_date_traitement = $resultat2["p_date_traitement"]; echo "<tr>\n"; echo "<td class=\"histo-edit\">" . $tab_type_all_cong[$sql_p_type]['libelle'] . "</td>\n"; echo "<td class=\"histo-edit\">"; if ($sql_p_etat == "refus") { echo _('divers_refuse'); } elseif ($sql_p_etat == "annul") { echo _('divers_annule'); } else { echo "{$sql_p_etat}"; } echo "</td>\n"; if ($sql_p_etat == "ok") { echo "<td class=\"histo-big\"> -{$sql_p_nb_jours}</td>"; } elseif ($sql_p_etat == "ajout") { echo "<td class=\"histo-big\"> +{$sql_p_nb_jours}</td>"; } else { echo "<td> {$sql_p_nb_jours}</td>"; } echo "<td class=\"histo-edit\">{$sql_p_date_deb} _ {$demi_j_deb}</td>"; echo "<td class=\"histo-edit\">{$sql_p_date_fin} _ {$demi_j_fin}</td>"; echo "<td class=\"histo-edit\">{$sql_p_commentaire}</td>"; if ($_SESSION['config']['affiche_date_traitement']) { if ($sql_p_date_demande == NULL) { echo "<td class=\"histo-left\">" . _('divers_demande') . " : {$sql_p_date_demande}<br>" . _('divers_traitement') . " : {$sql_p_date_traitement}</td>\n"; } else { echo "<td class=\"histo-left\">" . _('divers_demande') . " : {$sql_p_date_demande}<br>" . _('divers_traitement') . " : pas traité</td>\n"; } } echo "</tr>\n"; } /*************************************/ /* affichage nouveaux soldes */ /*************************************/ echo "\n<!-- affichage nouveaux soldes -->\n"; echo "<tr>\n"; echo "<td colspan=\"5\">\n"; foreach ($tab_type_cong as $id_abs => $libelle) { echo _('editions_nouveau_solde') . " <b>{$libelle} : " . $tab_info_edition['conges'][$id_abs] . "</b><br>\n"; } echo "<td>\n"; echo "</tr>\n"; echo "</table>\n\n"; } echo "<br><br>\n"; echo "</td>\n"; echo "</tr>\n"; echo "</table>\n"; bottom_ed(); }
function saisie_nouveau_conges($user_login, $year_calendrier_saisie_debut, $mois_calendrier_saisie_debut, $year_calendrier_saisie_fin, $mois_calendrier_saisie_fin, $onglet, $DEBUG = FALSE) { //$DEBUG=TRUE; if ($DEBUG) { echo 'user_login = '******', year_calendrier_saisie_debut = ' . $year_calendrier_saisie_debut . ', mois_calendrier_saisie_debut = ' . $mois_calendrier_saisie_debut . ', year_calendrier_saisie_fin = ' . $year_calendrier_saisie_fin . ', mois_calendrier_saisie_fin = ' . $mois_calendrier_saisie_fin . ', onglet = ' . $onglet . '<br>'; } $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); $mois_calendrier_saisie_debut_prec = 0; $year_calendrier_saisie_debut_prec = 0; $mois_calendrier_saisie_debut_suiv = 0; $year_calendrier_saisie_debut_suiv = 0; $mois_calendrier_saisie_fin_prec = 0; $year_calendrier_saisie_fin_prec = 0; $mois_calendrier_saisie_fin_suiv = 0; $year_calendrier_saisie_fin_suiv = 0; init_tab_jours_fermeture($user_login); echo '<form name="form1" action="' . $PHP_SELF . '?session=' . $session . '&onglet=' . $onglet . '" method="POST">'; // il faut indiquer le champ de formulaire 'login_user' car il est récupéré par le javascript qui apelle le calcul automatique. echo '<table cellpadding="0" cellspacing="5" border="0">'; echo '<tr align="center">'; echo '<td>'; echo '<table cellpadding="0" cellspacing="0" border="0">'; echo '<tr align="center">'; echo '<td>'; echo '<fieldset class="cal_saisie">'; echo '<table cellpadding="0" cellspacing="0" border="0">'; echo '<tr align="center">'; echo "<td>\n"; /******************************************************************/ // affichage du calendrier de saisie de la date de DEBUT de congès /******************************************************************/ echo '<table cellpadding="0" cellspacing="0" width="250" border="0">'; echo '<tr>'; init_var_navigation_mois_year($mois_calendrier_saisie_debut, $year_calendrier_saisie_debut, $mois_calendrier_saisie_debut_prec, $year_calendrier_saisie_debut_prec, $mois_calendrier_saisie_debut_suiv, $year_calendrier_saisie_debut_suiv, $mois_calendrier_saisie_fin, $year_calendrier_saisie_fin, $mois_calendrier_saisie_fin_prec, $year_calendrier_saisie_fin_prec, $mois_calendrier_saisie_fin_suiv, $year_calendrier_saisie_fin_suiv); // affichage des boutons de défilement // recul du mois saisie début echo '<td align="center" class="big">'; echo '<a href="' . $PHP_SELF . '?session=' . $session . '&year_calendrier_saisie_debut=' . $year_calendrier_saisie_debut_prec . '&mois_calendrier_saisie_debut=' . $mois_calendrier_saisie_debut_prec . '&year_calendrier_saisie_fin=' . $year_calendrier_saisie_fin . '&mois_calendrier_saisie_fin=' . $mois_calendrier_saisie_fin . '&user_login='******'&onglet=' . $onglet . '">'; echo ' <img src="' . TEMPLATE_PATH . 'img/simfirs.gif" width="16" height="16" border="0" alt="' . _('divers_mois_precedent') . '" title="' . _('divers_mois_precedent') . '"> '; echo '</a>'; echo '</td>'; echo '<td align="center" class="big">' . _('divers_debut_maj') . ' :</td>'; // affichage des boutons de défilement // avance du mois saisie début // si le mois de saisie fin est antérieur ou égal au mois de saisie début, on avance les 2 , sinon on avance que le mois de saisie début if ($year_calendrier_saisie_debut_suiv == $year_calendrier_saisie_fin && $mois_calendrier_saisie_debut_suiv >= $mois_calendrier_saisie_fin || $year_calendrier_saisie_debut_suiv > $year_calendrier_saisie_fin) { $lien_mois_debut_suivant = $PHP_SELF . '?session=' . $session . '&year_calendrier_saisie_debut=' . $year_calendrier_saisie_debut_suiv . '&mois_calendrier_saisie_debut=' . $mois_calendrier_saisie_debut_suiv . '&year_calendrier_saisie_fin=' . $year_calendrier_saisie_debut_suiv . '&mois_calendrier_saisie_fin=' . $mois_calendrier_saisie_debut_suiv . '&user_login='******'&onglet=' . $onglet; } else { $lien_mois_debut_suivant = $PHP_SELF . '?session=' . $session . '&year_calendrier_saisie_debut=' . $year_calendrier_saisie_debut_suiv . '&mois_calendrier_saisie_debut=' . $mois_calendrier_saisie_debut_suiv . '&year_calendrier_saisie_fin=' . $year_calendrier_saisie_fin . '&mois_calendrier_saisie_fin=' . $mois_calendrier_saisie_fin . '&user_login='******'&onglet=' . $onglet; } echo '<td align="center" class="big">'; echo '<a href="' . $lien_mois_debut_suivant . '">'; echo ' <img src="' . TEMPLATE_PATH . 'img/simlast.gif" width="16" height="16" border="0" alt="' . _('divers_mois_suivant') . '" title="' . _('divers_mois_suivant') . '"> '; echo '</a>'; echo '</td>'; echo '</tr>'; echo '</table>'; /*** calendrier saisie date debut ***/ affiche_calendrier_saisie_date($user_login, $year_calendrier_saisie_debut, $mois_calendrier_saisie_debut, 'new_debut', $DEBUG); echo '</td>'; /**************************************************/ /* cellule 2 : boutons radio matin ou après midi */ echo '<td align="left">'; echo '<input type="radio" name="new_demi_jour_deb" '; if ($_SESSION['config']['rempli_auto_champ_nb_jours_pris']) { // attention : IE6 : bug avec les "OnChange" sur les boutons radio!!! (on remplace par OnClick) if (isset($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') != FALSE) { echo 'onClick="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return true;"'; } else { echo 'onChange="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return false;"'; } } echo 'value="am" checked><b><u>' . _('form_am') . '</u></b><br><br>'; echo '<input type="radio" name="new_demi_jour_deb" '; if ($_SESSION['config']['rempli_auto_champ_nb_jours_pris']) { if (isset($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') != FALSE) { echo 'onClick="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return true;"'; } else { echo 'onChange="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return false;"'; } } echo 'value="pm"><b><u>' . _('form_pm') . '</u></b><br><br>'; echo '</td>'; /**************************************************/ echo '</tr>'; echo '</table>'; echo '</fieldset>'; echo '</td>'; echo '</tr>'; echo '<tr align="center">'; echo '<td><img src="' . TEMPLATE_PATH . 'img/shim.gif" width="15" height="10" border="0" vspace="0" hspace="0"></td>'; echo '</tr>'; echo '<tr align="center">'; echo '<td>'; echo '<fieldset class="cal_saisie">'; echo '<table cellpadding="0" cellspacing="0" border="0">'; echo '<tr align="center">'; echo '<td>'; /******************************************************************/ // affichage du calendrier de saisie de la date de FIN de congès /******************************************************************/ echo '<table cellpadding="0" cellspacing="0" width="250" border="0">'; echo '<tr>'; $mois_calendrier_saisie_fin_prec = $mois_calendrier_saisie_fin == 1 ? 12 : $mois_calendrier_saisie_fin - 1; $mois_calendrier_saisie_fin_suiv = $mois_calendrier_saisie_fin == 12 ? 1 : $mois_calendrier_saisie_fin + 1; // affichage des boutons de défilement // recul du mois saisie fin // si le mois de saisie fin est antérieur ou égal au mois de saisie début, on recule les 2 , sinon on recule que le mois de saisie fin if ($year_calendrier_saisie_debut == $year_calendrier_saisie_fin_prec && $mois_calendrier_saisie_debut >= $mois_calendrier_saisie_fin_prec || $year_calendrier_saisie_debut > $year_calendrier_saisie_fin_prec) { $lien_mois_fin_precedent = '' . $PHP_SELF . '?session=' . $session . '&year_calendrier_saisie_debut=' . $year_calendrier_saisie_fin_prec . '&mois_calendrier_saisie_debut=' . $mois_calendrier_saisie_fin_prec . '&year_calendrier_saisie_fin=' . $year_calendrier_saisie_fin_prec . '&mois_calendrier_saisie_fin=' . $mois_calendrier_saisie_fin_prec . '&user_login='******'&onglet=' . $onglet; } else { $lien_mois_fin_precedent = '' . $PHP_SELF . '?session=' . $session . '&year_calendrier_saisie_debut=' . $year_calendrier_saisie_debut . '&mois_calendrier_saisie_debut=' . $mois_calendrier_saisie_debut . '&year_calendrier_saisie_fin=' . $year_calendrier_saisie_fin_prec . '&mois_calendrier_saisie_fin=' . $mois_calendrier_saisie_fin_prec . '&user_login='******'&onglet=' . $onglet; } echo '<td align="center" class="big">'; echo '<a href="' . $lien_mois_fin_precedent . '">'; echo ' <img src="' . TEMPLATE_PATH . 'img/simfirs.gif" width="16" height="16" border="0" alt="' . _('divers_mois_precedent') . '" title="' . _('divers_mois_precedent') . '">'; echo ' </a>'; echo '</td>'; echo '<td align="center" class="big">' . _('divers_fin_maj') . ' :</td>'; // affichage des boutons de défilement // avance du mois saisie fin echo '<td align="center" class="big">'; echo '<a href="' . $PHP_SELF . '?session=' . $session . '&year_calendrier_saisie_debut=' . $year_calendrier_saisie_debut . '&mois_calendrier_saisie_debut=' . $mois_calendrier_saisie_debut . '&year_calendrier_saisie_fin=' . $year_calendrier_saisie_fin_suiv . '&mois_calendrier_saisie_fin=' . $mois_calendrier_saisie_fin_suiv . '&user_login='******'&onglet=' . $onglet . '">'; echo ' <img src="' . TEMPLATE_PATH . 'img/simlast.gif" width="16" height="16" border="0" alt="' . _('divers_mois_suivant') . '" title="' . _('divers_mois_suivant') . '"> '; echo '</a>'; echo '</td>'; echo '</tr>'; echo '</table>'; /*** calendrier saisie date fin ***/ affiche_calendrier_saisie_date($user_login, $year_calendrier_saisie_fin, $mois_calendrier_saisie_fin, 'new_fin', $DEBUG); echo '</td>'; /**************************************************/ /* cellule 2 : boutons radio matin ou après midi */ echo '<td align="left">'; echo '<input type="radio" name="new_demi_jour_fin" '; if ($_SESSION['config']['rempli_auto_champ_nb_jours_pris']) { // attention : IE6 : bug avec les "OnChange" sur les boutons radio!!! (on remplace par OnClick) if (isset($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') != FALSE) { echo 'onClick="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return true;"'; } else { echo 'onChange="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return false;"'; } } echo 'value="am"><b><u>' . _('form_am') . '</u></b><br><br>'; echo '<input type="radio" name="new_demi_jour_fin" '; if ($_SESSION['config']['rempli_auto_champ_nb_jours_pris']) { if (isset($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') != FALSE) { echo 'onClick="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return true;"'; } else { echo 'onChange="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return false;"'; } } echo 'value="pm" checked><b><u>' . _('form_pm') . '</u></b><br><br>'; echo '</td>'; /**************************************************/ echo '</tr>'; echo '</table>'; echo '</fieldset>'; echo '</td>'; echo '</tr>'; echo '</table>'; echo '</td>'; echo '<td><img src="' . TEMPLATE_PATH . 'img/shim.gif" width="15" height="2" border="0" vspace="0" hspace="0"></td>'; echo '<td>'; /*******************/ /* formulaire */ /*******************/ echo '<table cellpadding="0" cellspacing="2" border="0" >'; echo '<tr>'; echo '<td valign="top">'; echo '<table cellpadding="2" cellspacing="3" border="0" >'; // echo '<input type="hidden" name="login_user" value="'.'.$_SESSION['userlogin'].'.'">'; echo '<input type="hidden" name="login_user" value="' . $user_login . '">'; echo '<input type="hidden" name="session" value="' . $session . '">'; // bouton 'compter les jours' if ($_SESSION['config']['affiche_bouton_calcul_nb_jours_pris']) { echo '<tr><td colspan="2">'; echo '<input type="button" onclick="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return false;" value="' . _('saisie_conges_compter_jours') . '">'; echo '</td></tr>'; } // zones de texte echo '<tr align="center"><td><b>' . _('saisie_conges_nb_jours') . '</b></td><td><b>' . _('divers_comment_maj_1') . '</b></td></tr>'; if ($_SESSION['config']['disable_saise_champ_nb_jours_pris']) { // zone de texte en readonly et grisée $text_nb_jours = '<input type="text" name="new_nb_jours" size="10" maxlength="30" value="" style="background-color: #D4D4D4; " readonly="readonly">'; } else { $text_nb_jours = '<input type="text" name="new_nb_jours" size="10" maxlength="30" value="">'; } $text_commentaire = '<input type="text" name="new_comment" size="25" maxlength="30" value="">'; echo '<tr align="center">'; echo '<td>' . $text_nb_jours . '</td><td>' . $text_commentaire . '</td>'; echo '</tr>'; echo '<tr align="center"><td><img src="' . TEMPLATE_PATH . 'img/shim.gif" width="15" height="10" border="0" vspace="0" hspace="0"></td><td></td></tr>'; echo '<tr align="center">'; echo '<td colspan=2>'; echo '<input type="hidden" name="user_login" value="' . $user_login . '">'; echo '<input type="hidden" name="new_demande_conges" value=1>'; // boutons du formulaire // les classes "button_type_submit" et "button_type_cancel" // servent à choisir leur position (droite gauche) dans vos feuilles de style (voir style.css) echo '<input type="submit" class="button_type_submit" value="' . _('form_submit') . '"> <input type="reset" class="button_type_cancel" value="' . _('form_cancel') . '">'; echo '</td>'; echo '</tr>'; echo '</table>'; echo '</td>'; /*****************/ /* boutons radio */ /*****************/ // recup d tableau des types de conges $tab_type_conges = recup_tableau_types_conges($DEBUG); // recup du tableau des types d'absence $tab_type_absence = recup_tableau_types_absence($DEBUG); // recup d tableau des types de conges exceptionnels $tab_type_conges_exceptionnels = recup_tableau_types_conges_exceptionnels($DEBUG); $already_checked = false; echo '<td align="left" valign="top">'; // si le user a droit de saisir une demande de conges ET si on est PAS dans une fenetre de responsable // OU si le user n'a pas droit de saisir une demande de conges ET si on est dans une fenetre de responsable // OU si le user est un RH ou un admin if ($_SESSION['config']['user_saisie_demande'] && $user_login == $_SESSION['userlogin'] || $_SESSION['config']['user_saisie_demande'] == FALSE && $user_login != $_SESSION['userlogin'] || is_hr($_SESSION['userlogin']) || is_admin($_SESSION['userlogin'])) { // congés echo '<b><i><u>' . _('divers_conges') . ' :</u></i></b><br>'; foreach ($tab_type_conges as $id => $libelle) { if ($id == 1) { echo '<input type="radio" name="new_type" value="' . $id . '" checked> ' . $libelle . '<br>'; $already_checked = true; } else { echo '<input type="radio" name="new_type" value="' . $id . '"> ' . $libelle . '<br>'; } } } // si le user a droit de saisir une mission ET si on est PAS dans une fenetre de responsable // OU si le resp a droit de saisir une mission ET si on est PAS dans une fenetre dd'utilisateur // OU si le resp a droit de saisir une mission ET si le resp est resp de lui meme if ($_SESSION['config']['user_saisie_mission'] && $user_login == $_SESSION['userlogin'] || $_SESSION['config']['resp_saisie_mission'] && $user_login != $_SESSION['userlogin'] || $_SESSION['config']['resp_saisie_mission'] && is_resp_of_user($_SESSION['userlogin'], $user_login, $DEBUG)) { echo '<br>'; // absences echo '<b><i><u>' . _('divers_absences') . ' :</u></i></b><br>'; foreach ($tab_type_absence as $id => $libelle) { if (!$already_checked) { echo '<input type="radio" name="new_type" value="' . $id . '" checked> ' . $libelle . '<br>'; $already_checked = true; } else { echo '<input type="radio" name="new_type" value="' . $id . '"> ' . $libelle . '<br>'; } } } // si le user a droit de saisir une demande de conges ET si on est PAS dans une fenetre de responsable // OU si le user n'a pas droit de saisir une demande de conges ET si on est dans une fenetre de responsable // OU si c'est un HR if ($_SESSION['config']['gestion_conges_exceptionnels'] && ($_SESSION['config']['user_saisie_demande'] && $user_login == $_SESSION['userlogin'] || $_SESSION['config']['user_saisie_demande'] == FALSE && $user_login != $_SESSION['userlogin'] || is_hr($_SESSION['userlogin']))) { echo '<br>'; // congés exceptionnels echo '<b><i><u>' . _('divers_conges_exceptionnels') . ' :</u></i></b><br>'; foreach ($tab_type_conges_exceptionnels as $id => $libelle) { if ($id == 1) { echo '<input type="radio" name="new_type" value="' . $id . '" checked> ' . $libelle . '<br>'; } else { echo '<input type="radio" name="new_type" value="' . $id . '"> ' . $libelle . '<br>'; } } } echo '</td>'; echo '</tr>'; echo '</table>'; echo '</td>'; echo '</tr>'; echo '</table>'; echo '</form>'; }
See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *************************************************************************************************/ defined('_PHP_CONGES') or die('Restricted access'); /*************************************/ // recup des parametres reçus : $cloture_users = getpost_variable('cloture_users'); $cloture_globale = getpost_variable('cloture_globale'); $cloture_groupe = getpost_variable('cloture_groupe'); /*************************************/ /** initialisation des tableaux des types de conges/absences **/ // recup du tableau des types de conges (conges et congesexceptionnels) // on concatene les 2 tableaux $tab_type_cong = recup_tableau_types_conges($DEBUG) + recup_tableau_types_conges_exceptionnels($DEBUG); // titre echo '<h2>' . _('resp_cloture_exercice_titre') . "</H2>\n\n"; if ($cloture_users == "TRUE") { $tab_cloture_users = getpost_variable('tab_cloture_users'); cloture_users($tab_type_cong, $tab_cloture_users, $tab_commentaire_saisie, $DEBUG); redirect(ROOT_PATH . 'hr/hr_index.php?session=' . $session, false); exit; } elseif ($cloture_globale == "TRUE") { cloture_globale($tab_type_cong, $DEBUG); redirect(ROOT_PATH . 'hr/hr_index.php?session=' . $session, false); exit; } elseif ($cloture_groupe == "TRUE") { $choix_groupe = getpost_variable('choix_groupe'); cloture_globale_groupe($choix_groupe, $tab_type_cong, $DEBUG); redirect(ROOT_PATH . 'hr/hr_index.php?session=' . $session, false);
/** * Encapsule le comportement du module de cloture d'exercice * * @return void * @access public * @static */ public static function clotureExerciceModule() { $choix_groupe = getpost_variable('choix_groupe'); $cloture_users = getpost_variable('cloture_users'); $cloture_globale = getpost_variable('cloture_globale'); $cloture_groupe = getpost_variable('cloture_groupe'); $tab_cloture_users = getpost_variable('tab_cloture_users'); $tab_commentaire_saisie = getpost_variable('tab_commentaire_saisie'); $return = ''; /*************************************/ header_popup($_SESSION['config']['titre_resp_index']); /*************************************/ /*** suite de la page ***/ /*************************************/ /** initialisation des tableaux des types de conges/absences **/ // recup du tableau des types de conges (conges et congesexceptionnels) // on concatene les 2 tableaux $tab_type_cong = recup_tableau_types_conges() + recup_tableau_types_conges_exceptionnels(); // titre $return .= '<H2>' . _('resp_cloture_exercice_titre') . '</H2>'; if ($cloture_users == "TRUE") { $return .= \responsable\Fonctions::cloture_users($tab_type_cong, $tab_cloture_users, $tab_commentaire_saisie); } elseif ($cloture_globale == "TRUE") { $return .= \responsable\Fonctions::cloture_globale($tab_type_cong); } elseif ($cloture_groupe == "TRUE") { $return .= \responsable\Fonctions::cloture_globale_groupe($choix_groupe, $tab_type_cong); } else { $return .= \responsable\Fonctions::saisie_cloture($tab_type_cong); } return $return; }
function affiche_anciennes_editions($login, $DEBUG = FALSE) { $session = session_id(); echo "<CENTER>\n"; // recup du tableau des types de conges (seulement les conges) $tab_type_cong = recup_tableau_types_conges(); /*************************************/ /* Historique des éditions */ /*************************************/ // Récupération des informations des editions du user $tab_editions_user = recup_editions_user($login, $DEBUG); if ($DEBUG) { echo "tab_editions_user<br>\n"; print_r($tab_editions_user); echo "<br>\n"; } echo "<h3>" . _('editions_hitorique_edit') . " :</h3>\n"; if (count($tab_editions_user) == 0) { echo "<b>" . _('editions_aucun_hitorique') . "</b><br>\n"; } else { // AFFICHAGE TABLEAU echo "<table cellpadding=\"2\" class=\"tablo\" width=\"750\">\n"; echo "<thead><tr align=\"center\">\n"; echo " <th>" . _('editions_numero') . "</th>\n"; echo " <th>" . _('editions_date') . "</th>\n"; foreach ($tab_type_cong as $id_abs => $libelle) { echo " <th>" . _('divers_solde_maj_1') . " {$libelle}</th>\n"; } echo " <th></th>\n"; echo " <th></th>\n"; echo "</tr></thead><tbody>\n"; foreach ($tab_editions_user as $id_edition => $tab_ed) { //$text_edit_a_nouveau="<a href=\"edition_papier.php?session=$session&user_login=$login&edit_id=$sql_id\">Editer à nouveau</a>" ; $text_edit_a_nouveau = "<a href=\"edition_papier.php?session={$session}&user_login={$login}&edit_id={$id_edition}\">" . "<img src=\"" . TEMPLATE_PATH . "img/fileprint_16x16_2.png\" width=\"16\" height=\"16\" border=\"0\" title=\"" . _('editions_edit_again') . "\" alt=\"" . _('editions_edit_again') . "\">" . " " . _('editions_edit_again') . "</a>\n"; $text_edit_pdf_a_nouveau = "<a href=\"edition_pdf.php?session={$session}&user_login={$login}&edit_id={$id_edition}\">" . "<img src=\"" . TEMPLATE_PATH . "img/pdf_16x16_2.png\" width=\"16\" height=\"16\" border=\"0\" title=\"" . _('editions_edit_again_pdf') . "\" alt=\"" . _('editions_edit_again_pdf') . "\">" . " " . _('editions_edit_again_pdf') . "</a>\n"; echo "<tr align=\"center\">\n"; echo "<td>" . $tab_ed['num_for_user'] . "</td>\n"; echo "<td class=\"histo-big\">" . $tab_ed['date'] . "</td>"; foreach ($tab_type_cong as $id_abs => $libelle) { echo "<td>" . $tab_ed['conges'][$id_abs] . "</td>"; } echo "<td>{$text_edit_a_nouveau}</td>"; echo "<td>{$text_edit_pdf_a_nouveau}</td>"; echo "</tr>\n"; } echo "</tbody></table>\n"; } echo "<br>\n"; echo "</CENTER>\n"; echo "<hr align=\"center\" size=\"2\" width=\"90%\">\n"; }
function edition($login, $edit_id, $DEBUG = FALSE) { //$DEBUG = TRUE ; $session = session_id(); // recup infos du user $tab_info_user = recup_info_user_pour_edition($login, $DEBUG); // recup infos de l'édition $tab_info_edition = recup_info_edition($edit_id, $DEBUG); // recup du tableau des types de conges exceptionnels (seulement les conge sexceptionnels ) $tab_type_cong = recup_tableau_types_conges($DEBUG); // recup du tableau des types de conges (seulement les conges) if ($_SESSION['config']['gestion_conges_exceptionnels']) { $tab_type_conges_exceptionnels = recup_tableau_types_conges_exceptionnels($DEBUG); } else { $tab_type_conges_exceptionnels = array(); } // recup du tableau de tous les types de conges $tab_type_all_cong = recup_tableau_tout_types_abs($DEBUG); if ($DEBUG) { echo "tab_info_user :<br>\n"; print_r($tab_info_user); echo "<br><br>\n"; echo "tab_info_edition :<br>\n"; print_r($tab_info_edition); echo "<br><br>\n"; echo "tab_type_cong :<br>\n"; print_r($tab_type_cong); echo "<br><br>\n"; echo "tab_type_conges_exceptionnels :<br>\n"; print_r($tab_type_conges_exceptionnels); echo "<br><br>\n"; echo "tab_type_all_cong :<br>\n"; print_r($tab_type_all_cong); echo "<br><br>\n"; echo "numero edition = {$edit_id}<br>\n"; } /**************************************/ /* affichage du texte en haut de page */ /**************************************/ echo "\n<!-- affichage du texte en haut de page -->\n"; echo "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"770\">\n"; echo "<tr align=\"center\">\n"; echo "<td>" . $_SESSION['config']['texte_haut_edition_papier'] . "<br><br></td>\n"; echo "</tr>\n"; echo "</table>\n"; /**************************************/ /* affichage du TITRE */ /**************************************/ echo "\n<!-- affichage du TITRE -->\n"; echo "<H1>" . $tab_info_user['nom'] . " " . $tab_info_user['prenom'] . "</H1>\n\n"; $tab_date = explode("-", $tab_info_edition['date']); echo "<H2>" . _('editions_bilan_au') . " {$tab_date['2']} / {$tab_date['1']} / {$tab_date['0']}</H2>\n\n"; /****************************/ /* tableau Bilan des Conges */ /****************************/ // affichage du tableau récapitulatif des solde de congés d'un user DE cette edition ! affiche_tableau_bilan_conges_user_edition($tab_info_user, $tab_info_edition, $tab_type_cong, $tab_type_conges_exceptionnels, $DEBUG); $quotite = $tab_info_user['quotite']; echo "<h3> " . _('divers_quotite') . " : {$quotite} % </h3>\n"; echo "<br><br><br>\n"; if ($_SESSION['config']['affiche_date_traitement']) { echo "<table cellpadding=\"0\" cellspacing=\"0\" border=\"1\" width=\"870\">\n"; } else { echo "<table cellpadding=\"0\" cellspacing=\"0\" border=\"1\" width=\"770\">\n"; } echo "<tr align=\"center\">\n"; echo "<td><h3>" . _('editions_historique') . " :</h3></td>\n"; echo "</tr>\n"; /*********************************************/ /* Tableau Historique des Conges et demandes */ /*********************************************/ echo "\n<!-- Tableau Historique des Conges et demandes -->\n"; echo "<tr align=\"center\">\n"; echo "<td>\n"; // Récupération des informations // on ne recup QUE les periodes de l'edition choisie $sql2 = "SELECT p_login, p_date_deb, p_demi_jour_deb, p_date_fin, p_demi_jour_fin, p_nb_jours, p_commentaire, p_type, p_etat, p_date_demande, p_date_traitement "; $sql2 = $sql2 . "FROM conges_periode "; $sql2 = $sql2 . "WHERE p_edition_id = {$edit_id} "; $sql2 = $sql2 . "ORDER BY p_date_deb ASC "; $ReqLog2 = SQL::query($sql2); $count2 = $ReqLog2->num_rows; if ($count2 == 0) { echo "<b>" . _('editions_aucun_conges') . "</b><br>\n"; } else { // AFFICHAGE TABLEAU if ($_SESSION['config']['affiche_date_traitement']) { echo "<table cellpadding=\"2\" class=\"tablo-edit\" width=\"850\">\n"; } else { echo "<table cellpadding=\"2\" class=\"tablo-edit\" width=\"750\">\n"; } /*************************************/ /* affichage anciens soldes */ /*************************************/ echo "\n<!-- affichage anciens soldes -->\n"; echo "<tr>\n"; echo "<td colspan=\"5\">\n"; $edition_precedente_id = get_id_edition_precedente_user($login, $edit_id, $DEBUG); if ($edition_precedente_id == 0) { echo "<b>" . _('editions_soldes_precedents_inconnus') . " !... "; } else { $tab_edition_precedente = recup_info_edition($edition_precedente_id, $DEBUG); foreach ($tab_type_cong as $id_abs => $libelle) { echo _('editions_solde_precedent') . " <b>{$libelle} : " . $tab_edition_precedente['conges'][$id_abs] . "</b><br>\n"; } foreach ($tab_type_conges_exceptionnels as $id_abs => $libelle) { echo _('editions_solde_precedent') . " <b>{$libelle} : " . $tab_edition_precedente['conges'][$id_abs] . "</b><br>\n"; } } echo "<td>\n"; echo "</tr>\n"; /*************************************/ /* affichage lignes de l'edition */ /*************************************/ echo "\n<!-- affichage lignes de l'edition -->\n"; echo "<tr>\n"; echo " <td class=\"titre-edit\">" . _('divers_type_maj_1') . "</td>\n"; echo " <td class=\"titre-edit\">" . _('divers_etat_maj_1') . "</td>\n"; echo " <td class=\"titre-edit\">" . _('divers_nb_jours_maj_1') . "</td>\n"; echo " <td class=\"titre-edit\">" . _('divers_debut_maj_1') . "</td>\n"; echo " <td class=\"titre-edit\">" . _('divers_fin_maj_1') . "</td>\n"; echo " <td class=\"titre-edit\">" . _('divers_comment_maj_1') . "</td>\n"; if ($_SESSION['config']['affiche_date_traitement']) { echo "<td class=\"titre-edit\">" . _('divers_date_traitement') . "</td>\n"; } echo "</tr>\n"; while ($resultat2 = $ReqLog2->fetch_array()) { $sql_p_date_deb = eng_date_to_fr($resultat2["p_date_deb"]); $sql_p_demi_jour_deb = $resultat2["p_demi_jour_deb"]; if ($sql_p_demi_jour_deb == "am") { $demi_j_deb = _('divers_am_short'); } else { $demi_j_deb = _('divers_pm_short'); } $sql_p_date_fin = eng_date_to_fr($resultat2["p_date_fin"]); $sql_p_demi_jour_fin = $resultat2["p_demi_jour_fin"]; if ($sql_p_demi_jour_fin == "am") { $demi_j_fin = _('divers_am_short'); } else { $demi_j_fin = _('divers_pm_short'); } $sql_p_nb_jours = $resultat2["p_nb_jours"]; $sql_p_commentaire = $resultat2["p_commentaire"]; $sql_p_type = $resultat2["p_type"]; $sql_p_etat = $resultat2["p_etat"]; $sql_p_date_demande = $resultat2["p_date_demande"]; $sql_p_date_traitement = $resultat2["p_date_traitement"]; echo "<tr>\n"; echo "<td class=\"histo-edit\">" . $tab_type_all_cong[$sql_p_type]['libelle'] . "</td>\n"; echo "<td class=\"histo-edit\">"; if ($sql_p_etat == "refus") { echo _('divers_refuse'); } elseif ($sql_p_etat == "annul") { echo _('divers_annule'); } else { echo "{$sql_p_etat}"; } echo "</td>\n"; if ($sql_p_etat == "ok") { echo "<td class=\"histo-big\"> -{$sql_p_nb_jours}</td>"; } elseif ($sql_p_etat == "ajout") { echo "<td class=\"histo-big\"> +{$sql_p_nb_jours}</td>"; } else { echo "<td> {$sql_p_nb_jours}</td>"; } echo "<td class=\"histo-edit\">{$sql_p_date_deb} _ {$demi_j_deb}</td>"; echo "<td class=\"histo-edit\">{$sql_p_date_fin} _ {$demi_j_fin}</td>"; echo "<td class=\"histo-edit\">{$sql_p_commentaire}</td>"; if ($_SESSION['config']['affiche_date_traitement']) { if ($sql_p_date_demande == NULL) { echo "<td class=\"histo-left\">" . _('divers_demande') . " : {$sql_p_date_demande}<br>" . _('divers_traitement') . " : {$sql_p_date_traitement}</td>\n"; } else { echo "<td class=\"histo-left\">" . _('divers_demande') . " : {$sql_p_date_demande}<br>" . _('divers_traitement') . " : pas traité</td>\n"; } } echo "</tr>\n"; } /*************************************/ /* affichage nouveaux soldes */ /*************************************/ echo "\n<!-- affichage nouveaux soldes -->\n"; echo "<tr>\n"; echo "<td colspan=\"5\">\n"; foreach ($tab_type_cong as $id_abs => $libelle) { echo _('editions_nouveau_solde') . " <b>{$libelle} : " . $tab_info_edition['conges'][$id_abs] . "</b><br>\n"; } echo "<td>\n"; echo "</tr>\n"; echo "</table>\n\n"; } echo "<br><br>\n"; echo "</td>\n"; echo "</tr>\n"; echo "</table>\n"; /*************************************/ /* affichage des zones de signature */ /*************************************/ echo "\n<!-- affichage des zones de signature -->\n"; echo "<br>\n"; echo "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"770\">\n"; echo "<tr align=\"center\">\n"; echo "<td> </td>\n"; echo "<td align=\"left\">\n"; echo "<b>" . _('editions_date') . " : <br>" . _('editions_signature_1') . " :</b><br><br><br><br><br><br><br><br><br><br>\n"; echo "</td>\n"; echo "<td> </td>\n"; echo "<td align=\"left\">\n"; echo "<b>" . _('editions_date') . " : <br>" . _('editions_signature_2') . " :</b><br><i>(" . _('editions_cachet_etab') . ")</i><br><br><br><br><br><br><br><br><br>\n"; echo "</td>\n"; echo "<td> </td>\n"; echo "</tr>\n"; echo "</table>\n"; /*************************************/ /* affichage du texte en bas de page */ /*************************************/ echo "\n<!-- affichage du texte en bas de page -->\n"; echo "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"770\">\n"; echo "<tr align=\"center\">\n"; echo "<td><br>" . $_SESSION['config']['texte_bas_edition_papier'] . "</td>\n"; echo "</tr>\n"; echo "</table>\n"; }
$add_css = '<style>#onglet_menu .onglet{ width: ' . str_replace(',', '.', 100 / count($onglets)) . '% ;}</style>'; header_menu('', 'Libertempo : ' . _('divers_responsable_maj_1'), $add_css); /*********************************/ /* AFFICHAGE DES ONGLETS... */ /*********************************/ echo '<div id="onglet_menu">'; foreach ($onglets as $key => $title) { echo '<div class="onglet ' . ($onglet == $key ? ' active' : '') . '" > <a href="' . $PHP_SELF . '?session=' . $session . '&onglet=' . $key . '">' . $title . '</a> </div>'; } echo '</div>'; /*********************************/ /* AFFICHAGE DE L'ONGLET ... */ /*********************************/ /** initialisation des tableaux des types de conges/absences **/ // recup du tableau des types de conges (seulement les conges) $tab_type_cong = recup_tableau_types_conges(); // recup du tableau des types de conges exceptionnels (seulement les conges exceptionnels) $tab_type_conges_exceptionnels = array(); if ($_SESSION['config']['gestion_conges_exceptionnels']) { $tab_type_conges_exceptionnels = recup_tableau_types_conges_exceptionnels(); } echo '<div class="' . $onglet . ' main-content">'; include_once ROOT_PATH . 'responsable/resp_' . $onglet . '.php'; echo '</div>'; /*********************************/ /* AFFICHAGE DU BOTTOM ... */ /*********************************/ bottom(); exit;
function affiche_select_conges_id($DEBUG = FALSE) { $tab_conges = recup_tableau_types_conges($DEBUG); $tab_conges_except = recup_tableau_types_conges_exceptionnels($DEBUG); foreach ($tab_conges as $id => $libelle) { if ($libelle == 1) { echo "<option value=\"{$id}\" selected>{$libelle}</option>\n"; } else { echo "<option value=\"{$id}\">{$libelle}</option>\n"; } } if (count($tab_conges_except) != 0) { foreach ($tab_conges_except as $id => $libelle) { if ($libelle == 1) { echo "<option value=\"{$id}\" selected>{$libelle}</option>\n"; } else { echo "<option value=\"{$id}\">{$libelle}</option>\n"; } } } }
public static function affiche_select_conges_id() { $tab_conges = recup_tableau_types_conges(); $tab_conges_except = recup_tableau_types_conges_exceptionnels(); $return = ''; foreach ($tab_conges as $id => $libelle) { if ($libelle == 1) { $return .= '<option value="' . $id . '" selected>' . $libelle . '</option>'; } else { $return .= '<option value="' . $id . '">' . $libelle . '</option>'; } } if (count($tab_conges_except) != 0) { foreach ($tab_conges_except as $id => $libelle) { if ($libelle == 1) { $return .= '<option value="' . $id . '" selected>' . $libelle . '</option>'; } else { $return .= '<option value="' . $id . '">' . $libelle . '</option>'; } } } return $return; }
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; }