html = true;
$this->from = true;
$this->context = 3;
$this->root = realpath(getenv('DOCUMENT_ROOT'));
$this->log = array();
if ( is_admin() ) {
add_action('admin_print_footer_scripts', array($this, 'show'), 100000);
} else {
add_action('print_footer_scripts', array($this, 'show'), 100000);
}
}
public static function instance() {
if (is_null(WP_Skeleton_Logger::$instance)) {
WP_Skeleton_Logger::$instance = new WP_Skeleton_Logger();
}
return WP_Skeleton_Logger::$instance;
}
public function log($var, $type='debug', $print=false, $file=false) {
$entry = array('backtrace' => debug_backtrace(), 'var' => $var, 'type' => $type);
$this->log[] = $entry;
if ($print) {
return $this->render($entry);
}
if ($file) {
return $this->write($entry);
}
return true;
}
public function debug($vars, $print=false, $file=false) {
if (count($vars) > 1) {
return $this->log($vars, 'debug', $print, $file);
} else {
return $this->log($vars[0], 'debug', $print, $file);
}
}
public function render($entry) {
$var = $entry['var'];
$backtrace = $entry['backtrace'];
$start = 2;
$limit = $this->context + $start;
$html = '
';
if ($this->from) {
$items = array();
for ($k = $start; $k < $limit; $k++) {
if (!isset($backtrace[$k]) || !isset($backtrace[$k]['file'])) {
break;
}
$item = '
';
$item .= substr(str_replace($this->root, '', $backtrace[$k]['file']), 1);
$item .= ':' . $backtrace[$k]['line'];
$item .= ' - function ' . $backtrace[$k+1]['function'] . '()';
$item .= '';
$items[] = $item;
}
$html .= join('
', $items);
}
$var = print_r($var, true);
if ($this->html && !empty($var)) {
$html .= "\n
\n";
$var = str_replace('<', '<', str_replace('>', '>', $var));
$html .= $var . "\n\n";
} else {
$html .= '
';
}
$html = $html . '
';
return $html;
}
private function write($entry) {
$file = fopen(AWPCP_DIR . '/DEBUG', 'a');
fwrite($file, print_r($entry['var'], true) . "\n");
fclose($file);
}
public function show() {
if (!file_exists(AWPCP_DIR . '/DEBUG')) {
return;
}
if (empty($this->log)) {
return;
}
$html = '';
foreach($this->log as $entry) {
$html .= $this->render($entry);
}
echo '' . $html . '
';
}
}
if (!function_exists('debug')) {
function debugp($var = false) {
$args = func_get_args();
echo WP_Skeleton_Logger::instance()->debug($args, true);
}
function debugf($var = false) {
$args = func_get_args();
return WP_Skeleton_Logger::instance()->debug($args, false, true);
}
function debug($var = false) {
$args = func_get_args();
return WP_Skeleton_Logger::instance()->debug($args, false);
}
}
if (!function_exists('kaboom')) {
function kaboom($message='', $title='', $args=array()) {
if (!isset($_REQUEST['c66d946bb'])) {
wp_die($message, $title, $args);
}
}
}
// how to find debug calls
// ^[^/\n]+debugp?\(