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'); } }