nouveau module "models" dans l'environnement
[mtweb] / mw / env / modules / mw_env_observers.php
index 6b5a83c..4184bc6 100644 (file)
       $observers = array();
       foreach($observers_files as $file => $observers_path){
         $observer_name = substr($file, 0, -4);
-        if(class_exists($observer_name)) return false;
-        if(!file_exists($observer_file = $observers_path.$file)) return false;
-        require_once $observer_file;
-        if(!class_exists($observer_name)) return false;
+        if(!class_exists($observer_name)){
+          if(!file_exists($observer_file = $observers_path.$file)) return false;
+          require_once $observer_file;
+          if(!class_exists($observer_name)) return false;
+        }
         $observers[$observer_name] = new $observer_name();
       }
       return $observers;
     }
 
-    function call_observers($observer_call){
+    function call_observers($observer_call, $params = array()){
       if(!isset($this->observers)){
         $this->observers = $this->init_observers();
       }
       if($this->observers){
         foreach($this->observers as $observer_name => $observer){
           if(method_exists($observer, $observer_call)){
-            $observer->$observer_call($this);
+            if(method_exists($observer, "set_env")) $observer->set_env($this);
+            $observer->$observer_call($params);
           }
         }
       }
 
   }
 
+  class mw_observer{
+
+    var $env;
+
+    function set_env(&$env){
+      $this->env = &$env;
+    }
+
+    function env(){
+      return $this->env;
+    }
+
+  }
+
 ?>
\ No newline at end of file