summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/3rd-party/debug-bar/class.jetpack-search-debug-bar.php')
-rw-r--r--plugins/jetpack/3rd-party/debug-bar/class.jetpack-search-debug-bar.php154
1 files changed, 154 insertions, 0 deletions
diff --git a/plugins/jetpack/3rd-party/debug-bar/class.jetpack-search-debug-bar.php b/plugins/jetpack/3rd-party/debug-bar/class.jetpack-search-debug-bar.php
new file mode 100644
index 00000000..5d00c5a0
--- /dev/null
+++ b/plugins/jetpack/3rd-party/debug-bar/class.jetpack-search-debug-bar.php
@@ -0,0 +1,154 @@
+<?php
+
+/**
+ * Singleton class instantiated by Jetpack_Searc_Debug_Bar::instance() that handles
+ * rendering the Jetpack Search debug bar menu item and panel.
+ */
+class Jetpack_Search_Debug_Bar extends Debug_Bar_Panel {
+ /**
+ * Holds singleton instance
+ *
+ * @var Jetpack_Search_Debug_Bar
+ */
+ protected static $instance = null;
+
+ /**
+ * The title to use in the debug bar navigation
+ *
+ * @var string
+ */
+ public $title;
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ $this->title( esc_html__( 'Jetpack Search', 'jetpack' ) );
+ add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
+ }
+
+ /**
+ * Returns the singleton instance of Jetpack_Search_Debug_Bar
+ *
+ * @return Jetpack_Search_Debug_Bar
+ */
+ public static function instance() {
+ if ( is_null( self::$instance ) ) {
+ self::$instance = new Jetpack_Search_Debug_Bar();
+ }
+ return self::$instance;
+ }
+
+ /**
+ * Enqueues styles for our panel in the debug bar
+ *
+ * @return void
+ */
+ public function enqueue_scripts() {
+ wp_enqueue_style(
+ 'jetpack-search-debug-bar',
+ plugins_url( '3rd-party/debug-bar/debug-bar.css', JETPACK__PLUGIN_FILE )
+ );
+ wp_enqueue_script(
+ 'jetpack-search-debug-bar',
+ plugins_url( '3rd-party/debug-bar/debug-bar.js', JETPACK__PLUGIN_FILE ),
+ array( 'jquery' )
+ );
+ }
+
+ /**
+ * Should the Jetpack Search Debug Bar show?
+ *
+ * Since we've previously done a check for the search module being activated, let's just return true.
+ * Later on, we can update this to only show when `is_search()` is true.
+ *
+ * @return boolean
+ */
+ public function is_visible() {
+ return true;
+ }
+
+ /**
+ * Renders the panel content
+ *
+ * @return void
+ */
+ public function render() {
+ if ( ! class_exists( 'Jetpack_Search' ) ) {
+ return;
+ }
+
+ $jetpack_search = Jetpack_Search::instance();
+ $last_query_info = $jetpack_search->get_last_query_info();
+
+ // If not empty, let's reshuffle the order of some things.
+ if ( ! empty( $last_query_info ) ) {
+ $args = $last_query_info['args'];
+ $response = $last_query_info['response'];
+ $response_code = $last_query_info['response_code'];
+
+ unset( $last_query_info['args'] );
+ unset( $last_query_info['response'] );
+ unset( $last_query_info['response_code'] );
+
+ if ( is_null( $last_query_info['es_time'] ) ) {
+ $last_query_info['es_time'] = esc_html_x(
+ 'cache hit',
+ 'displayed in search results when results are cached',
+ 'jetpack'
+ );
+ }
+
+ $temp = array_merge(
+ array( 'response_code' => $response_code ),
+ array( 'args' => $args ),
+ $last_query_info,
+ array( 'response' => $response )
+ );
+
+ $last_query_info = $temp;
+ }
+ ?>
+ <div class="jetpack-search-debug-bar">
+ <h2><?php esc_html_e( 'Last query information:', 'jetpack' ); ?></h2>
+ <?php if ( empty( $last_query_info ) ) : ?>
+ <?php echo esc_html_x( 'None', 'Text displayed when there is no information', 'jetpack' ); ?>
+ <?php
+ else :
+ foreach ( $last_query_info as $key => $info ) :
+ ?>
+ <h3><?php echo esc_html( $key ); ?></h3>
+ <?php
+ if ( 'response' !== $key && 'args' !== $key ) :
+ ?>
+ <pre><?php print_r( esc_html( $info ) ); ?></pre>
+ <?php
+ else :
+ $this->render_json_toggle( $info );
+ endif;
+ ?>
+ <?php
+ endforeach;
+ endif;
+ ?>
+ </div><!-- Closes .jetpack-search-debug-bar -->
+ <?php
+ }
+
+ /**
+ * Responsible for rendering the HTML necessary for the JSON toggle
+ *
+ * @param array $value The resonse from the API as an array.
+ * @return void
+ */
+ public function render_json_toggle( $value ) {
+ ?>
+ <div class="json-toggle-wrap">
+ <pre class="json"><?php echo wp_json_encode( $value ); ?></pre>
+ <span class="pretty toggle"><?php echo esc_html_x( 'Pretty', 'label for formatting JSON', 'jetpack' ); ?></span>
+ <span class="ugly toggle"><?php echo esc_html_x( 'Minify', 'label for formatting JSON', 'jetpack' ); ?></span>
+ </div>
+ <?php
+ }
+}