PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 6.2.1
MainWP Dashboard: Self-hosted WordPress Management for Agencies v6.2.1
6.2.3 6.2.2 6.2.1 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 All 156 releases
mainwp / modules / logs / widgets / widget-log-sites-widget.php

widget-log-sites-widget.php in MainWP Dashboard: Self-hosted WordPress Management for Agencies 6.2.1, at modules/logs/widgets/widget-log-sites-widget.php

218 lines 7.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * MainWP Logs Widget
4 *
5 * Displays the Logs Info.
6 *
7 * @package MainWP/Dashboard
8 * @version 4.6
9 */
10
11 namespace MainWP\Dashboard\Module\Log;
12
13 use MainWP\Dashboard\MainWP_Utility;
14 use MainWP\Dashboard\MainWP_UI;
15
16 // Exit if accessed directly.
17 if ( ! defined( 'ABSPATH' ) ) {
18 exit;
19 }
20
21
22 /**
23 * Class Log_Sites_Widget
24 *
25 * Displays the Logs info.
26 */
27 class Log_Sites_Widget {
28
29 /**
30 * Protected static variable to hold the single instance of the class.
31 *
32 * @var mixed Default null
33 */
34 protected static $instance = null;
35
36 /**
37 * Return the single instance of the class.
38 *
39 * @return mixed $instance The single instance of the class.
40 */
41 public static function instance() {
42 if ( is_null( static::$instance ) ) {
43 static::$instance = new self();
44 }
45 return static::$instance;
46 }
47
48
49 /**
50 * Method get_class_name()
51 *
52 * @return string __CLASS__ Class name.
53 */
54 public static function get_class_name() {
55 return __CLASS__;
56 }
57
58 /**
59 * Method render()
60 *
61 * @param array ...$args Widget callback args.
62 * @return mixed render_site_info()
63 */
64 public function render( ...$args ) {
65 $this->render_widget( $args );
66 }
67
68
69 /**
70 * Render client overview Info.
71 *
72 * @param array $args Args data.
73 */
74 public function render_widget( $args ) {
75 $data = is_array( $args ) && ! empty( $args[1][0] ) && is_array( $args[1][0] ) ? $args[1][0] : array();
76 $stats_data = is_array( $data ) && ! empty( $data['stats_data']['site']['sites'] ) ? $data['stats_data']['site']['sites'] : array();
77 if ( ! is_array( $stats_data ) ) {
78 $stats_data = array();
79 }
80
81 $stats_prev_data = is_array( $data ) && ! empty( $data['stats_prev_data']['site']['sites'] ) ? $data['stats_prev_data']['site']['sites'] : array();
82 if ( ! is_array( $stats_prev_data ) ) {
83 $stats_prev_data = array();
84 }
85
86 ?>
87 <div class="mainwp-widget-header">
88 <h2 class="ui header handle-drag">
89 <?php esc_html_e( 'Site Management Activity Metrics', 'mainwp' ); ?>
90 <div class="sub header">
91 <?php esc_html_e( 'Summarizing site activities, alongside the total count for a complete overview.', 'mainwp' ); ?>
92 </div>
93 </h2>
94 </div>
95
96 <div class="mainwp-widget-insights-card mainwp-scrolly-overflow">
97 <?php
98 /**
99 * Action: mainwp_logs_widget_top
100 *
101 * Fires at the top of the widget.
102 *
103 * @since 4.6
104 */
105 do_action( 'mainwp_logs_widget_top', 'core' );
106 ?>
107 <div id="mainwp-message-zone" style="display:none;" class="ui message"></div>
108 <?php
109 MainWP_UI::generate_wp_nonce( 'mainwp-admin-nonce' );
110
111 if ( ! empty( $data ) ) {
112 $this->render_widget_content( $stats_data, $stats_prev_data );
113 } else {
114 MainWP_UI::render_empty_element_placeholder( __( 'No activity recorded', 'mainwp' ), __( 'Data will appear here once actions are tracked.', 'mainwp' ), '<em data-emoji=":bar_chart:" class="medium"></em>' );
115 }
116 ?>
117 <?php
118 /**
119 * Action: mainwp_logs_widget_bottom
120 *
121 * Fires at the bottom of the widget.
122 *
123 * @since 4.6
124 */
125 do_action( 'mainwp_logs_widget_bottom', 'core' );
126 ?>
127 </div>
128 <div class="mainwp-widget-footer ui four columns stackable grid">
129 <div class="column">
130 </div>
131 <div class="column">
132 </div>
133 </div>
134 <?php
135 }
136
137 /**
138 * Method render_widget_content().
139 *
140 * @param array $data Stats data.
141 * @param array $prev_data Previous stats data.
142 */
143 public function render_widget_content( $data, $prev_data ) {
144 $columns = array(
145 'added' => esc_html__( 'Added', 'mainwp' ),
146 'sync' => esc_html__( 'Synced', 'mainwp' ),
147 'reconnected' => esc_html__( 'Reconnected', 'mainwp' ),
148 'deleted' => esc_html__( 'Deleted', 'mainwp' ),
149 'suspend' => esc_html__( 'Suspended', 'mainwp' ),
150 'unsuspend' => esc_html__( 'Unsuspended', 'mainwp' ),
151 'total_events' => esc_html__( 'Total', 'mainwp' ),
152 );
153
154 ?>
155 <div class="ui grid">
156 <div class="sixteen wide column">
157 <div class="ui equal width grid">
158 <?php
159 foreach ( $columns as $act => $title ) {
160 Log_Stats::render_stats_info( $data, $act, $title, $prev_data );
161 }
162 ?>
163 </div>
164 </div>
165 <div class="sixteen wide column">
166 <div id="mainwp-module-log-chart-sites-management-wrapper"></div>
167 <script type="text/javascript">
168 jQuery( document ).ready( function() {
169 let options = {
170 chart: {
171 type: 'bar',
172 height: 350,
173 },
174 plotOptions: {
175 bar: {
176 columnWidth: '60%'
177 }
178 },
179 series: [ {
180 name: 'Events:',
181 data: [
182 <?php
183 foreach ( $columns as $act => $title ) {
184 Log_Stats::render_chart_series( $data, $act, $title, $prev_data );
185 }
186 ?>
187 ],
188 } ],
189 xaxis: {
190 labels: {
191 style: {
192 colors: '#999999',
193 }
194 }
195 },
196 yaxis: {
197 labels: {
198 style: {
199 colors: '#999999',
200 }
201 }
202 },
203 tooltip: {
204 theme: 'dark'
205 },
206 }
207 let clients = new ApexCharts(document.querySelector("#mainwp-module-log-chart-sites-management-wrapper"), options);
208 setTimeout(() => {
209 clients.render();
210 }, 1000);
211 } );
212 </script>
213 </div>
214 </div>
215 <?php
216 }
217 }
218