nouveau SQL import / maj donnees XML
[mtweb] / mw / app / mods / admin / users.php
1 <?php
2
3   class mw_admin_users extends mw_mod{
4
5     var $roles;
6
7     function validate(&$env){
8       $data = $env->data();
9       if(($this->roles = $data->roles()) === false) return "impossible de lire la liste des roles";
10       return true;
11     }
12
13     function index(&$env){
14       $data = $env->data();
15       if($this->roles) $env->set_out("roles", $this->roles);
16       else{
17         $env->erreur("impossible de lire la liste des roles");
18         return;
19       }
20       if(
21         ( $users = $data->users(
22             isset($_GET[$env->param("start")]) ? $_GET[$env->param("start")] : 0,
23             isset($_GET[$env->param("alpha")]) ? $_GET[$env->param("alpha")] : null,
24             isset($_GET[$env->param("role")]) ? $_GET[$env->param("role")] : null
25           )
26         ) !== false
27       ){
28         $env->set_out("users", $users);
29       }
30       else $env->erreur("impossible de lire la liste des utilisateurs");
31     }
32
33     function add(&$env){
34       $data = $env->data();
35       if($this->roles){
36         $env->set_out("roles", $this->roles);
37         $user = array(
38           "login" => "",
39           "email" => "",
40           "roles" => array()
41         );
42         if($_POST){
43           $VALID = true;
44           if($_POST["login"]){
45             $user["login"] = $_POST["login"];
46           }
47           else{
48             $env->message("merci de pr&eacute;ciser un login");
49             $VALID = false;
50           }
51           if(($exists = $data->user($_POST["login"])) !== false){
52             if($exists){
53               $env->message("ce login existe d&eacute;j&agrave;");
54               $VALID = false;
55             }
56           }
57           else{
58             $env->erreur("impossible de savoir si cet login existe d&eacute;j&agrave;");
59             return;
60           }
61           if($_POST["email"]) $user["email"] = $_POST["email"];
62           else{
63             $env->message("merci de preciser un email");
64             $VALID = false;
65           }
66           if($_POST["password"]){
67             if($_POST["password"] == $_POST["password_confirm"]) $user["password"] = md5($_POST["password"]);
68             else{
69               $env->message("la confirmation du mot de passe est incorrecte");
70               $VALID = false;
71             }
72           }
73           else{
74             $env->message("merci de preciser un mot de passe");
75             $VALID = false;
76           }
77           $user["roles"] = array();
78           foreach($_POST as $key => $value){
79             if(substr($key, 0, 5) == "role_"){
80               $id_role = substr($key, 5);
81               if(preg_match("/^[0-9]+$/", $id_role)){
82                 $user["roles"][] = $id_role;
83               }
84             }
85           }
86           if($VALID){
87             if(
88               $data->add_user(
89                 $user["login"],
90                 $user["password"],
91                 $user["email"],
92                 $user["roles"]
93               )
94             ){
95               $env->redirect(
96                 $env->url("admin/users/edit", array("id" => $user["login"])),
97                 "l'utilisateur <strong>".$_POST["login"]."</strong> a &eacute;t&eacute; ajout&eacute;"
98               );
99             }
100             else $env->erreur("Impossible d'ajouter l'utilisateur");
101           }
102         }
103         $env->set_out("user", $user);
104       }
105       else $env->erreur("impossible de lire la liste des roles");
106     }
107
108     function edit(&$env){
109       $data = $env->data();
110       if($this->roles){
111         $env->set_out("roles", $this->roles);
112         if($user = $data->user($_GET[$env->param("id")])){
113           if($_POST){
114             $VALID = true;
115             if($_POST["email"]) $user["email"] = $_POST["email"];
116             else{
117               $env->message("merci de preciser un email");
118               $VALID = false;
119             }
120             if(isset($_POST["change_password"]) && $_POST["change_password"]){
121               if(!$_POST["password"]){
122                 $env->message("merci de preciser un mot de passe");
123                 $VALID = false;
124               }
125               if($_POST["password"] != $_POST["password_confirm"]){
126                 $env->message("la confirmation du mot de passe est incorrecte");
127                 $VALID = false;
128               }
129               if($VALID) $user["password"] = md5($_POST["password"]);
130             }
131             $user["roles"] = array();
132             foreach($_POST as $key => $value){
133               if(substr($key, 0, 5) == "role_"){
134                 $id_role = substr($key, 5);
135                 if(preg_match("/^[0-9]+$/", $id_role) && isset($this->roles[$id_role])){
136                   $user["roles"][] = $id_role;
137                 }
138               }
139             }
140             if($VALID){
141               if(
142                 $data->set_user(
143                   $user["id"],
144                   $user["login"],
145                   $user["password"],
146                   $user["email"],
147                   $user["roles"]
148                 )
149               )
150               $env->redirect(
151                 $env->url("admin/users/edit", array("id" => $user["login"])),
152                 "l'utilisateur a &eacute;t&eacute; modifi&eacute;"
153               );
154               else $env->erreur("Impossible de mettre &agrave; jour l'utilisateur");
155             }
156           }
157           $env->set_out("user", $user);
158         }
159         else $env->erreur("Impossible de lire les informations de cet utilisateur");
160       }
161       else $env->erreur("impossible de lire la liste des roles");
162     }
163
164     function del(&$env){
165       $data = $env->data();
166       if($env->set_out("user", $data->user($_GET[$env->param("id")]))){
167         $user = $env->out("user");
168         if($data->del_user($_GET[$env->param("id")])) $env->redirect(
169           $env->url("admin/users"),
170           "l'utilisateur <strong>".$user["login"]."</strong> a &eacute;t&eacute; supprim&eacute;"
171         );
172         else $env->erreur("Impossible de supprimer l'utilisateur");
173       }
174       else $env->erreur("Impossible de lire les informations de cet utilisateur");
175     }
176
177   }
178
179 ?>