mirror of
https://github.com/felixfoertsch/wordpress-dev-env.git
synced 2026-04-18 15:28:44 +02:00
Initial commit
This commit is contained in:
228
wordpress_plugins/query-monitor/output/html/request.php
Normal file
228
wordpress_plugins/query-monitor/output/html/request.php
Normal file
@@ -0,0 +1,228 @@
|
||||
<?php
|
||||
/**
|
||||
* Request data output for HTML pages.
|
||||
*
|
||||
* @package query-monitor
|
||||
*/
|
||||
|
||||
class QM_Output_Html_Request extends QM_Output_Html {
|
||||
|
||||
/**
|
||||
* Collector instance.
|
||||
*
|
||||
* @var QM_Collector_Request Collector.
|
||||
*/
|
||||
protected $collector;
|
||||
|
||||
public function __construct( QM_Collector $collector ) {
|
||||
parent::__construct( $collector );
|
||||
add_filter( 'qm/output/menus', array( $this, 'admin_menu' ), 50 );
|
||||
}
|
||||
|
||||
public function name() {
|
||||
return __( 'Request', 'query-monitor' );
|
||||
}
|
||||
|
||||
public function output() {
|
||||
|
||||
$data = $this->collector->get_data();
|
||||
|
||||
$db_queries = QM_Collectors::get( 'db_queries' );
|
||||
$raw_request = QM_Collectors::get( 'raw_request' );
|
||||
|
||||
$this->before_non_tabular_output();
|
||||
|
||||
foreach ( array(
|
||||
'request' => __( 'Request', 'query-monitor' ),
|
||||
'matched_rule' => __( 'Matched Rule', 'query-monitor' ),
|
||||
'matched_query' => __( 'Matched Query', 'query-monitor' ),
|
||||
'query_string' => __( 'Query String', 'query-monitor' ),
|
||||
) as $item => $name ) {
|
||||
if ( is_admin() && ! isset( $data['request'][ $item ] ) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( ! empty( $data['request'][ $item ] ) ) {
|
||||
if ( in_array( $item, array( 'request', 'matched_query', 'query_string' ), true ) ) {
|
||||
$value = self::format_url( $data['request'][ $item ] );
|
||||
} else {
|
||||
$value = esc_html( $data['request'][ $item ] );
|
||||
}
|
||||
} else {
|
||||
$value = '<em>' . esc_html__( 'none', 'query-monitor' ) . '</em>';
|
||||
}
|
||||
|
||||
echo '<section>';
|
||||
echo '<h3>' . esc_html( $name ) . '</h3>';
|
||||
echo '<p class="qm-ltr"><code>' . $value . '</code></p>'; // WPCS: XSS ok.
|
||||
echo '</section>';
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
|
||||
echo '<div class="qm-boxed qm-boxed-wrap">';
|
||||
|
||||
if ( ! empty( $data['matching_rewrites'] ) ) {
|
||||
echo '<section>';
|
||||
echo '<h3>' . esc_html__( 'All Matching Rewrite Rules', 'query-monitor' ) . '</h3>';
|
||||
echo '<table>';
|
||||
|
||||
foreach ( $data['matching_rewrites'] as $rule => $query ) {
|
||||
$query = str_replace( 'index.php?', '', $query );
|
||||
|
||||
echo '<tr>';
|
||||
echo '<td class="qm-ltr"><code>' . esc_html( $rule ) . '</code></td>';
|
||||
echo '<td class="qm-ltr"><code>';
|
||||
echo self::format_url( $query ); // WPCS: XSS ok.
|
||||
echo '</code></td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
|
||||
echo '</table>';
|
||||
echo '</section>';
|
||||
}
|
||||
|
||||
echo '<section>';
|
||||
echo '<h3>';
|
||||
esc_html_e( 'Query Vars', 'query-monitor' );
|
||||
echo '</h3>';
|
||||
|
||||
if ( $db_queries ) {
|
||||
$db_queries_data = $db_queries->get_data();
|
||||
if ( ! empty( $db_queries_data['dbs']['$wpdb']->has_main_query ) ) {
|
||||
printf(
|
||||
'<p><button class="qm-filter-trigger" data-qm-target="db_queries-wpdb" data-qm-filter="caller" data-qm-value="qm-main-query">%s</button></p>',
|
||||
esc_html__( 'View Main Query', 'query-monitor' )
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! empty( $data['qvars'] ) ) {
|
||||
|
||||
echo '<table>';
|
||||
|
||||
foreach ( $data['qvars'] as $var => $value ) {
|
||||
|
||||
echo '<tr>';
|
||||
|
||||
if ( isset( $data['plugin_qvars'][ $var ] ) ) {
|
||||
echo '<th scope="row" class="qm-ltr"><span class="qm-current">' . esc_html( $var ) . '</span></td>';
|
||||
} else {
|
||||
echo '<th scope="row" class="qm-ltr">' . esc_html( $var ) . '</td>';
|
||||
}
|
||||
|
||||
if ( is_array( $value ) || is_object( $value ) ) {
|
||||
echo '<td class="qm-ltr"><pre>';
|
||||
echo esc_html( print_r( $value, true ) );
|
||||
echo '</pre></td>';
|
||||
} else {
|
||||
echo '<td class="qm-ltr qm-wrap">' . esc_html( $value ) . '</td>';
|
||||
}
|
||||
|
||||
echo '</tr>';
|
||||
|
||||
}
|
||||
echo '</table>';
|
||||
|
||||
} else {
|
||||
|
||||
echo '<p><em>' . esc_html__( 'none', 'query-monitor' ) . '</em></p>';
|
||||
|
||||
}
|
||||
|
||||
echo '</section>';
|
||||
|
||||
echo '<section>';
|
||||
echo '<h3>' . esc_html__( 'Response', 'query-monitor' ) . '</h3>';
|
||||
echo '<h4>' . esc_html__( 'Queried Object', 'query-monitor' ) . '</h4>';
|
||||
|
||||
if ( ! empty( $data['queried_object'] ) ) {
|
||||
printf( // WPCS: XSS ok.
|
||||
'<p>%1$s (%2$s)</p>',
|
||||
esc_html( $data['queried_object']['title'] ),
|
||||
esc_html( get_class( $data['queried_object']['data'] ) )
|
||||
);
|
||||
} else {
|
||||
echo '<p><em>' . esc_html__( 'none', 'query-monitor' ) . '</em></p>';
|
||||
}
|
||||
|
||||
echo '<h4>' . esc_html__( 'Current User', 'query-monitor' ) . '</h4>';
|
||||
|
||||
if ( ! empty( $data['user']['data'] ) ) {
|
||||
printf( // WPCS: XSS ok.
|
||||
'<p>%s</p>',
|
||||
esc_html( $data['user']['title'] )
|
||||
);
|
||||
} else {
|
||||
echo '<p><em>' . esc_html__( 'none', 'query-monitor' ) . '</em></p>';
|
||||
}
|
||||
|
||||
if ( ! empty( $data['multisite'] ) ) {
|
||||
echo '<h4>' . esc_html__( 'Multisite', 'query-monitor' ) . '</h4>';
|
||||
|
||||
foreach ( $data['multisite'] as $var => $value ) {
|
||||
printf( // WPCS: XSS ok.
|
||||
'<p>%s</p>',
|
||||
esc_html( $value['title'] )
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
echo '</section>';
|
||||
|
||||
if ( ! empty( $raw_request ) ) {
|
||||
$raw_data = $raw_request->get_data();
|
||||
echo '<section>';
|
||||
echo '<h3>' . esc_html__( 'Request Data', 'query-monitor' ) . '</h3>';
|
||||
echo '<table>';
|
||||
|
||||
foreach ( array(
|
||||
'ip' => __( 'Remote IP', 'query-monitor' ),
|
||||
'method' => __( 'HTTP method', 'query-monitor' ),
|
||||
'url' => __( 'Requested URL', 'query-monitor' ),
|
||||
) as $item => $name ) {
|
||||
echo '<tr>';
|
||||
echo '<th scope="row">' . esc_html( $name ) . '</td>';
|
||||
echo '<td class="qm-ltr qm-wrap">' . esc_html( $raw_data['request'][ $item ] ) . '</td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
|
||||
echo '</table>';
|
||||
|
||||
echo '</section>';
|
||||
}
|
||||
|
||||
$this->after_non_tabular_output();
|
||||
}
|
||||
|
||||
public function admin_menu( array $menu ) {
|
||||
|
||||
$data = $this->collector->get_data();
|
||||
$count = isset( $data['plugin_qvars'] ) ? count( $data['plugin_qvars'] ) : 0;
|
||||
|
||||
$title = ( empty( $count ) )
|
||||
? __( 'Request', 'query-monitor' )
|
||||
/* translators: %s: Number of additional query variables */
|
||||
: __( 'Request (+%s)', 'query-monitor' );
|
||||
|
||||
$menu[ $this->collector->id() ] = $this->menu( array(
|
||||
'title' => esc_html( sprintf(
|
||||
$title,
|
||||
number_format_i18n( $count )
|
||||
) ),
|
||||
) );
|
||||
return $menu;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function register_qm_output_html_request( array $output, QM_Collectors $collectors ) {
|
||||
$collector = QM_Collectors::get( 'request' );
|
||||
if ( $collector ) {
|
||||
$output['request'] = new QM_Output_Html_Request( $collector );
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
add_filter( 'qm/outputter/html', 'register_qm_output_html_request', 60, 2 );
|
||||
Reference in New Issue
Block a user