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; }
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; }