Index: trunk/core/kernel/application.php
===================================================================
diff -u -r2676 -r2678
--- trunk/core/kernel/application.php (.../application.php) (revision 2676)
+++ trunk/core/kernel/application.php (.../application.php) (revision 2678)
@@ -1044,7 +1044,7 @@
*/
function isDebugMode()
{
- return defined('DEBUG_MODE') && DEBUG_MODE;
+ return defined('DEBUG_MODE') && DEBUG_MODE && is_object($this->Debugger);
}
/**
Index: trunk/core/kernel/parser/template_parser.php
===================================================================
diff -u -r2604 -r2678
--- trunk/core/kernel/parser/template_parser.php (.../template_parser.php) (revision 2604)
+++ trunk/core/kernel/parser/template_parser.php (.../template_parser.php) (revision 2678)
@@ -471,6 +471,8 @@
// $this->ParamsRecursionIndex--;
//$this->SetParams($params);
+ if( !isset($pass_params['PrefixSpecial']) ) $pass_params['PrefixSpecial'] = $pass_params['prefix'];
+
$ret = $f($pass_params);
unset($this->ParamsStack[$this->ParamsRecursionIndex--]);
Index: trunk/core/kernel/utility/debugger.php
===================================================================
diff -u -r2625 -r2678
--- trunk/core/kernel/utility/debugger.php (.../debugger.php) (revision 2625)
+++ trunk/core/kernel/utility/debugger.php (.../debugger.php) (revision 2678)
@@ -174,10 +174,15 @@
{
$traceRec =& $trace[$i];
$argsID = 'trace_args_'.$dataIndex.'_'.$i;
+
+ $has_args = isset($traceRec['args']);
+
if(isset($traceRec['file']))
{
$func_name=isset($traceRec['class'])?$traceRec['class'].$traceRec['type'].$traceRec['function']:$traceRec['function'];
- $ret .= 'Function: '.$this->getFileLink($traceRec['file'],$traceRec['line'],$func_name);
+ $args_link = $has_args ? 'Function' : 'Function';
+
+ $ret .= $args_link.': '.$this->getFileLink($traceRec['file'],$traceRec['line'],$func_name);
$ret .= ' in '.basename($traceRec['file']).' on line '.$traceRec['line'].'
';
}
else
@@ -186,9 +191,12 @@
}
// ensure parameter value is not longer then 200 symbols
- $this->processTraceArguments($traceRec['args']);
- $args = $this->highlightString(print_r($traceRec['args'], true));
- $ret .= '
'.$args.'
';
+ if($has_args)
+ {
+ $this->processTraceArguments($traceRec['args']);
+ $args = $this->highlightString(print_r($traceRec['args'], true));
+ $ret .= ''.$args.'
';
+ }
$i++;
}
return $ret;
@@ -207,19 +215,34 @@
}
}
+ function isApplication(&$object)
+ {
+ $app_class = defined('APPLICATION_CLASS') ? strtolower(APPLICATION_CLASS) : 'kApplication';
+ return get_class($object) == $app_class;
+ }
+
function processTraceArguments(&$traceArgs)
{
if(!$traceArgs) return '';
- foreach ($traceArgs as $argID => $argValue)
+
+ $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) )
{
- if( get_class($argValue) == 'kfactory' || get_class($argValue) == 'debugger' ) continue;
+ array_push($this->RecursionStack, get_class($argValue));
+ if( get_class($argValue) == 'kfactory' || $this->isApplication($argValue) || get_class($argValue) == 'templateparser' )
+ {
+ $argValue = null;
+ continue;
+ }
+
// object & not in stack - ok
- array_push($this->RecursionStack, get_class($argValue));
settype($argValue,'array');
$this->processTraceArguments($argValue);
array_pop($this->RecursionStack);
@@ -496,7 +519,7 @@
dbg_safeDefine('DBG_RAISE_ON_WARNINGS',0);
dbg_safeDefine('DBG_WINDOW_WIDTH', 700);
-
+
$this->memoryUsage['debugger_start']=memory_get_usage();
// show php session if any
Index: trunk/kernel/include/debugger.php
===================================================================
diff -u -r2625 -r2678
--- trunk/kernel/include/debugger.php (.../debugger.php) (revision 2625)
+++ trunk/kernel/include/debugger.php (.../debugger.php) (revision 2678)
@@ -174,10 +174,15 @@
{
$traceRec =& $trace[$i];
$argsID = 'trace_args_'.$dataIndex.'_'.$i;
+
+ $has_args = isset($traceRec['args']);
+
if(isset($traceRec['file']))
{
$func_name=isset($traceRec['class'])?$traceRec['class'].$traceRec['type'].$traceRec['function']:$traceRec['function'];
- $ret .= 'Function: '.$this->getFileLink($traceRec['file'],$traceRec['line'],$func_name);
+ $args_link = $has_args ? 'Function' : 'Function';
+
+ $ret .= $args_link.': '.$this->getFileLink($traceRec['file'],$traceRec['line'],$func_name);
$ret .= ' in '.basename($traceRec['file']).' on line '.$traceRec['line'].'
';
}
else
@@ -186,9 +191,12 @@
}
// ensure parameter value is not longer then 200 symbols
+ if($has_args)
+ {
$this->processTraceArguments($traceRec['args']);
$args = $this->highlightString(print_r($traceRec['args'], true));
$ret .= ''.$args.'
';
+ }
$i++;
}
return $ret;
@@ -207,19 +215,34 @@
}
}
+ function isApplication(&$object)
+ {
+ $app_class = defined('APPLICATION_CLASS') ? strtolower(APPLICATION_CLASS) : 'kApplication';
+ return get_class($object) == $app_class;
+ }
+
function processTraceArguments(&$traceArgs)
{
if(!$traceArgs) return '';
- foreach ($traceArgs as $argID => $argValue)
+
+ $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) )
{
- if( get_class($argValue) == 'kfactory' || get_class($argValue) == 'debugger' ) continue;
+ array_push($this->RecursionStack, get_class($argValue));
+ if( get_class($argValue) == 'kfactory' || $this->isApplication($argValue) || get_class($argValue) == 'templateparser' )
+ {
+ $argValue = null;
+ continue;
+ }
+
// object & not in stack - ok
- array_push($this->RecursionStack, get_class($argValue));
settype($argValue,'array');
$this->processTraceArguments($argValue);
array_pop($this->RecursionStack);