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; } /** * Created url part for this module * * @param kEvent $event */ function BuildEnv(&$event) { $prefix_special = $event->getPrefixSpecial(); $url_params = $event->getEventParam('url_params'); $query_vars = $this->Application->getUnitOption($event->Prefix, 'QueryString'); //if pass events is off and event is not implicity passed if ( !$event->getEventParam('pass_events') && !isset($url_params[$prefix_special.'_event']) ) { $url_params[$prefix_special.'_event'] = ''; // remove event from url if requested //otherwise it will use value from get_var } if(!$query_vars) { $event->setEventParam('env_string', ''); return true; } /*$tmp_string = Array(0 => $prefix_special); foreach($query_vars as $index => $var_name) { //if value passed in params use it, otherwise use current from application $var_name = $prefix_special.'_'.$var_name; $tmp_string[$index] = isset( $url_params[$var_name] ) ? $url_params[$var_name] : $this->Application->GetVar($var_name); if ( isset($url_params[$var_name]) ) unset( $url_params[$var_name] ); } $escaped = Array(); foreach ($tmp_string as $tmp_val) { $escaped[] = str_replace( Array('-',':'), Array('\-','\:'), $tmp_val); } $portal_env = $this->Application->getUnitOption($event->Prefix, 'PortalStyleEnv'); $ret .= $portal_env ? array_shift($escaped).array_shift($escaped).'-'.implode('-',$escaped) : implode('-', $escaped);*/ } } ?>