/** * Fire server side event * * This function calls every defined listener for fired event */ function fireEvent($eventName, &$params) { //check if triggers not disabled if (Config::getFlag('disableTriggers')) { return; } $triggerDepth = Config::get('runningTriggerDepth', 0); // dont allow triggers run deeper then 3rd level if ($triggerDepth > 3) { return; } $listeners = Config::getListeners(); if (empty($listeners[$eventName])) { return; } foreach ($listeners[$eventName] as $className => $methods) { $className = str_replace('_', '\\', $className); $class = new $className(); if (!is_array($methods)) { $methods = array($methods); } foreach ($methods as $method) { Config::setEnvVar('runningTriggerDepth', $triggerDepth + 1); try { $class->{$method}($params); } catch (\Exception $e) { debug('Event Exception for ' . $className . '->' . $method . "\n" . $e->getMessage() . "\n" . $e->getTraceAsString()); } Config::setEnvVar('runningTriggerDepth', $triggerDepth); } unset($class); } }