'html', 'forceEnable' => false); /** * Recursively goes through an array and makes neat HTML out of it. * * @param mixed $values Array to make pretty. * @param int $openDepth Depth to add open class * @param int $currentDepth current depth. * @return string **/ function makeNeatArray($values, $openDepth = 0, $currentDepth = 0) { $className ="neat-array depth-$currentDepth"; if ($openDepth > $currentDepth) { $className .= ' expanded'; } $nextDepth = $currentDepth + 1; $out = "'; return $out; } /** * Create an HTML message * * @param string $label label content * @param string $message message content * @return string */ function message($label, $message) { return sprintf('

%s %s

', $label, $message); } /** * Start a panel. * make a link and anchor. * * @return void **/ function panelStart($title, $anchor) { $link = $this->Html->link($title, '#' . $anchor); return $link; } /** * Create a table. * * @param array $rows Rows to make. * @param array $headers Optional header row. * @return string */ function table($rows, $headers = array()) { $out = ''; if (!empty($headers)) { $out .= $this->Html->tableHeaders($headers); } $out .= $this->Html->tableCells($rows, array('class' => 'odd'), array('class' => 'even'), false, false); $out .= '
'; return $out; } /** * send method * * @return void * @access public */ function send() { if (!$this->settings['forceEnable'] && Configure::read('debug') == 0) { return; } $view =& ClassRegistry::getObject('view'); $head = $this->Html->css('/debug_kit/css/debug_toolbar'); if (isset($view->viewVars['debugToolbarJavascript'])) { foreach ($view->viewVars['debugToolbarJavascript'] as $script) { if ($script) { $head .= $this->Html->script($script); } } } if (preg_match('##', $view->output)) { $view->output = preg_replace('##', $head . "\n", $view->output, 1); } $toolbar = $view->element('debug_toolbar', array('plugin' => 'debug_kit', 'disableTimer' => true)); if (preg_match('##', $view->output)) { $view->output = preg_replace('##', $toolbar . "\n", $view->output, 1); } } /** * Generates a SQL explain link for a given query * * @param string $sql SQL query string you want an explain link for. * @return string Rendered Html link or '' if the query is not a select/describe */ function explainLink($sql, $connection) { if (!preg_match('/^(SELECT)/i', $sql)) { return ''; } App::import('Core', 'Security'); $hash = Security::hash($sql . $connection, null, true); $url = array( 'plugin' => 'debug_kit', 'controller' => 'toolbar_access', 'action' => 'sql_explain' ); foreach (Router::prefixes() as $prefix) { $url[$prefix] = false; } $this->explainLinkUid = (isset($this->explainLinkUid) ? $this->explainLinkUid + 1 : 0); $uid = $this->explainLinkUid . '_' . rand(0, 10000); $form = $this->Form->create('log', array('url' => $url, 'id' => "logForm{$uid}")); $form .= $this->Form->hidden('log.ds', array('id' => "logDs{$uid}", 'value' => $connection)); $form .= $this->Form->hidden('log.sql', array('id' => "logSql{$uid}", 'value' => $sql)); $form .= $this->Form->hidden('log.hash', array('id' => "logHash{$uid}", 'value' => $hash)); $form .= $this->Form->submit(__d('debug_kit', 'Explain', true), array( 'div' => false, 'class' => 'sql-explain-link' )); $form .= $this->Form->end(); return $form; } }