Exemplo n.º 1
0
function get_td_class_of_the_day_in_the_week($timestamp_du_jour)
{
    $j_name = date('D', $timestamp_du_jour);
    $j_date = date('Y-m-d', $timestamp_du_jour);
    if ($j_name == 'Sat' && !$_SESSION['config']['samedi_travail'] || $j_name == 'Sun' && !$_SESSION['config']['dimanche_travail'] || est_chome($timestamp_du_jour) || est_ferme($timestamp_du_jour)) {
        return 'weekend';
    } else {
        return 'semaine';
    }
}
Exemplo 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;
    }
}