public static function commit_modif_user_groups($choix_user, &$checkbox_user_groups) { $result_insert = FALSE; // on supprime tous les anciens groupes du user, puis on ajoute tous ceux qui sont dans la tableau checkbox (si il n'est pas vide) $sql_del = 'DELETE FROM conges_groupe_users WHERE gu_login=\'' . \includes\SQL::quote($choix_user) . '\''; $ReqLog_del = \includes\SQL::query($sql_del); if ($checkbox_user_groups != "" && count($checkbox_user_groups) != 0) { foreach ($checkbox_user_groups as $gid => $value) { $sql_insert = "INSERT INTO conges_groupe_users SET gu_gid={$gid}, gu_login='******' "; $result_insert = \includes\SQL::query($sql_insert); } } else { $result_insert = TRUE; } return $result_insert; }
function soustrait_solde_et_reliquat_user($user_login, $num_current_periode, $user_nb_jours_pris, $type_abs, $date_deb, $demi_jour_deb, $date_fin, $demi_jour_fin) { $VerifDec = verif_saisie_decimal($user_nb_jours_pris); //si on autorise les reliquats if ($_SESSION['config']['autorise_reliquats_exercice']) { //recup du reliquat du user pour ce type d'absence $reliquat = get_reliquat_user_conges($user_login, $type_abs); //echo "reliquat = $reliquat<br>\n"; // s'il y a une date limite d'utilisationdes reliquats (au format jj-mm) if ($_SESSION['config']['jour_mois_limite_reliquats'] != 0) { //si date_fin_conges < date_limite_reliquat => alors on décompte dans reliquats if ($date_fin < $_SESSION['config']['date_limite_reliquats']) { if ($reliquat > $user_nb_jours_pris) { $new_reliquat = $reliquat - $user_nb_jours_pris; } else { $new_reliquat = 0; } } elseif ($date_deb >= $_SESSION['config']['date_limite_reliquats']) { $new_reliquat = $reliquat; } else { include_once 'fonctions_calcul.php'; $comment = "calcul reliquat -> date limite"; $nb_reliquats_a_deduire = compter($user_login, $num_current_periode, $date_deb, $_SESSION['config']['date_limite_reliquats'], $demi_jour_deb, "pm", $comment); if ($reliquat > $nb_reliquats_a_deduire) { $new_reliquat = $reliquat - $nb_reliquats_a_deduire; } else { $new_reliquat = 0; } } } else { if ($reliquat > $user_nb_jours_pris) { $new_reliquat = $reliquat - $user_nb_jours_pris; } else { $new_reliquat = 0; } } $VerifDec = verif_saisie_decimal($user_nb_jours_pris); $VerifDec = verif_saisie_decimal($new_reliquat); $sql2 = 'UPDATE conges_solde_user SET su_solde=su_solde-' . \includes\SQL::quote($user_nb_jours_pris) . ', su_reliquat=' . \includes\SQL::quote($new_reliquat) . ' WHERE su_login="******" AND su_abs_id=' . \includes\SQL::quote($type_abs) . ' '; } else { $VerifDec = verif_saisie_decimal($user_nb_jours_pris); $VerifDec = verif_saisie_decimal($new_reliquat); $sql2 = 'UPDATE conges_solde_user SET su_solde=su_solde-' . \includes\SQL::quote($user_nb_jours_pris) . ' WHERE su_login=\'' . \includes\SQL::quote($user_login) . '\' AND su_abs_id=\'' . $type_abs . '\' '; } $ReqLog2 = \includes\SQL::query($sql2); }
public static function commit_saisie(&$tab_new_values, $session) { $PHP_SELF = $_SERVER['PHP_SELF']; $return = ''; if ($session == "") { $URL = "{$PHP_SELF}"; } else { $URL = "{$PHP_SELF}?session={$session}"; } $timeout = 2; // temps d'attente pour rafraichir l'écran après l'update ! foreach ($tab_new_values as $key => $value) { // CONTROLE gestion_conges_exceptionnels // si désactivation les conges exceptionnels, on verif s'il y a des conges exceptionnels enregistres ! si oui : changement impossible ! if ($key == "gestion_conges_exceptionnels" && $value == "FALSE") { $sql_abs = "SELECT ta_id, ta_libelle FROM conges_type_absence WHERE ta_type='conges_exceptionnels' "; $ReqLog_abs = \includes\SQL::query($sql_abs); if ($ReqLog_abs->num_rows != 0) { $return .= '<b>' . _('config_abs_desactive_cong_excep_impossible') . '</b><br>'; $value = "TRUE"; $timeout = 5; } } // CONTROLE jour_mois_limite_reliquats // si modif de jour_mois_limite_reliquats, on verifie le format ( 0 ou jj-mm) , sinon : changement impossible ! if ($key == "jour_mois_limite_reliquats" && $value != "0") { $t = explode("-", $value); if (checkdate($t[1], $t[0], date("Y")) == FALSE) { $return .= '<b>' . _('config_jour_mois_limite_reliquats_modif_impossible') . '</b><br>'; $sql_date = "SELECT conf_valeur FROM conges_config WHERE conf_nom='jour_mois_limite_reliquats' "; $ReqLog_date = \includes\SQL::query($sql_date); $data = $ReqLog_date->fetch_row(); $value = $data[0]; $timeout = 5; } } if (preg_match("/_installed\$/", $key) && $value == "1") { $plugin = explode("_", $key); $plugin = $plugin[0]; install_plugin($plugin); } elseif (preg_match("/_installed\$/", $key) && $value == "0") { $plugin = explode("_", $key); $plugin = $plugin[0]; uninstall_plugin($plugin); } if (preg_match("/_activated\$/", $key) && $value == "1") { $plugin = explode("_", $key); $plugin = $plugin[0]; activate_plugin($plugin); } elseif (preg_match("/_activated\$/", $key) && $value == "0") { $plugin = explode("_", $key); $plugin = $plugin[0]; disable_plugin($plugin); } // Mise à jour $sql2 = 'UPDATE conges_config SET conf_valeur = \'' . addslashes($value) . '\' WHERE conf_nom ="' . \includes\SQL::quote($key) . '" '; $ReqLog2 = \includes\SQL::query($sql2); } $_SESSION['config'] = init_config_tab(); // on re-initialise le tableau des variables de config // enregistrement dans les logs $comment_log = "nouvelle configuration de php_conges "; log_action(0, "", "", $comment_log); $return .= '<span class="messages">' . _('form_modif_ok') . '</span><br>'; $return .= '<META HTTP-EQUIV=REFRESH CONTENT="' . $timeout . '; URL=' . $URL . '">'; return $return; }
$session_password = ""; $erreur = "login_passwd_incorrect"; // appel du formulaire d'intentification (login/password) session_saisie_user_password($erreur, $session_username, $session_password); exit; } else { // on initialise la nouvelle session session_create($session_username); } } } } } /*****************************************************************/ if (isset($_SESSION['userlogin'])) { $request = "SELECT u_nom, u_passwd, u_prenom, u_is_resp FROM conges_users where u_login = '******'userlogin']) . "' "; $rs = \includes\SQL::query($request); if ($rs->num_rows != 1) { redirect(ROOT_PATH . 'index.php'); } else { $session = session_id(); $row = $rs->fetch_array(); $NOM = $row["u_nom"]; $PRENOM = $row["u_prenom"]; $is_resp = $row["u_is_resp"]; // si le login est celui d'un responsable ET on est pas en mode "responsable virtuel" // OU on est en mode "responsable virtuel" avec login= celui du resp virtuel $return_url = getpost_variable('return_url'); if (!empty($return_url)) { if (strpos($return_url, '?')) { redirect(ROOT_PATH . $return_url . '&session=' . $session);
public static function traite_all_demande_en_cours($tab_bt_radio, $tab_text_refus) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); $return = ''; while ($elem_tableau = each($tab_bt_radio)) { $champs = explode("--", $elem_tableau['value']); $user_login = $champs[0]; $user_nb_jours_pris = $champs[1]; $type_abs = $champs[2]; // id du type de conges demandé $date_deb = $champs[3]; $demi_jour_deb = $champs[4]; $date_fin = $champs[5]; $demi_jour_fin = $champs[6]; $reponse = $champs[7]; $numero = $elem_tableau['key']; $numero_int = (int) $numero; $return .= $numero . '---' . $user_login . '---' . $user_nb_jours_pris . '---' . $reponse . '<br>'; /* Modification de la table conges_periode */ if (strcmp($reponse, "VALID") == 0) { /* UPDATE table "conges_periode" */ $sql1 = 'UPDATE conges_periode SET p_etat=\'valid\', p_date_traitement=NOW() WHERE p_num="' . \includes\SQL::quote($numero_int) . '" AND p_etat=\'demande\';'; /* On valide l'UPDATE dans la table "conges_periode" ! */ $ReqLog1 = \includes\SQL::query($sql1); if ($ReqLog1 && \includes\SQL::getVar('affected_rows')) { // Log de l'action log_action($numero_int, "valid", $user_login, "traite demande {$numero} ({$user_login}) ({$user_nb_jours_pris} jours) : {$reponse}"); //envoi d'un mail d'alerte au user et au responsable du resp (pour double validation) (si demandé dans config de libertempo) if ($_SESSION['config']['mail_prem_valid_conges_alerte_user']) { alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "valid_conges"); } } } if (strcmp($reponse, "OK") == 0) { /* UPDATE table "conges_periode" */ $sql1 = 'UPDATE conges_periode SET p_etat="ok", p_date_traitement=NOW() WHERE p_num="' . \includes\SQL::quote($numero_int) . '" AND ( p_etat=\'valid\' OR p_etat=\'demande\' );'; /* On valide l'UPDATE dans la table "conges_periode" ! */ $ReqLog1 = \includes\SQL::query($sql1); if ($ReqLog1 && \includes\SQL::getVar('affected_rows')) { // Log de l'action log_action($numero_int, "ok", $user_login, "traite demande {$numero} ({$user_login}) ({$user_nb_jours_pris} jours) : {$reponse}"); /* UPDATE table "conges_solde_user" (jours restants) */ soustrait_solde_et_reliquat_user($user_login, $numero_int, $user_nb_jours_pris, $type_abs, $date_deb, $demi_jour_deb, $date_fin, $demi_jour_fin); //envoi d'un mail d'alerte au user (si demandé dans config de php_conges) if ($_SESSION['config']['mail_valid_conges_alerte_user']) { alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "accept_conges"); } } } elseif (strcmp($reponse, "not_OK") == 0) { // recup du motif de refus $motif_refus = addslashes($tab_text_refus[$numero_int]); $sql1 = 'UPDATE conges_periode SET p_etat=\'refus\', p_motif_refus=\'' . $motif_refus . '\', p_date_traitement=NOW() WHERE p_num="' . \includes\SQL::quote($numero_int) . '" AND ( p_etat=\'valid\' OR p_etat=\'demande\' );'; /* On valide l'UPDATE dans la table ! */ $ReqLog1 = \includes\SQL::query($sql1); if ($ReqLog1 && \includes\SQL::getVar('affected_rows')) { // Log de l'action log_action($numero_int, "refus", $user_login, "traite demande {$numero} ({$user_login}) ({$user_nb_jours_pris} jours) : refus"); //envoi d'un mail d'alerte au user (si demandé dans config de php_conges) if ($_SESSION['config']['mail_refus_conges_alerte_user']) { alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "refus_conges"); } } } } $return .= _('form_modif_ok') . '<br><br>'; /* APPEL D'UNE AUTRE PAGE au bout d'une tempo de 2secondes */ $return .= '<META HTTP-EQUIV=REFRESH CONTENT="2; URL=' . $PHP_SELF . '?session=' . $session . '&onglet=traitement_demandes">'; return $return; }
function recup_tableau_des_users_a_afficher($select_groupe) { // 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); 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_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); 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_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 = \'' . \includes\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); 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 = \'' . \includes\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']); 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 = \includes\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; }
public static function commit_annul_fermeture($fermeture_id, $groupe_id) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); $return = ''; /*****************************/ // on construit le tableau des users affectés par les fermetures saisies : if ($groupe_id == 0) { // fermeture pour tous ! $list_users = get_list_all_users(); } else { $list_users = get_list_users_du_groupe($groupe_id); } $tab_users = explode(",", $list_users); /***********************************************/ /** suppression des jours de fermetures **/ // on suprimme les dates de cette fermeture dans conges_jours_fermeture $result = \hr\Fonctions::delete_year_fermeture($fermeture_id, $groupe_id); // on va traiter user par user pour annuler sa periode de conges correspondant et lui re-crediter son solde foreach ($tab_users as $current_login) { $current_login = trim($current_login); // on enleve les quotes qui ont été ajoutées lors de la creation de la liste $current_login = trim($current_login, "\\'"); // on recupère les infos de la periode .... $sql_credit = 'SELECT p_num, p_nb_jours, p_type FROM conges_periode WHERE p_login="******" AND p_fermeture_id="' . \includes\SQL::quote($fermeture_id) . '" AND p_etat=\'ok\''; $result_credit = \includes\SQL::query($sql_credit); $row_credit = $result_credit->fetch_array(); $sql_num_periode = $row_credit['p_num']; $sql_nb_jours_a_crediter = $row_credit['p_nb_jours']; $sql_type_abs = $row_credit['p_type']; // on met à jour la table conges_periode . $etat = "annul"; $sql1 = 'UPDATE conges_periode SET p_etat = "' . \includes\SQL::quote($etat) . '" WHERE p_num=' . \includes\SQL::quote($sql_num_periode) . '" AND p_etat=\'ok\';'; $ReqLog = \includes\SQL::query($sql1); if ($ReqLog && \includes\SQL::getVar('affected_rows')) { // mise à jour du solde de jours de conges pour l'utilisateur $current_login if ($sql_nb_jours_a_crediter != 0) { $sql1 = 'UPDATE conges_solde_user SET su_solde = su_solde + ' . \includes\SQL::quote($sql_nb_jours_a_crediter) . ' WHERE su_login="******" AND su_abs_id = ' . \includes\SQL::quote($sql_type_abs); $ReqLog = \includes\SQL::query($sql1); } } } $return .= '<div class="wrapper">'; if ($result) { $return .= '<br>' . _('form_modif_ok') . '<br><br>'; } else { $return .= '<br>' . _('form_modif_not_ok') . ' !<br><br>'; } // on enregistre cette action dan les logs if ($groupe_id == 0) { // fermeture pour tous ! $comment_log = "annulation fermeture {$fermeture_id} (pour tous) "; } else { $comment_log = "annulation fermeture {$fermeture_id} (pour le groupe {$groupe_id})"; } log_action(0, "", "", $comment_log); $return .= '<form action="' . $PHP_SELF . '?session=' . $session . '" method="POST">'; $return .= '<input class="btn btn-success" type="submit" value="' . _('form_ok') . '">'; $return .= '</form>'; $return .= '</div>'; return $return; }
/** * Encapsule le comportement du module de l'historique des autres absences * * @param string $onglet Nom de l'onglet à afficher * @param string $session Clé de session * @param string $PHP_SELF * * @return void * @access public * @static */ public static function historiqueAutresAbsencesModule($onglet, $session, $PHP_SELF) { $return = ''; if ($_SESSION['config']['where_to_find_user_email'] == "ldap") { include_once CONFIG_PATH . 'config_ldap.php'; } $tri_date = getpost_variable('tri_date', "ascendant"); $year_affichage = getpost_variable('year_affichage', date("Y")); $return = '<h1>' . _('user_historique_abs') . ' :</h1>'; // affichage de l'année et des boutons de défilement $year_affichage_prec = $year_affichage - 1; $year_affichage_suiv = $year_affichage + 1; $return .= '<b>'; $return .= '<a href="' . $PHP_SELF . '?session=' . $session . '&onglet=historique_autres_absences&year_affichage=' . $year_affichage_prec . '"><<</a>'; $return .= '    ' . $year_affichage . '   '; $return .= '<a href="' . $PHP_SELF . '?session=' . $session . '&onglet=historique_autres_absences&year_affichage=' . $year_affichage_suiv . '">>></a>'; $return .= '</b><br><br>'; // Récupération des informations $sql4 = '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 = "******" AND (a.p_type=b.ta_id) AND (b.ta_type=\'absences\') AND (p_date_deb LIKE \'' . intval($year_affichage) . '%\' OR p_date_fin LIKE \'' . intval($year_affichage) . '%\') '; if ($tri_date == "descendant") { $sql4 = $sql4 . " ORDER BY p_date_deb DESC "; } else { $sql4 = $sql4 . " ORDER BY p_date_deb ASC "; } $ReqLog4 = \includes\SQL::query($sql4); $count4 = $ReqLog4->num_rows; if ($count4 == 0) { $return .= '<b>' . _('user_abs_aucune_abs') . '</b><br>'; } else { // AFFICHAGE TABLEAU $return .= '<table cellpadding="2" class="tablo" width="80%">'; $return .= '<thead>'; $return .= '<tr>'; $return .= '<td>'; $return .= '<a href="' . $PHP_SELF . '?session=' . $session . '&onglet=' . $onglet . '&tri_date=descendant"><img src="' . TEMPLATE_PATH . 'img/1downarrow-16x16.png" width="16" height="16" border="0" title="trier"></a>'; $return .= _('divers_debut_maj_1'); $return .= '<a href="' . $PHP_SELF . '?session=' . $session . '&onglet=' . $onglet . '&tri_date=ascendant"><img src="' . TEMPLATE_PATH . 'img/1uparrow-16x16.png" width="16" height="16" border="0" title="trier"></a>'; $return .= '</td>'; $return .= '<td>' . _('divers_fin_maj_1') . '</td>'; $return .= '<td>' . _('user_abs_type') . '</td>'; $return .= '<td>' . _('divers_nb_jours_maj_1') . '</td>'; $return .= '<td>' . _('divers_comment_maj_1') . '</td>'; $return .= '<td>' . _('divers_etat_maj_1') . '</td>'; $return .= '<td></td><td></td>'; if ($_SESSION['config']['affiche_date_traitement']) { $return .= '<td>' . _('divers_date_traitement') . '</td>'; } $return .= '</tr>'; $return .= '</thead>'; $return .= '<tbody>'; $i = true; while ($resultat4 = $ReqLog4->fetch_array()) { $sql_login = $resultat4["p_login"]; $sql_date_deb = eng_date_to_fr($resultat4["p_date_deb"]); $sql_p_demi_jour_deb = $resultat4["p_demi_jour_deb"]; if ($sql_p_demi_jour_deb == "am") { $demi_j_deb = "mat"; } else { $demi_j_deb = "aprm"; } $sql_date_fin = eng_date_to_fr($resultat4["p_date_fin"]); $sql_p_demi_jour_fin = $resultat4["p_demi_jour_fin"]; if ($sql_p_demi_jour_fin == "am") { $demi_j_fin = "mat"; } else { $demi_j_fin = "aprm"; } $sql_nb_jours = affiche_decimal($resultat4["p_nb_jours"]); $sql_commentaire = $resultat4["p_commentaire"]; //$sql_type=$resultat4["p_type"]; $sql_type = $resultat4["ta_libelle"]; $sql_etat = $resultat4["p_etat"]; $sql_motif_refus = $resultat4["p_motif_refus"]; $sql_date_demande = $resultat4["p_date_demande"]; $sql_date_traitement = $resultat4["p_date_traitement"]; $sql_num = $resultat4["p_num"]; // si le user a le droit de saisir lui meme ses absences et qu'elle n'est pas deja annulee, on propose de modifier ou de supprimer if ($sql_etat != "annul" && $_SESSION['config']['user_saisie_mission']) { $user_modif_mission = "<a href=\"user_index.php?session={$session}&p_num={$sql_num}&onglet=modif_demande\">" . _('form_modif') . "</a>"; $user_suppr_mission = "<a href=\"user_index.php?session={$session}&p_num={$sql_num}&onglet=suppr_demande\">" . _('form_supprim') . "</a>"; } else { $user_modif_mission = " - "; $user_suppr_mission = " - "; } $return .= '<tr class="' . ($i ? 'i' : 'p') . '">'; $return .= '<td class="histo">' . schars($sql_date_deb) . ' _ ' . schars($demi_j_deb) . '</td>'; $return .= '<td class="histo">' . schars($sql_date_fin) . ' _ ' . schars($demi_j_fin) . '</td>'; $return .= '<td class="histo">' . schars($sql_type) . '</td>'; $return .= '<td class="histo">' . affiche_decimal($sql_nb_jours) . '</td>'; $return .= '<td class="histo">' . schars($sql_commentaire) . '</td>'; if ($sql_etat == "refus") { if ($sql_motif_refus == "") { $sql_motif_refus = _('divers_inconnu'); } $return .= '<br><i>".' . schars(_('divers_motif_refus')) . '." : ' . schars($sql_motif_refus) . '</i>'; } elseif ($sql_etat == "annul") { if ($sql_motif_refus == "") { $sql_motif_refus = _('divers_inconnu'); } $return .= '<br><i>".' . schars(_('divers_motif_annul')) . '." : ' . schars($sql_motif_refus) . '</i>'; } $return .= '</td>'; $return .= '<td>'; if ($sql_etat == "refus") { $return .= _('divers_refuse'); } elseif ($sql_etat == "annul") { $return .= _('divers_annule'); } else { $return .= schars($sql_etat); } $return .= '</td>'; $return .= '<td class="histo">' . $user_modif_mission . '</td>'; $return .= '<td class="histo">' . $user_suppr_mission . '</td>' . "\n"; if ($_SESSION['config']['affiche_date_traitement']) { $return .= '<td class="histo-left">' . schars(_('divers_demande')) . ' : ' . schars($sql_date_demande) . '<br>' . schars(_('divers_traitement')) . ' : ' . schars($sql_date_traitement) . '</td>'; } $return .= '</tr>'; $i = !$i; } $return .= '</tbody>'; $return .= '</table>'; } $return .= '<br><br>'; return $return; }
function authentification_passwd_conges_CAS() { // import de la librairie CAS include LIBRARY_PATH . 'CAS/CAS.php'; // import des paramètres du serveur CAS $config_CAS_host = $_SESSION['config']['CAS_host']; $config_CAS_portNumber = $_SESSION['config']['CAS_portNumber']; $config_CAS_URI = $_SESSION['config']['CAS_URI']; $config_CAS_CACERT = $_SESSION['config']['CAS_CACERT']; global $connexionCAS; global $logoutCas; phpCAS::setDebug(); // initialisation phpCAS if ($connexionCAS != "active") { $CASCnx = phpCAS::client(CAS_VERSION_2_0, $config_CAS_host, $config_CAS_portNumber, $config_CAS_URI); $connexionCAS = "active"; } if ($logoutCas == 1) { phpCAS::logout(); } // Vérification SSL if (isset($config_CAS_CACERT)) { phpCAS::setCasServerCACert($config_CAS_CACERT); } else { phpCAS::setNoCasServerValidation(); } // authentificationCAS (redirection vers la page d'authentification de CAS) phpCAS::forceAuthentication(); $usernameCAS = phpCAS::getUser(); //On nettoie la session créée par phpCAS session_destroy(); // On créé la session gérée par Libertempo session_create($usernameCAS); //ON VERIFIE ICI QUE L'UTILISATEUR EST DEJA ENREGISTRE SOUS DBCONGES $req_conges = 'SELECT u_login FROM conges_users WHERE u_login=\'' . \includes\SQL::quote($usernameCAS) . '\''; $res_conges = \includes\SQL::query($req_conges); $num_row_conges = $res_conges->num_rows; if ($num_row_conges != 0) { return $usernameCAS; } else { return ''; } }
public static function recup_tableau_periodes($mois, $first_jour, $year, $tab_logins = false) { $tab_calendrier = array(); //tableau indexé dont la clé est la date sous forme yyyy-mm-dd //il contient pour chaque clé : un tableau ($tab_jour) qui contient lui même des // tableaux indexés contenant les infos des periode de conges dont ce jour fait partie // ($tab_periode) $timestamp_deb = mktime(0, 0, 0, $mois, $first_jour, $year); $timestamp_fin = mktime(0, 0, 0, $mois + 1, $first_jour, $year); $date_deb = date("Y-m-d", $timestamp_deb); $date_fin = date("Y-m-d", $timestamp_fin); $sql = 'SELECT p_login, p_date_deb, p_demi_jour_deb, p_date_fin, p_demi_jour_fin, p_type, p_etat, p_fermeture_id, p_commentaire FROM conges_periode WHERE ( p_etat=\'ok\' OR p_etat=\'demande\' OR p_etat=\'valid\') AND (p_date_fin >= "' . \includes\SQL::quote($date_deb) . '" AND p_date_deb <= "' . \includes\SQL::quote($date_fin) . '") ' . ($tab_logins !== false ? 'AND p_login IN (\'' . implode('\', \'', $tab_logins) . '\')' : '') . ' ORDER BY p_date_deb;'; $result = \includes\SQL::query($sql); while ($l = $result->fetch_array()) { // on ne stoque les "demandes" que pour le user qui consulte (il ne voit pas celles des autres !)(suivant l'option de config) if ($l['p_etat'] != 'demande' || $_SESSION['config']['affiche_demandes_dans_calendrier']) { $tab_jour = $l; } elseif (isset($_SESSION['userlogin']) && $l['p_login'] == $_SESSION['userlogin']) { $tab_jour = $l; } else { continue; } $p_timestamp_deb = \DateTime::createFromFormat('Y-m-d', $l['p_date_deb']); $p_timestamp_fin = \DateTime::createFromFormat('Y-m-d', $l['p_date_fin']); $deb = $timestamp_deb < $p_timestamp_deb->getTimestamp() ? $p_timestamp_deb : new \DateTime('@' . $timestamp_deb); $fin = $timestamp_fin > $p_timestamp_fin->getTimestamp() ? $p_timestamp_fin : new \DateTime('@' . $timestamp_fin); $tmp = $deb; while ($tmp <= $fin) { $date_j = date('Y-m-d', $tmp->getTimestamp()); if (!isset($tab_calendrier[$date_j]) || !is_array($tab_calendrier[$date_j])) { $tab_calendrier[$date_j] = array(); } $tab_calendrier[$date_j][] = $tab_jour; $tmp->add(new \DateInterval('P1D')); } } return $tab_calendrier; }
public static function export_ical($user_login) { $good_date_debut = date("Y-m-d", strtotime("-1 year")); $good_date_fin = date("Y-m-d", strtotime('+1 year')); /********************************/ // initialisation de variables communes a ttes les periodes // recup des infos du user $tab_infos_user = recup_infos_du_user($user_login, ""); $tab_types_abs = recup_tableau_tout_types_abs(); /********************************/ // affichage dans un fichier non html ! header("content-type: application/ics"); header("Content-disposition: filename=libertempo.ics"); echo "BEGIN:VCALENDAR\r\n" . "PRODID:-//Libertempo \r\n" . "VERSION:2.0\r\n\r\n"; // SELECT des periodes à exporter ..... // on prend toutes les periodes de conges qui chevauchent la periode donnée par les dates demandées $sql_periodes = "SELECT p_date_deb, p_demi_jour_deb, p_date_fin, p_demi_jour_fin, p_commentaire, p_type, p_etat, p_date_demande " . 'FROM conges_periode WHERE p_login=\'' . \includes\SQL::quote($user_login) . '\' AND ((p_date_deb>=\'' . \includes\SQL::quote($good_date_debut) . '\' AND p_date_deb<=\'' . \includes\SQL::quote($good_date_fin) . '\') OR (p_date_fin>=\'' . \includes\SQL::quote($good_date_debut) . '\' AND p_date_fin<=\'' . \includes\SQL::quote($good_date_fin) . '\'))'; $res_periodes = \includes\SQL::query($sql_periodes); if ($num_periodes = $res_periodes->num_rows != 0) { while ($result_periodes = $res_periodes->fetch_array()) { $sql_date_debut = $result_periodes['p_date_deb']; $sql_demi_jour_deb = $result_periodes['p_demi_jour_deb']; $sql_date_fin = $result_periodes['p_date_fin']; $sql_demi_jour_fin = $result_periodes['p_demi_jour_fin']; $sql_type = $result_periodes['p_type']; $sql_etat = $result_periodes['p_etat']; $sql_dateh_demande = $result_periodes['p_date_demande']; // PB : les fichiers ical et vcal doivent être encodés en UTF-8, or php ne gère pas l'utf-8 // on remplace donc les caractères spéciaux de la chaine de caractères $sql_comment = \export\Fonctions::remplace_accents($result_periodes['p_commentaire']); // même problème $type_abs = \export\Fonctions::remplace_accents($tab_types_abs[$sql_type]['libelle']); //conversion format date $replaceThis = array('-' => '', ':' => '', ' ' => 'T'); $sql_date_dem = str_replace(array_keys($replaceThis), $replaceThis, $sql_dateh_demande); $DTSTAMP = $sql_date_dem . "Z"; $tab_date_deb = explode("-", $sql_date_debut); $tab_date_fin = explode("-", $sql_date_fin); //conversion etat demande en status switch ($sql_etat) { case "ok": $status = "CONFIRMED"; break; case "refus": $status = "CANCELLED"; break; default: $status = "TENTATIVE"; } if ($sql_demi_jour_deb == "am") { $DTSTART = $tab_date_deb[0] . $tab_date_deb[1] . $tab_date_deb[2] . "T070000Z"; } else { $DTSTART = $tab_date_deb[0] . $tab_date_deb[1] . $tab_date_deb[2] . "T120000Z"; } // ..... if ($sql_demi_jour_fin == "am") { $DTEND = $tab_date_fin[0] . $tab_date_fin[1] . $tab_date_fin[2] . "T120000Z"; } else { $DTEND = $tab_date_fin[0] . $tab_date_fin[1] . $tab_date_fin[2] . "T210000Z"; } // ..... echo "BEGIN:VEVENT\r\n" . "DTSTAMP:{$DTSTAMP}\r\n" . "ORGANIZER:MAILTO:" . $tab_infos_user['email'] . "\r\n" . "CREATED:{$DTSTART}\r\n" . "STATUS:{$status}\r\n" . "UID:{$user_login}@Libertempo-{$sql_date_dem}\r\n"; if ($sql_comment != "") { echo "DESCRIPTION:{$sql_comment}\r\n"; } echo "SUMMARY:{$type_abs}\r\n" . "CLASS:PUBLIC\r\n" . "PRIORITY:1\r\n" . "DTSTART:{$DTSTART}\r\n" . "DTEND:{$DTEND}\r\n" . "TRANSP:OPAQUE\r\n" . "END:VEVENT\r\n\r\n"; } } echo "END:VCALENDAR\r\n"; }
function verif_periode_chevauche_periode_user($date_debut, $date_fin, $user, $num_current_periode = '', $tab_periode_calcul, &$comment, $num_update = null) { /************************************************************/ // 2 : on verifie que le conges demandé ne chevauche pas une periode deja posée // -> on recupere les periodes par rapport aux dates, on en fait une tableau de 1/2 journees, et on compare par 1/2 journee $tab_periode_deja_prise = array(); $current_day = $date_debut; $date_limite = jour_suivant($date_fin); // on va avancer jour par jour jusqu'à la date limite et recupere les periodes qui contiennent ce jour... // on construit un tableau par date et 1/2 jour avec l'état de la periode while ($current_day != $date_limite) { $tab_periode_deja_prise[$current_day]['am'] = "no"; $tab_periode_deja_prise[$current_day]['pm'] = "no"; if ($num_update === null) { // verif si c'est deja un conges $user_periode_sql = 'SELECT p_date_deb, p_demi_jour_deb, p_date_fin, p_demi_jour_fin, p_etat FROM conges_periode WHERE p_login = "******" AND ( p_etat=\'ok\' OR p_etat=\'valid\' OR p_etat=\'demande\' ) ' . (!empty($num_current_periode) ? 'AND p_num != ' . intval($num_current_periode) . ' ' : '') . ' AND p_date_deb<="' . \includes\SQL::quote($current_day) . '" AND p_date_fin>="' . \includes\SQL::quote($current_day) . '" '; } else { // verif si c'est deja un conges $user_periode_sql = 'SELECT p_date_deb, p_demi_jour_deb, p_date_fin, p_demi_jour_fin, p_etat FROM conges_periode WHERE p_login = "******" AND ( p_etat=\'ok\' OR p_etat=\'valid\' OR p_etat=\'demande\' ) ' . (!empty($num_current_periode) ? 'AND p_num != ' . intval($num_current_periode) . ' ' : '') . ' AND p_date_deb<="' . \includes\SQL::quote($current_day) . '" AND p_date_fin>="' . \includes\SQL::quote($current_day) . '" AND p_num != \'' . intval($num_update) . '\' '; } $user_periode_request = \includes\SQL::query($user_periode_sql); if ($user_periode_request->num_rows != 0) { while ($resultat_periode = $user_periode_request->fetch_array()) { $sql_p_date_deb = $resultat_periode["p_date_deb"]; $sql_p_date_fin = $resultat_periode["p_date_fin"]; $sql_p_demi_jour_deb = $resultat_periode["p_demi_jour_deb"]; $sql_p_demi_jour_fin = $resultat_periode["p_demi_jour_fin"]; $sql_p_etat = $resultat_periode["p_etat"]; if ($current_day != $sql_p_date_deb && $current_day != $sql_p_date_fin) { // pas la peine d'aller + loin, on chevauche une periode de conges !!! if ($sql_p_etat == "demande") { $comment = _('calcul_nb_jours_commentaire_impossible'); } else { $comment = _('calcul_nb_jours_commentaire'); } return TRUE; } elseif ($current_day == $sql_p_date_deb && $current_day == $sql_p_date_fin) { if ($sql_p_demi_jour_deb == "am") { $tab_periode_deja_prise[$current_day]['am'] = "{$sql_p_etat}"; } if ($sql_p_demi_jour_fin == "pm") { $tab_periode_deja_prise[$current_day]['pm'] = "{$sql_p_etat}"; } } elseif ($current_day == $sql_p_date_deb) { if ($sql_p_demi_jour_deb == "am") { $tab_periode_deja_prise[$current_day]['am'] = "{$sql_p_etat}"; $tab_periode_deja_prise[$current_day]['pm'] = "{$sql_p_etat}"; } else { // alors ($sql_p_demi_jour_deb=="pm") $tab_periode_deja_prise[$current_day]['pm'] = "{$sql_p_etat}"; } } else { if ($sql_p_demi_jour_fin == "pm") { $tab_periode_deja_prise[$current_day]['am'] = "{$sql_p_etat}"; $tab_periode_deja_prise[$current_day]['pm'] = "{$sql_p_etat}"; } else { // alors ($sql_p_demi_jour_fin=="am") $tab_periode_deja_prise[$current_day]['am'] = "{$sql_p_etat}"; } } } } $current_day = jour_suivant($current_day); } // fin du while /**********************************************/ // Ensuite verifie en parcourant le tableau qu'on vient de crée (s'il n'est pas vide) if (count($tab_periode_deja_prise) != 0) { $current_day = $date_debut; $date_limite = jour_suivant($date_fin); // on va avancer jour par jour jusqu'à la date limite et recupere les periodes qui contiennent ce jour... // on construit un tableau par date et 1/2 jour avec l'état de la periode while ($current_day != $date_limite) { if ($tab_periode_calcul[$current_day]['am'] == 1 && $tab_periode_deja_prise[$current_day]['am'] != "no") { // pas la peine d'aller + loin, on chevauche une periode de conges !!! if ($tab_periode_deja_prise[$current_day]['am'] == "demande") { $comment = _('calcul_nb_jours_commentaire_impossible'); } else { $comment = _('calcul_nb_jours_commentaire'); } return TRUE; } if ($tab_periode_calcul[$current_day]['pm'] == 1 && $tab_periode_deja_prise[$current_day]['pm'] != "no") { // pas la peine d'aller + loin, on chevauche une periode de conges !!! if ($tab_periode_deja_prise[$current_day]['pm'] == "demande") { $comment = _('calcul_nb_jours_commentaire_impossible'); } else { $comment = _('calcul_nb_jours_commentaire'); } return TRUE; } $current_day = jour_suivant($current_day); } // fin du while } return FALSE; /************************************************************/ // Fin de le verif de chevauchement d'une période déja saisie }
public static function enregistrement_edition($login) { $PHP_SELF = $_SERVER['PHP_SELF']; $tab_solde_user = array(); $sql1 = 'SELECT su_abs_id, su_solde FROM conges_solde_user where su_login = "******"'; $ReqLog1 = \includes\SQL::query($sql1); while ($resultat1 = $ReqLog1->fetch_array()) { $sql_id = $resultat1["su_abs_id"]; $tab_solde_user[$sql_id] = $resultat1["su_solde"]; } $new_edition_id = \edition\Fonctions::get_last_edition_id() + 1; $aujourdhui = date("Y-m-d"); $num_for_user = \edition\Fonctions::get_num_last_edition_user($login) + 1; /*************************************************/ /* Insertion dans le table conges_edition_papier */ /*************************************************/ $sql_insert = "INSERT INTO conges_edition_papier\n SET ep_id={$new_edition_id}, ep_login='******', ep_date='{$aujourdhui}', ep_num_for_user={$num_for_user} "; $result_insert = \includes\SQL::query($sql_insert); /*************************************************/ /* Insertion dans le table conges_solde_edition */ /*************************************************/ // recup du tableau des types de conges (seulement les conges) $tab_type_cong = recup_tableau_types_conges(); foreach ($tab_type_cong as $id_abs => $libelle) { $sql_insert_2 = "INSERT INTO conges_solde_edition\n SET se_id_edition={$new_edition_id}, se_id_absence={$id_abs}, se_solde={$tab_solde_user[$id_abs]} "; $result_insert_2 = \includes\SQL::query($sql_insert_2); } if ($_SESSION['config']['gestion_conges_exceptionnels']) { $tab_type_conges_exceptionnels = recup_tableau_types_conges_exceptionnels(); foreach ($tab_type_conges_exceptionnels as $id_abs => $libelle) { $sql_insert_3 = "INSERT INTO conges_solde_edition SET se_id_edition={$new_edition_id}, se_id_absence={$id_abs}, se_solde={$tab_solde_user[$id_abs]} "; $result_insert_3 = \includes\SQL::query($sql_insert_3); } } /********************************************************************************************/ /* Update du num edition dans la table periode pour les Conges et demandes de cette edition */ /********************************************************************************************/ // recup de la liste des id des absence de type conges ! $sql_list = "SELECT ta_id FROM conges_type_absence WHERE ta_type='conges' OR ta_type='conges_exceptionnels'"; $ReqLog_list = \includes\SQL::query($sql_list); $list_abs_id = ""; while ($resultat_list = $ReqLog_list->fetch_array()) { if ($list_abs_id == "") { $list_abs_id = $resultat_list['ta_id']; } else { $list_abs_id = $list_abs_id . ", " . $resultat_list['ta_id']; } } $sql_update = 'UPDATE conges_periode SET p_edition_id=\'' . $new_edition_id . '\' WHERE p_login = \'' . $login . '\' AND p_edition_id IS NULL AND (p_type IN (\'' . $list_abs_id . '\') ) AND (p_etat!=\'demande\') '; $ReqLog_update = \includes\SQL::query($sql_update); return $new_edition_id; }