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 / widgets / widget-log-posts-widget.php

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

223 lines 7.2 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
15 /**
16 * Class Log_Posts_Widget
17 *
18 * Displays the Logs info.
19 */
20 class Log_Posts_Widget {
21
22 /**
23 * Protected static variable to hold the single instance of the class.
24 *
25 * @var mixed Default null
26 */
27 protected static $instance = null;
28
29 /**
30 * Return the single instance of the class.
31 *
32 * @return mixed $instance The single instance of the class.
33 */
34 public static function instance() {
35 if ( is_null( static::$instance ) ) {
36 static::$instance = new self();
37 }
38 return static::$instance;
39 }
40
41
42 /**
43 * Method get_class_name()
44 *
45 * @return string __CLASS__ Class name.
46 */
47 public static function get_class_name() {
48 return __CLASS__;
49 }
50
51 /**
52 * Method render()
53 *
54 * @param array ...$args Widget callback args.
55 * @return mixed render_site_info()
56 */
57 public function render( ...$args ) {
58 $this->render_widget( $args );
59 }
60
61
62 /**
63 * Render client overview Info.
64 *
65 * @param array $args Args data.
66 */
67 public function render_widget( $args ) {
68 $data = is_array( $args ) && ! empty( $args[1][0] ) && is_array( $args[1][0] ) ? $args[1][0] : array();
69 $stats_data = is_array( $data ) && ! empty( $data['stats_data']['posts'] ) ? $data['stats_data']['posts'] : array();
70 if ( ! is_array( $stats_data ) ) {
71 $stats_data = array();
72 }
73
74 $stats_prev_data = is_array( $data ) && ! empty( $data['stats_prev_data']['posts'] ) ? $data['stats_prev_data']['posts'] : array();
75 if ( ! is_array( $stats_prev_data ) ) {
76 $stats_prev_data = array();
77 }
78
79 ?>
80 <div class="mainwp-widget-header">
81 <h3 class="ui header handle-drag">
82 <?php esc_html_e( 'Posts Management Event Tracker', 'mainwp' ); ?>
83 <div class="sub header">
84 <?php esc_html_e( 'Overview of post-related activities with total events tallied.', 'mainwp' ); ?>
85 </div>
86 </h3>
87 </div>
88
89 <div class="mainwp-widget-insights-card">
90 <?php
91 /**
92 * Action: mainwp_logs_widget_top
93 *
94 * Fires at the top of the widget.
95 *
96 * @since 4.6
97 */
98 do_action( 'mainwp_logs_widget_top', 'posts' );
99 ?>
100 <div id="mainwp-message-zone" style="display:none;" class="ui message"></div>
101 <?php
102 wp_nonce_field( 'mainwp-admin-nonce' );
103 $this->render_widget_content( $stats_data, $stats_prev_data );
104 ?>
105 <?php
106 /**
107 * Action: mainwp_logs_widget_bottom
108 *
109 * Fires at the bottom of the widget.
110 *
111 * @since 4.6
112 */
113 do_action( 'mainwp_logs_widget_bottom', 'posts' );
114 ?>
115 </div>
116 <div class="mainwp-widget-footer ui four columns stackable grid">
117 <div class="column">
118 </div>
119 <div class="column">
120 </div>
121 </div>
122 <?php
123 }
124
125 /**
126 * Method render_widget_content().
127 *
128 * @param array $data Stats data.
129 * @param array $prev_data Previous stats data.
130 */
131 public function render_widget_content( $data, $prev_data ) {
132
133 $posts_data = array();
134 if ( is_array( $data ) && isset( $data['post'] ) ) {
135 $posts_data = $data['post'];
136 if ( ! is_array( $posts_data ) ) {
137 $posts_data = array();
138 }
139 }
140
141 $posts_prev_data = array();
142 if ( is_array( $prev_data ) && isset( $prev_data['post'] ) ) {
143 $posts_prev_data = $prev_data['post'];
144 if ( ! is_array( $posts_prev_data ) ) {
145 $posts_prev_data = array();
146 }
147 }
148
149 $columns = array(
150 'created' => esc_html__( 'Created', 'mainwp' ),
151 'published' => esc_html__( 'Published', 'mainwp' ),
152 'updated' => esc_html__( 'Updated', 'mainwp' ),
153 'trashed' => esc_html__( 'Trashed', 'mainwp' ),
154 'untrashed' => esc_html__( 'Untrashed', 'mainwp' ),
155 'deleted' => esc_html__( 'Deleted', 'mainwp' ),
156 'total_events' => esc_html__( 'Events', 'mainwp' ),
157 );
158
159 ?>
160 <div class="ui one column grid">
161 <div class="left aligned middle aligned column">
162 <div class="ui equal width grid">
163 <?php
164 foreach ( $columns as $act => $title ) {
165 Log_Stats::render_stats_info( $posts_data, $act, $title, $posts_prev_data );
166 }
167 ?>
168 </div>
169 </div>
170 <div class="left aligned middle aligned column">
171 <div id="mainwp-module-log-chart-posts-management-wrapper" ></div>
172 <script type="text/javascript">
173 jQuery( document ).ready( function() {
174 let options = {
175 chart: {
176 type: 'bar',
177 height: 350,
178 },
179 plotOptions: {
180 bar: {
181 columnWidth: '60%'
182 }
183 },
184 series: [ {
185 name: 'Events:',
186 data: [
187 <?php
188 foreach ( $columns as $act => $title ) {
189 Log_Stats::render_chart_series( $posts_data, $act, $title, $posts_prev_data );
190 }
191 ?>
192 ],
193 } ],
194 xaxis: {
195 labels: {
196 style: {
197 colors: '#999999',
198 }
199 }
200 },
201 yaxis: {
202 labels: {
203 style: {
204 colors: '#999999',
205 }
206 }
207 },
208 tooltip: {
209 theme: 'dark'
210 },
211 }
212 let clients = new ApexCharts(document.querySelector("#mainwp-module-log-chart-posts-management-wrapper"), options);
213 setTimeout(() => {
214 clients.render();
215 }, 1000);
216 } );
217 </script>
218 </div>
219 </div>
220 <?php
221 }
222 }
223