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 +49 -15 1.4.41.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,12 +92,12 @@
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)";
88 98 // ...and MU plugins
89 - } elseif ( $slugs[3] == 'mu-plugin' ) {
99 + } elseif ( $slugs[3] == 'mu-plugin') {
90 100 $label[] = "{$n} (MU)";
91 101 } else {
92 102 $label[] = $n;
93 103 }
@@ -94,12 +104,12 @@
94 104
95 105 $data .= "{$slugs[1]},";
96 106 $total_time += $slugs[1];
97 107 }
98 -$data = rtrim( $data, ',' );
108 +$data = rtrim( $data, ',');
99 109 $count = count( $label ) - 1;
100 110 ?>
101 -<div style="width:80vw;margin:auto">
111 +<div style="width:80vw;margin:auto" aria-hidden="true">
102 112 <canvas id="myChart"></canvas>
103 113 </div>
104 114 <script>
105 115 jQuery(document).ready(function() {
@@ -106,9 +116,9 @@
106 116 'use strict';
107 117 cpjs_plugins_chart(
108 118 '<?php echo esc_js( $axis ) ?>', [<?php
109 119 for( $i = 0; $i < $count; $i++ ) {
110 - echo "'". addslashes( $label[ $i ] ) ."',";
120 + echo "'". esc_js( $label[ $i ] ) ."',";
111 121 }
112 122 echo "'". esc_js( $label[ $i ] ) ."'";
113 123 ?>],
114 124 [<?php echo esc_js( $data ) ?>], <?php echo esc_js( number_format( $total_time, 4 ) ) ?>
@@ -114,8 +124,32 @@
114 124 [<?php echo esc_js( $data ) ?>], <?php echo esc_js( number_format( $total_time, 4 ) ) ?>
115 125 );
116 126 });
117 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 +
118 152 <?php
119 153 // Actions below stats
120 154 $save_png = 1;
121 155 $rotate_img = 1;