function recup_tableau_des_users_a_afficher($select_groupe, $DEBUG = FALSE) { // si acces sans authentification est permis : alors droit de voir tout le monde // sinon, on verifie si le user a le droite de voir tout le monde if ($_SESSION['config']['consult_calendrier_sans_auth'] && !isset($_SESSION['userlogin'])) { //si gestion des groupes et un groupe a ete selectionne if ($_SESSION['config']['gestion_groupes'] && $select_groupe != 0) { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' "; //recup de la liste des users des groupes dont le user est membre $list_users = get_list_users_du_groupe($select_groupe, $DEBUG); if ($list_users != "") { //si la liste n'est pas vide ( serait le cas si groupe vide) $sql1 = $sql1 . " AND u_login IN ({$list_users}) ORDER BY u_nom, u_prenom "; } } else { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; //$sql1 = $sql1." WHERE u_login!='conges' AND u_resp_login = '******' ORDER BY u_nom, u_prenom"; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' ORDER BY u_nom, u_prenom"; } } else { //construction de la requete sql pour recupérer les users à afficher : //si le user a le droit de voir tout le monde $user_see_all_in_calendrier = get_user_see_all($_SESSION['userlogin']); if ($user_see_all_in_calendrier) { //si gestion des groupes et un groupe a ete selectionne if ($_SESSION['config']['gestion_groupes'] && $select_groupe != 0) { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' "; //recup de la liste des users des groupes dont le user est membre $list_users = get_list_users_du_groupe($select_groupe, $DEBUG); if ($list_users != "") { //si la liste n'est pas vide ( serait le cas si groupe vide) $sql1 = $sql1 . " AND u_login IN ({$list_users}) "; } $sql1 = $sql1 . " ORDER BY u_nom, u_prenom"; } else { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; //$sql1 = $sql1." WHERE u_login!='conges' AND u_resp_login = '******' ORDER BY u_nom, u_prenom"; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' ORDER BY u_nom, u_prenom"; } } else { //si gestion des groupes et un groupe a ete selectionne if ($_SESSION['config']['gestion_groupes'] && $select_groupe != 0) { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' "; $sql1 = $sql1 . ' AND ( u_login = \'' . SQL::quote($_SESSION['userlogin']) . '\' '; //recup de la liste des users des groupes dont le user est membre $list_users = get_list_users_du_groupe($select_groupe, $DEBUG); if ($list_users != "") { //si la liste n'est pas vide ( serait le cas si groupe vide) $sql1 = $sql1 . " OR u_login IN ({$list_users}) "; } $sql1 = $sql1 . " ) "; $sql1 = $sql1 . " ORDER BY u_nom, u_prenom"; } else { if (!is_resp($_SESSION['userlogin'])) { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' "; //si affichage par groupe : on affiche les membres des groupes du user ($_SESSION['userlogin']) if ($_SESSION['config']['gestion_groupes'] && $_SESSION['config']['affiche_groupe_in_calendrier']) { //recup de la liste des users des groupes dont le user est membre $list_users = get_list_users_des_groupes_du_user($_SESSION['userlogin']); if ($list_users != "") { //si la liste n'est pas vide ( serait le cas si n'est membre d'aucun groupe) $sql1 = $sql1 . " AND u_login IN ({$list_users}) "; } } $sql1 = $sql1 . " ORDER BY u_nom, u_prenom"; } else { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' "; if ($_SESSION['userlogin'] != "conges") { $sql1 = $sql1 . ' AND ( u_login = \'' . SQL::quote($_SESSION['userlogin']) . '\' '; //si affichage par groupe : on affiche les membres des groupes du user ($_SESSION['userlogin']) if ($_SESSION['config']['gestion_groupes'] && $_SESSION['config']['affiche_groupe_in_calendrier']) { //recup de la liste des users des groupes dont le user est membre $list_users = get_list_users_des_groupes_du_user($_SESSION['userlogin']); if ($list_users != "") { //si la liste n'est pas vide ( serait le cas si n'est membre d'aucun groupe) $sql1 = $sql1 . " OR u_login IN ({$list_users}) "; } } //recup de la liste des users dont le user est responsable $list_users_2 = get_list_all_users_du_resp($_SESSION['userlogin'], $DEBUG); if ($list_users_2 != "") { //si la liste n'est pas vide ( serait le cas si n'est responsable d'aucun groupe) $sql1 = $sql1 . " OR u_login IN ({$list_users_2}) "; } if ($_SESSION['config']['double_validation_conges']) { $list_groupes_3 = get_list_login_du_grand_resp($_SESSION['userlogin']); if (count($list_groupes_3) > 0) { $list_groupes_3 = array_map("SQL::quote", $list_groupes_3); $list_groupes_3 = '\'' . implode('\', \'', $list_groupes_3) . '\''; $sql1 = $sql1 . " OR u_login IN ( {$list_groupes_3} ) "; } } $sql1 = $sql1 . " ) "; } $sql1 = $sql1 . " ORDER BY u_nom, u_prenom"; } } } } $ReqLog = SQL::query($sql1); $tab_all_users = array(); while ($resultat = $ReqLog->fetch_array()) { $tab_user = array(); $tab_user['nom'] = $resultat["u_nom"]; $tab_user['prenom'] = $resultat["u_prenom"]; $tab_user['quotite'] = $resultat["u_quotite"]; $sql_login = $resultat["u_login"]; $tab_all_users[$sql_login] = $tab_user; } return $tab_all_users; }
function recup_infos_all_users_du_resp($login) { $tab = array(); // recup de la liste de tous les users du resp ... $list_all_users_du_resp = get_list_all_users_du_resp($login); // recup de la liste des groupes à double validation, dont $login est responsable // (servira à dire pour chaque user s'il est dans un de ces groupe ou non , donc s'il fait l'objet d'une double valid ou non ) $list_groups_double_valid_du_resp = get_list_groupes_double_valid_du_resp($login); if (strlen($list_all_users_du_resp) != 0) { $tab_users_du_resp = explode(",", $list_all_users_du_resp); foreach ($tab_users_du_resp as $current_login) { $current_login = trim($current_login); $current_login = trim($current_login, "\\'"); // on enleve les quotes qui ont été ajouté lors de la creation de la liste $tab[$current_login] = recup_infos_du_user($current_login, $list_groups_double_valid_du_resp); } } return $tab; }
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"; }
function ajout_global($tab_new_nb_conges_all, $tab_calcul_proportionnel, $tab_new_comment_all, $DEBUG=FALSE) { $PHP_SELF=$_SERVER['PHP_SELF']; $session=session_id() ; // $tab_new_nb_conges_all[$id_conges]= nb_jours // $tab_calcul_proportionnel[$id_conges]= TRUE / FALSE // recup de la liste de TOUS les users dont $resp_login est responsable // (prend en compte le resp direct, les groupes, le resp virtuel, etc ...) // renvoit une liste de login entre quotes et séparés par des virgules $list_users_du_resp = get_list_all_users_du_resp($_SESSION['userlogin'], $DEBUG); if( $DEBUG ) { echo "list_all_users_du_resp = $list_users_du_resp<br>\n";} if( $DEBUG ) { echo "tab_new_nb_conges_all = <br>"; print_r($tab_new_nb_conges_all); echo "<br>\n" ;} if( $DEBUG ) { echo "tab_calcul_proportionnel = <br>"; print_r($tab_calcul_proportionnel); echo "<br>\n" ;} foreach($tab_new_nb_conges_all as $id_conges => $nb_jours) { if($nb_jours!=0) { $comment = $tab_new_comment_all[$id_conges]; $sql1="SELECT u_login, u_quotite FROM conges_users WHERE u_login IN ($list_users_du_resp) ORDER BY u_login "; $ReqLog1 = SQL::query($sql1); while($resultat1 = $ReqLog1->fetch_array()) { $current_login =$resultat1["u_login"]; $current_quotite=$resultat1["u_quotite"]; if( (!isset($tab_calcul_proportionnel[$id_conges])) || ($tab_calcul_proportionnel[$id_conges]!=TRUE) ) $nb_conges=$nb_jours; else // pour arrondir au 1/2 le + proche on fait x 2, on arrondit, puis on divise par 2 $nb_conges = (ROUND(($nb_jours*($current_quotite/100))*2))/2 ; // 1 : update de la table conges_solde_user $req_update = "UPDATE conges_solde_user SET su_solde = su_solde+$nb_conges WHERE su_login = '******' AND su_abs_id = $id_conges "; $ReqLog_update = SQL::query($req_update); // 2 : on insert l'ajout de conges GLOBAL (pour tous les users) dans la table periode $commentaire = _('resp_ajout_conges_comment_periode_all') ; // ajout conges insert_ajout_dans_periode($DEBUG, $current_login, $nb_conges, $id_conges, $commentaire); /* // 3 : Enregistrement du commentaire relatif à l'ajout de jours de congés $comment = $tab_new_comment_all[$id_conges]; $sql_comment = "INSERT INTO conges_historique_ajout (ha_login, ha_date, ha_abs_id, ha_nb_jours, ha_commentaire) VALUES ('$current_login', NOW(), $id_conges, $nb_conges , '$comment')"; $ReqLog_comment = SQL::query($sql_comment) ; */ } if( (!isset($tab_calcul_proportionnel[$id_conges])) || ($tab_calcul_proportionnel[$id_conges]!=TRUE) ) $comment_log = "ajout conges global ($nb_jours jour(s)) ($comment) (calcul proportionnel : No)"; else $comment_log = "ajout conges global ($nb_jours jour(s)) ($comment) (calcul proportionnel : Yes)"; log_action(0, "ajout", "tous", $comment_log, $DEBUG); } } if( $DEBUG ) { echo "<form action=\"$PHP_SELF\" method=\"POST\">\n" ; echo "<input type=\"hidden\" name=\"session\" value=\"$session\">\n"; echo "<input type=\"submit\" value=\"". _('form_ok') ."\">\n"; echo "</form>\n" ; } else { echo " ". _('form_modif_ok') ." <br><br> \n"; /* APPEL D'UNE AUTRE PAGE au bout d'une tempo de 2secondes */ redirect( ROOT_PATH .'responsable/resp_index.php?session=' . $session ); } }
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; }