3 class mw_config_roles extends mw_mod{
7 function validate(&$env){
9 if(($this->roles = $data->roles()) === false) return "impossible de lire la liste des roles";
13 function index(&$env){
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");
21 if(($actions = $data->get_actions($id_role)) === false){
22 $env->erreur("impossible de lire la liste des droits d'acces");
25 $env->set_out("roles", $roles);
26 $env->set_out("id_role", $id_role);
27 $env->set_out("actions", $actions);
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");
37 if(!$data->set_config("default_allow", $default_allow)){
38 $env->erreur("impossible de mettre a jour la configuration default_allow");
42 $env->url("config/roles"),
43 "la configuration default_allow a été enregistrée"
47 function add_role(&$env){
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){
59 $env->url("config/roles", array("id" => $id_role)),
60 "le rôle a été enregistré"
63 else $env->erreur("impossible d'enregistrer les informations du role");
66 $env->set_out("role", $role);
69 function edit_role(&$env){
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");
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"])){
81 $env->url("config/roles", array("id" => $role["id"])),
82 "le rôle a été enregistré"
85 else $env->erreur("impossible d'enregistrer les informations du role");
88 $env->set_out("role", $role);
91 function save_role(&$env){
93 if(!($role = $data->get_role($_POST["id_role"]))){
94 $env->erreur("impossible de lire les informations du role");
97 if(!$data->clear_role_actions($role["id"])){
98 $env->erreur("impossible de supprimer les actions du role");
101 $action_roles = 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;
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"];
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");
122 $env->url("config/roles", array("id" => $role["id"])),
123 "les actions du rôle ont été enregistrées"
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");
133 if($data->clear_role_actions($role["id"])){
134 if($data->clear_role_users($role["id"])){
135 if($data->del_role($role["id"])){
137 $env->url("config/roles"),
138 "le rôle a été effacé"
141 else $env->erreur("impossible de supprimer le role");
143 else $env->erreur("impossible de supprimer le role aux utilisateurs");
145 else $env->erreur("impossible de supprimer les actions du role");