/** * Dispatch an event to the modules, will call the * modules with the EventListener() function. * * @see http://www.nsslive.net/codon/docs/events * @param string $eventname * @param string $origin * @param list $params list additional parameters after $origin * @return boolean true by default */ public static function Dispatch($eventname, $origin) { // if there are parameters added, then call the function // using those additional params $params = array(); $params[0] = $eventname; $params[1] = $origin; $args = func_num_args(); if ($args > 2) { for ($i = 2; $i < $args; $i++) { $tmp = func_get_arg($i); array_push($params, $tmp); } } # Load each module and call the EventListen function if (!self::$listeners) { self::$listeners = array(); } foreach (self::$listeners as $ModuleName => $Events) { $ModuleName = strtoupper($ModuleName); global ${$ModuleName}; # Run if no specific events specified, or if the eventname is there if (!$Events || in_array($eventname, $Events)) { self::$lastevent = $eventname; MainController::Run($ModuleName, 'EventListener', $params); if (isset(self::$stopList[$eventname]) && self::$stopList[$eventname] == true) { unset(self::$stopList[$eventname]); return false; } } } return true; }