X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=mw%2Fenv%2Fmodules%2Fmw_env_run.php;h=31242f5e990c5692a998140be5d45c7b9ee88326;hb=refs%2Ftags%2Fmtweb.0.7.0;hp=51b63303199485599dc04adaebdf6fdd69d136b9;hpb=36ed114046cbe3d72a3589230e9f306a54fcc79d;p=mtweb diff --git a/mw/env/modules/mw_env_run.php b/mw/env/modules/mw_env_run.php index 51b6330..31242f5 100644 --- a/mw/env/modules/mw_env_run.php +++ b/mw/env/modules/mw_env_run.php @@ -76,48 +76,58 @@ } function status_ok($etat, $CHECK_FORMAT = true){ - $OK = $this->config("default_allow"); $data = $this->data(); if($CHECK_FORMAT) $etat = $this->valid_etat($etat); - if($etat !== false){ - if(($user_status = $data->get_user_status()) !== false){ - if( - ( - $action_status = $data->get_action_status( - $etat["mod"], - $etat["controller"], - $etat["action"] - ) - ) !== false - ){ - $action = $etat["mod"]."/".$etat["controller"]."/".$etat["action"]; - if(isset($action_status[$action])){ - $OK = - (isset($action_status[$action][0]) && $action_status[$action][0]) - || (isset($action_status[$action][$user_status]) && $action_status[$action][$user_status]); - } - else{ - $action = $etat["mod"]."/".$etat["controller"]; - if(isset($action_status[$action])){ - $OK = - (isset($action_status[$action][0]) && $action_status[$action][0]) - || (isset($action_status[$action][$user_status]) && $action_status[$action][$user_status]); - } - else{ - $action = $etat["mod"]; - if(isset($action_status[$action])){ - $OK = - (isset($action_status[$action][0]) && $action_status[$action][0]) - || (isset($action_status[$action][$user_status]) && $action_status[$action][$user_status]); - } - } - } + if($etat === false){ + $this->erreur("etat invalide"); + return false; + } + if(($user_status = $data->get_user_status()) === false){ + $this->erreur("Impossible de lire les roles de l'utilisateur courant"); + return false; + } + if(!$user_status){ + $this->erreur("L'utilisateur courant n'a aucun role"); + return false; + } + if( + ( + $action_status = $data->get_action_status( + $etat["mod"], + $etat["controller"], + $etat["action"] + ) + ) === false + ){ + $this->erreur("Impossible de lire les status des actions en base"); + return false; + } + foreach($user_status as $id_role){ + $OK = $this->config("default_allow"); + $action = $etat["mod"]; + if(isset($action_status[$action])){ + $OK = + (isset($action_status[$action][0]) && $action_status[$action][0]) + || (isset($action_status[$action][$id_role]) && $action_status[$action][$id_role]); + } + if(!$OK){ + $action = $etat["mod"]."/".$etat["controller"]; + if(isset($action_status[$action])){ + $OK = + (isset($action_status[$action][0]) && $action_status[$action][0]) + || (isset($action_status[$action][$id_role]) && $action_status[$action][$id_role]); + } + } + if(!$OK){ + $action = $etat["mod"]."/".$etat["controller"]."/".$etat["action"]; + if(isset($action_status[$action])){ + $OK = + (isset($action_status[$action][0]) && $action_status[$action][0]) + || (isset($action_status[$action][$id_role]) && $action_status[$action][$id_role]); } - else $this->erreur("Impossible de lire les status des actions en base"); } - else $this->erreur("Impossible de lire le statut de l'utilisateur courant"); + if($OK) break; } - else $this->erreur("etat invalide"); return $OK; }