PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 5.0.3
MainWP Dashboard: Self-hosted WordPress Management for Agencies v5.0.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.0.3, at modules/logs/classes/class-log-stats.php

173 lines 4.6 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 ) {
32 $data = array();
33 if ( is_array( $items ) ) {
34 $total_count = 0;
35 $total_dura_time = 0;
36 foreach ( $items as $item ) {
37 if ( 'compact' !== $item->connector ) {
38 if ( ! isset( $data[ $item->connector ] ) ) {
39 $data[ $item->connector ] = array();
40 }
41 if ( ! isset( $data[ $item->connector ][ $item->context ] ) ) {
42 $data[ $item->connector ][ $item->context ] = array();
43 }
44
45 if ( ! isset( $data[ $item->connector ][ $item->context ]['total_events'] ) ) {
46 $data[ $item->connector ][ $item->context ]['total_events'] = array(
47 'count' => 0,
48 'dura_time' => 0,
49 );
50 }
51
52 if ( ! isset( $data[ $item->connector ][ $item->context ][ $item->action ] ) ) {
53 $data[ $item->connector ][ $item->context ][ $item->action ] = array(
54 'count' => 1,
55 'dura_time' => $item->duration,
56 );
57 } else {
58 $data[ $item->connector ][ $item->context ][ $item->action ]['count'] += 1;
59 $data[ $item->connector ][ $item->context ][ $item->action ]['dura_time'] += $item->duration;
60 }
61 $data[ $item->connector ][ $item->context ]['total_events']['count'] += 1;
62 $data[ $item->connector ][ $item->context ]['total_events']['dura_time'] += $item->duration;
63 }
64 }
65 }
66 return $data;
67 }
68
69 /**
70 * Render stats count.
71 *
72 * @param array $data Stats data array.
73 * @param string $action Action name.
74 */
75 public static function get_stats_count( $data, $action ) {
76 return isset( $data[ $action ] ) && ! empty( $data[ $action ]['count'] ) ? $data[ $action ]['count'] : 0;
77 }
78
79
80 /**
81 * Render stats duration time.
82 *
83 * @param array $data Stats data array.
84 * @param string $action Action name.
85 */
86 public static function render_stats_duration_time( $data, $action ) {
87 $dura_time = isset( $data[ $action ] ) && ! empty( $data[ $action ]['dura_time'] ) ? $data[ $action ]['dura_time'] : 0;
88 echo MainWP_Utility::format_duration_time( $dura_time ) ; //phpcs:ignore -- ok.
89 }
90
91 /**
92 * Render stats column content.
93 *
94 * @param array $data Data stats array.
95 * @param string $action Action name.
96 * @param string $title Action title.
97 * @param array $data_prev Data Stats previous array.
98 */
99 public static function render_stats_info( $data, $action, $title, $data_prev ) {
100 $count = self::get_stats_count( $data, $action );
101 $prev_count = self::get_stats_count( $data_prev, $action );
102 ?>
103 <div class="center aligned middle aligned column">
104 <div class="ui mini vertical statistic">
105 <div class="value">
106 <?php self::render_stats_compare( $count, $prev_count ); ?> <?php echo intval( $count ); ?>
107 </div>
108 <div class="label">
109 <?php echo esc_html( $title ); ?>
110 </div>
111 <span class="ui small text">
112 <?php self::render_stats_duration_time( $data, $action ); ?>
113 </span>
114 </div>
115 </div>
116 <?php
117 }
118
119 /**
120 * Render stats compare.
121 *
122 * @param int $count Count stats.
123 * @param int $prev_count Count previous stats.
124 */
125 public static function render_stats_compare( $count, $prev_count ) {
126 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="">';
127 if ( $count === $prev_count ) {
128 ?>
129 <i class="angle right icon"></i>
130 <?php
131 } elseif ( $count > $prev_count ) {
132 ?>
133 <i class="angle up green icon"></i>
134 <?php
135 } else {
136 ?>
137 <i class="angle down red icon"></i>
138 <?php
139 }
140 echo '</span>';
141 }
142
143
144 /**
145 * Method render_chart_series().
146 *
147 * @param array $data Stats data.
148 * @param string $action Action.
149 * @param string $title Title.
150 * @param array $data_prev Stats previous data.
151 */
152 public static function render_chart_series( $data, $action, $title, $data_prev ) {
153 $count = self::get_stats_count( $data, $action );
154 $prev_count = self::get_stats_count( $data_prev, $action );
155 echo '
156 {
157 x: "' . esc_html( $title ) . '",
158 y: "' . intval( $count ) . '",
159 goals: [
160 {
161 name: "Previous",
162 value: "' . intval( $prev_count ) . '",
163 strokeHeight: 2,
164 strokeColor: "#7fb100",
165 }
166 ],
167 fillColor: "#18a4e0",
168 },
169
170 ';
171 }
172 }
173