Index: trunk/core/kernel/event_manager.php =================================================================== diff -u -N -r5431 -r6093 --- trunk/core/kernel/event_manager.php (.../event_manager.php) (revision 5431) +++ trunk/core/kernel/event_manager.php (.../event_manager.php) (revision 6093) @@ -267,7 +267,7 @@ array_push($passed, $prefix_special[0]); $event->Special = isset($prefix_special[1]) ? $prefix_special[1] : ''; - $event->redirect_params = Array('opener'=>'s', 'pass'=>'all'); + $event->redirect_params = Array('opener' => 's', 'pass' => 'all'); $event->redirect = true; $event_handler =& $this->Application->recallObject($event->Prefix.'_EventHandler'); @@ -334,6 +334,18 @@ $this->Application->StoreVar('opener_stack', serialize($opener_stack)); } + + function openerStackPush($t, $params, $pass = 'all') + { + $opener_stack = $this->Application->RecallVar('opener_stack'); + $opener_stack = $opener_stack ? unserialize($opener_stack) : Array(); + + $redirect_params = array_merge_recursive2(Array('m_opener' => 'u', '__URLENCODE__' => 1), $params); + $new_level = $this->Application->BuildEnv($t, $redirect_params, $pass, true); + array_push($opener_stack, 'index.php|'.ltrim($new_level, ENV_VAR_NAME.'=') ); + $this->Application->StoreVar('opener_stack', serialize($opener_stack)); + } + function registerHook($hookto_prefix, $hookto_special, $hookto_event, $mode, $do_prefix, $do_special, $do_event, $conditional) { if( !$this->Application->prefixRegistred($hookto_prefix) ) @@ -380,11 +392,11 @@ $mode_hooks =& $this->afterHooks; } - $hooks = getArrayValue($mode_hooks, strtolower($event_key.'.'.$event->Name)); - if (!$hooks) { - $hooks = Array(); + if (!isset($mode_hooks[strtolower($event_key.'.'.$event->Name)])) { + $hooks = array(); + return $hooks; } - return $hooks; + return $mode_hooks[strtolower($event_key.'.'.$event->Name)]; } /**