PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 5.3
MainWP Dashboard: Self-hosted WordPress Management for Agencies v5.3
6.2 6.1.8 6.1.7 6.1.6 6.1.5 6.1.4 6.1.3 6.1.2 6.1.1 6.1 6.0.12 6.0.11 4.6.0.1 5.0 5.0.1 5.0.2 5.0.3 5.0.3.1 5.0.3.2 5.1 5.1.1 5.2 5.2.1 5.2.2 5.3 All 153 releases
mainwp / modules / logs / classes / class-log-stats.php

class-log-stats.php in MainWP Dashboard: Self-hosted WordPress Management for Agencies 5.3, at modules/logs/classes/class-log-stats.php

171 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 * Centralized manager for WordPress backend functionality.
4 *
5 * @package MainWP\Dashboard
6 * @version 4.6
7 */
8
9 namespace MainWP\Dashboard\Module\Log;
10
11 use MainWP\Dashboard\MainWP_Utility;
12
13 defined( 'ABSPATH' ) || exit;
14
15 /**
16 * Class - Log_Stats
17 */
18 class Log_Stats {
19
20 /**
21 * Class constructor.
22 */
23 public function __construct() {
24 }
25
26 /**
27 * Get stats data.
28 *
29 * @param array $items Logs items array.
30 */
31 public static function get_stats_data( $items ) { //phpcs:ignore -- NOSONAR - complex.
32 $data = array();
33 if ( is_array( $items ) ) {
34 foreach ( $items as $item ) {
35 if ( 'compact' !== $item->connector ) {
36 if ( ! isset( $data[ $item->connector ] ) ) {
37 $data[ $item->connector ] = array();
38 }
39 if ( ! isset( $data[ $item->connector ][ $item->context ] ) ) {
40 $data[ $item->connector ][ $item->context ] = array();
41 }
42
43 if ( ! isset( $data[ $item->connector ][ $item->context ]['total_events'] ) ) {
44 $data[ $item->connector ][ $item->context ]['total_events'] = array(
45 'count' => 0,
46 'dura_time' => 0,
47 );
48 }
49
50 if ( ! isset( $data[ $item->connector ][ $item->context ][ $item->action ] ) ) {
51 $data[ $item->connector ][ $item->context ][ $item->action ] = array(
52 'count' => 1,
53 'dura_time' => $item->duration,
54 );
55 } else {
56 $data[ $item->connector ][ $item->context ][ $item->action ]['count'] += 1;
57 $data[ $item->connector ][ $item->context ][ $item->action ]['dura_time'] += $item->duration;
58 }
59 $data[ $item->connector ][ $item->context ]['total_events']['count'] += 1;
60 $data[ $item->connector ][ $item->context ]['total_events']['dura_time'] += $item->duration;
61 }
62 }
63 }
64 return $data;
65 }
66
67 /**
68 * Render stats count.
69 *
70 * @param array $data Stats data array.
71 * @param string $action Action name.
72 */
73 public static function get_stats_count( $data, $action ) {
74 return isset( $data[ $action ] ) && ! empty( $data[ $action ]['count'] ) ? $data[ $action ]['count'] : 0;
75 }
76
77
78 /**
79 * Render stats duration time.
80 *
81 * @param array $data Stats data array.
82 * @param string $action Action name.
83 */
84 public static function render_stats_duration_time( $data, $action ) {
85 $dura_time = isset( $data[ $action ] ) && ! empty( $data[ $action ]['dura_time'] ) ? $data[ $action ]['dura_time'] : 0;
86 echo MainWP_Utility::format_duration_time( $dura_time ) ; //phpcs:ignore -- ok.
87 }
88
89 /**
90 * Render stats column content.
91 *
92 * @param array $data Data stats array.
93 * @param string $action Action name.
94 * @param string $title Action title.
95 * @param array $data_prev Data Stats previous array.
96 */
97 public static function render_stats_info( $data, $action, $title, $data_prev ) {
98 $count = static::get_stats_count( $data, $action );
99 $prev_count = static::get_stats_count( $data_prev, $action );
100 ?>
101 <div class="center aligned middle aligned column">
102 <div class="ui mini vertical statistic">
103 <div class="value">
104 <?php static::render_stats_compare( $count, $prev_count ); ?> <?php echo intval( $count ); ?>
105 </div>
106 <div class="label">
107 <?php echo esc_html( $title ); ?>
108 </div>
109 <span class="ui small text">
110 <?php static::render_stats_duration_time( $data, $action ); ?>
111 </span>
112 </div>
113 </div>
114 <?php
115 }
116
117 /**
118 * Render stats compare.
119 *
120 * @param int $count Count stats.
121 * @param int $prev_count Count previous stats.
122 */
123 public static function render_stats_compare( $count, $prev_count ) {
124 echo '<span data-tooltip="' . intval( $count ) . ' actions this period, ' . intval( $prev_count ) . ' actions previous period, showing growth or decline." data-position="top left" data-inverted="">';
125 if ( $count === $prev_count ) {
126 ?>
127 <i class="angle right icon"></i>
128 <?php
129 } elseif ( $count > $prev_count ) {
130 ?>
131 <i class="angle up green icon"></i>
132 <?php
133 } else {
134 ?>
135 <i class="angle down red icon"></i>
136 <?php
137 }
138 echo '</span>';
139 }
140
141
142 /**
143 * Method render_chart_series().
144 *
145 * @param array $data Stats data.
146 * @param string $action Action.
147 * @param string $title Title.
148 * @param array $data_prev Stats previous data.
149 */
150 public static function render_chart_series( $data, $action, $title, $data_prev ) {
151 $count = static::get_stats_count( $data, $action );
152 $prev_count = static::get_stats_count( $data_prev, $action );
153 echo '
154 {
155 x: "' . esc_html( $title ) . '",
156 y: "' . intval( $count ) . '",
157 goals: [
158 {
159 name: "Previous",
160 value: "' . intval( $prev_count ) . '",
161 strokeHeight: 2,
162 strokeColor: "#7fb100",
163 }
164 ],
165 fillColor: "#18a4e0",
166 },
167
168 ';
169 }
170 }
171