예제 #1
0
 public function modifier_utilisateur($id = null)
 {
     // On vérifie qu'il s'agit bien d'un admin :
     if (is_connected() && $_SESSION['niveau'] == 1) {
         $this->load->helper('form');
         $this->load->library('form_validation');
         // On fixe les règles concernant l'ajout d'une recette :
         $this->form_validation->set_rules('nom_utilisateur', '"Nom de l\'utilisateur"', 'trim|required|encode_php_tags');
         $this->form_validation->set_rules('prenom_utilisateur', '"Prénom de l\'utilisateur"', 'trim|required|encode_php_tags');
         $this->form_validation->set_rules('login', '"Login de l\'utilisateur"', 'trim|required|encode_php_tags');
         $this->form_validation->set_rules('email', '"Email de l\'utilisateur"', 'trim|required|encode_php_tags');
         $this->form_validation->set_rules('niveau', '"Niveau de l\'utilisateur"', 'trim|required|encode_php_tags');
         if ($this->form_validation->run()) {
             $this->load->model('UtilisateurManager');
             $utilisateurManager = new UtilisateurManager();
             // On récupère les données de l'ancien utilisateur :
             $old_utilisateur = $utilisateurManager->get_utilisateur_by_id_object($this->input->post('id_utilisateur'));
             // On vérifie si l'email a été mis à jour :
             if ($old_utilisateur->email == $this->input->post('email')) {
                 // Ici les email sont identiques, il faut alors procéder de même avec les logins
                 if ($old_utilisateur->login == $this->input->post('login')) {
                     // Ici, les logins sont identiques, on peut mettre les données à jour :
                     $data = array('nom_utilisateur' => $this->input->post('nom_utilisateur'), 'prenom_utilisateur' => $this->input->post('prenom_utilisateur'), 'login' => $this->input->post('login'), 'email' => $this->input->post('email'), 'niveau' => $this->input->post('niveau'));
                     // On met à jour les données :
                     $this->db->where('id_utilisateur', $this->input->post('id_utilisateur'));
                     $this->db->update('utilisateur', $data);
                     // On redirige l'utilisateur vers la page d'accueil :
                     redirect('administration/administrer_utilisateurs');
                 } else {
                     // Ici les logins sont différents, il faut vérifier que le nouveau login n'est pas déjà utilisé
                     $pseudo = $this->input->post('login');
                     $resultat2 = $this->db->query("SELECT * FROM utilisateur WHERE login = ?", array($pseudo));
                     $rows2 = $resultat2->num_rows();
                     if ($rows2 > 0) {
                         $data2 = array();
                         $data2['erreur_login'] = "******";
                         $data2['menu_categories'] = $this->menu_categories;
                         $this->layout->view('modifier_utilisateur', $data2);
                     } else {
                         // On peut mettre à jour les données :
                         $data = array('nom_utilisateur' => $this->input->post('nom_utilisateur'), 'prenom_utilisateur' => $this->input->post('prenom_utilisateur'), 'login' => $this->input->post('login'), 'email' => $this->input->post('email'), 'niveau' => $this->input->post('niveau'));
                         // On met à jour les données :
                         $this->db->where('id_utilisateur', $this->input->post('id_utilisateur'));
                         $this->db->update('utilisateur', $data);
                         // On redirige l'utilisateur vers la page d'accueil :
                         redirect('administration/administrer_utilisateurs');
                     }
                 }
             } else {
                 // Ici l'adresse mail a été modifiée, il faut alors vérifier qu'elle n'est pas déjà présente en bdd :
                 $mail = $this->input->post('email');
                 $mail = htmlspecialchars($mail);
                 $resultat = $this->db->query("SELECT * FROM utilisateur WHERE email = ?", array($mail));
                 $rows = $resultat->num_rows();
                 $resultat->free_result();
                 if ($rows > 0) {
                     $data = array();
                     $data['erreur'] = "Cette adresse email est déjà utilisée...";
                     $data['menu_categories'] = $this->menu_categories;
                     $this->layout->view('modifier_utilisateur', $data);
                 } else {
                     // Ici, l'adresse mail n'a pas encore été utilisée, il faut maintenant comparer les logins :
                     if ($old_utilisateur->login == $this->input->post('login')) {
                         // Ici, les logins sont identiques, on peut mettre les données à jour :
                         $data = array('nom_utilisateur' => $this->input->post('nom_utilisateur'), 'prenom_utilisateur' => $this->input->post('prenom_utilisateur'), 'login' => $this->input->post('login'), 'email' => $this->input->post('email'), 'niveau' => $this->input->post('niveau'));
                         // On met à jour les données :
                         $this->db->where('id_utilisateur', $this->input->post('id_utilisateur'));
                         $this->db->update('utilisateur', $data);
                         // On redirige l'utilisateur vers la page d'accueil :
                         redirect('administration/administrer_utilisateurs');
                     } else {
                         // Ici les logins sont différents, il faut vérifier que le nouveau login n'est pas déjà utilisé
                         $pseudo = $this->input->post('login');
                         $resultat2 = $this->db->query("SELECT * FROM utilisateur WHERE login = ?", array($pseudo));
                         $rows2 = $resultat2->num_rows();
                         if ($rows2 > 0) {
                             $data2 = array();
                             $data2['erreur_login'] = "******";
                             $data2['menu_categories'] = $this->menu_categories;
                             $this->layout->view('modifier_utilisateur', $data2);
                         } else {
                             // On peut mettre à jour les données :
                             $data = array('nom_utilisateur' => $this->input->post('nom_utilisateur'), 'prenom_utilisateur' => $this->input->post('prenom_utilisateur'), 'login' => $this->input->post('login'), 'email' => $this->input->post('email'), 'niveau' => $this->input->post('niveau'));
                             // On met à jour les données :
                             $this->db->where('id_utilisateur', $this->input->post('id_utilisateur'));
                             $this->db->update('utilisateur', $data);
                             // On redirige l'utilisateur vers la page d'accueil :
                             redirect('administration/administrer_utilisateurs');
                         }
                     }
                 }
             }
         } else {
             $this->load->model('UtilisateurManager');
             $utilisateurManager = new UtilisateurManager();
             $utilisateur = $utilisateurManager->get_utilisateur_by_id_object($id);
             $data = array();
             $data['menu_categories'] = $this->menu_categories;
             $data['utilisateur'] = $utilisateur;
             $this->layout->view('modifier_utilisateur', $data);
         }
     } else {
         redirect('accueil');
     }
 }