module config et role webmaster
[mtweb] / mw / env / modules / mw_env_run.php
index 31242f5..30d89cf 100644 (file)
@@ -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;
       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;
       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");
               }
               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);
               }
       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];
     }