function affichage_boutons_defilement($first_jour, $mois, $year, $select_groupe, $DEBUG = FALSE) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); if ($mois == 12) { $next_mois = 1; } else { $next_mois = $mois + 1; } if ($mois == 1) { $prev_mois = 12; } else { $prev_mois = $mois - 1; } if ($prev_mois == 12) { $prev_year = $year - 1; } else { $prev_year = $year; } if ($next_mois == 1) { $next_year = $year + 1; } else { $next_year = $year; } $prev_first_jour = date("j", jour_precedent($first_jour, $mois, $year)); $prev_first_jour_mois = date("n", jour_precedent($first_jour, $mois, $year)); $prev_first_jour_year = date("Y", jour_precedent($first_jour, $mois, $year)); $next_first_jour = date("j", jour_suivant($first_jour, $mois, $year)); $next_first_jour_mois = date("n", jour_suivant($first_jour, $mois, $year)); $next_first_jour_year = date("Y", jour_suivant($first_jour, $mois, $year)); $content .= "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"90%\" >\n"; $content .= "<tr>\n"; $content .= "<td align=\"left\">\n\t\t\t\t<a href=\"{$PHP_SELF}?session={$session}&first_jour=1&mois={$prev_mois}&year={$prev_year}&select_groupe={$select_groupe}\" method=\"POST\"> << " . _('divers_mois_precedent_maj_1') . " </a>\n\t\t\t</td>\n"; $content .= "<td align=\"left\">\n\t\t\t\t<a href=\"{$PHP_SELF}?session={$session}&first_jour={$prev_first_jour}&mois={$prev_first_jour_mois}&year={$prev_first_jour_year}&select_groupe={$select_groupe}\" method=\"POST\"> << " . _('calendrier_jour_precedent') . " </a>\n\t\t\t</td>\n"; $content .= "<td align=\"right\">\n\t\t\t\t<a href=\"{$PHP_SELF}?session={$session}&first_jour={$next_first_jour}&mois={$next_first_jour_mois}&year={$next_first_jour_year}&select_groupe={$select_groupe}\" method=\"POST\"> " . _('calendrier_jour_suivant') . " >> </a>\n\t\t\t</td>\n"; $content .= "<td align=\"right\">\n\t\t\t\t<a href=\"{$PHP_SELF}?session={$session}&first_jour=1&mois={$next_mois}&year={$next_year}&select_groupe={$select_groupe}\" method=\"POST\"> " . _('divers_mois_suivant_maj_1') . " >> </a>\n\t\t\t</td>\n"; $content .= "</tr></table>\n"; $content .= "<br>\n"; }
function affichage_boutons_defilement($first_jour, $mois, $year, $select_groupe, $DEBUG = FALSE) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); if ($mois == 12) { $next_mois = 1; } else { $next_mois = $mois + 1; } if ($mois == 1) { $prev_mois = 12; } else { $prev_mois = $mois - 1; } if ($prev_mois == 12) { $prev_year = $year - 1; } else { $prev_year = $year; } if ($next_mois == 1) { $next_year = $year + 1; } else { $next_year = $year; } $prev_first_jour = date("j", jour_precedent($first_jour, $mois, $year)); $prev_first_jour_mois = date("n", jour_precedent($first_jour, $mois, $year)); $prev_first_jour_year = date("Y", jour_precedent($first_jour, $mois, $year)); $next_first_jour = date("j", jour_suivant($first_jour, $mois, $year)); $next_first_jour_mois = date("n", jour_suivant($first_jour, $mois, $year)); $next_first_jour_year = date("Y", jour_suivant($first_jour, $mois, $year)); echo "<ul class=\"pager\">\n"; echo "<li><a href=\"{$PHP_SELF}?session={$session}&first_jour=1&mois={$prev_mois}&year={$prev_year}&select_groupe={$select_groupe}\" method=\"POST\"><i class=\"fa fa-angle-double-left\"></i> " . _('divers_mois_precedent_maj_1') . " </a></li>\n"; echo "<li><a href=\"{$PHP_SELF}?session={$session}&first_jour=1&mois={$next_mois}&year={$next_year}&select_groupe={$select_groupe}\" method=\"POST\">" . _('divers_mois_suivant_maj_1') . " <i class=\"fa fa-angle-double-right\"></i></a></li>\n"; echo "</ul>\n"; }
<div class="container"> <div class="top"> <span class="left"> <?php echo "<a href='" . jour_precedent($jour, $mois, $annee) . "'><<</a>"; ?> </span> <span> <?php echo "- " . $jour . " / " . $mois . " / " . $annee . " -"; ?> </span> <span class="right"> <?php echo "<a href='" . jour_suivant($jour, $mois, $annee) . "'>>></a>"; ?> </span> </div> <br> <div class="container"> <br> <a href='../index.php'><input type="button" value="RETOUR"></input></a> </div> <br> <?php require_once 'calendrier.php'; ?>
function verif_periode_chevauche_periode_user($date_debut, $date_fin, $user, $num_current_periode = '', $tab_periode_calcul, &$comment, $DEBUG = FALSE, $num_update = null) { /************************************************************/ // 2 : on verifie que le conges demandé ne chevauche pas une periode deja posée // -> on recupere les periodes par rapport aux dates, on en fait une tableau de 1/2 journees, et on compare par 1/2 journee $tab_periode_deja_prise = array(); $current_day = $date_debut; $date_limite = jour_suivant($date_fin); // on va avancer jour par jour jusqu'à la date limite et recupere les periodes qui contiennent ce jour... // on construit un tableau par date et 1/2 jour avec l'état de la periode while ($current_day != $date_limite) { $tab_periode_deja_prise[$current_day]['am'] = "no"; $tab_periode_deja_prise[$current_day]['pm'] = "no"; if ($num_update === null) { // verif si c'est deja un conges $user_periode_sql = 'SELECT p_date_deb, p_demi_jour_deb, p_date_fin, p_demi_jour_fin, p_etat FROM conges_periode WHERE p_login = \'' . SQL::quote($user) . '\' AND ( p_etat=\'ok\' OR p_etat=\'valid\' OR p_etat=\'demande\' ) ' . (!empty($num_current_periode) ? 'AND p_num != ' . intval($num_current_periode) . ' ' : '') . ' AND p_date_deb<=\'' . SQL::quote($current_day) . '\' AND p_date_fin>=\'' . SQL::quote($current_day) . '\' '; } else { // verif si c'est deja un conges $user_periode_sql = 'SELECT p_date_deb, p_demi_jour_deb, p_date_fin, p_demi_jour_fin, p_etat FROM conges_periode WHERE p_login = \'' . SQL::quote($user) . '\' AND ( p_etat=\'ok\' OR p_etat=\'valid\' OR p_etat=\'demande\' ) ' . (!empty($num_current_periode) ? 'AND p_num != ' . intval($num_current_periode) . ' ' : '') . ' AND p_date_deb<=\'' . SQL::quote($current_day) . '\' AND p_date_fin>=\'' . SQL::quote($current_day) . '\' AND p_num != \'' . intval($num_update) . '\' '; } $user_periode_request = SQL::query($user_periode_sql); // $user_periode_request = SQL::query($user_periode_sql); if ($user_periode_request->num_rows != 0) { while ($resultat_periode = $user_periode_request->fetch_array()) { $sql_p_date_deb = $resultat_periode["p_date_deb"]; $sql_p_date_fin = $resultat_periode["p_date_fin"]; $sql_p_demi_jour_deb = $resultat_periode["p_demi_jour_deb"]; $sql_p_demi_jour_fin = $resultat_periode["p_demi_jour_fin"]; $sql_p_etat = $resultat_periode["p_etat"]; if ($current_day != $sql_p_date_deb && $current_day != $sql_p_date_fin) { // pas la peine d'aller + loin, on chevauche une periode de conges !!! if ($sql_p_etat == "demande") { $comment = _('calcul_nb_jours_commentaire_impossible'); } else { $comment = _('calcul_nb_jours_commentaire'); } if ($DEBUG) { echo "tab_periode_deja_prise :<br>\n"; print_r($tab_periode_deja_prise); echo "<br>\n"; } return TRUE; } elseif ($current_day == $sql_p_date_deb && $current_day == $sql_p_date_fin) { if ($sql_p_demi_jour_deb == "am") { $tab_periode_deja_prise[$current_day]['am'] = "{$sql_p_etat}"; } if ($sql_p_demi_jour_fin == "pm") { $tab_periode_deja_prise[$current_day]['pm'] = "{$sql_p_etat}"; } } elseif ($current_day == $sql_p_date_deb) { if ($sql_p_demi_jour_deb == "am") { $tab_periode_deja_prise[$current_day]['am'] = "{$sql_p_etat}"; $tab_periode_deja_prise[$current_day]['pm'] = "{$sql_p_etat}"; } else { // alors ($sql_p_demi_jour_deb=="pm") $tab_periode_deja_prise[$current_day]['pm'] = "{$sql_p_etat}"; } } else { if ($sql_p_demi_jour_fin == "pm") { $tab_periode_deja_prise[$current_day]['am'] = "{$sql_p_etat}"; $tab_periode_deja_prise[$current_day]['pm'] = "{$sql_p_etat}"; } else { // alors ($sql_p_demi_jour_fin=="am") $tab_periode_deja_prise[$current_day]['am'] = "{$sql_p_etat}"; } } } } $current_day = jour_suivant($current_day); } // fin du while /**********************************************/ // Ensuite verifie en parcourant le tableau qu'on vient de crée (s'il n'est pas vide) if (count($tab_periode_deja_prise) != 0) { $current_day = $date_debut; $date_limite = jour_suivant($date_fin); // on va avancer jour par jour jusqu'à la date limite et recupere les periodes qui contiennent ce jour... // on construit un tableau par date et 1/2 jour avec l'état de la periode while ($current_day != $date_limite) { if ($tab_periode_calcul[$current_day]['am'] == 1 && $tab_periode_deja_prise[$current_day]['am'] != "no") { // pas la peine d'aller + loin, on chevauche une periode de conges !!! if ($tab_periode_deja_prise[$current_day]['am'] == "demande") { $comment = _('calcul_nb_jours_commentaire_impossible'); } else { $comment = _('calcul_nb_jours_commentaire'); } if ($DEBUG) { echo "tab_periode_deja_prise :<br>\n"; print_r($tab_periode_deja_prise); echo "<br>\n"; } return TRUE; } if ($tab_periode_calcul[$current_day]['pm'] == 1 && $tab_periode_deja_prise[$current_day]['pm'] != "no") { // pas la peine d'aller + loin, on chevauche une periode de conges !!! if ($tab_periode_deja_prise[$current_day]['pm'] == "demande") { $comment = _('calcul_nb_jours_commentaire_impossible'); } else { $comment = _('calcul_nb_jours_commentaire'); } if ($DEBUG) { echo "tab_periode_deja_prise :<br>\n"; print_r($tab_periode_deja_prise); echo "<br>\n"; } return TRUE; } $current_day = jour_suivant($current_day); } // fin du while } if ($DEBUG) { echo "tab_periode_calcul :<br>\n"; print_r($tab_periode_calcul); echo "<br>\n"; } return FALSE; /************************************************************/ // Fin de le verif de chevauchement d'une période déja saisie }
function commit_new_fermeture($new_date_debut, $new_date_fin, $groupe_id, $id_type_conges, $DEBUG = FALSE) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); // on transforme les formats des dates $tab_date_debut = explode("/", $new_date_debut); // date au format d/m/Y $date_debut = $tab_date_debut[2] . "-" . $tab_date_debut[1] . "-" . $tab_date_debut[0]; $tab_date_fin = explode("/", $new_date_fin); // date au format d/m/Y $date_fin = $tab_date_fin[2] . "-" . $tab_date_fin[1] . "-" . $tab_date_fin[0]; if ($DEBUG) { echo "date_debut = {$date_debut} // date_fin = {$date_fin}<br>\n"; } /*****************************/ // on construit le tableau des users affectés par les fermetures saisies : if ($groupe_id == 0) { // fermeture pour tous ! $list_users = get_list_all_users($DEBUG); } else { $list_users = get_list_users_du_groupe($groupe_id, $DEBUG); } $tab_users = explode(",", $list_users); if ($DEBUG) { echo "tab_users =<br>\n"; print_r($tab_users); echo "<br>\n"; } //****************************** // !!!! // type d'absence à modifier .... // $id_type_conges = 1 ; //"cp" : conges payes //calcul de l'ID de de la fermeture (en fait l'ID de la saisie de fermeture) $new_fermeture_id = get_last_fermeture_id($DEBUG) + 1; /***********************************************/ /** enregistrement des jours de fermetures **/ $tab_fermeture = array(); for ($current_date = $date_debut; $current_date <= $date_fin; $current_date = jour_suivant($current_date)) { $tab_fermeture[] = $current_date; } if ($DEBUG) { echo "tab_fermeture =<br>\n"; print_r($tab_fermeture); echo "<br>\n"; } // on insere les nouvelles dates saisies dans conges_jours_fermeture $result = insert_year_fermeture($new_fermeture_id, $tab_fermeture, $groupe_id, $DEBUG); $opt_debut = 'am'; $opt_fin = 'pm'; /*********************************************************/ /** insersion des jours de fermetures pour chaque user **/ foreach ($tab_users as $current_login) { $current_login = trim($current_login); // on enleve les quotes qui ont été ajoutées lors de la creation de la liste $current_login = trim($current_login, "\\'"); // on compte le nb de jour à enlever au user (par periode et au total) // on ne met à jour la table conges_periode $nb_jours = 0; $comment = ""; // $nb_jours = compter($current_login, $date_debut, $date_fin, $opt_debut, $opt_fin, $comment, $DEBUG); $nb_jours = compter($current_login, "", $date_debut, $date_fin, $opt_debut, $opt_fin, $comment, $DEBUG); if ($DEBUG) { echo "<br>user_login : "******" nbjours : " . $nb_jours . "<br>\n"; } // on ne met à jour la table conges_periode . $commentaire = _('divers_fermeture'); $etat = "ok"; $num_periode = insert_dans_periode($current_login, $date_debut, $opt_debut, $date_fin, $opt_fin, $nb_jours, $commentaire, $id_type_conges, $etat, $new_fermeture_id, $DEBUG); // mise à jour du solde de jours de conges pour l'utilisateur $current_login if ($nb_jours != 0) { soustrait_solde_et_reliquat_user($current_login, "", $nb_jours, $id_type_conges, $date_debut, $opt_debut, $date_fin, $opt_fin, $DEBUG); } } // on recharge les jours fermés dans les variables de session init_tab_jours_fermeture($_SESSION['userlogin'], $DEBUG); echo '<div class="wrapper">'; if ($result) { echo "<br>" . _('form_modif_ok') . "<br><br>\n"; } else { echo "<br>" . _('form_modif_not_ok') . " !<br><br>\n"; } $comment_log = "saisie des jours de fermeture de {$date_debut} a {$date_fin}"; log_action(0, "", "", $comment_log, $DEBUG); echo "<form action=\"{$PHP_SELF}?session={$session}\" method=\"POST\">\n"; echo "<input class=\"btn btn-success\" type=\"submit\" value=\"" . _('form_ok') . "\">\n"; echo "</form>\n"; echo '</div>'; }