env(); $data = $env->data(); if(($this->roles = $data->roles()) === false) return "impossible de lire la liste des roles"; return true; } public function index(){ $env = $this->env(); $data = $env->data(); if($this->roles) $env->set_out("roles", $this->roles); else{ $env->erreur("impossible de lire la liste des roles"); return; } if( ( $users = $data->users( isset($_GET[$env->param("start")]) ? $_GET[$env->param("start")] : 0, isset($_GET[$env->param("alpha")]) ? $_GET[$env->param("alpha")] : null, isset($_GET[$env->param("role")]) ? $_GET[$env->param("role")] : null ) ) !== false ){ $env->set_out("users", $users); } else $env->erreur("impossible de lire la liste des utilisateurs"); } public function add(){ $env = $this->env(); $data = $env->data(); if(!$this->roles){ $env->erreur("impossible de lire la liste des roles"); return; } $user = $env->get_model( "users", array( "login" => "", "email" => "" ) ); $user->set_roles(array()); if($_POST){ $roles = array(); foreach($_POST as $key => $value){ if(substr($key, 0, 5) == "role_"){ $id_role = substr($key, 5); if(preg_match("/^[0-9]+$/", $id_role) && isset($this->roles[$id_role])){ $roles[] = $id_role; } } } $user->set_roles($roles); $user->set_email($_POST["email"]); $user->set_login($_POST["login"]); $user->set_password($_POST["password"]); $valid = $user->valid(); foreach($valid["messages"] as $message) $env->message($message); if(!$env->messages()){ if(($exists = $data->user($user->get_login())) === false){ $env->erreur("impossible de savoir si ce login existe déjà"); return; } if($exists){ $env->message("ce login existe déjà"); } if($_POST["password"] !== $_POST["password_confirm"]){ $env->message("la confirmation du mot de passe est incorrecte"); } } if(!$env->messages()){ if(!$user->insert()){ $env->erreur("Impossible d'ajouter l'utilisateur"); return; } $env->redirect( $env->url("admin/users/edit", array("id" => $user->get_login())), "l'utilisateur a été ajouté" ); } } $env->set_out("roles", $this->roles); $env->set_out("user", $user->get_values()); } public function edit(){ $env = $this->env(); if(!$this->roles){ $env->erreur("impossible de lire la liste des roles"); return; } $user = $env->get_model("users"); if(!$user->load("login", $_GET[$env->param("id")])){ $env->erreur("impossible de lire les informations de l'utilisateur"); return; } if($_POST){ $roles = array(); foreach($_POST as $key => $value){ if(substr($key, 0, 5) == "role_"){ $id_role = substr($key, 5); if(preg_match("/^[0-9]+$/", $id_role) && isset($this->roles[$id_role])){ $roles[] = $id_role; } } } $user->set_roles($roles); $user->set_email($_POST["email"]); if(isset($_POST["change_password"]) && $_POST["change_password"]){ if(!$_POST["password"]){ $env->message("merci de preciser un mot de passe"); } if($_POST["password"] != $_POST["password_confirm"]){ $env->message("la confirmation du mot de passe est incorrecte"); } if(!$env->messages()) $user->set_password($_POST["password"]); } $valid = $user->valid(); foreach($valid["messages"] as $message) $env->message($message); if(!$env->messages()){ if($user->update("id", $user->get_id())){ $env->redirect( $env->url("admin/users/edit", array("id" => $user->get_login())), "l'utilisateur a été modifié" ); } else $env->erreur("Impossible de mettre à jour l'utilisateur"); } } $env->set_out("roles", $this->roles); $env->set_out("user", $user->get_values()); } public function del(){ $env = $this->env(); $user = $env->get_model("users"); if(!$user->load("login", $_GET[$env->param("id")])){ $env->erreur("impossible de lire les informations de l'utilisateur"); return; } if(!$user->delete("login", $user->get_login())){ $env->erreur("Impossible de supprimer l'utilisateur"); return; } $env->redirect( $env->url("admin/users"), "l'utilisateur a été supprimé" ); } }