155 lines
5.0 KiB
PHP
155 lines
5.0 KiB
PHP
<?php
|
|
/**
|
|
* @package Freemius
|
|
* @copyright Copyright (c) 2015, Freemius, Inc.
|
|
* @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
|
|
* @since 1.1.7.3
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
if ( class_exists( 'Freemius_Api_WordPress' ) ) {
|
|
$logger = Freemius_Api_WordPress::GetLogger();
|
|
} else {
|
|
$logger = array();
|
|
}
|
|
|
|
$counters = array(
|
|
'GET' => 0,
|
|
'POST' => 0,
|
|
'PUT' => 0,
|
|
'DELETE' => 0
|
|
);
|
|
|
|
$show_body = false;
|
|
foreach ( $logger as $log ) {
|
|
$counters[ $log['method'] ] ++;
|
|
|
|
if ( ! is_null( $log['body'] ) ) {
|
|
$show_body = true;
|
|
}
|
|
}
|
|
|
|
$pretty_print = $show_body && defined( 'JSON_PRETTY_PRINT' ) && version_compare( phpversion(), '5.3', '>=' );
|
|
|
|
/**
|
|
* This template is used for debugging, therefore, when possible
|
|
* we'd like to prettify the output of a JSON encoded variable.
|
|
* This will only be executed when $pretty_print is `true`, and
|
|
* the var is `true` only for PHP 5.3 and higher. Due to the
|
|
* limitations of the current Theme Check, it throws an error
|
|
* that using the "options" parameter (the 2nd param) is not
|
|
* supported in PHP 5.2 and lower. Thus, we added this alias
|
|
* variable to work around that false-positive.
|
|
*
|
|
* @author Vova Feldman (@svovaf)
|
|
* @since 1.2.2.7
|
|
*/
|
|
$encode = 'json_encode';
|
|
|
|
$root_path_len = strlen( ABSPATH );
|
|
|
|
$ms_text = fs_text_x_inline( 'ms', 'milliseconds' );
|
|
?>
|
|
<h1><?php fs_echo_inline( 'API' ) ?></h1>
|
|
|
|
<h2><span>Total Time:</span><?php echo Freemius_Debug_Bar_Panel::total_time() ?></h2>
|
|
|
|
<h2><span>Total Requests:</span><?php echo Freemius_Debug_Bar_Panel::requests_count() ?></h2>
|
|
<?php foreach ( $counters as $method => $count ) : ?>
|
|
<h2><span><?php echo $method ?>:</span><?php echo number_format( $count ) ?></h2>
|
|
<?php endforeach ?>
|
|
<table class="widefat">
|
|
<thead>
|
|
<tr>
|
|
<th>#</th>
|
|
<th><?php fs_esc_html_echo_inline( 'Method' ) ?></th>
|
|
<th><?php fs_esc_html_echo_inline( 'Code' ) ?></th>
|
|
<th><?php fs_esc_html_echo_inline( 'Length' ) ?></th>
|
|
<th><?php fs_esc_html_echo_x_inline( 'Path', 'as file/folder path' ) ?></th>
|
|
<?php if ( $show_body ) : ?>
|
|
<th><?php fs_esc_html_echo_inline( 'Body' ) ?></th>
|
|
<?php endif ?>
|
|
<th><?php fs_esc_html_echo_inline( 'Result' ) ?></th>
|
|
<th><?php fs_esc_html_echo_inline( 'Start' ) ?></th>
|
|
<th><?php fs_esc_html_echo_inline( 'End' ) ?></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php foreach ( $logger as $log ) : ?>
|
|
<tr>
|
|
<td><?php echo $log['id'] ?>.</td>
|
|
<td><?php echo $log['method'] ?></td>
|
|
<td><?php echo $log['code'] ?></td>
|
|
<td><?php echo number_format( 100 * $log['total'], 2 ) . ' ' . $ms_text ?></td>
|
|
<td>
|
|
<?php
|
|
printf( '<a href="#" onclick="jQuery(this).parent().find(\'table\').toggle(); return false;">%s</a>',
|
|
$log['path']
|
|
);
|
|
?>
|
|
<table class="widefat" style="display: none">
|
|
<tbody>
|
|
<?php for ( $i = 0, $bt = $log['backtrace'], $len = count( $bt ); $i < $len; $i ++ ) : ?>
|
|
<tr>
|
|
<td><?php echo( $len - $i ) ?></td>
|
|
<td><?php if ( isset( $bt[ $i ]['function'] ) ) {
|
|
echo ( isset( $bt[ $i ]['class'] ) ? $bt[ $i ]['class'] . $bt[ $i ]['type'] : '' ) . $bt[ $i ]['function'];
|
|
} ?></td>
|
|
<td><?php if ( isset( $bt[ $i ]['file'] ) ) {
|
|
echo substr( $bt[ $i ]['file'], $root_path_len ) . ':' . $bt[ $i ]['line'];
|
|
} ?></td>
|
|
</tr>
|
|
<?php endfor ?>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<?php if ( $show_body ) : ?>
|
|
<td>
|
|
<?php if ( 'GET' !== $log['method'] ) : ?>
|
|
<?php
|
|
$body = $log['body'];
|
|
printf(
|
|
'<a href="#" onclick="jQuery(this).parent().find(\'pre\').toggle(); return false;">%s</a>',
|
|
substr( $body, 0, 32 ) . ( 32 < strlen( $body ) ? '...' : '' )
|
|
);
|
|
if ( $pretty_print ) {
|
|
$body = $encode( json_decode( $log['body'] ), JSON_PRETTY_PRINT );
|
|
}
|
|
?>
|
|
<pre style="display: none"><code><?php echo esc_html( $body ) ?></code></pre>
|
|
<?php endif ?>
|
|
</td>
|
|
<?php endif ?>
|
|
<td>
|
|
<?php
|
|
$result = $log['result'];
|
|
|
|
$is_not_empty_result = ( is_string( $result ) && ! empty( $result ) );
|
|
|
|
if ( $is_not_empty_result ) {
|
|
printf(
|
|
'<a href="#" onclick="jQuery(this).parent().find(\'pre\').toggle(); return false;">%s</a>',
|
|
substr( $result, 0, 32 ) . ( 32 < strlen( $result ) ? '...' : '' )
|
|
);
|
|
}
|
|
|
|
if ( $is_not_empty_result && $pretty_print ) {
|
|
$decoded = json_decode( $result );
|
|
if ( ! is_null( $decoded ) ) {
|
|
$result = $encode( $decoded, JSON_PRETTY_PRINT );
|
|
}
|
|
} else {
|
|
$result = is_string( $result ) ? $result : json_encode( $result );
|
|
}
|
|
?>
|
|
<pre<?php if ( $is_not_empty_result ) : ?> style="display: none"<?php endif ?>><code><?php echo esc_html( $result ) ?></code></pre>
|
|
</td>
|
|
<td><?php echo number_format( 100 * ( $log['start'] - WP_FS__SCRIPT_START_TIME ), 2 ) . ' ' . $ms_text ?></td>
|
|
<td><?php echo number_format( 100 * ( $log['end'] - WP_FS__SCRIPT_START_TIME ), 2 ) . ' ' . $ms_text ?></td>
|
|
</tr>
|
|
<?php endforeach ?>
|
|
</tbody>
|
|
</table>
|