예제 #1
0
 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;
 }