nouveau SQL import / maj donnees XML
[mtweb] / mw / app / mods / config / roles.php
1 <?php
2
3   class mw_config_roles 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       $roles = $this->roles;
16       $id_role = isset($_GET[$env->param("id")]) && $_GET[$env->param("id")] ? $_GET[$env->param("id")] : 0;
17       if(!isset($roles) || $roles === false){
18         $env->erreur("impossible de lire la liste des roles");
19         return;
20       }
21       if(($actions = $data->get_actions($id_role)) === false){
22         $env->erreur("impossible de lire la liste des droits d'acces");
23         return;
24       }
25       $env->set_out("roles", $roles);
26       $env->set_out("id_role", $id_role);
27       $env->set_out("actions", $actions);
28     }
29
30     function set_default_allow(&$env){
31       $default_allow = $_GET[$env->param("id")];
32       if(!isset($default_allow) || ($default_allow !== "0" && $default_allow !== "1")){
33         $env->erreur("parametre default_allow invalide");
34         return;
35       }
36       $data = $env->data();
37       if(!$data->set_config("default_allow", $default_allow)){
38         $env->erreur("impossible de mettre a jour la configuration default_allow");
39         return;
40       }
41       $env->redirect(
42         $env->url("config/roles"),
43         "la configuration default_allow a &eacute;t&eacute; enregistr&eacute;e"
44       );
45     }
46
47     function add_role(&$env){
48       $data = $env->data();
49       $role = array(
50         "nom" => "",
51         "intitule" => ""
52       );
53       if($_POST){
54         if(!($role["nom"] = $_POST["nom"])) $env->message("merci de preciser un nom");
55         if(!($role["intitule"] = $_POST["intitule"])) $env->message("merci de preciser un intitule");
56         if(!$env->messages()){
57           if(($id_role = $data->add_role($role["nom"], $role["intitule"])) !== false){
58             $env->redirect(
59               $env->url("config/roles", array("id" => $id_role)),
60               "le r&ocirc;le a &eacute;t&eacute; enregistr&eacute;"
61             );
62           }
63           else $env->erreur("impossible d'enregistrer les informations du role");
64         }
65       }
66       $env->set_out("role", $role);
67     }
68
69     function edit_role(&$env){
70       $data = $env->data();
71       if(!isset($_GET[$env->param("id")]) || !($role = $data->get_role($_GET[$env->param("id")]))){
72         $env->erreur("impossible de lire les informations du role");
73         return;
74       }
75       if($_POST){
76         if(!($role["nom"] = $_POST["nom"])) $env->message("merci de preciser un nom");
77         if(!($role["intitule"] = $_POST["intitule"])) $env->message("merci de preciser un intitule");
78         if(!$env->messages()){
79           if($data->set_role($role["id"], $role["nom"], $role["intitule"])){
80             $env->redirect(
81               $env->url("config/roles", array("id" => $role["id"])),
82               "le r&ocirc;le a &eacute;t&eacute; enregistr&eacute;"
83             );
84           }
85           else $env->erreur("impossible d'enregistrer les informations du role");
86         }
87       }
88       $env->set_out("role", $role);
89     }
90
91     function save_role(&$env){
92       $data = $env->data();
93       if(!($role = $data->get_role($_POST["id_role"]))){
94         $env->erreur("impossible de lire les informations du role");
95         return;
96       }
97       if(!$data->clear_role_actions($role["id"])){
98         $env->erreur("impossible de supprimer les actions du role");
99         return;
100       }
101       $action_roles = array();
102       $als = array();
103       foreach($_POST as $key => $value){
104         if(substr($key, 0, 7) == "module_" && ($action = substr($key, 7))) $action_roles[$action] = $role["id"];
105         elseif(substr($key, 0, 11) == "controleur_" && ($action = substr($key, 11))) $action_roles[$action] = $role["id"];
106         elseif(substr($key, 0, 3) == "al_" && ($al_index = substr($key, 3))) $als[] = $al_index;
107       }
108       foreach($als as $al_index){
109         $al_prefix = "action_".$al_index."_";
110         $al_prefix_length = strlen($al_prefix);
111         foreach($_POST as $key => $value){
112           if(substr($key, 0, $al_prefix_length) == $al_prefix) $action_roles[$value] = $role["id"];
113         }
114       }
115       foreach($action_roles as $action => $id_role){
116         if(!$data->add_role_action($id_role, $action)){
117           $env->erreur("impossible d'enregistrer les actions du role");
118           return;
119         }
120       }
121       $env->redirect(
122         $env->url("config/roles", array("id" => $role["id"])),
123         "les actions du r&ocirc;le ont &eacute;t&eacute; enregistr&eacute;es"
124       );
125     }
126
127     function del_role(&$env){
128       $data = $env->data();
129       if(!isset($_GET[$env->param("id")]) || !($role = $data->get_role($_GET[$env->param("id")]))){
130         $env->erreur("impossible de lire les informations du role");
131         return;
132       }
133       if($data->clear_role_actions($role["id"])){
134         if($data->clear_role_users($role["id"])){
135           if($data->del_role($role["id"])){
136             $env->redirect(
137               $env->url("config/roles"),
138               "le r&ocirc;le a &eacute;t&eacute; effac&eacute;"
139             );
140           }
141           else $env->erreur("impossible de supprimer le role");
142         }
143         else $env->erreur("impossible de supprimer le role aux utilisateurs");
144       }
145       else $env->erreur("impossible de supprimer les actions du role");
146     }
147
148   }
149
150 ?>