PluginProbe
Code Profiler – WordPress Performance Profiling and Debugging Made Easy / 1.9.6
Code Profiler – WordPress Performance Profiling and Debugging Made Easy v1.9.6
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/menu_view_plugins.php +51 -14 1.4.21.9.6 View file →
@@ -6,41 +6,51 @@
6 6 | | | / _ \ / _` |/ _ \ | |_) | '__/ _ \| |_| | |/ _ \ '__| |
7 7 | | |__| (_) | (_| | __/ | __/| | | (_) | _| | | __/ | |
8 8 | \____\___/ \__,_|\___| |_| |_| \___/|_| |_|_|\___|_| |
9 9 | |
10 - | (c) Jerome Bruandet ~ https://code-profiler.com/ |
10 + | (c) Jerome Bruandet ~ https://nintechnet.com/codeprofiler/ |
11 11 +=====================================================================+
12 12 */
13 13
14 -if (! defined( 'ABSPATH' ) ) { die( 'Forbidden' ); }
14 +if (! defined('ABSPATH') ) {
15 + die('Forbidden');
16 +}
15 17
16 -// =====================================================================
18 +// ===================================================================== 2023-11-17
17 19 // Display Plugins & Theme stats.
18 20
19 -$buffer = code_profiler_get_profile_data( $profile_path, 'slugs' );
21 +$buffer = code_profiler_get_profile_data( $profile_path, 'slugs');
20 22 if ( isset( $buffer['error'] ) ) {
21 23 return;
22 24 }
23 25
24 26 // Fetch options
25 -$cp_options = get_option( 'code-profiler' );
27 +$cp_options = get_option('code-profiler');
26 28
27 29 // Name vs slug
28 -if ( empty( $cp_options['display_name'] ) || ! in_array( $cp_options['display_name'], ['full', 'slug' ] ) ) {
30 +if ( empty( $cp_options['display_name'] ) ||
31 + ! in_array( $cp_options['display_name'], ['full', 'slug' ] ) ) {
32 +
29 33 $cp_options['display_name'] = 'full';
30 34 }
31 35 // Truncate name
32 -if ( empty( $cp_options['truncate_name'] ) || ! preg_match( '/^\d+$/', ( $cp_options['truncate_name'] ) ) ) {
36 +if ( empty( $cp_options['truncate_name'] ) ||
37 + ! preg_match('/^\d+$/', ( $cp_options['truncate_name'] ) ) ) {
38 +
33 39 $cp_options['truncate_name'] = 30;
34 40 }
35 41 // Horizontal vs vertical chart
36 -if ( empty( $cp_options['chart_type'] ) || ! in_array( $cp_options['chart_type'], ['x', 'y' ] ) ) {
42 +if ( empty( $cp_options['chart_type'] ) ||
43 + ! in_array( $cp_options['chart_type'], ['x', 'y' ] ) ) {
44 +
37 45 $axis = 'x';
38 46 } else {
39 47 $axis = $cp_options['chart_type'];
40 48 }
41 49 // Max plugins to display
42 -if ( empty( $cp_options['chart_max_plugins'] ) || ! preg_match( '/^\d+$/', ( $cp_options['chart_max_plugins'] ) ) ) {
50 +if ( empty( $cp_options['chart_max_plugins'] ) ||
51 + ! preg_match('/^\d+$/', ( $cp_options['chart_max_plugins'] ) ) ) {
52 +
43 53 $chart_max_plugins = 25;
44 54 } else {
45 55 $chart_max_plugins = $cp_options['chart_max_plugins'];
46 56 }
@@ -70,9 +80,9 @@
70 80 continue;
71 81 }
72 82
73 83 // Check whether we should use the name or the slug
74 - if ( $cp_options['display_name'] == 'slug' ) {
84 + if ( $cp_options['display_name'] == 'slug') {
75 85 $n = $slugs[0];
76 86 } else {
77 87 $n = $slugs[2];
78 88 }
@@ -82,10 +92,13 @@
82 92 $n = mb_substr( $n, 0, $cp_options['truncate_name'] , 'utf-8') .'...';
83 93 }
84 94
85 95 // Mark theme as such
86 - if ( $slugs[3] == 'theme' ) {
96 + if ( $slugs[3] == 'theme') {
87 97 $label[] = "{$n} ($theme)";
98 + // ...and MU plugins
99 + } elseif ( $slugs[3] == 'mu-plugin') {
100 + $label[] = "{$n} (MU)";
88 101 } else {
89 102 $label[] = $n;
90 103 }
91 104
@@ -91,12 +104,12 @@
91 104
92 105 $data .= "{$slugs[1]},";
93 106 $total_time += $slugs[1];
94 107 }
95 -$data = rtrim( $data, ',' );
108 +$data = rtrim( $data, ',');
96 109 $count = count( $label ) - 1;
97 110 ?>
98 -<div style="width:80vw;margin:auto">
111 +<div style="width:80vw;margin:auto" aria-hidden="true">
99 112 <canvas id="myChart"></canvas>
100 113 </div>
101 114 <script>
102 115 jQuery(document).ready(function() {
@@ -103,9 +116,9 @@
103 116 'use strict';
104 117 cpjs_plugins_chart(
105 118 '<?php echo esc_js( $axis ) ?>', [<?php
106 119 for( $i = 0; $i < $count; $i++ ) {
107 - echo "'". addslashes( $label[ $i ] ) ."',";
120 + echo "'". esc_js( $label[ $i ] ) ."',";
108 121 }
109 122 echo "'". esc_js( $label[ $i ] ) ."'";
110 123 ?>],
111 124 [<?php echo esc_js( $data ) ?>], <?php echo esc_js( number_format( $total_time, 4 ) ) ?>
@@ -111,8 +124,32 @@
111 124 [<?php echo esc_js( $data ) ?>], <?php echo esc_js( number_format( $total_time, 4 ) ) ?>
112 125 );
113 126 });
114 127 </script>
128 +
129 +<!-- Screen-reader only -->
130 +<div class="visually-hidden">
131 +<?php
132 + $sr_data = explode(',', $data );
133 + echo "<table>\n".
134 + "\t<tr>\n".
135 + "\t\t<td>". esc_html__('Component name', 'code-profiler') ."</td>".
136 + "<td>". esc_html__('Time in seconds', 'code-profiler') ."</td>".
137 + "<td>". esc_html__('Time in percentage', 'code-profiler') ."</td>\n";
138 + for( $i = 0; $i <= $count; $i++ ) {
139 + if ( empty( $sr_data[ $i ] ) ) {
140 + $sr_data[ $i ] = 0;
141 + }
142 + echo "\t<tr>\n\t\t<td>". esc_html( $label[ $i ] ) ."</td>".
143 + "<td>". esc_html( number_format( $sr_data[ $i ], 3 ) ) ."</td>".
144 + "<td>". esc_html( number_format( ( $sr_data[ $i ] / $total_time ) * 100 ) ) .
145 + "%</td>\n\t</tr>\n";
146 + }
147 + echo "</table>\n";
148 +?>
149 +</div>
150 +<!-- End of Screen-reader only -->
151 +
115 152 <?php
116 153 // Actions below stats
117 154 $save_png = 1;
118 155 $rotate_img = 1;