Пример #1
0
function get_tab_resp_du_user($user_login)
{
    $tab_resp = array();
    // recup du resp indiqué dans la table users (sauf s'il est resp de lui meme)
    $req = 'SELECT u_resp_login FROM conges_users WHERE u_login=\'' . \includes\SQL::quote($user_login) . '\';';
    $res = \includes\SQL::query($req);
    $rec = $res->fetch_array();
    if ($rec['u_resp_login'] !== NULL) {
        $tab_resp[$rec['u_resp_login']] = "present";
    }
    // recup des resp des groupes du user
    if ($_SESSION['config']['gestion_groupes']) {
        $list_groups = get_list_groupes_du_user($user_login);
        if ($list_groups != "") {
            $tab_gid = explode(",", $list_groups);
            foreach ($tab_gid as $gid) {
                $gid = trim($gid);
                $sql2 = 'SELECT gr_login FROM conges_groupe_resp WHERE gr_gid=' . \includes\SQL::quote($gid) . ' AND gr_login!=\'' . \includes\SQL::quote($user_login) . '\'';
                $ReqLog1 = \includes\SQL::query($sql2);
                while ($resultat1 = $ReqLog1->fetch_array()) {
                    //attention à ne pas mettre 2 fois le meme resp dans le tableau
                    if (in_array($resultat1["gr_login"], $tab_resp) == FALSE) {
                        $tab_resp[$resultat1["gr_login"]] = "present";
                    }
                }
            }
        }
    }
    /************************************/
    // gestion des absence des responsables :
    // on verifie que les resp sont présents, si tous absent, on cherhe les resp des resp, et ainsi de suite ....
    if ($_SESSION['config']['gestion_cas_absence_responsable']) {
        // on va verifier si les resp récupérés sont absents
        $nb_present = count($tab_resp);
        foreach ($tab_resp as $current_resp => $presence) {
            // verif dans la base si le current_resp est absent :
            $req = 'SELECT p_num
                     FROM conges_periode
                     WHERE p_login =\'' . \includes\SQL::quote($current_resp) . '\'
                     AND p_etat = \'ok\'
                     AND TO_DAYS(conges_periode.p_date_deb) <= TO_DAYS(NOW())
                     AND TO_DAYS(conges_periode.p_date_fin) >= TO_DAYS(NOW())';
            $ReqLog_3 = \includes\SQL::query($req);
            if ($ReqLog_3->num_rows != 0) {
                $nb_present = $nb_present - 1;
                $tab_resp[$current_resp] = "absent";
            }
        }
        //si aucun resp present on recupere les resp du resp
        if ($nb_present == 0) {
            $new_tab_resp = array();
            foreach ($tab_resp as $current_resp => $presence) {
                // attention ,on evite le cas ou le user est son propre resp (sinon on boucle infiniment)
                if ($current_resp != $user_login) {
                    $new_tab_resp = array_merge($new_tab_resp, get_tab_resp_du_user($current_resp));
                }
            }
            $tab_resp = array_merge($tab_resp, $new_tab_resp);
        }
    }
    // FIN gestion des absence des responsables :
    /************************************/
    return $tab_resp;
}
Пример #2
0
 public static function new_demande($new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment, $new_type)
 {
     //conversion des dates
     $new_debut = convert_date($new_debut);
     $new_fin = convert_date($new_fin);
     $return = '';
     $PHP_SELF = $_SERVER['PHP_SELF'];
     $session = session_id();
     // verif validité des valeurs saisies
     $valid = verif_saisie_new_demande($new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment);
     // verifie que le solde de conges sera encore positif après validation
     if ($_SESSION['config']['solde_toujours_positif']) {
         $valid = $valid && \utilisateur\Fonctions::verif_solde_user($_SESSION['userlogin'], $new_type, $new_nb_jours);
     }
     if ($valid) {
         if (in_array(\utilisateur\Fonctions::get_type_abs($new_type), array('conges', 'conges_exceptionnels'))) {
             $resp_du_user = get_tab_resp_du_user($_SESSION['userlogin']);
             if (array_key_exists('conges', $resp_du_user) || empty($resp_du_user)) {
                 $new_etat = 'ok';
                 soustrait_solde_et_reliquat_user($_SESSION['userlogin'], "", $new_nb_jours, $new_type, $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin);
             } else {
                 $new_etat = 'demande';
             }
         } else {
             $new_etat = 'ok';
         }
         $new_comment = addslashes($new_comment);
         $periode_num = insert_dans_periode($_SESSION['userlogin'], $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment, $new_type, $new_etat, 0);
         if ($periode_num != 0) {
             $return .= schars(_('form_modif_ok')) . ' !<br><br>.';
             //envoi d'un mail d'alerte au responsable (si demandé dans config de php_conges)
             if ($_SESSION['config']['mail_new_demande_alerte_resp']) {
                 if (in_array(\utilisateur\Fonctions::get_type_abs($new_type), array('absences'))) {
                     alerte_mail($_SESSION['userlogin'], ":responsable:", $periode_num, "new_absence");
                 } else {
                     alerte_mail($_SESSION['userlogin'], ":responsable:", $periode_num, "new_demande");
                 }
             }
         } else {
             $return .= schars(_('form_modif_not_ok')) . ' !<br><br>.';
         }
     } else {
         $return .= schars(_('resp_traite_user_valeurs_not_ok')) . ' !<br><br>.';
     }
     $return .= '<a class="btn" href="' . $PHP_SELF . '?session=' . $session . '">' . _('form_retour') . '</a>';
     return $return;
 }