* @copyright 2005 by http://wombat.exit0.net * @package wombatSite * @subpackage event */ /** * event * * * @version 1.0.0 * @package wombatSite * @subpackage event */ class wbEventController { /** * event id * @var array $_id */ var $_id; /** * event message * @var string $_msg */ var $_msg; /** * event data * @var string $_msg */ var $_e; /** * global event configuraation * @var array $_config */ var $_config; /** * patConfiguration objoct * @var object $_conf */ var $_conf; /** * constructor * * @access public */ function __construct() { $this->_conf =& wbFactory::singleton( 'patConfiguration' ); $this->_conf->loadConfig( 'event.xml' ); $this->_config = $this->_conf->getConfigValue(); $this->_conf->clearConfigValue(); } /** * constructor wrapper for PHP4 * * @access public * @see __construct() */ function wbEventController() { $this->__construct(); } /** * trigger event * * @param string $id event id - use namespaces * @param string $msg event message * @param array $data additional information */ function trigger( $e ) { $id = $e->getId(); wbDebugger::addMsg( 'wbEventController', 'Event: "' .$id . '" Msg: "' . $e->getMsg() . '"', 'Trigger' ); foreach( $this->_config['events'] as $event ) { if( !preg_match( $event['trigger'], $id ) ) { continue; } if( !isset( $event['action'] ) ) { wbDebugger::addMsg( 'wbEventController', 'Event: "' .$id . '" No Action set, configuration error?' ); continue; } if( $event['action'] == '__ignore' ) { wbDebugger::addMsg( 'wbEventController', 'Event: "' .$id . '" Ignore!' ); break; } wbDebugger::addMsg( 'wbEventController', 'Event: "' .$id . '" Action: "' . $event['action'] . '"', 'Actions' ); $this->_conf->loadConfig( 'event/' . $event['action'] . '.xml' ); $actions = $this->_conf->getConfigValue( 'actions' ); $this->_conf->clearConfigValue(); foreach( $actions as $action ) { wbDebugger::addMsg( 'wbEventController', 'Event: "' .$id . '" Handler: "' . $action['handler'] . '"', 'Process' ); $handler =& wbFactory::singleton( 'wbEventHandler_' . $action['handler'] ); if( patErrorManager::isError( $handler ) ) { return $handler; } $handler->setParams( $action['params'] ); $result = $handler->process( $e ); if( patErrorManager::isError( $result ) ) { return $result; } if( $handler->dropout() ) { wbDebugger::addMsg( 'wbEventController', 'Event: "' .$id . '" Handler: "' . $action['handler'] . '"', 'Dropout' ); break; } } break; } return true; } } ?>