plugins()) !== false){ foreach($plugins as $plugin_name => $plugin){ $observers_path = $this->path("mw_dir")."plugins/".$plugin_name."/app/observers/"; if( $plugin["installed"] && $plugin["enabled"] && file_exists($observers_path) && is_dir($observers_path) ){ if($dh = opendir($observers_path)){ while(($file = readdir($dh)) !== false){ if( substr($file, 0, 1) != "." && !is_dir($observers_path.$file) && strcmp(substr($file, -4), ".php") == 0 && !isset($observers_files[$file]) ) $observers_files[$file] = $observers_path; } closedir($dh); } else return false; } } $observers_path = $this->path("mw_dir")."app/observers/"; if( file_exists($observers_path) && is_dir($observers_path) ){ if($dh = opendir($observers_path)){ while(($file = readdir($dh)) !== false){ if( substr($file, 0, 1) != "." && !is_dir($observers_path.$file) && strcmp(substr($file, -4), ".php") == 0 && !isset($observers_files[$file]) ) $observers_files[$file] = $observers_path; } closedir($dh); } else return false; } } $observers = array(); foreach($observers_files as $file => $observers_path){ $observer_name = substr($file, 0, -4); 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; } 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)){ if(method_exists($observer, "set_env")) $observer->set_env($this); $observer->$observer_call($params); } } } } } // ------------------------------------------------------------------------------------------- // class mw_observer // abstract class mw_observer{ public $env; public function set_env(&$env){ $this->env = &$env; } public function env(){ return $this->env; } }