PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 10.5.3
Jetpack – WP Security, Backup, Speed, & Growth v10.5.3
16.2-beta 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 All 501 releases
jetpack / _inc / lib / debugger / debug-functions.php

debug-functions.php in Jetpack – WP Security, Backup, Speed, & Growth 10.5.3, at _inc/lib/debugger/debug-functions.php

194 lines 5.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * WP Site Health functionality temporarily stored in this file until all of Jetpack is PHP 5.3+
4 *
5 * @package automattic/jetpack
6 */
7
8 use Automattic\Jetpack\Sync\Modules;
9 /**
10 * Test runner for Core's Site Health module.
11 *
12 * @since 7.3.0
13 */
14 function jetpack_debugger_ajax_local_testing_suite() {
15 check_ajax_referer( 'health-check-site-status' );
16 if ( ! current_user_can( 'jetpack_manage_modules' ) ) {
17 wp_send_json_error();
18 }
19 $tests = new Jetpack_Cxn_Tests();
20 wp_send_json_success( $tests->output_results_for_core_async_site_health() );
21 }
22 /**
23 * Adds the Jetpack Local Testing Suite to the Core Site Health system.
24 *
25 * @since 7.3.0
26 *
27 * @param array $core_tests Array of tests from Core's Site Health.
28 *
29 * @return array $core_tests Array of tests for Core's Site Health.
30 */
31 function jetpack_debugger_site_status_tests( $core_tests ) {
32 $cxn_tests = new Jetpack_Cxn_Tests();
33 $tests = $cxn_tests->list_tests( 'direct' );
34 foreach ( $tests as $test ) {
35
36 $core_tests['direct'][ $test['name'] ] = array(
37 'label' => __( 'Jetpack: ', 'jetpack' ) . $test['name'],
38 /**
39 * Callable for Core's Site Health system to execute.
40 *
41 * @param array $test A Jetpack Testing Suite test array.
42 * @param Jetpack_Cxn_Tests $cxn_tests An instance of the Jetpack Test Suite.
43 *
44 * @return array {
45 * A results array to match the format expected by WordPress Core.
46 *
47 * @type string $label Name for the test.
48 * @type string $status 'critical', 'recommended', or 'good'.
49 * @type array $badge Array for Site Health status. Keys label and color.
50 * @type string $description Description of the test result.
51 * @type string $action HTML to a link to resolve issue.
52 * @type string $test Unique test identifier.
53 * }
54 */
55 'test' => function () use ( $test, $cxn_tests ) {
56 $results = $cxn_tests->run_test( $test['name'] );
57 if ( is_wp_error( $results ) ) {
58 return;
59 }
60
61 $label = $results['label'] ?
62 $results['label'] :
63 ucwords(
64 str_replace(
65 '_',
66 ' ',
67 str_replace( 'test__', '', $test['name'] )
68 )
69 );
70 if ( $results['long_description'] ) {
71 $description = $results['long_description'];
72 } elseif ( $results['short_description'] ) {
73 $description = sprintf(
74 '<p>%s</p>',
75 $results['short_description']
76 );
77 } else {
78 $description = sprintf(
79 '<p>%s</p>',
80 __( 'This test successfully passed!', 'jetpack' )
81 );
82 }
83
84 $return = array(
85 'label' => $label,
86 'status' => 'good',
87 'badge' => array(
88 'label' => __( 'Jetpack', 'jetpack' ),
89 'color' => 'green',
90 ),
91 'description' => $description,
92 'actions' => '',
93 'test' => 'jetpack_' . $test['name'],
94 );
95
96 if ( false === $results['pass'] ) {
97 $return['status'] = $results['severity'];
98 if ( ! empty( $results['action'] ) ) {
99 $return['actions'] = sprintf(
100 '<a href="%1$s" target="_blank" rel="noopener noreferrer">%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>',
101 esc_url( $results['action'] ),
102 $results['action_label'],
103 /* translators: accessibility text */
104 __( '(opens in a new tab)', 'jetpack' )
105 );
106 }
107 }
108
109 return $return;
110 },
111 );
112 }
113 $core_tests['async']['jetpack_test_suite'] = array(
114 'label' => __( 'Jetpack Tests', 'jetpack' ),
115 'test' => 'jetpack_local_testing_suite',
116 );
117
118 return $core_tests;
119 }
120
121 /**
122 * Loads site health scripts if we are on the site health page.
123 *
124 * @param string $hook The current admin page hook.
125 */
126 function jetpack_debugger_enqueue_site_health_scripts( $hook ) {
127 $full_sync_module = Modules::get_module( 'full-sync' );
128 $progress_percent = $full_sync_module ? $full_sync_module->get_sync_progress_percentage() : false;
129
130 $ajax_nonce = wp_create_nonce( 'jetpack-site-health' );
131
132 if ( 'site-health.php' === $hook ) {
133 $wp_scripts = wp_scripts();
134 wp_enqueue_script( 'jquery-ui-progressbar' );
135 wp_enqueue_script(
136 'jetpack_debug_site_health_script',
137 plugins_url( 'jetpack-debugger-site-health.js', __FILE__ ),
138 array( 'jquery-ui-progressbar' ),
139 JETPACK__VERSION,
140 false
141 );
142 wp_enqueue_style(
143 'jetpack_debug_site_health_styles',
144 plugins_url( 'jetpack-debugger-site-health.css', __FILE__ ),
145 false,
146 JETPACK__VERSION,
147 false
148 );
149 /* WordPress is not bundled with jquery UI styles - we need to grab them from the Google API. */
150 wp_enqueue_style(
151 'jetpack-jquery-ui-styles',
152 'https://code.jquery.com/ui/' . $wp_scripts->registered['jquery-ui-core']->ver . '/themes/smoothness/jquery-ui.min.css',
153 false,
154 JETPACK__VERSION,
155 false
156 );
157 wp_localize_script(
158 'jetpack_debug_site_health_script',
159 'jetpackSiteHealth',
160 array(
161 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
162 'syncProgressHeading' => __( 'Jetpack is performing a sync of your site', 'jetpack' ),
163 'progressPercent' => $progress_percent,
164 'fullSyncNonce' => $ajax_nonce,
165 )
166 );
167 }
168 }
169
170 /**
171 * Responds to ajax calls from the site health page. Echos a full sync percantage to update progress bar.
172 */
173 function jetpack_debugger_sync_progress_ajax() {
174 $full_sync_module = Modules::get_module( 'full-sync' );
175 $progress_percent = $full_sync_module ? $full_sync_module->get_sync_progress_percentage() : null;
176 if ( ! $progress_percent ) {
177 echo 'done';
178 wp_die();
179 }
180 echo (int) $progress_percent;
181 wp_die();
182 }
183
184 /**
185 * Responds to ajax calls from the site health page. Triggers a Full Sync
186 */
187 function jetpack_debugger_full_sync_start() {
188 check_ajax_referer( 'jetpack-site-health', 'site-health-nonce' );
189 $full_sync_module = Modules::get_module( 'full-sync' );
190 $full_sync_module->start();
191 echo 'requested';
192 wp_die();
193 }
194