+++ /dev/null
-<?php
-
- class mw_admin_users extends mw_mod{
-
- var $roles;
-
- function validate(&$env){
- $data = $env->data();
- 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(
- ( $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");
- }
-
- function add(&$env){
- $data = $env->data();
- if($this->roles){
- $env->set_out("roles", $this->roles);
- $user = array(
- "login" => "",
- "email" => "",
- "roles" => 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["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;
- }
- }
- }
- 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 roles");
- }
-
- function edit(&$env){
- $data = $env->data();
- if($this->roles){
- $env->set_out("roles", $this->roles);
- 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["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(
- $user["id"],
- $user["login"],
- $user["password"],
- $user["email"],
- $user["roles"]
- )
- )
- $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 roles");
- }
-
- 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 <strong>".$user["login"]."</strong> a été supprimé"
- );
- else $env->erreur("Impossible de supprimer l'utilisateur");
- }
- else $env->erreur("Impossible de lire les informations de cet utilisateur");
- }
-
- }
-
-?>
\ No newline at end of file