Index: branches/unlabeled/unlabeled-1.59.2/core/kernel/utility/debugger.php =================================================================== diff -u -r5763 -r5764 --- branches/unlabeled/unlabeled-1.59.2/core/kernel/utility/debugger.php (.../debugger.php) (revision 5763) +++ branches/unlabeled/unlabeled-1.59.2/core/kernel/utility/debugger.php (.../debugger.php) (revision 5764) @@ -348,7 +348,11 @@ { static $first_line = true, $tab_count = -1; - if (!is_array($array)) return $array; + if (is_null($array)) { + return 'NULL'; + }elseif (!is_array($array)) { + return $array; + } $output = ''; @@ -361,37 +365,67 @@ $array_keys = array_keys($array); foreach ($array_keys as $key) { - $value =& $array[$key]; - switch (gettype($value)) { + switch (gettype($array[$key])) { case 'array': - $output .= $tabsign.'['.$key.'] = '; - $output .= $this->print_r($value); + $output .= $tabsign.'['.$key.'] = '.$this->print_r($array[$key]); break; case 'boolean': - $output .= $tabsign.'['.$key.'] = '.($value ? 'true' : 'false')."\n"; + $output .= $tabsign.'['.$key.'] = '.($array[$key] ? 'true' : 'false')."\n"; break; case 'integer': - $output .= $tabsign.'['.$key.'] = '.$value."\n"; + $output .= $tabsign.'['.$key.'] = '.$array[$key]."\n"; break; case 'double': - $output .= $tabsign.'['.$key.'] = '.$value."\n"; + $output .= $tabsign.'['.$key.'] = '.$array[$key]."\n"; break; case 'string': - $output .= $tabsign.'['.$key.'] = '.$value."\n"; + $output .= $tabsign.'['.$key.'] = '.$array[$key]."\n"; break; - - /*case 'object': - if (!$this->IsBigObject($value)) { - $output .= $this->print_r($value); + + case 'NULL': + $output .= $tabsign.'['.$key."] = NULL\n"; + break; + + case 'object': + $attribute_names = get_class_vars( get_class($array[$key]) ); + if (!$attribute_names) { + $output .= $tabsign.'['.$key."] = NO_ATTRIBUTES\n"; } - break;*/ + else { + // $attribute_value - default value for this attribute, not used here + foreach ($attribute_names as $attribute_name => $attribute_value) { + if (is_object($array[$key]->$attribute_name)) { + // it is object + $object_class = get_class($array[$key]->$attribute_name); + if (!in_array($object_class, $this->RecursionStack)) { + // object [not in recursion stack] + if ($this->IsBigObject($array[$key]->$attribute_name)) { + $output .= $tabsign.'['.$attribute_name.'] = SKIPPED'."\n"; + continue; + } + + array_push($this->RecursionStack, $object_class); + $output .= $this->print_r($array[$key]->$attribute_name); + array_pop($this->RecursionStack); + } + else { + // object [in recursion stack] + $output .= $tabsign.'['.$attribute_name.'] = **** RECURSION ***'."\n"; + } + } + else { + $output .= $tabsign.'['.$attribute_name.'] = '.$this->print_r($array[$key]->$attribute_name)."\n"; + } + } + } + break; default: - $output .= $tabsign.'['.$key.'] unknown = '.gettype($value)."\n"; + $output .= $tabsign.'['.$key.'] unknown = '.gettype($array[$key])."\n"; break; } } @@ -407,44 +441,7 @@ $tab_count--; return $output; } - - /*function processTraceArguments(&$traceArgs) - { - if (!$traceArgs) return ''; - $array_keys = array_keys($traceArgs); - foreach ($array_keys as $argID) { - $argValue =& $traceArgs[$argID]; - - if (is_array($argValue) || is_object($argValue)) { - if (is_object($argValue) && !in_array(get_class($argValue), $this->RecursionStack)) { - array_push($this->RecursionStack, get_class($argValue)); - - if ($this->IsBigObject($argValue)) { - $argValue = null; - continue; - } - - // object & not in stack - ok - settype($argValue, 'array'); - $this->processTraceArguments($argValue); - array_pop($this->RecursionStack); - } - elseif (is_object($argValue) && in_array(get_class($argValue), $this->RecursionStack)) { - // object & in stack - recursion - $traceArgs[$argID] = '**** RECURSION ***'; - } - else { - // normal array here - $this->processTraceArguments($argValue); - } - } - else { - $traceArgs[$argID] = $this->cutStringForHTML($traceArgs[$argID]); - } - } - }*/ - /** * Returns only first 200 chars of string, this allow to save amount of data sent to browser * @@ -537,6 +534,7 @@ { $trace = debug_backtrace(); array_shift($trace); + $this->Data[] = Array('trace' => $trace, 'debug_type' => 'trace'); }