class mw_admin_users extends mw_mod{
- var $status;
+ var $roles;
function validate(&$env){
$data = $env->data();
- if(($this->status = $data->status()) === false) return "impossible de lire la liste des statuts";
+ if(($this->roles = $data->roles()) === false) return "impossible de lire la liste des roles";
return true;
}
function index(&$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(
- $env->set_out(
- "users",
- $data->users(
+ ( $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
+ isset($_GET[$env->param("role")]) ? $_GET[$env->param("role")] : null
)
) !== false
){
- if($this->status){
- $env->set_out("status", $this->status);
- }
- else $env->erreur("impossible de lire la liste des status");
+ $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);
- $env->set_out("user", array("status" => $data->creation_default_status()));
+ if($this->roles){
+ $env->set_out("roles", $this->roles);
+ $user = array(
+ "login" => "",
+ "email" => "",
+ "roles" => array()
+ );
if($_POST){
- $env->set_out("user", $_POST);
+ $VALID = true;
if($_POST["login"]){
- if(($exists = $data->user($_POST["login"])) !== false){
- if(!$exists){
- $VALID = true;
- if(!$_POST["email"]){
- $env->message("merci de preciser un email");
- $VALID = false;
- }
- 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){
- if(
- $data->add_user(
- $_POST["login"],
- md5($_POST["password"]),
- $_POST["email"],
- $_POST["status"]
- )
- ){
- $env->redirect(
- $env->url("admin/users"),
- "l'utilisateur <strong>".$_POST["login"]."</strong> a été ajouté"
- );
- }
- else $env->erreur("Impossible d'ajouter l'utilisateur");
- }
+ $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["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)){
+ $user["roles"][] = $id_role;
}
- else $env->message("ce login existe déjà");
}
- else $env->erreur("impossible de savoir si cet login existe déjà");
}
- else $env->message("merci de préciser un login");
+ if($VALID){
+ if(
+ $data->add_user(
+ $user["login"],
+ $user["password"],
+ $user["email"],
+ $user["roles"]
+ )
+ ){
+ $env->redirect(
+ $env->url("admin/users/edit", array("id" => $user["login"])),
+ "l'utilisateur <strong>".$_POST["login"]."</strong> 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");
+ else $env->erreur("impossible de lire la liste des roles");
}
function edit(&$env){
$data = $env->data();
- if($this->status){
- $env->set_out("status", $this->status);
- if($env->set_out("user", $data->user($_GET[$env->param("id")]))){
+ if($this->roles){
+ $env->set_out("roles", $this->roles);
+ if($user = $data->user($_GET[$env->param("id")])){
if($_POST){
- $user = $env->out("user");
- $id = $user["id"];
- $login = $user["login"];
- $password = $user["password"];
- $_POST["login"] = $login;
- $env->set_out("user", $_POST);
$VALID = true;
- if(!$_POST["email"]){
+ if($_POST["email"]) $user["email"] = $_POST["email"];
+ else{
$env->message("merci de preciser un email");
$VALID = false;
}
$env->message("la confirmation du mot de passe est incorrecte");
$VALID = false;
}
+ if($VALID) $user["password"] = md5($_POST["password"]);
+ }
+ $user["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])){
+ $user["roles"][] = $id_role;
+ }
+ }
}
if($VALID){
if(
$data->set_user(
- $id,
- $login,
- isset($_POST["change_password"]) && $_POST["change_password"] ? md5($_POST["password"]) : $password,
- $_POST["email"],
- $_POST["status"]
+ $user["id"],
+ $user["login"],
+ $user["password"],
+ $user["email"],
+ $user["roles"]
)
)
$env->redirect(
- $env->url("admin/users"),
- "l'utilisateur <strong>".$login."</strong> a été modifié"
+ $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");
+ else $env->erreur("impossible de lire la liste des roles");
}
function del(&$env){