PluginProbe
Code Profiler – WordPress Performance Profiling and Debugging Made Easy / 1.7.4
Code Profiler – WordPress Performance Profiling and Debugging Made Easy v1.7.4
1.9.6 1.9.5 1.9.4 1.9.3 trunk 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.6 1.6.1 1.6.10 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 All 41 releases
← All changes | lib/helper.php +25 -189 1.9.31.7.4 View file →
@@ -32,15 +32,13 @@
32 32 }
33 33 define('CODE_PROFILER_LOG', CODE_PROFILER_UPLOAD_DIR .'/log.php');
34 34 define('CODE_PROFILER_TMP_IOSTATS_LOG', 'iostats.tmp');
35 35 define('CODE_PROFILER_TMP_SUMMARY_LOG', 'summary.tmp');
36 -define('CODE_PROFILER_TMP_RERUN_LOG', 'rerun.tmp');
37 36 define('CODE_PROFILER_TMP_CALLS_LOG', 'calls.tmp');
38 37 define('CODE_PROFILER_TMP_DISKIO_LOG', 'diskio.tmp');
39 38 define('CODE_PROFILER_TMP_CONNECTIONS_LOG', 'connections.tmp');
40 39 define('CODE_PROFILER_UPDATE_NOTICE', '<div class="updated notice is-dismissible"><p>%s</p></div>');
41 40 define('CODE_PROFILER_ERROR_NOTICE', '<div class="error notice is-dismissible"><p>%s</p></div>');
42 -define('CODE_PROFILER_WARNING_NOTICE', '<div class="notice notice-warning"><p>%s</p></div>');
43 41 if (! defined('CODE_PROFILER_MUPLUGIN') ) {
44 42 // MU plugin's name can be defined in the wp-config.php
45 43 define('CODE_PROFILER_MUPLUGIN', '0----code-profiler.php');
46 44 }
@@ -54,21 +52,21 @@
54 52 global $wp_version;
55 53 if (! defined('CODE_PROFILER_UA') ) { // UA signatures can be user-defined in the wp-config.php
56 54 define ('CODE_PROFILER_UA', [
57 55 esc_html__('Desktop', 'code-profiler') => [
58 - 'Firefox' => 'Mozilla/5.0 (Linux x86_64; rv:149.0) Gecko/20100101 Firefox/149.0',
56 + 'Firefox' => 'Mozilla/5.0 (Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0',
59 57 'Chrome' => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,'.
60 - ' like Gecko) Chrome/147.0.0.0 Safari/537.36',
58 + ' like Gecko) Chrome/133.0.0.0 Safari/537.36',
61 59 'Edge' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,'.
62 - ' like Gecko) Chrome/147.0.0.0 Safari/537.36 Edg/Chrome/147.0.7727.50'
60 + ' like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/131.0.2903.86'
63 61 ],
64 62 esc_html__('Mobile', 'code-profiler') => [
65 - 'Android Phone' => 'Mozilla/5.0 (Android 16; Mobile; rv:68.0) Gecko/68.0 Firefox/149.0',
66 - 'Android Tablet' => 'Mozilla/5.0 (Linux; Android 16.0; SAMSUNG-SM-T377A Build/NMF26X)'.
67 - ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.7727.50 Mobile Safari/537.36',
68 - 'iPhone' => 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_7_7 like Mac OS X) AppleWebKit/605.1.15'.
69 - ' (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1',
70 - 'iPad' => 'Mozilla/5.0 (iPad; CPU OS 18_7_7 like Mac OS X) AppleWebKit/605.1.15'.
63 + 'Android Phone' => 'Mozilla/5.0 (Android 15; Mobile; rv:68.0) Gecko/68.0 Firefox/135.0',
64 + 'Android Tablet' => 'Mozilla/5.0 (Linux; Android 15.0; SAMSUNG-SM-T377A Build/NMF26X)'.
65 + ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Mobile Safari/537.36',
66 + 'iPhone' => 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_7_2 like Mac OS X) AppleWebKit/605.1.15'.
67 + ' (KHTML, like Gecko) Version/17_7_2 Mobile/15E148 Safari/604.1',
68 + 'iPad' => 'Mozilla/5.0 (iPad; CPU OS 17_7_2 like Mac OS X) AppleWebKit/605.1.15'.
71 69 ' (KHTML, like Gecko) GSA/213.0.449417121 Mobile/15E148 Safari/605.1.15'
72 70 ],
73 71 esc_html__('Bot', 'code-profiler') => [
74 72 'Google Bot' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
@@ -129,123 +127,34 @@
129 127 // Update version in the DB and check if options must be updated.
130 128
131 129 function code_profiler_init_update() {
132 130
133 - if ( ( $cp_options = get_option('code-profiler') ) == false ) {
134 - /**
135 - * "Automatic conversion of false to array is deprecated" since PHP 8.1
136 - */
137 - $cp_options = [];
138 - }
131 + $cp_options = get_option('code-profiler');
132 + if ( empty( $cp_options['version'] ) ||
133 + version_compare( $cp_options['version'], CODE_PROFILER_VERSION, '<') ) {
139 134
140 - if ( empty( $cp_options['version'] ) ) {
141 135 $cp_options['version'] = CODE_PROFILER_VERSION;
142 - update_option('code-profiler', $cp_options );
143 136
144 - } elseif ( version_compare( $cp_options['version'], CODE_PROFILER_VERSION, '<') ) {
145 -
146 137 // Version 1.1
147 - if ( version_compare( $cp_options['version'], '1.1', '<' ) ) {
148 - if (! isset( $cp_options['enable_wpcli'] ) ) {
149 - $cp_options['enable_wpcli'] = 1;
150 - }
138 + if (! isset( $cp_options['enable_wpcli'] ) ) {
139 + $cp_options['enable_wpcli'] = 1;
151 140 }
152 141
153 142 // Version 1.2
154 - if ( version_compare( $cp_options['version'], '1.2', '<' ) ) {
155 - if (! isset( $cp_options['disable_wpcron'] ) ) {
156 - $cp_options['disable_wpcron'] = 1;
157 - }
143 + if (! isset( $cp_options['disable_wpcron'] ) ) {
144 + $cp_options['disable_wpcron'] = 1;
158 145 }
159 146
160 147 // Version 1.3.1
161 - if ( version_compare( $cp_options['version'], '1.3.1', '<' ) ) {
162 - if (! isset( $cp_options['http_response'] ) ) {
163 - $cp_options['http_response'] = '^(?:3|4|5)\d{2}$';
164 - }
148 + if (! isset( $cp_options['http_response'] ) ) {
149 + $cp_options['http_response'] = '^(?:3|4|5)\d{2}$';
165 150 }
166 151
167 152 // Version 1.5
168 - if ( version_compare( $cp_options['version'], '1.5', '<' ) ) {
169 - if (! isset( $cp_options['accuracy'] ) ) {
170 - $cp_options['accuracy'] = 1;
171 - }
153 + if (! isset( $cp_options['accuracy'] ) ) {
154 + $cp_options['accuracy'] = 1;
172 155 }
173 156
174 - // Version 1.7.5
175 - if ( version_compare( $cp_options['version'], '1.7.5', '<' ) ) {
176 - if (! isset( $cp_options['php_error'] ) ) {
177 - $cp_options['php_error'] = 1;
178 - }
179 - }
180 -
181 - // Version 1.8
182 - if ( version_compare( $cp_options['version'], '1.8', '<' ) ) {
183 - if ( isset( $cp_options['mem_where'] ) ) {
184 - $cp_options['mem']['x_end'] = $cp_options['mem_where'];
185 - unset( $cp_options['mem_where'] );
186 - }
187 - if ( isset( $cp_options['mem_post'] ) ) {
188 - $cp_options['mem']['post'] = $cp_options['mem_post'];
189 - unset( $cp_options['mem_post'] );
190 - }
191 - if ( isset( $cp_options['mem_user'] ) ) {
192 - $cp_options['mem']['x_auth'] = $cp_options['mem_user'];
193 - unset( $cp_options['mem_user'] );
194 - }
195 - if ( isset( $cp_options['mem_username'] ) ) {
196 - $cp_options['mem']['username'] = $cp_options['mem_username'];
197 - unset( $cp_options['mem_username'] );
198 - }
199 - if ( isset( $cp_options['mem_method'] ) ) {
200 - $cp_options['mem']['method'] = $cp_options['mem_method'];
201 - unset( $cp_options['mem_method'] );
202 - }
203 - if ( isset( $cp_options['mem_theme'] ) ) {
204 - $cp_options['mem']['theme'] = $cp_options['mem_theme'];
205 - unset( $cp_options['mem_theme'] );
206 - }
207 - if ( isset( $cp_options['ua'] ) ) {
208 - $cp_options['mem']['user_agent'] = $cp_options['ua'];
209 - unset( $cp_options['ua'] );
210 - }
211 - if ( isset( $cp_options['cookies'] ) ) {
212 - $cp_options['mem']['cookies'] = $cp_options['cookies'];
213 - unset( $cp_options['cookies'] );
214 - }
215 - if ( isset( $cp_options['mem_content_type'] ) ) {
216 - $cp_options['mem']['content_type'] = $cp_options['mem_content_type'];
217 - unset( $cp_options['mem_content_type'] );
218 - }
219 - if ( isset( $cp_options['payload'] ) ) {
220 - $cp_options['mem']['payload'] = $cp_options['payload'];
221 - unset( $cp_options['payload'] );
222 - }
223 - if ( isset( $cp_options['custom_headers'] ) ) {
224 - $cp_options['mem']['custom_headers'] = $cp_options['custom_headers'];
225 - unset( $cp_options['custom_headers'] );
226 - }
227 - if ( isset( $cp_options['exclusions'] ) ) {
228 - $cp_options['mem']['exclusions'] = $cp_options['exclusions'];
229 - unset( $cp_options['exclusions'] );
230 - }
231 - }
232 -
233 - // Version 1.8.1
234 - if ( version_compare( $cp_options['version'], '1.8.1', '<' ) ) {
235 - CodeProfiler_WPCron::install();
236 - }
237 -
238 - /**
239 - * Version 1.9.2
240 - */
241 - if ( version_compare( $cp_options['version'], '1.9.2', '<' ) ) {
242 - unset( $cp_options['warn_composer'] );
243 - }
244 -
245 - // Adjust current version
246 - $cp_options['version'] = CODE_PROFILER_VERSION;
247 -
248 157 // Update version in the DB
249 158 update_option('code-profiler', $cp_options );
250 159 }
251 160
@@ -379,8 +288,9 @@
379 288 'chart_type' => 'x',
380 289 'chart_max_plugins' => 25,
381 290 'hide_empty_value' => 1,
382 291 'table_max_rows' => 30,
292 + 'warn_composer' => 1,
383 293 'enable_wpcli' => 1,
384 294 'disable_wpcron' => 1,
385 295 'http_response' => '^(?:3|4|5)\d{2}$',
386 296 'accuracy' => 1,
@@ -424,28 +334,13 @@
424 334
425 335 } catch ( Exception $e ) { }
426 336
427 337 $cp_options = get_option('code-profiler');
428 - /**
429 - * Disable WP-CRON.
430 - */
431 338 if (! empty( $cp_options['disable_wpcron'] ) ) {
432 339 if (! defined('DISABLE_WP_CRON') ) {
433 340 define('DISABLE_WP_CRON', true );
434 341 }
435 342 }
436 - /**
437 - * Enable PHP error logging.
438 - */
439 - if (! empty( $cp_options['php_error'] ) ) {
440 - ini_set('log_errors', 1 );
441 - $phplog = ini_get('error_log');
442 - if ( empty( $phplog ) || $phplog === false ) {
443 - ini_set('error_log', WP_CONTENT_DIR .'/debug.log');
444 - } else {
445 - ini_set('error_log', $phplog );
446 - }
447 - }
448 343 }
449 344
450 345 // =====================================================================
451 346 // Verify the security key when running the profiler.
@@ -453,10 +348,10 @@
453 348 function code_profiler_verify_key() {
454 349
455 350 $response = [
456 351 'status' => 'error',
457 - // We cannot load translation here.
458 - 'message' => 'Security keys do not match. Reload the page and try again (%s)'
352 + 'message' => __('Security keys do not match. Reload the page and try again (%s)',
353 + 'code-profiler')
459 354 ];
460 355
461 356 if ( empty( $_REQUEST['profiler_key'] ) ) {
462 357 $response['message'] = sprintf( $response['message'], '001');
@@ -764,17 +659,14 @@
764 659 ).
765 660 '</span>';
766 661 }
767 662
768 -
769 663 // =====================================================================
770 -// Hide/display an element depending on some value.
664 +// Display/hide an element depending on some value
771 665
772 -function code_profiler_showhide( $var, $val ) {
666 +function code_profiler_hide( $var, $val ) {
773 667
774 668 if ( $var == $val ) {
775 - echo " style='display:block'";
776 - } else {
777 669 echo " style='display:none'";
778 670 }
779 671 }
780 672
@@ -804,64 +696,8 @@
804 696 ];
805 697 }
806 698 }
807 699 return $list;
808 -}
809 -
810 -// =====================================================================
811 -// Retrieve all available cron events.
812 -
813 -function code_profiler_get_crons() {
814 -
815 - $list = [];
816 -
817 - $wp_crons = _get_cron_array();
818 -
819 - if ( empty( $wp_crons ) ) {
820 - return $list;
821 - }
822 -
823 - foreach ( $wp_crons as $timestamp => $cronhooks ) {
824 - foreach ( $cronhooks as $hook => $keys ) {
825 - $list[] = $hook;
826 - }
827 - }
828 - sort( $list );
829 - return $list;
830 -}
831 -
832 -// =====================================================================
833 -// Create a file with the ABSPATH.
834 -
835 -function code_profiler_create_tmpfile() {
836 -
837 - $tmp_folder = dirname( __DIR__ ) .'/tmp';
838 - $tmp_file = "$tmp_folder/profiler.inc.php";
839 -
840 - if (! is_dir( $tmp_folder ) ) {
841 - $res = @ mkdir( $tmp_folder );
842 - if ( false === $res ) {
843 - return sprintf(
844 - __('Cannot create temporary folder: [%s]. Any attempt to profile a cron event will likely fail.', 'code-profiler'),
845 - $tmp_folder
846 - );
847 - }
848 - }
849 -
850 - if (! is_file( "$tmp_folder/index.html" ) ) {
851 - touch( "$tmp_folder/index.html" );
852 - }
853 -
854 - $res = @ file_put_contents(
855 - $tmp_file,
856 - "<?php\nconst ABSPATH = '". ABSPATH ."';\n"
857 - );
858 - if ( false === $res ) {
859 - return sprintf(
860 - __('Cannot create temporary file: [%s]. Any attempt to profile a cron event will likely fail.', 'code-profiler'),
861 - $tmp_file
862 - );
863 - }
864 700 }
865 701
866 702 // =====================================================================
867 703 // EOF