/** * Invoke a trigger * * @param string $module The module for which the trigger is active * @param string $identifier The trigger identifier * @param array $params Parameters to pass to the registered listeners * * @return unknown_type */ protected static function _trigger(Event $event, $return_when_processed = false) { $module = $event->getModule(); $identifier = $event->getIdentifier(); Logging::log("Triggering {$module} - {$identifier}"); if (isset(self::$_registeredlisteners[$module][$identifier])) { foreach (self::$_registeredlisteners[$module][$identifier] as $trigger) { try { $cb_string = is_array($trigger) ? (is_string($trigger[0]) ? $trigger[0] : get_class($trigger[0])) . '::' . $trigger[1] : $trigger; Logging::log('Running callback function ' . $cb_string); $retval = call_user_func($trigger, $event); if ($return_when_processed && $event->isProcessed()) { return true; } Logging::log('done (Running callback function ' . $cb_string . ')'); } catch (Exception $e) { throw $e; } } } Logging::log("done (Triggering {$module} - {$identifier})"); }
/** * @return array */ public function getSubscribers(Event $event) { $directSubscribers = array_key_exists($i = $event->getIdentifier(), $this->subscribers) ? $this->subscribers[$i] : array(); $nonSpecificSubscribers = array_key_exists(NULL, $this->subscribers) ? $this->subscribers[NULL] : array(); return array_merge($directSubscribers, $nonSpecificSubscribers); }