_Context->getController(); $this->_Controller = & $Controller; $this->_Controller->_startTimer(); $renderResult = $this->_renderFactory ($Element); $this->_Controller->_stopTimer(); return $this->_renderOnce().$this->_renderRoot($renderResult); } function _highlightSource ( $source ) { $checkSource = strtolower( $source ); if ( !strpos( $source, '_Controller->newId(); return '

'. $this->_highlightSource($this->_Controller->getSource($this->_Controller->_backtrace)) .'
'. '
'. 'took '.$this->_Controller->getTime().' seconds to process,'. 'output is '.strlen ($renderResult).' bytes long.'. '
'. '
' ; } function _renderFactory(&$Element){ $method = '_renderElement'.ucfirst( $Element->type ); if (method_exists( $this, $method )){ return $this->$method( $Element ); } return $this->_renderElementDefault( $Element ); } function _renderChilds (&$childs){ $renderResult = ''; for ($n = 0; $n < count ($childs); $n++){ $renderResult .= $this->_renderFactory ($childs[$n]); } return $renderResult; } function _renderElementObject (&$Element){ $id = $Element->getId(); $initialDisplay = $this->_displayElement($Element->getLevel()); if ($recursiveWith = $Element->isRecursive()){ $childsRenderResult = '* recursive with element:'.$recursiveWith.' *'; } elseif ($Element->getLevel() < 10 && $Element->hasChilds ()){ $childs =& $Element->getChilds(); $childsRenderResult = sprintf ( ''; } else { $childsRenderResult = ''; } $ancestorsText=''; if (count ($Element->getAncestors())){ $ancestorsText = ' extends ('.join (', ',$Element->getAncestors()).')'; } return '
  • '.$Element->key.': Object of class '.$Element->getClassName().' '.$ancestorsText.' '.$childsRenderResult.'
  • ' ; } function _renderElementArray (&$Element) { $id = $Element->getId(); $initialDisplay = $this->_displayElement($Element->getLevel()); if ($recursiveWith = $Element->isRecursive()){ $childsRenderResult = '* recursive with element:'.$recursiveWith.' *'; } elseif ($Element->getLevel() < 10 && $Element->hasChilds ()){ $childs =& $Element->getChilds(); $childsRenderResult = ''; } else { $childsRenderResult = ''; } return '
  • ' .(($Element->hasChilds())?'':'') .''.$Element->key.'' .(($Element->hasChilds())?'':'') .': Array('.count($Element->value).') '.$childsRenderResult.'
  • '; // } /** * @todo warning id is on the wrong element here, shuold not be on PRE. */ function _renderElementString (&$Element){ $stringDisplay = (strlen ($Element->value)<180)?'"'.htmlentities($Element->value).'"':'
    '.htmlentities($Element->value).'
    '; return '
  • '.$Element->key.': '.$Element->type.'('.strlen($Element->value).'): '.$stringDisplay.'
  • '; } /** * @todo remove sprintf! */ function _renderElementBoolean (&$Element){ return sprintf ( '
  • %s: %s: %s
  • ' ,$Element->key ,$Element->type ,($Element->value?'TRUE':'FALSE') ); } function _renderElementDefault (&$Element){ return sprintf ( '
  • %s: %s: %s
  • ' ,$Element->key ,$Element->type ,htmlentities((string)$Element->value) ); } /* function _renderElementResource (&$Element){ return $this->_renderElementArray(&$Element); } */ //--- various stuff function _displayElement ($level){ if ($level >= ( $this->autoExpand - 1 ) ){ $style='display:none;'; } else { $style=''; } $color_number=245-(10*($level+1)); if ($color_number < 128){ $color_number=128; } $style.= 'background:RGB('.$color_number.','.$color_number.','.$color_number.')'; return $style; } function _renderOnce(){ static $rendered=false; if ( !$rendered ){ //define javascript functions $toBePrinted=" "; $rendered=true; return $toBePrinted; } return ''; } } class XdumpBacktraceXhtmlWriter extends xDumpXhtmlWriter { function _renderFactory(&$Element){ if ( $Element->type == 'array' && $Element->getLevel() == 1){ return $this->_renderElementBacktrace( $Element ); } $method = '_renderElement'.ucfirst( $Element->type ); if (method_exists( $this, $method )){ return $this->$method( $Element ); } return $this->_renderElementDefault( $Element ); } function _makeLabel ( $Element ) { $label = $Element->key.' - '; if ( isset ($Element->value['class'])) $label .= $Element->value['class'].' :: '; if ( isset ($Element->value['function'])) $label .= $Element->value['function']; if ( isset ($Element->value['file']) && isset ($Element->value['line']) ) { $label .= ' in ['.$Element->value['file'].' line '.$Element->value['line'].']'; } else { $label .= ' in [unknown location]'; } return $label; } function _renderElementBacktrace ( &$Element ) { $id = $Element->getId(); $initialDisplay = $this->_displayElement($Element->getLevel()); $source = $this->_Controller->getSource($Element->value,20); $label = $this->_makeLabel( $Element ); if ($source) { $sourceHtml = '
    '. $this->_highlightSource( $source ) .'
    '; } else { $sourceHtml =''; } if ($recursiveWith = $Element->isRecursive()){ $childsRenderResult = '* recursive with element:'.$recursiveWith.' *'; } elseif ($Element->getLevel() < 10 && $Element->hasChilds ()){ $childs =& $Element->getChilds(); $childsRenderResult = ''; } else { $childsRenderResult = ''; } return '
  • ' .(($Element->hasChilds())?'':'') .''.$label.'' .(($Element->hasChilds())?'':'') .': Array('.count($Element->value).') '.$childsRenderResult.'
  • '; } } ?>