Index: branches/5.2.x/core/kernel/session/session.php =================================================================== diff -u -N -r15517 -r15552 --- branches/5.2.x/core/kernel/session/session.php (.../session.php) (revision 15517) +++ branches/5.2.x/core/kernel/session/session.php (.../session.php) (revision 15552) @@ -1,6 +1,6 @@ Data->AddParams( $this->Storage->LoadData() ); } - function PrintSession($comment = '') + /** + * Returns information about session contents + * + * @param bool $include_optional + * @return array + * @access public + */ + public function getSessionData($include_optional = true) { - if (defined('DEBUG_MODE') && $this->Application->isDebugMode() && kUtil::constOn('DBG_SHOW_SESSIONDATA')) { - // dump session data - $this->Application->Debugger->appendHTML('SessionStorage [' . ($this->RecallVar('admin') == 1 ? 'Admin' : 'Front-End') . '] ('.$comment.'):'); - $session_data = $this->Data->GetParams(); - ksort($session_data); + $session_data = $this->Data->GetParams(); + ksort($session_data); + + foreach ($session_data as $session_key => $session_value) { + if ( kUtil::IsSerialized($session_value) ) { + $session_data[$session_key] = unserialize($session_value); + } + } + + if ( !$include_optional ) { + $optional_keys = array_keys($this->OptionalData); + foreach ($session_data as $session_key => $session_value) { - if (kUtil::IsSerialized($session_value)) { - $session_data[$session_key] = unserialize($session_value); + if ( in_array($session_key, $optional_keys) ) { + unset($session_data[$session_key]); } } + } + + return $session_data; + } + + /** + * Returns real session data, that was saved + * + * @param Array $session_data + * @return Array + * @access protected + */ + protected function _getRealSessionData($session_data) + { + $data_keys = array_keys($session_data); + $optional_keys = array_keys($this->OptionalData); + $real_keys = array_diff($data_keys, $optional_keys); + + if ( !$real_keys ) { + return Array (); + } + + $ret = Array (); + + foreach ($real_keys as $real_key) { + $ret[$real_key] = $session_data[$real_key]; + } + + return $ret; + } + + function PrintSession($comment = '') + { + if ( defined('DEBUG_MODE') && $this->Application->isDebugMode() && kUtil::constOn('DBG_SHOW_SESSIONDATA') ) { + // dump session data + $this->Application->Debugger->appendHTML('SessionStorage [' . ($this->RecallVar('admin') == 1 ? 'Admin' : 'Front-End') . '] (' . $comment . '):'); + + $session_data = $this->getSessionData(); $this->Application->Debugger->dumpVars($session_data); - if (!$this->RecallVar('admin')) { + if ( !$this->RecallVar('admin') ) { // dump real keys (only for front-end) - $data_keys = array_keys($session_data); - $optional_keys = array_keys($this->OptionalData); - $real_keys = array_diff($data_keys, $optional_keys); + $real_session_data = $this->_getRealSessionData($session_data); - if ($real_keys) { - $ret = ''; - foreach ($real_keys as $real_key) { - $ret .= '[' . $real_key . '] = [' . $session_data[$real_key] . ']
'; - } - - $this->Application->Debugger->appendHTML('Real Keys:
' . $ret); + if ( $real_session_data ) { + $this->Application->Debugger->appendHTML('Real Keys:'); + $this->Application->Debugger->dumpVars($real_session_data); } } } - if (defined('DEBUG_MODE') && $this->Application->isDebugMode() && kUtil::constOn('DBG_SHOW_PERSISTENTDATA')) { + if ( defined('DEBUG_MODE') && $this->Application->isDebugMode() && kUtil::constOn('DBG_SHOW_PERSISTENTDATA') ) { // dump persistent session data - if ($this->Storage->PersistentVars) { + if ( $this->Storage->PersistentVars ) { $this->Application->Debugger->appendHTML('Persistant Session:'); $session_data = $this->Storage->PersistentVars; ksort($session_data); foreach ($session_data as $session_key => $session_value) { - if (kUtil::IsSerialized($session_value)) { + if ( kUtil::IsSerialized($session_value) ) { $session_data[$session_key] = unserialize($session_value); } }