| | |
| | | } else { |
| | | $app->log('Plugins directory missing: '.$plugins_dir, LOGLEVEL_ERROR); |
| | | } |
| | | |
| | | } |
| | | |
| | | /* |
| | |
| | | function registerAction($action_name, $plugin_name, $function_name) { |
| | | global $app; |
| | | $this->subscribed_actions[$action_name][] = array('plugin' => $plugin_name, 'function' => $function_name); |
| | | if($this->debug) $app->log("Registered function '$function_name' from plugin '$plugin_name' for action '$event_name'.", LOGLEVEL_DEBUG); |
| | | if($this->debug) $app->log("Registered function '$function_name' from plugin '$plugin_name' for action '$action_name'.", LOGLEVEL_DEBUG); |
| | | } |
| | | |
| | | |
| | | function raiseAction($action_name, $data) { |
| | | function raiseAction($action_name, $data, $return_data = false) { |
| | | global $app; |
| | | |
| | | //* Get the subscriptions for this action |
| | | $actions = (isset($this->subscribed_actions[$action_name]))?$this->subscribed_actions[$action_name]:''; |
| | | if($this->debug) $app->log('Raised action: '.$action_name, LOGLEVEL_DEBUG); |
| | | |
| | | $result = ''; |
| | | |
| | | if(is_array($actions)) { |
| | | foreach($actions as $action) { |
| | |
| | | $app->log("Calling function '$function_name' from plugin '$plugin_name' raised by action '$action_name'.", LOGLEVEL_DEBUG); |
| | | $state = call_user_func(array($app->loaded_plugins[$plugin_name], $function_name), $action_name, $data); |
| | | //* ensure that we return the highest warning / error level if a error occured in one of the functions |
| | | if($state == 'warning' && $state_out != 'error') $state_out = 'warning'; |
| | | if($state == 'error') $state_out = 'error'; |
| | | if($return_data) { |
| | | if($state) $result .= $state; |
| | | } else { |
| | | if($state == 'warning' && $state_out != 'error') $state_out = 'warning'; |
| | | elseif($state == 'error') $state_out = 'error'; |
| | | } |
| | | |
| | | unset($plugin_name); |
| | | unset($function_name); |
| | | } |
| | |
| | | unset($action); |
| | | unset($actions); |
| | | |
| | | return $state_out; |
| | | if($return_data == true) return $result; |
| | | else return $state_out; |
| | | } |
| | | |
| | | } |