X-Git-Url: http://git.dj3c1t.com/index.cgi?a=blobdiff_plain;f=mw%2Fenv%2Fmodules%2Fmw_env_run.php;h=30d89cf08b062b2a0c0bb1b4dc18148f81a26914;hb=5dfe5e84a7007ddd9737707ce15f0155e6415066;hp=31242f5e990c5692a998140be5d45c7b9ee88326;hpb=3c17f81e1d2fb68f69cfa620ca00ad63e83cc17c;p=mtweb diff --git a/mw/env/modules/mw_env_run.php b/mw/env/modules/mw_env_run.php index 31242f5..30d89cf 100644 --- a/mw/env/modules/mw_env_run.php +++ b/mw/env/modules/mw_env_run.php @@ -9,12 +9,12 @@ return $data->get_session_user(); } - function set_etat($etat, $valid_status = true){ + function set_etat($etat, $valid_role = true){ if(($this->etat = $this->valid_etat($etat)) !== false){ - if(!$valid_status || $this->status_ok($this->etat, false)){ + if(!$valid_role || $this->action_allowed($this->etat, false)){ return $this->etat; } - else $this->erreur("Vous n'avez pas le statut requis pour effectuer cette action"); + else $this->erreur("Vous n'avez pas le role requis pour effectuer cette action"); } else $this->erreur("etat invalide"); return false; @@ -75,55 +75,55 @@ return $this->valid_etat($this->etat); } - function status_ok($etat, $CHECK_FORMAT = true){ + function action_allowed($etat, $CHECK_FORMAT = true){ $data = $this->data(); if($CHECK_FORMAT) $etat = $this->valid_etat($etat); if($etat === false){ $this->erreur("etat invalide"); return false; } - if(($user_status = $data->get_user_status()) === false){ + if(($user_roles = $data->get_user_roles()) === false){ $this->erreur("Impossible de lire les roles de l'utilisateur courant"); return false; } - if(!$user_status){ + if(!$user_roles){ $this->erreur("L'utilisateur courant n'a aucun role"); return false; } if( ( - $action_status = $data->get_action_status( + $action_roles = $data->get_action_roles( $etat["mod"], $etat["controller"], $etat["action"] ) ) === false ){ - $this->erreur("Impossible de lire les status des actions en base"); + $this->erreur("Impossible de lire les roles des actions en base"); return false; } - foreach($user_status as $id_role){ + foreach($user_roles as $id_role){ $OK = $this->config("default_allow"); $action = $etat["mod"]; - if(isset($action_status[$action])){ + if(isset($action_roles[$action])){ $OK = - (isset($action_status[$action][0]) && $action_status[$action][0]) - || (isset($action_status[$action][$id_role]) && $action_status[$action][$id_role]); + (isset($action_roles[$action][0]) && $action_roles[$action][0]) + || (isset($action_roles[$action][$id_role]) && $action_roles[$action][$id_role]); } if(!$OK){ $action = $etat["mod"]."/".$etat["controller"]; - if(isset($action_status[$action])){ + if(isset($action_roles[$action])){ $OK = - (isset($action_status[$action][0]) && $action_status[$action][0]) - || (isset($action_status[$action][$id_role]) && $action_status[$action][$id_role]); + (isset($action_roles[$action][0]) && $action_roles[$action][0]) + || (isset($action_roles[$action][$id_role]) && $action_roles[$action][$id_role]); } } if(!$OK){ $action = $etat["mod"]."/".$etat["controller"]."/".$etat["action"]; - if(isset($action_status[$action])){ + if(isset($action_roles[$action])){ $OK = - (isset($action_status[$action][0]) && $action_status[$action][0]) - || (isset($action_status[$action][$id_role]) && $action_status[$action][$id_role]); + (isset($action_roles[$action][0]) && $action_roles[$action][0]) + || (isset($action_roles[$action][$id_role]) && $action_roles[$action][$id_role]); } } if($OK) break; @@ -131,8 +131,8 @@ return $OK; } - function run($etat, $valid_status = true, $params = array(), $method = "GET"){ - if($this->set_etat($etat, $valid_status)){ + function run($etat, $valid_role = true, $params = array(), $method = "GET"){ + if($this->set_etat($etat, $valid_role)){ $controller_file = "mods/".$this->etat("mod")."/".$this->etat("controller").".php"; if($this->app_file_exists($controller_file = "mods/".$this->etat("mod")."/".$this->etat("controller").".php", "DESC")){ if(!class_exists("mw_mod")) require $this->app_file("mods/mw_mod.php"); @@ -152,7 +152,13 @@ } if(($controller_validate = $controller->validate($this)) === true){ if(($controller_prepare_inputs = $controller->prepare_inputs($this)) === true){ + $etat_before = $this->etat; + $this->call_observers("before_action"); $controller->$action_method($this); + $etat_after = $this->etat; + $this->etat = $etat_before; + $this->call_observers("after_action"); + $this->etat = $etat_after; } else $this->erreur($controller_prepare_inputs); } @@ -167,7 +173,18 @@ else $this->erreur("Impossible d'effectuer cette action"); } - function etat($name){ + function is_running($etat){ + if($etat = $this->valid_etat($etat)){ + return + ($etat["mod"] == $this->etat("mod")) + && ($etat["controller"] == $this->etat("controller")) + && ($etat["action"] == $this->etat("action")); + } + return false; + } + + function etat($name = null){ + if(!isset($name)) return $this->etat; return $this->etat[$name]; }