Ejemplo n.º 1
0
function commit_saisie($tab_checkbox_j_chome, $DEBUG = FALSE)
{
    $PHP_SELF = $_SERVER['PHP_SELF'];
    $session = session_id();
    if ($DEBUG) {
        echo "tab_checkbox_j_chome : <br>\n";
        print_r($tab_checkbox_j_chome);
        echo "<br>\n";
    }
    // si l'année est déja renseignée dans la database, on efface ttes les dates de l'année
    if (verif_year_deja_saisie($tab_checkbox_j_chome, $DEBUG)) {
        $result = delete_year($tab_checkbox_j_chome, $DEBUG);
    }
    // on insert les nouvelles dates saisies
    $result = insert_year($tab_checkbox_j_chome, $DEBUG);
    // on recharge les jours feries dans les variables de session
    init_tab_jours_feries($DEBUG);
    if ($result) {
        echo "<div class=\"alert alert-success\">" . _('form_modif_ok') . "</div>\n";
    } else {
        echo "<div class=\"alert alert-danger\">" . _('form_modif_not_ok') . "</div>\n";
    }
    $date_1 = key($tab_checkbox_j_chome);
    $tab_date = explode('-', $date_1);
    $comment_log = "saisie des jours chomés pour " . $tab_date[0];
    log_action(0, "", "", $comment_log, $DEBUG);
}
Ejemplo n.º 2
0
function compter($user, $num_current_periode, $date_debut, $date_fin, $opt_debut, $opt_fin, &$comment, $DEBUG = FALSE, $num_update = null)
{
    // verif si date_debut est bien anterieure à date_fin
    // ou si meme jour mais debut l'apres midi et fin le matin
    if (strtotime($date_debut) > strtotime($date_fin) || $date_debut == $date_fin && $opt_debut == "pm" && $opt_fin == "am") {
        $comment = _('calcul_nb_jours_commentaire_bad_date');
        return 0;
    }
    if ($date_debut != 0 && $date_fin != 0) {
        // On ne peut pas calculer si, pour l'année considérée, les jours feries ont ete saisis
        if (verif_jours_feries_saisis($date_debut, $DEBUG, $num_update) == FALSE || verif_jours_feries_saisis($date_fin, $DEBUG, $num_update) == FALSE) {
            $comment = _('calcul_impossible') . "<br>\n" . _('jours_feries_non_saisis') . "<br>\n" . _('contacter_admin') . "<br>\n";
            return 0;
        }
        /************************************************************/
        // 1 : on fabrique un tableau de jours (divisé chacun en 2 demi-jour) de la date_debut à la date_fin
        // 2 : on verifie que le conges demandé ne chevauche pas une periode deja posée
        // 3 : on affecte à 0 ou 1 chaque demi jour, en fonction de s'il est travaillé ou pas
        // 4 : à la fin , on parcours le tableau en comptant le nb de demi-jour à 1, on multiplie ce total par 0.5, ça donne le nb de jours du conges !
        $nb_jours = 0;
        /************************************************************/
        // 1 : fabrication et initialisation du tableau des demi-jours de la date_debut à la date_fin
        $tab_periode_calcul = make_tab_demi_jours_periode($date_debut, $date_fin, $opt_debut, $opt_fin, $DEBUG);
        /************************************************************/
        // 2 : on verifie que le conges demandé ne chevauche pas une periode deja posée
        if (verif_periode_chevauche_periode_user($date_debut, $date_fin, $user, $num_current_periode, $tab_periode_calcul, $comment, $DEBUG, $num_update)) {
            return 0;
        }
        /************************************************************/
        // 3 : on affecte à 0 ou 1 chaque demi jour, en fonction de s'il est travaillé ou pas
        // on initialise le tableau global des jours fériés s'il ne l'est pas déjà :
        if (!isset($_SESSION["tab_j_feries"])) {
            init_tab_jours_feries();
            //print_r($_SESSION["tab_j_feries"]);   // verif DEBUG
        }
        // on initialise le tableau global des jours fermés s'il ne l'est pas déjà :
        if (!isset($_SESSION["tab_j_fermeture"])) {
            init_tab_jours_fermeture($user, $DEBUG);
            //print_r($_SESSION["tab_j_fermeture"]);   // verif DEBUG
        }
        $current_day = $date_debut;
        $date_limite = jour_suivant($date_fin);
        // on va avancer jour par jour jusqu'à la date limite et voir si chaque jour est travaillé, férié, rtt, etc ...
        while ($current_day != $date_limite) {
            // calcul du timestamp du jour courant
            $pieces = explode("-", $current_day);
            // date de la forme yyyy-mm-jj
            $y = $pieces[0];
            $m = $pieces[1];
            $j = $pieces[2];
            $timestamp_du_jour = mktime(0, 0, 0, $m, $j, $y);
            // on regarde si le jour est travaillé ou pas dans la config de l'appli
            $j_name = date("D", $timestamp_du_jour);
            if ($j_name == "Sat" && $_SESSION['config']['samedi_travail'] == FALSE || $j_name == "Sun" && $_SESSION['config']['dimanche_travail'] == FALSE) {
                // on ne compte ce jour à 0
                $tab_periode_calcul[$current_day]['am'] = 0;
                $tab_periode_calcul[$current_day]['pm'] = 0;
            } elseif (est_chome($timestamp_du_jour)) {
                // on ne compte ce jour à 0
                $tab_periode_calcul[$current_day]['am'] = 0;
                $tab_periode_calcul[$current_day]['pm'] = 0;
            } else {
                /***************/
                // verif des rtt ou temp partiel (dans la table rtt)
                $val_matin = "N";
                $val_aprem = "N";
                recup_infos_artt_du_jour($user, $timestamp_du_jour, $val_matin, $val_aprem);
                if ($val_matin == "Y") {
                    // rtt le matin
                    $tab_periode_calcul[$current_day]['am'] = 0;
                }
                if ($val_aprem == "Y") {
                    // rtt l'après midi
                    $tab_periode_calcul[$current_day]['pm'] = 0;
                }
            }
            $current_day = jour_suivant($current_day);
        }
        if ($DEBUG) {
            echo "tab_periode_calcul :<br>\n";
            print_r($tab_periode_calcul);
            echo "<br>\n";
        }
        /************************************************************/
        // 3 : on va avancer jour par jour jusqu'à la date limite pour compter le nb de demi jour à 1
        $current_day = $date_debut;
        $date_limite = jour_suivant($date_fin);
        while ($current_day != $date_limite) {
            $nb_jours = $nb_jours + $tab_periode_calcul[$current_day]['am'] + $tab_periode_calcul[$current_day]['pm'];
            $current_day = jour_suivant($current_day);
        }
        $nb_jours = $nb_jours * 0.5;
        return $nb_jours;
    } else {
        return 0;
    }
}
Ejemplo n.º 3
0
/*************************************/
// recup des parametres reçus :
// SERVER
$PHP_SELF = $_SERVER['PHP_SELF'];
// GET / POST
$selected = getpost_variable('selected');
$printable = getpost_variable('printable', 0);
$year = getpost_variable('year', date("Y"));
$mois = getpost_variable('mois', date("n"));
$first_jour = getpost_variable('first_jour', 1);
//	$first_load    = getpost_variable('first_load', "Y") ;
$select_groupe = getpost_variable('select_groupe', 0);
/*************************************/
// on initialise le tableau global des jours fériés s'il ne l'est pas déjà :
if (!isset($_SESSION["tab_j_feries"])) {
    init_tab_jours_feries();
    //print_r($_SESSION["tab_j_feries"]);   // verif DEBUG
}
// renvoit un tableau de tableau contenant les infos des types de conges et absences
$tab_type_absence = recup_tableau_tout_types_abs($DEBUG);
//	$content .= "<hr align=\"center\" size=\"2\" width=\"90%\"> \n";
$jour_today = date("j");
$mois_today = date("m");
$year_today = date("Y");
$timestamp_today = mktime(0, 0, 0, $mois_today, $jour_today, $year_today);
$mois_timestamp = mktime(0, 0, 0, $mois, 1, $year);
$nom_mois = date_fr("F", $mois_timestamp);
$group_names = get_groups_name();
// AFFICHAGE PAGE
$content .= '<div style="width: 2540px; text-align: right;"></div>';
$content .= "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n";
Ejemplo n.º 4
0
function affichage($user_login,  $year_affichage, $year_calendrier_saisie_debut, $mois_calendrier_saisie_debut, $year_calendrier_saisie_fin, $mois_calendrier_saisie_fin, $tri_date,  $DEBUG)
{
    $PHP_SELF=$_SERVER['PHP_SELF']; ;
    $session=session_id();

    // on initialise le tableau global des jours fériés s'il ne l'est pas déjà :
    if(!isset($_SESSION["tab_j_feries"]))
    {
        init_tab_jours_feries();
        //print_r($GLOBALS["tab_j_feries"]);   // verif DEBUG
    }

    /********************/
    /* Récupération des informations sur le user : */
    /********************/
    $list_group_dbl_valid_du_resp = get_list_groupes_double_valid_du_resp($_SESSION['userlogin'],  $DEBUG);
    $tab_user=array();
    $tab_user = recup_infos_du_user($user_login, $list_group_dbl_valid_du_resp,  $DEBUG);
    if( $DEBUG ) { echo"tab_user =<br>\n"; print_r($tab_user); echo "<br>\n"; }

    $list_all_users_du_resp=get_list_all_users_du_resp($_SESSION['userlogin'],  $DEBUG);
    if( $DEBUG ) { echo"list_all_users_du_resp = $list_all_users_du_resp<br>\n"; }

    // recup des grd resp du user
    $tab_grd_resp=array();
    if($_SESSION['config']['double_validation_conges'])
    {
        get_tab_grd_resp_du_user($user_login, $tab_grd_resp,  $DEBUG);
        if( $DEBUG ) { echo"tab_grd_resp =<br>\n"; print_r($tab_grd_resp); echo "<br>\n"; }
    }

    /********************/
    /* Titre */
    /********************/
    echo "<h2>". _('resp_traite_user_titre') ." ".$tab_user['prenom']." ".$tab_user['nom'].".</h2>\n\n";


    /********************/
    /* Bilan des Conges */
    /********************/
    // AFFICHAGE TABLEAU
    // affichage du tableau récapitulatif des solde de congés d'un user
    affiche_tableau_bilan_conges_user($user_login);
    echo "<br><br>\n";

    /*************************/
    /* SAISIE NOUVEAU CONGES */
    /*************************/
    // dans le cas ou les users ne peuvent pas saisir de demande, le responsable saisi les congès :
    if( !$_SESSION['config']['user_saisie_demande'] || $_SESSION['config']['resp_saisie_mission'] )
    {

        // si les mois et année ne sont pas renseignés, on prend ceux du jour
        if($year_calendrier_saisie_debut==0)
            $year_calendrier_saisie_debut=date("Y");
        if($mois_calendrier_saisie_debut==0)
            $mois_calendrier_saisie_debut=date("m");
        if($year_calendrier_saisie_fin==0)
            $year_calendrier_saisie_fin=date("Y");
        if($mois_calendrier_saisie_fin==0)
            $mois_calendrier_saisie_fin=date("m");
        if( $DEBUG ) { echo "$mois_calendrier_saisie_debut  $year_calendrier_saisie_debut  -  $mois_calendrier_saisie_fin  $year_calendrier_saisie_fin<br>\n"; }

        echo "<H3>". _('resp_traite_user_new_conges') ."</H3>\n\n";

        //affiche le formulaire de saisie d'une nouvelle demande de conges ou d'un  nouveau conges
        $onglet = "traite_user";
        saisie_nouveau_conges($user_login, $year_calendrier_saisie_debut, $mois_calendrier_saisie_debut, $year_calendrier_saisie_fin, $mois_calendrier_saisie_fin, $onglet);

        echo "<hr align=\"center\" size=\"2\" width=\"90%\"> \n";
    }

    /*********************/
    /* Etat des Demandes */
    /*********************/
    if($_SESSION['config']['user_saisie_demande'])
    {
        //verif si le user est bien un user du resp (et pas seulement du grand resp)
        if(strstr($list_all_users_du_resp, "'$user_login'")!=FALSE)
        {
            echo "<h3>". _('resp_traite_user_etat_demandes') ."</h3>\n";

            //affiche l'état des demandes du user (avec le formulaire pour le responsable)
            affiche_etat_demande_user_for_resp($user_login, $tab_user, $tab_grd_resp,  $DEBUG);

            echo "<hr align=\"center\" size=\"2\" width=\"90%\"> \n";
        }
    }

    /*********************/
    /* Etat des Demandes en attente de 2ieme validation */
    /*********************/
    if($_SESSION['config']['double_validation_conges'])
    {
        /*******************************/
        /* verif si le resp est grand_responsable pour ce user*/

        if(in_array($_SESSION['userlogin'], $tab_grd_resp)) // si resp_login est dans le tableau
        {
            echo "<h3>". _('resp_traite_user_etat_demandes_2_valid') ."</h3>\n";

            //affiche l'état des demande en attente de 2ieme valid du user (avec le formulaire pour le responsable)
            affiche_etat_demande_2_valid_user_for_resp($user_login,  $DEBUG);

            echo "<hr align=\"center\" size=\"2\" width=\"90%\"> \n";
        }
    }

    /*******************/
    /* Etat des Conges */
    /*******************/
    echo "<h3>". _('resp_traite_user_etat_conges') ."</h3>\n";

    //affiche l'état des conges du user (avec le formulaire pour le responsable)
    affiche_etat_conges_user_for_resp($user_login,  $year_affichage, $tri_date, $onglet, $DEBUG);

    //echo "<hr align=\"center\" size=\"2\" width=\"90%\"> \n";


    echo "<td valign=\"middle\">\n";
    echo "</td></tr></table>\n";
    echo "<center>\n";

}
Ejemplo n.º 5
0
function commit_saisie($tab_checkbox_j_chome, $DEBUG = FALSE)
{
    $PHP_SELF = $_SERVER['PHP_SELF'];
    $session = session_id();
    header_popup();
    echo "<h1>" . _('admin_jours_chomes_titre') . "</h1>\n";
    if ($DEBUG) {
        echo "tab_checkbox_j_chome : <br>\n";
        print_r($tab_checkbox_j_chome);
        echo "<br>\n";
    }
    // si l'année est déja renseignée dans la database, on efface ttes les dates de l'année
    if (verif_year_deja_saisie($tab_checkbox_j_chome, $DEBUG)) {
        $result = delete_year($tab_checkbox_j_chome, $DEBUG);
    }
    // on insert les nouvelles dates saisies
    $result = insert_year($tab_checkbox_j_chome, $DEBUG);
    // on recharge les jours feries dans les variables de session
    init_tab_jours_feries($DEBUG);
    if ($result) {
        echo "<br>" . _('form_modif_ok') . ".<br><br>\n";
    } else {
        echo "<br>" . _('form_modif_not_ok') . " !<br><br>\n";
    }
    $date_1 = key($tab_checkbox_j_chome);
    $tab_date = explode('-', $date_1);
    $comment_log = "saisie des jours chomés pour " . $tab_date[0];
    log_action(0, "", "", $comment_log, $DEBUG);
    echo "<form action=\"{$PHP_SELF}?session={$session}\" method=\"POST\">\n";
    echo "<table>\n";
    echo "<tr><td align=\"center\">\n";
    echo "\t<input type=\"button\" value=\"" . _('form_close_window') . "\" onClick=\"javascript:window.close();\">\n";
    echo "</td></tr>\n";
    echo "</table>\n";
    echo "</form>\n";
    bottom();
}
Ejemplo n.º 6
0
 public static function affichage($user_login, $year_affichage, $year_calendrier_saisie_debut, $mois_calendrier_saisie_debut, $year_calendrier_saisie_fin, $mois_calendrier_saisie_fin, $tri_date)
 {
     $PHP_SELF = $_SERVER['PHP_SELF'];
     $session = session_id();
     $return = '';
     // on initialise le tableau global des jours fériés s'il ne l'est pas déjà :
     if (!isset($_SESSION["tab_j_feries"])) {
         init_tab_jours_feries();
     }
     /********************/
     /* Récupération des informations sur le user : */
     /********************/
     $list_group_dbl_valid_du_resp = get_list_groupes_double_valid_du_resp($_SESSION['userlogin']);
     $tab_user = array();
     $tab_user = recup_infos_du_user($user_login, $list_group_dbl_valid_du_resp);
     $list_all_users_du_resp = get_list_all_users_du_resp($_SESSION['userlogin']);
     // recup des grd resp du user
     $tab_grd_resp = array();
     if ($_SESSION['config']['double_validation_conges']) {
         get_tab_grd_resp_du_user($user_login, $tab_grd_resp);
     }
     include_once ROOT_PATH . 'fonctions_javascript.php';
     /********************/
     /* Titre */
     /********************/
     $return .= '<h1>' . $tab_user['prenom'] . ' ' . $tab_user['nom'] . '</h1>';
     /********************/
     /* Bilan des Conges */
     /********************/
     // AFFICHAGE TABLEAU
     // affichage du tableau récapitulatif des solde de congés d'un user
     $return .= affiche_tableau_bilan_conges_user($user_login);
     $return .= '<hr/>';
     /*************************/
     /* SAISIE NOUVEAU CONGES */
     /*************************/
     // dans le cas ou les users ne peuvent pas saisir de demande, le responsable saisi les congès :
     if (!$_SESSION['config']['user_saisie_demande'] || $_SESSION['config']['resp_saisie_mission']) {
         // si les mois et année ne sont pas renseignés, on prend ceux du jour
         if ($year_calendrier_saisie_debut == 0) {
             $year_calendrier_saisie_debut = date("Y");
         }
         if ($mois_calendrier_saisie_debut == 0) {
             $mois_calendrier_saisie_debut = date("m");
         }
         if ($year_calendrier_saisie_fin == 0) {
             $year_calendrier_saisie_fin = date("Y");
         }
         if ($mois_calendrier_saisie_fin == 0) {
             $mois_calendrier_saisie_fin = date("m");
         }
         $return .= '<h2>' . _('resp_traite_user_new_conges') . '</h2>';
         //affiche le formulaire de saisie d'une nouvelle demande de conges ou d'un  nouveau conges
         $onglet = "traite_user";
         $return .= saisie_nouveau_conges2($user_login, $year_calendrier_saisie_debut, $mois_calendrier_saisie_debut, $year_calendrier_saisie_fin, $mois_calendrier_saisie_fin, $onglet);
         $return .= '<hr/>';
     }
     /*********************/
     /* Etat des Demandes */
     /*********************/
     if ($_SESSION['config']['user_saisie_demande']) {
         //verif si le user est bien un user du resp (et pas seulement du grand resp)
         if (strstr($list_all_users_du_resp, "'{$user_login}'") != FALSE) {
             $return .= '<h2>' . _('resp_traite_user_etat_demandes') . '</h2>';
             //affiche l'état des demandes du user (avec le formulaire pour le responsable)
             $return .= \responsable\Fonctions::affiche_etat_demande_user_for_resp($user_login, $tab_user, $tab_grd_resp);
             $return .= '<hr/>';
         }
     }
     /*********************/
     /* Etat des Demandes en attente de 2ieme validation */
     /*********************/
     if ($_SESSION['config']['double_validation_conges']) {
         /*******************************/
         /* verif si le resp est grand_responsable pour ce user*/
         if (in_array($_SESSION['userlogin'], $tab_grd_resp)) {
             $return .= '<h2>' . _('resp_traite_user_etat_demandes_2_valid') . '</h2>';
             //affiche l'état des demande en attente de 2ieme valid du user (avec le formulaire pour le responsable)
             $return .= \responsable\Fonctions::affiche_etat_demande_2_valid_user_for_resp($user_login);
             $return .= '<hr/>';
         }
     }
     /*******************/
     /* Etat des Conges */
     /*******************/
     //affiche l'état des conges du user (avec le formulaire pour le responsable)
     $onglet = "traite_user";
     $return .= \responsable\Fonctions::affiche_etat_conges_user_for_resp($user_login, $year_affichage, $tri_date, $onglet);
     return $return;
 }
Ejemplo n.º 7
0
 /**
  * Encapsule le comportement du module d'échange d'absence
  *
  * @param string $onglet Nom de l'onglet à afficher
  *
  * @return void
  * @access public
  * @static
  */
 public static function echangeJourAbsenceModule($onglet)
 {
     $return = '';
     init_tab_jours_feries();
     $new_echange_rtt = getpost_variable('new_echange_rtt', 0);
     if ($new_echange_rtt == 1 && $_SESSION['config']['user_echange_rtt']) {
         $new_debut = getpost_variable('new_debut');
         $new_fin = getpost_variable('new_fin');
         $new_comment = getpost_variable('new_comment');
         $moment_absence_ordinaire = getpost_variable('moment_absence_ordinaire');
         $moment_absence_souhaitee = getpost_variable('moment_absence_souhaitee');
         $return .= \utilisateur\Fonctions::echange_absence_rtt($onglet, $new_debut, $new_fin, $new_comment, $moment_absence_ordinaire, $moment_absence_souhaitee);
     } else {
         $year_calendrier_saisie_debut = getpost_variable('year_calendrier_saisie_debut', date('Y'));
         $mois_calendrier_saisie_debut = getpost_variable('mois_calendrier_saisie_debut', date('m'));
         $year_calendrier_saisie_fin = getpost_variable('year_calendrier_saisie_fin', date('Y'));
         $mois_calendrier_saisie_fin = getpost_variable('mois_calendrier_saisie_fin', date('m'));
         $return .= '<h1>' . _('user_echange_rtt') . '</h1>';
         //affiche le formulaire de saisie d'une nouvelle demande de conges
         $return .= \utilisateur\Fonctions::saisie_echange_rtt($_SESSION['userlogin'], $year_calendrier_saisie_debut, $mois_calendrier_saisie_debut, $year_calendrier_saisie_fin, $mois_calendrier_saisie_fin, $onglet);
     }
     return $return;
 }
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
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' );

if($_SESSION['config']['where_to_find_user_email']=="ldap"){ include CONFIG_PATH .'config_ldap.php';}


	// on initialise le tableau global des jours fériés s'il ne l'est pas déjà :
	init_tab_jours_feries($DEBUG);

	echo '<h1>'. _('user_etat_demandes') .' :</h1>';

	$tri_date = getpost_variable('tri_date', "ascendant");


	// Récupération des informations
	// on ne recup QUE les periodes de type "conges"(cf table conges_type_absence) ET QUE les demandes
	$sql3 = '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_motif_refus, p_date_demande, p_date_traitement, p_num, ta_libelle
			FROM conges_periode as a, conges_type_absence as b
			WHERE a.p_login = \''.SQL::quote($_SESSION['userlogin']).'\'
			AND (a.p_type=b.ta_id)
			AND ( (b.ta_type=\'conges\') OR (b.ta_type=\'conges_exceptionnels\') )
			AND ((p_etat=\'demande\') OR (p_etat=\'valid\')) ';
	if($tri_date=='descendant')
Ejemplo n.º 9
0
 public static function commit_saisie($tab_checkbox_j_chome)
 {
     $PHP_SELF = $_SERVER['PHP_SELF'];
     $session = session_id();
     $return = '';
     // si l'année est déja renseignée dans la database, on efface ttes les dates de l'année
     if (\hr\Fonctions::verif_year_deja_saisie($tab_checkbox_j_chome)) {
         $result = \hr\Fonctions::delete_year($tab_checkbox_j_chome);
     }
     // on insert les nouvelles dates saisies
     $result = \hr\Fonctions::insert_year($tab_checkbox_j_chome);
     // on recharge les jours feries dans les variables de session
     init_tab_jours_feries();
     if ($result) {
         $return .= '<div class="alert alert-success">' . _('form_modif_ok') . '</div>';
     } else {
         $return .= '<div class="alert alert-danger">' . _('form_modif_not_ok') . '</div>';
     }
     $date_1 = key($tab_checkbox_j_chome);
     $tab_date = explode('-', $date_1);
     $comment_log = "saisie des jours chomés pour " . $tab_date[0];
     log_action(0, "", "", $comment_log);
     return $return;
 }
Ejemplo n.º 10
0
    /**
     * Encapsule le comportement du module calendrier
     *
     * @param string $session
     *
     * @return void
     * @access public
     * @static
     */
    public static function calendrierModule($session)
    {
        $return = '';
        if (substr($session, 0, 9) != "phpconges") {
            session_start();
            $_SESSION['config'] = init_config_tab();
            // on initialise le tableau des variables de config
            if ($_SESSION['config']['consult_calendrier_sans_auth'] == FALSE) {
                redirect(ROOT_PATH . 'index.php');
            }
        } else {
            include_once INCLUDE_PATH . 'session.php';
        }
        $script = '<script language=javascript>
        function afficher(id)
        {
            el = document.getElementById(id);
            el.style.display = "block";
        }

        function cacher(id)
        {
            el = document.getElementById(id);
            el.style.display = "none";
        }
        </script>';
        /*************************************/
        // recup des parametres reçus :
        // SERVER
        $PHP_SELF = $_SERVER['PHP_SELF'];
        // GET / POST
        $selected = getpost_variable('selected');
        $printable = getpost_variable('printable', 0);
        $year = getpost_variable('year', date("Y"));
        $mois = getpost_variable('mois', date("n"));
        $first_jour = getpost_variable('first_jour', 1);
        //    $first_load    = getpost_variable('first_load', "Y") ;
        $select_groupe = getpost_variable('select_groupe', 0);
        /*************************************/
        // on initialise le tableau global des jours fériés s'il ne l'est pas déjà :
        if (!isset($_SESSION["tab_j_feries"])) {
            init_tab_jours_feries();
        }
        // renvoit un tableau de tableau contenant les infos des types de conges et absences
        $tab_type_absence = recup_tableau_tout_types_abs();
        //    echo "<hr align=\"center\" size=\"2\" width=\"90%\"> \n";
        $jour_today = date("j");
        $mois_today = date("m");
        $year_today = date("Y");
        $timestamp_today = mktime(0, 0, 0, $mois_today, $jour_today, $year_today);
        $mois_timestamp = mktime(0, 0, 0, $mois, 1, $year);
        $nom_mois = date_fr("F", $mois_timestamp);
        $group_names = get_groups_name();
        // AFFICHAGE PAGE
        $return .= '<div id="main-calendar" class="main-content">';
        if ($_SESSION['config']['gestion_groupes'] && $printable != 1) {
            // affiche le select des groupes du user OU les groupes du resp (si user est resp) OU tous les groupes (si option de config ok)
            $return .= '<div class="pull-right">';
            $return .= \calendrier\Fonctions::affiche_select_groupe($select_groupe, $selected, $printable, $year, $mois, $first_jour, $group_names);
            $return .= '</div>';
        }
        $return .= '<h1>' . _('calendrier_titre') . '</h1>';
        if ($_SESSION['config']['gestion_groupes'] && $select_groupe != 0) {
            $return .= '<h2>' . _('divers_groupe') . ' : <strong>' . $group_names[$select_groupe] . '</strong></h2>';
        }
        $return .= '<hr/>';
        $return .= '<h3 class="current-month">' . $nom_mois . ' ' . $year . '</h3>';
        $return .= '<hr/>';
        /**********************/
        /* Boutons de defilement */
        if ($printable != 1) {
            $return .= \calendrier\Fonctions::affichage_boutons_defilement($first_jour, $mois, $year, $select_groupe);
        }
        /***********************************/
        /* AFFICHAGE  TABLEAU (CALENDRIER) */
        $return .= \calendrier\Fonctions::affichage_calendrier($year, $mois, $first_jour, $timestamp_today, $printable, $selected, $tab_type_absence, $select_groupe);
        /**********************/
        /* Boutons de defilement */
        if ($printable != 1) {
            $return .= '<tr>';
            $return .= '<td align="center">';
            $return .= \calendrier\Fonctions::affichage_boutons_defilement($first_jour, $mois, $year, $select_groupe);
            $return .= '</td>';
            $return .= '</tr>';
        }
        $return .= '<tr>';
        $return .= '</tr>';
        $return .= '</table>';
        if ($printable != 1) {
            $return .= '<br/><a href="' . $PHP_SELF . '?session=' . $session . '&printable=1&year=' . $year . '&mois=' . $mois . '&first_jour=' . $first_jour . '&select_groupe=' . $select_groupe . '" target="_blank" method="post">';
            $return .= '<i class="fa fa-print"></i>';
            $return .= _('calendrier_imprimable');
            $return .= '</a>';
            $return .= '<br><a href="calendrier-pdf.php?session=' . $session . '&printable=1&year=' . $year . '&mois=' . $mois . '&first_jour=' . $first_jour . '&select_groupe=' . $select_groupe . '" target="_blank" method="post">';
            $return .= '<img src="' . TEMPLATE_PATH . 'img/pdf_22x22_2.png" width="22" height="22" border="0" title="Version PDF">';
            $return .= 'PDF';
            $return .= '</a>';
        }
        $return .= '<br><br><table cellpadding="1" class="calendar table-responsive table-bordered table-stripped">';
        $return .= '<tr align="center">';
        $return .= '<td bgcolor="#FFFFFF" class="cal-legende"> - </td>';
        $return .= '<td class="cal-legende"> </td>';
        $return .= '</tr>';
        $return .= '<tr align="center">';
        $return .= '<td bgcolor="#DCDCDC" class="cal-legende"> - </td>';
        $return .= '<td class="cal-legende">' . _('calendrier_legende_we') . '</td>';
        $return .= '</tr>';
        $return .= '<tr align="center">';
        $return .= '<td bgcolor="#8addf2" class="cal-legende">abs</td>';
        $return .= '<td class="cal-legende">' . _('calendrier_legende_conges') . '</td>';
        $return .= '</tr>';
        $return .= '<tr align="center">';
        $return .= '<td bgcolor="#ffc1ff" class="cal-legende">abs</td>';
        $return .= '<td class="cal-legende">' . _('calendrier_legende_demande') . '</td>';
        $return .= '</tr>';
        $return .= '<tr align="center">';
        $return .= '<td bgcolor="#ffffad" class="cal-legende"> - </td>';
        $return .= '<td class="cal-legende">' . _('calendrier_legende_part_time') . '</td>';
        $return .= '</tr>';
        $return .= '<tr align="center">';
        $return .= '<td bgcolor="#C3C3C3" class="cal-legende">abs</td>';
        $return .= '<td class="cal-legende">' . _('calendrier_legende_abs') . '</td>';
        $return .= '</tr>';
        $return .= '<tr align="center">';
        $return .= '<td bgcolor="#CEB6FF" class="cal-legende">abs</td>';
        $return .= '<td class="cal-legende">' . _('divers_fermeture') . '</td>';
        $return .= '</tr>';
        $return .= '</table>';
        $return .= '</div>';
        /********************/
        /* bouton retour */
        /********************/
        if ($printable == 1) {
            // appel de la fenetre d'impression directe
            ?>
            <script type="text/javascript" language="javascript1.2">
            <!--
            // Do print the page
            if (typeof(window.print) != 'undefined') {
                window.print();
            }
            //-->
            </script>
            <?php 
        }
        return $return;
    }