Index: trunk/core/kernel/event_handler.php =================================================================== diff -u -r958 -r1339 --- trunk/core/kernel/event_handler.php (.../event_handler.php) (revision 958) +++ trunk/core/kernel/event_handler.php (.../event_handler.php) (revision 1339) @@ -27,21 +27,54 @@ class kEventHandler extends kBase { /** + * In case if event should be handled with mehod, + * which name differs from event name, then it + * should be specified here. + * key - event name, value - event method + * + * @var Array + * @access protected + */ + var $eventMethods=Array(); + + /** + * Define alternative event processing method names + * + * @see $eventMethods + * @access protected + */ + function mapEvents() + { + + } + + /** + * Set's prefix and special + * + * @param string $prefix + * @param string $special + * @access public + */ + function Init($prefix,$special) + { + parent::Init($prefix,$special); + $this->mapEvents(); + } + + /** * Process Event * * @param kEvent $event * @access public */ function processEvent(&$event) { - if( method_exists($this,$event->Name) ) + $event_name=$event->Name; + if( isset($this->eventMethods[$event_name]) ) $event_name=$this->eventMethods[$event_name]; + + if( method_exists($this,$event_name) ) { - $event_name = $event->Name; - $this->$event_name(&$event); - if($event->status==erSUCCESS && $event->redirect && strlen($event->redirect) > 0 ) - { - $this->Application->Redirect($event->redirect); - } + $this->$event_name($event); } else { @@ -82,13 +115,14 @@ * @param kEvent $event * @access protected */ - function &inheritEvent(&$event) + function &inheritEvent(&$event, $name=null) { $child_event = new kEvent(); $child_event->MasterEvent =& $event; $child_event->Prefix=$event->Prefix; $child_event->Special=$event->Special; $child_event->Prefix_Special=$event->Prefix_Special; + $child_event->Name = $name; return $child_event; } }