3 class mw_admin_users extends mw_mod{
7 function validate(&$env){
9 if(($this->status = $data->status()) === false) return "impossible de lire la liste des statuts";
13 // ------------------------------------------------------------------------------------
17 function index(&$env){
19 if($this->status) $env->set_out("status", $this->status);
21 $env->erreur("impossible de lire la liste des status");
25 ( $users = $data->users(
26 isset($_GET[$env->param("start")]) ? $_GET[$env->param("start")] : 0,
27 isset($_GET[$env->param("alpha")]) ? $_GET[$env->param("alpha")] : null,
28 isset($_GET[$env->param("status")]) ? $_GET[$env->param("status")] : null
32 $env->set_out("users", $users);
34 else $env->erreur("impossible de lire la liste des utilisateurs");
40 $env->set_out("status", $this->status);
49 $user["login"] = $_POST["login"];
52 $env->message("merci de préciser un login");
55 if(($exists = $data->user($_POST["login"])) !== false){
57 $env->message("ce login existe déjà");
62 $env->erreur("impossible de savoir si cet login existe déjà");
65 if($_POST["email"]) $user["email"] = $_POST["email"];
67 $env->message("merci de preciser un email");
70 if($_POST["password"]){
71 if($_POST["password"] == $_POST["password_confirm"]) $user["password"] = md5($_POST["password"]);
73 $env->message("la confirmation du mot de passe est incorrecte");
78 $env->message("merci de preciser un mot de passe");
81 $user["status"] = array();
82 foreach($_POST as $key => $value){
83 if(substr($key, 0, 7) == "status_"){
84 $id_role = substr($key, 7);
85 if(preg_match("/^[0-9]+$/", $id_role)){
86 $user["status"][] = $id_role;
100 $env->url("admin/users/edit", array("id" => $user["login"])),
101 "l'utilisateur <strong>".$_POST["login"]."</strong> a été ajouté"
104 else $env->erreur("Impossible d'ajouter l'utilisateur");
107 $env->set_out("user", $user);
109 else $env->erreur("impossible de lire la liste des status");
112 function edit(&$env){
113 $data = $env->data();
115 $env->set_out("status", $this->status);
116 if($user = $data->user($_GET[$env->param("id")])){
119 if($_POST["email"]) $user["email"] = $_POST["email"];
121 $env->message("merci de preciser un email");
124 if(isset($_POST["change_password"]) && $_POST["change_password"]){
125 if(!$_POST["password"]){
126 $env->message("merci de preciser un mot de passe");
129 if($_POST["password"] != $_POST["password_confirm"]){
130 $env->message("la confirmation du mot de passe est incorrecte");
133 if($VALID) $user["password"] = md5($_POST["password"]);
135 $user["status"] = array();
136 foreach($_POST as $key => $value){
137 if(substr($key, 0, 7) == "status_"){
138 $id_role = substr($key, 7);
139 if(preg_match("/^[0-9]+$/", $id_role) && isset($this->status[$id_role])){
140 $user["status"][] = $id_role;
155 $env->url("admin/users/edit", array("id" => $user["login"])),
156 "l'utilisateur a été modifié"
158 else $env->erreur("Impossible de mettre à jour l'utilisateur");
161 $env->set_out("user", $user);
163 else $env->erreur("Impossible de lire les informations de cet utilisateur");
165 else $env->erreur("impossible de lire la liste des status");
169 $data = $env->data();
170 if($env->set_out("user", $data->user($_GET[$env->param("id")]))){
171 $user = $env->out("user");
172 if($data->del_user($_GET[$env->param("id")])) $env->redirect(
173 $env->url("admin/users"),
174 "l'utilisateur <strong>".$user["login"]."</strong> a été supprimé"
176 else $env->erreur("Impossible de supprimer l'utilisateur");
178 else $env->erreur("Impossible de lire les informations de cet utilisateur");
181 // ------------------------------------------------------------------------------------
185 function set_default_allow(&$env){
186 $default_allow = $_GET[$env->param("id")];
187 if(!isset($default_allow) || ($default_allow !== "0" && $default_allow !== "1")){
188 $env->erreur("parametre default_allow invalide");
191 $data = $env->data();
192 if(!$data->set_config("default_allow", $default_allow)){
193 $env->erreur("impossible de mettre a jour la configuration default_allow");
197 $env->url("admin/users/roles"),
198 "la configuration default_allow a été enregistrée"
202 function roles(&$env){
203 $data = $env->data();
204 $roles = $data->status();
205 $id_role = isset($_GET[$env->param("id")]) && $_GET[$env->param("id")] ? $_GET[$env->param("id")] : 0;
206 $env->set_out("id_role", $id_role);
207 if(!isset($roles) || $roles === false){
208 $env->erreur("impossible de lire la liste des roles");
211 $env->set_out("roles", $roles);
212 if(($actions = $data->get_actions($id_role)) === false){
213 $env->erreur("impossible de lire la liste des droits d'acces");
216 $env->set_out("actions", $actions);
220 function add_role(&$env){
221 $data = $env->data();
227 if(!($role["nom"] = $_POST["nom"])) $env->message("merci de preciser un nom");
228 if(!($role["intitule"] = $_POST["intitule"])) $env->message("merci de preciser un intitule");
229 if(!$env->messages()){
230 if(($id_role = $data->add_role($role["nom"], $role["intitule"])) !== false){
232 $env->url("admin/users/roles", array("id" => $id_role)),
233 "le rôle a été enregistré"
236 else $env->erreur("impossible d'enregistrer les informations du role");
239 $env->set_out("role", $role);
242 function edit_role(&$env){
243 $data = $env->data();
244 if(!isset($_GET[$env->param("id")]) || !($role = $data->get_role($_GET[$env->param("id")]))){
245 $env->erreur("impossible de lire les informations du role");
249 if(!($role["nom"] = $_POST["nom"])) $env->message("merci de preciser un nom");
250 if(!($role["intitule"] = $_POST["intitule"])) $env->message("merci de preciser un intitule");
251 if(!$env->messages()){
252 if($data->set_role($role["id"], $role["nom"], $role["intitule"])){
254 $env->url("admin/users/roles", array("id" => $role["id"])),
255 "le rôle a été enregistré"
258 else $env->erreur("impossible d'enregistrer les informations du role");
261 $env->set_out("role", $role);
264 function save_role(&$env){
265 $data = $env->data();
266 if(!($role = $data->get_role($_POST["id_role"]))){
267 $env->erreur("impossible de lire les informations du role");
270 if(!$data->clear_role_actions($role["id"])){
271 $env->erreur("impossible de supprimer les actions du role");
274 $action_status = array();
276 foreach($_POST as $key => $value){
277 if(substr($key, 0, 7) == "module_" && ($action = substr($key, 7))) $action_status[$action] = $role["id"];
278 elseif(substr($key, 0, 11) == "controleur_" && ($action = substr($key, 11))) $action_status[$action] = $role["id"];
279 elseif(substr($key, 0, 3) == "al_" && ($al_index = substr($key, 3))) $als[] = $al_index;
281 foreach($als as $al_index){
282 $al_prefix = "action_".$al_index."_";
283 $al_prefix_length = strlen($al_prefix);
284 foreach($_POST as $key => $value){
285 if(substr($key, 0, $al_prefix_length) == $al_prefix) $action_status[$value] = $role["id"];
288 foreach($action_status as $action => $id_role){
289 if(!$data->add_role_action($id_role, $action)){
290 $env->erreur("impossible d'enregistrer les actions du role");
295 $env->url("admin/users/roles", array("id" => $role["id"])),
296 "les actions du rôle ont été enregistrées"
300 function del_role(&$env){
301 $data = $env->data();
302 if(!isset($_GET[$env->param("id")]) || !($role = $data->get_role($_GET[$env->param("id")]))){
303 $env->erreur("impossible de lire les informations du role");
306 if($data->clear_role_actions($role["id"])){
307 if($data->clear_role_users($role["id"])){
308 if($data->del_role($role["id"])){
310 $env->url("admin/users/roles"),
311 "le rôle a été effacé"
314 else $env->erreur("impossible de supprimer le role");
316 else $env->erreur("impossible de supprimer le role aux utilisateurs");
318 else $env->erreur("impossible de supprimer les actions du role");