PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.2.4
Jetpack – WP Security, Backup, Speed, & Growth v13.2.4
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / 3rd-party / debug-bar / class-jetpack-search-debug-bar.php
jetpack / 3rd-party / debug-bar Last commit date
class-jetpack-search-debug-bar.php 4 years ago debug-bar.css 8 years ago debug-bar.js 8 years ago
class-jetpack-search-debug-bar.php
193 lines
1 <?php
2 /**
3 * Adds a Jetpack Search debug panel to Debug Bar.
4 *
5 * @package automattic/jetpack
6 */
7
8 use Automattic\Jetpack\Search as Jetpack_Search;
9
10 /**
11 * Singleton class instantiated by Jetpack_Searc_Debug_Bar::instance() that handles
12 * rendering the Jetpack Search debug bar menu item and panel.
13 */
14 class Jetpack_Search_Debug_Bar extends Debug_Bar_Panel {
15 /**
16 * Holds singleton instance
17 *
18 * @var Jetpack_Search_Debug_Bar
19 */
20 protected static $instance = null;
21
22 /**
23 * The title to use in the debug bar navigation
24 *
25 * @var string
26 */
27 public $title;
28
29 /**
30 * Constructor
31 */
32 public function __construct() {
33 $this->title( esc_html__( 'Jetpack Search', 'jetpack' ) );
34 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
35 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
36 add_action( 'login_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
37 add_action( 'enqueue_embed_scripts', array( $this, 'enqueue_scripts' ) );
38 }
39
40 /**
41 * Returns the singleton instance of Jetpack_Search_Debug_Bar
42 *
43 * @return Jetpack_Search_Debug_Bar
44 */
45 public static function instance() {
46 if ( self::$instance === null ) {
47 self::$instance = new Jetpack_Search_Debug_Bar();
48 }
49 return self::$instance;
50 }
51
52 /**
53 * Enqueues styles for our panel in the debug bar
54 *
55 * @return void
56 */
57 public function enqueue_scripts() {
58 // Do not enqueue scripts if we haven't already enqueued Debug Bar or Query Monitor styles.
59 if ( ! wp_style_is( 'debug-bar' ) && ! wp_style_is( 'query-monitor' ) ) {
60 return;
61 }
62
63 wp_enqueue_style(
64 'jetpack-search-debug-bar',
65 plugins_url( '3rd-party/debug-bar/debug-bar.css', JETPACK__PLUGIN_FILE ),
66 array(),
67 JETPACK__VERSION
68 );
69 wp_enqueue_script(
70 'jetpack-search-debug-bar',
71 plugins_url( '3rd-party/debug-bar/debug-bar.js', JETPACK__PLUGIN_FILE ),
72 array( 'jquery' ),
73 JETPACK__VERSION,
74 true
75 );
76 }
77
78 /**
79 * Should the Jetpack Search Debug Bar show?
80 *
81 * Since we've previously done a check for the search module being activated, let's just return true.
82 * Later on, we can update this to only show when `is_search()` is true.
83 *
84 * @return boolean
85 */
86 public function is_visible() {
87 return true;
88 }
89
90 /**
91 * Renders the panel content
92 *
93 * @return void
94 */
95 public function render() {
96 $jetpack_search = (
97 Jetpack_Search\Options::is_instant_enabled() ?
98 Jetpack_Search\Instant_Search::instance() :
99 Jetpack_Search\Classic_Search::instance()
100 );
101
102 // Search hasn't been initialized. Exit early and do not display the debug bar.
103 if ( ! method_exists( $jetpack_search, 'get_last_query_info' ) ) {
104 return;
105 }
106
107 $last_query_info = $jetpack_search->get_last_query_info();
108
109 // If not empty, let's reshuffle the order of some things.
110 if ( ! empty( $last_query_info ) ) {
111 $args = $last_query_info['args'];
112 $response = $last_query_info['response'];
113 $response_code = $last_query_info['response_code'];
114
115 unset( $last_query_info['args'] );
116 unset( $last_query_info['response'] );
117 unset( $last_query_info['response_code'] );
118
119 if ( $last_query_info['es_time'] === null ) {
120 $last_query_info['es_time'] = esc_html_x(
121 'cache hit',
122 'displayed in search results when results are cached',
123 'jetpack'
124 );
125 }
126
127 $temp = array_merge(
128 array( 'response_code' => $response_code ),
129 array( 'args' => $args ),
130 $last_query_info,
131 array( 'response' => $response )
132 );
133
134 $last_query_info = $temp;
135 }
136 ?>
137 <div class="jetpack-search-debug-bar">
138 <h2><?php esc_html_e( 'Last query information:', 'jetpack' ); ?></h2>
139 <?php if ( empty( $last_query_info ) ) : ?>
140 <?php echo esc_html_x( 'None', 'Text displayed when there is no information', 'jetpack' ); ?>
141 <?php
142 else :
143 foreach ( $last_query_info as $key => $info ) :
144 ?>
145 <h3><?php echo esc_html( $key ); ?></h3>
146 <?php
147 if ( 'response' !== $key && 'args' !== $key ) :
148 ?>
149 <pre><?php print_r( esc_html( $info ) ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions ?></pre>
150 <?php
151 else :
152 $this->render_json_toggle( $info );
153 endif;
154 ?>
155 <?php
156 endforeach;
157 endif;
158 ?>
159 </div><!-- Closes .jetpack-search-debug-bar -->
160 <?php
161 }
162
163 /**
164 * Responsible for rendering the HTML necessary for the JSON toggle
165 *
166 * @param array $value The resonse from the API as an array.
167 * @return void
168 */
169 public function render_json_toggle( $value ) {
170 ?>
171 <div class="json-toggle-wrap">
172 <pre class="json">
173 <?php
174 // esc_html() will not double-encode entities (&amp; -> &amp;amp;).
175 // If any entities are part of the JSON blob, we want to re-encoode them
176 // (double-encode them) so that they are displayed correctly in the debug
177 // bar.
178 // Use _wp_specialchars() "manually" to ensure entities are encoded correctly.
179 echo _wp_specialchars( // phpcs:ignore WordPress.Security.EscapeOutput
180 wp_json_encode( $value ),
181 ENT_NOQUOTES, // Don't need to encode quotes (output is for a text node).
182 'UTF-8', // wp_json_encode() outputs UTF-8 (really just ASCII), not the blog's charset.
183 true // Do "double-encode" existing HTML entities.
184 );
185 ?>
186 </pre>
187 <span class="pretty toggle"><?php echo esc_html_x( 'Pretty', 'label for formatting JSON', 'jetpack' ); ?></span>
188 <span class="ugly toggle"><?php echo esc_html_x( 'Minify', 'label for formatting JSON', 'jetpack' ); ?></span>
189 </div>
190 <?php
191 }
192 }
193