public attr / function, constructeurs __construct
[mtweb] / mw / env / modules / mw_env_observers.php
index 6b5a83c..8492889 100644 (file)
@@ -2,9 +2,9 @@
 
   class mw_env_observers extends mw_env{
 
-    var $observers;
+    public $observers;
 
-    function init_observers(){
+    public function init_observers(){
       $observers_files = array();
       if(($plugins = $this->plugins()) !== false){
         foreach($plugins as $plugin_name => $plugin){
       $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){
+    public 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);
           }
         }
       }
 
   }
 
-?>
\ No newline at end of file
+  // -------------------------------------------------------------------------------------------
+  //                                                                           class mw_observer
+  //
+
+  abstract class mw_observer{
+
+    public $env;
+
+    public function set_env(&$env){
+      $this->env = &$env;
+    }
+
+    public function env(){
+      return $this->env;
+    }
+
+  }