getPrefixSpecial(true) instead of * $event->Prefix_Special as usual. This is due PHP * is converting "." symbols in variable names during * submit info "_". $event->getPrefixSpecial optional * 1st parameter returns correct corrent Prefix_Special * for variables beeing submitted such way (e.g. variable * name that will be converted by PHP: "users.read_only_id" * will be submitted as "users_read_only_id". * * 2. When using $this->Application-LinkVar on variables submitted * from form which contain $Prefix_Special then note 1st item. Example: * LinkVar($event->getPrefixSpecial(true).'_varname',$event->Prefix_Special.'_varname') * */ /** * Default event handler. Mostly abstract class * */ 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() { } function getPrefixSpecial() { trigger_error('Usage of getPrefixSpecial() this method is forbidden in kEventHandler class children. Use $event->getPrefixSpecial(true); instead', E_USER_ERROR); } /** * 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) { $event_name=$event->Name; if( isset($this->eventMethods[$event_name]) ) $event_name=$this->eventMethods[$event_name]; if( method_exists($this,$event_name) ) { $this->$event_name($event); } else { trigger_error('event '.$event->Name.' not implemented in class '.get_class($this).'', E_USER_ERROR); } } /** * Sample dummy event * * @param kEvent $event * @access protected */ function OnBuild(&$event) { /*echo 'building:
'; print_pre($event);*/ } /** * Returns to previous template in opener stack * * @param kEvent $event */ function OnGoBack(&$event) { $event->SetRedirectParam('opener', 'u'); } /** * Apply some special processing to * object beeing recalled before using * it in other events that call prepareObject * * @param Object $object * @param kEvent $event * @access protected */ function prepareObject(&$object, &$event) { // processing here } /** * Creates new event as child of * event passed as $event param * * @param kEvent $event * @access protected */ 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; } } ?>