Example #1
0
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";
}
Example #2
0
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>&nbsp;" . _('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') . "&nbsp;<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>';
}