public static function commit_update_user($u_login_to_update, &$tab_new_user, &$tab_new_jours_an, &$tab_new_solde, &$tab_new_reliquat, $tab_checkbox_sem_imp, $tab_checkbox_sem_p) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); $return = ''; $result = TRUE; // recup du tableau des types de conges (seulement les conges) $tab_type_conges = recup_tableau_types_conges(); $tab_type_conges_excep = array(); if ($_SESSION['config']['gestion_conges_exceptionnels']) { $tab_type_conges_excep = recup_tableau_types_conges_exceptionnels(); } $return .= htmlentities($u_login_to_update) . '---' . htmlentities($tab_new_user['nom']) . '---' . htmlentities($tab_new_user['prenom']) . '---' . htmlentities($tab_new_user['quotite']) . '---' . htmlentities($tab_new_user['is_resp']) . '---' . htmlentities($tab_new_user['resp_login']) . '---'; $return .= htmlentities($tab_new_user['is_admin']) . '---' . htmlentities($tab_new_user['is_hr']) . '---' . htmlentities($tab_new_user['is_active']) . '---' . htmlentities($tab_new_user['see_all']) . '---' . htmlentities($tab_new_user['email']) . '---' . htmlentities($tab_new_user['login']) . '<br>'; $valid_1 = TRUE; $valid_2 = TRUE; $valid_3 = TRUE; $valid_reliquat = TRUE; // verification de la validite de la saisie du nombre de jours annuels et du solde pour chaque type de conges foreach ($tab_type_conges as $id_conges => $libelle) { $valid_1 = $valid_1 && verif_saisie_decimal($tab_new_jours_an[$id_conges]); //verif la bonne saisie du nombre d?cimal $valid_2 = $valid_2 && verif_saisie_decimal($tab_new_solde[$id_conges]); //verif la bonne saisie du nombre d?cimal $valid_reliquat = $valid_reliquat && verif_saisie_decimal($tab_new_reliquat[$id_conges]); //verif la bonne saisie du nombre d?cimal } // si l'application gere les conges exceptionnels ET si des types de conges exceptionnels ont été définis if ($_SESSION['config']['gestion_conges_exceptionnels'] && count($tab_type_conges_excep) > 0) { $valid_3 = TRUE; // vérification de la validité de la saisie du nombre de jours annuels et du solde pour chaque type de conges exceptionnels foreach ($tab_type_conges_excep as $id_conges => $libelle) { $valid_3 = $valid_3 && verif_saisie_decimal($tab_new_solde[$id_conges]); //verif la bonne saisie du nombre décimal } } else { // sinon on considère $valid_3 comme vrai $valid_3 = TRUE; } // si aucune erreur de saisie n'a ete commise if ($valid_1 && $valid_2 && $valid_3 && $valid_reliquat && $tab_new_user['login'] != "") { // UPDATE de la table conges_users $sql = 'UPDATE conges_users SET u_nom="' . \includes\SQL::quote($tab_new_user['nom']) . '", u_prenom="' . \includes\SQL::quote($tab_new_user['prenom']) . '", u_is_resp="' . \includes\SQL::quote($tab_new_user['is_resp']) . '", u_resp_login="******",u_is_admin="' . \includes\SQL::quote($tab_new_user['is_admin']) . '",u_is_hr="' . \includes\SQL::quote($tab_new_user['is_hr']) . '",u_is_active="' . \includes\SQL::quote($tab_new_user['is_active']) . '",u_see_all="' . \includes\SQL::quote($tab_new_user['see_all']) . '",u_login="******",u_quotite="' . \includes\SQL::quote($tab_new_user['quotite']) . '",u_email="' . \includes\SQL::quote($tab_new_user['email']) . '" WHERE u_login="******"'; \includes\SQL::query($sql); /*************************************/ /* Mise a jour de la table conges_solde_user */ foreach ($tab_type_conges as $id_conges => $libelle) { $sql = 'REPLACE INTO conges_solde_user SET su_nb_an=\'' . strtr(round_to_half($tab_new_jours_an[$id_conges]), ",", ".") . '\',su_solde=\'' . strtr(round_to_half($tab_new_solde[$id_conges]), ",", ".") . '\',su_reliquat=\'' . strtr(round_to_half($tab_new_reliquat[$id_conges]), ",", ".") . '\',su_login="******",su_abs_id=' . intval($id_conges) . ';'; $return .= $sql; \includes\SQL::query($sql); } if ($_SESSION['config']['gestion_conges_exceptionnels']) { foreach ($tab_type_conges_excep as $id_conges => $libelle) { $sql = 'REPLACE INTO conges_solde_user SET su_nb_an=0, su_solde=\'' . strtr(round_to_half($tab_new_solde[$id_conges]), ",", ".") . '\', su_reliquat=\'' . strtr(round_to_half($tab_new_reliquat[$id_conges]), ",", ".") . '\', su_login="******", su_abs_id=' . intval($id_conges) . ';'; $return .= $sql; \includes\SQL::query($sql); } } /*************************************/ /* Mise a jour de la table artt si besoin : */ $tab_grille_rtt_actuelle = \admin\Fonctions::get_current_grille_rtt($u_login_to_update); $tab_new_grille_rtt = \admin\Fonctions::tab_grille_rtt_from_checkbox($tab_checkbox_sem_imp, $tab_checkbox_sem_p); if ($tab_grille_rtt_actuelle != $tab_new_grille_rtt) { $new_date_deb_grille = $tab_new_user['year'] . "-" . $tab_new_user['mois'] . "-" . $tab_new_user['jour']; /****************************/ /*** phase 1 : ***/ // si la derniere grille est ancienne, on l'update (on update la date de fin de grille) // sinon, si la derniere grille date d'aujourd'hui, on la supprime // on regarde si la grille artt a deja été modifiée aujourd'hui : $sql = 'SELECT a_date_fin_grille FROM conges_artt WHERE a_login="******" AND a_date_debut_grille="' . \includes\SQL::quote($new_date_deb_grille) . '";'; $result_grille = \includes\SQL::query($sql); $count_grille = $result_grille->num_rows; if ($count_grille == 0) { // si pas de grille modifiée aujourd'hui : on update la date de fin de la derniere grille // date de fin de la grille précedent : // $new_date_fin_grille = $new_date_deb_grille -1 jour ! $new_jour_num = (int) $tab_new_user['jour']; $new_mois_num = (int) $tab_new_user['mois']; $new_year_num = (int) $tab_new_user['year']; $new_date_fin_grille = date("Y-m-d", mktime(0, 0, 0, $new_mois_num, $new_jour_num - 1, $new_year_num)); // int mktime(int hour, int minute, int second, int month, int day, int year ) // UPDATE de la table conges_artt // en fait, on update la dernière grille (on update la date de fin de grille), et on ajoute une nouvelle // grille (avec sa date de début de grille) // on update la dernière grille (on update la date de fin de grille) $sql = 'UPDATE conges_artt SET a_date_fin_grille="' . \includes\SQL::quote($new_date_fin_grille) . '" WHERE a_login="******" AND a_date_fin_grille=\'9999-12-31\' '; \includes\SQL::query($sql); } else { // si une grille modifiée aujourd'hui : on delete cette grille $sql = 'DELETE FROM conges_artt WHERE a_login="******" AND a_date_debut_grille="' . \includes\SQL::quote($new_date_deb_grille) . '"'; \includes\SQL::query($sql); } /****************************/ /*** phase 2 : ***/ // on Insert la nouvelle grille (celle qui commence aujourd'hui) // on met à 'Y' les demi-journées de rtt (et seulement celles là) $list_columns = ""; $list_valeurs = ""; $i = 0; if ($tab_checkbox_sem_imp != "") { while (list($key, $val) = each($tab_checkbox_sem_imp)) { if ($i != 0) { $list_columns = $list_columns . ", "; $list_valeurs = $list_valeurs . ", "; } $list_columns = $list_columns . " {$key} "; $list_valeurs = $list_valeurs . " '{$val}' "; $i = $i + 1; } } if ($tab_checkbox_sem_p != "") { while (list($key, $val) = each($tab_checkbox_sem_p)) { if ($i != 0) { $list_columns = $list_columns . ", "; $list_valeurs = $list_valeurs . ", "; } $list_columns = $list_columns . " {$key} "; $list_valeurs = $list_valeurs . " '{$val}' "; $i = $i + 1; } } if ($list_columns != "" && $list_valeurs != "") { $sql = "INSERT INTO conges_artt (a_login, {$list_columns}, a_date_debut_grille ) VALUES ('{$u_login_to_update}', {$list_valeurs}, '{$new_date_deb_grille}') "; \includes\SQL::query($sql); } } // Si changement du login, (on a dèja updaté la table users (mais pas les responsables !!!)) on update toutes les autres tables // (les grilles artt, les periodes de conges et les échanges de rtt, etc ....) avec le nouveau login if ($tab_new_user['login'] != $u_login_to_update) { // update table artt $sql = 'UPDATE conges_artt SET a_login="******" WHERE a_login="******" '; \includes\SQL::query($sql); // update table echange_rtt $sql = 'UPDATE conges_echange_rtt SET e_login="******" WHERE e_login="******" '; \includes\SQL::query($sql); // update table edition_papier $sql = 'UPDATE conges_edition_papier SET ep_login="******" WHERE ep_login="******" '; \includes\SQL::query($sql); // update table groupe_grd_resp $sql = 'UPDATE conges_groupe_grd_resp SET ggr_login= "******" WHERE ggr_login="******" '; \includes\SQL::query($sql); // update table groupe_resp $sql = 'UPDATE conges_groupe_resp SET gr_login="******" WHERE gr_login="******" '; \includes\SQL::query($sql); // update table conges_groupe_users $sql = 'UPDATE conges_groupe_users SET gu_login="******" WHERE gu_login="******" '; \includes\SQL::query($sql); // update table periode $sql = 'UPDATE conges_periode SET p_login="******" WHERE p_login="******" '; \includes\SQL::query($sql); // update table conges_solde_user $sql = 'UPDATE conges_solde_user SET su_login="******" WHERE su_login="******" '; \includes\SQL::query($sql); // update table conges_users $sql = 'UPDATE conges_users SET u_resp_login="******" WHERE u_resp_login="******" '; \includes\SQL::query($sql); } if ($tab_new_user['login'] != $u_login_to_update) { $comment_log = "modif_user (old_login = {$u_login_to_update}) new_login = "******"modif_user login = {$u_login_to_update}"; } log_action(0, "", $u_login_to_update, $comment_log); $return .= _('form_modif_ok') . ' !<br><br>'; } else { // en cas d'erreur de saisie $return .= _('form_modif_not_ok') . ' !<br><br>'; } return $return; }