data(); if(($this->status = $data->status()) === false) return "impossible de lire la liste des statuts"; return true; } // ------------------------------------------------------------------------------------ // utilisateurs // function index(&$env){ $data = $env->data(); if($this->status) $env->set_out("status", $this->status); else{ $env->erreur("impossible de lire la liste des status"); 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("status")]) ? $_GET[$env->param("status")] : null ) ) !== false ){ $env->set_out("users", $users); } else $env->erreur("impossible de lire la liste des utilisateurs"); } function add(&$env){ $data = $env->data(); if($this->status){ $env->set_out("status", $this->status); $user = array( "login" => "", "email" => "", "status" => array() ); if($_POST){ $VALID = true; if($_POST["login"]){ $user["login"] = $_POST["login"]; } else{ $env->message("merci de préciser un login"); $VALID = false; } if(($exists = $data->user($_POST["login"])) !== false){ if($exists){ $env->message("ce login existe déjà"); $VALID = false; } } else{ $env->erreur("impossible de savoir si cet login existe déjà"); return; } if($_POST["email"]) $user["email"] = $_POST["email"]; else{ $env->message("merci de preciser un email"); $VALID = false; } if($_POST["password"]){ if($_POST["password"] == $_POST["password_confirm"]) $user["password"] = md5($_POST["password"]); else{ $env->message("la confirmation du mot de passe est incorrecte"); $VALID = false; } } else{ $env->message("merci de preciser un mot de passe"); $VALID = false; } $user["status"] = array(); foreach($_POST as $key => $value){ if(substr($key, 0, 7) == "status_"){ $id_role = substr($key, 7); if(preg_match("/^[0-9]+$/", $id_role)){ $user["status"][] = $id_role; } } } if($VALID){ if( $data->add_user( $user["login"], $user["password"], $user["email"], $user["status"] ) ){ $env->redirect( $env->url("admin/users/edit", array("id" => $user["login"])), "l'utilisateur ".$_POST["login"]." a été ajouté" ); } else $env->erreur("Impossible d'ajouter l'utilisateur"); } } $env->set_out("user", $user); } else $env->erreur("impossible de lire la liste des status"); } function edit(&$env){ $data = $env->data(); if($this->status){ $env->set_out("status", $this->status); if($user = $data->user($_GET[$env->param("id")])){ if($_POST){ $VALID = true; if($_POST["email"]) $user["email"] = $_POST["email"]; else{ $env->message("merci de preciser un email"); $VALID = false; } if(isset($_POST["change_password"]) && $_POST["change_password"]){ if(!$_POST["password"]){ $env->message("merci de preciser un mot de passe"); $VALID = false; } if($_POST["password"] != $_POST["password_confirm"]){ $env->message("la confirmation du mot de passe est incorrecte"); $VALID = false; } if($VALID) $user["password"] = md5($_POST["password"]); } $user["status"] = array(); foreach($_POST as $key => $value){ if(substr($key, 0, 7) == "status_"){ $id_role = substr($key, 7); if(preg_match("/^[0-9]+$/", $id_role) && isset($this->status[$id_role])){ $user["status"][] = $id_role; } } } if($VALID){ if( $data->set_user( $user["id"], $user["login"], $user["password"], $user["email"], $user["status"] ) ) $env->redirect( $env->url("admin/users/edit", array("id" => $user["login"])), "l'utilisateur a été modifié" ); else $env->erreur("Impossible de mettre à jour l'utilisateur"); } } $env->set_out("user", $user); } else $env->erreur("Impossible de lire les informations de cet utilisateur"); } else $env->erreur("impossible de lire la liste des status"); } function del(&$env){ $data = $env->data(); if($env->set_out("user", $data->user($_GET[$env->param("id")]))){ $user = $env->out("user"); if($data->del_user($_GET[$env->param("id")])) $env->redirect( $env->url("admin/users"), "l'utilisateur ".$user["login"]." a été supprimé" ); else $env->erreur("Impossible de supprimer l'utilisateur"); } else $env->erreur("Impossible de lire les informations de cet utilisateur"); } // ------------------------------------------------------------------------------------ // roles // function set_default_allow(&$env){ $default_allow = $_GET[$env->param("id")]; if(!isset($default_allow) || ($default_allow !== "0" && $default_allow !== "1")){ $env->erreur("parametre default_allow invalide"); return; } $data = $env->data(); if(!$data->set_config("default_allow", $default_allow)){ $env->erreur("impossible de mettre a jour la configuration default_allow"); return; } $env->redirect( $env->url("admin/users/roles"), "la configuration default_allow a été enregistrée" ); } function roles(&$env){ $data = $env->data(); $roles = $data->status(); $id_role = isset($_GET[$env->param("id")]) && $_GET[$env->param("id")] ? $_GET[$env->param("id")] : 0; $env->set_out("id_role", $id_role); if(!isset($roles) || $roles === false){ $env->erreur("impossible de lire la liste des roles"); return; } $env->set_out("roles", $roles); if(($actions = $data->get_actions($id_role)) === false){ $env->erreur("impossible de lire la liste des droits d'acces"); return; } $env->set_out("actions", $actions); } function add_role(&$env){ $data = $env->data(); $role = array( "nom" => "", "intitule" => "" ); if($_POST){ if(!($role["nom"] = $_POST["nom"])) $env->message("merci de preciser un nom"); if(!($role["intitule"] = $_POST["intitule"])) $env->message("merci de preciser un intitule"); if(!$env->messages()){ if(($id_role = $data->add_role($role["nom"], $role["intitule"])) !== false){ $env->redirect( $env->url("admin/users/roles", array("id" => $id_role)), "le rôle a été enregistré" ); } else $env->erreur("impossible d'enregistrer les informations du role"); } } $env->set_out("role", $role); } function edit_role(&$env){ $data = $env->data(); if(!isset($_GET[$env->param("id")]) || !($role = $data->get_role($_GET[$env->param("id")]))){ $env->erreur("impossible de lire les informations du role"); return; } if($_POST){ if(!($role["nom"] = $_POST["nom"])) $env->message("merci de preciser un nom"); if(!($role["intitule"] = $_POST["intitule"])) $env->message("merci de preciser un intitule"); if(!$env->messages()){ if($data->set_role($role["id"], $role["nom"], $role["intitule"])){ $env->redirect( $env->url("admin/users/roles", array("id" => $role["id"])), "le rôle a été enregistré" ); } else $env->erreur("impossible d'enregistrer les informations du role"); } } $env->set_out("role", $role); } function save_role(&$env){ $data = $env->data(); if(!($role = $data->get_role($_POST["id_role"]))){ $env->erreur("impossible de lire les informations du role"); return; } if(!$data->clear_role_actions($role["id"])){ $env->erreur("impossible de supprimer les actions du role"); return; } $action_status = array(); $als = array(); foreach($_POST as $key => $value){ if(substr($key, 0, 7) == "module_" && ($action = substr($key, 7))) $action_status[$action] = $role["id"]; elseif(substr($key, 0, 11) == "controleur_" && ($action = substr($key, 11))) $action_status[$action] = $role["id"]; elseif(substr($key, 0, 3) == "al_" && ($al_index = substr($key, 3))) $als[] = $al_index; } foreach($als as $al_index){ $al_prefix = "action_".$al_index."_"; $al_prefix_length = strlen($al_prefix); foreach($_POST as $key => $value){ if(substr($key, 0, $al_prefix_length) == $al_prefix) $action_status[$value] = $role["id"]; } } foreach($action_status as $action => $id_role){ if(!$data->add_role_action($id_role, $action)){ $env->erreur("impossible d'enregistrer les actions du role"); return; } } $env->redirect( $env->url("admin/users/roles", array("id" => $role["id"])), "les actions du rôle ont été enregistrées" ); } function del_role(&$env){ $data = $env->data(); if(!isset($_GET[$env->param("id")]) || !($role = $data->get_role($_GET[$env->param("id")]))){ $env->erreur("impossible de lire les informations du role"); return; } if($data->clear_role_actions($role["id"])){ if($data->clear_role_users($role["id"])){ if($data->del_role($role["id"])){ $env->redirect( $env->url("admin/users/roles"), "le rôle a été effacé" ); } else $env->erreur("impossible de supprimer le role"); } else $env->erreur("impossible de supprimer le role aux utilisateurs"); } else $env->erreur("impossible de supprimer les actions du role"); } } ?>