You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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>