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");
}
}
?>