PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 6.1.4
MainWP Dashboard: Self-hosted WordPress Management for Agencies v6.1.4
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 6.1.4, at modules/logs/widgets/widget-log-posts-widget.php

234 lines 7.6 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_Posts_Widget
24 *
25 * Displays the Logs info.
26 */
27 class Log_Posts_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']['posts'] ) ? $data['stats_data']['posts'] : 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']['posts'] ) ? $data['stats_prev_data']['posts'] : 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( 'Posts Management Event Tracker', 'mainwp' ); ?>
90 <div class="sub header">
91 <?php esc_html_e( 'Overview of post-related activities with total events tallied.', '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', 'posts' );
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 if ( ! empty( $data ) ) {
111 $this->render_widget_content( $stats_data, $stats_prev_data );
112 } else {
113 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>' );
114 }
115 ?>
116 <?php
117 /**
118 * Action: mainwp_logs_widget_bottom
119 *
120 * Fires at the bottom of the widget.
121 *
122 * @since 4.6
123 */
124 do_action( 'mainwp_logs_widget_bottom', 'posts' );
125 ?>
126 </div>
127 <div class="mainwp-widget-footer ui four columns stackable grid">
128 <div class="column">
129 </div>
130 <div class="column">
131 </div>
132 </div>
133 <?php
134 }
135
136 /**
137 * Method render_widget_content().
138 *
139 * @param array $data Stats data.
140 * @param array $prev_data Previous stats data.
141 */
142 public function render_widget_content( $data, $prev_data ) {
143
144 $posts_data = array();
145 if ( is_array( $data ) && isset( $data['post'] ) ) {
146 $posts_data = $data['post'];
147 if ( ! is_array( $posts_data ) ) {
148 $posts_data = array();
149 }
150 }
151
152 $posts_prev_data = array();
153 if ( is_array( $prev_data ) && isset( $prev_data['post'] ) ) {
154 $posts_prev_data = $prev_data['post'];
155 if ( ! is_array( $posts_prev_data ) ) {
156 $posts_prev_data = array();
157 }
158 }
159
160 $columns = array(
161 'created' => esc_html__( 'Created', 'mainwp' ),
162 'published' => esc_html__( 'Published', 'mainwp' ),
163 'updated' => esc_html__( 'Updated', 'mainwp' ),
164 'trashed' => esc_html__( 'Trashed', 'mainwp' ),
165 'untrashed' => esc_html__( 'Untrashed', 'mainwp' ),
166 'deleted' => esc_html__( 'Deleted', 'mainwp' ),
167 'total_events' => esc_html__( 'Events', 'mainwp' ),
168 );
169
170 ?>
171 <div class="ui grid">
172 <div class="sixteen wide column">
173 <div class="ui equal width grid">
174 <?php
175 foreach ( $columns as $act => $title ) {
176 Log_Stats::render_stats_info( $posts_data, $act, $title, $posts_prev_data );
177 }
178 ?>
179 </div>
180 </div>
181 <div class="sixteen wide column">
182 <div id="mainwp-module-log-chart-posts-management-wrapper" ></div>
183 <script type="text/javascript">
184 jQuery( document ).ready( function() {
185 let options = {
186 chart: {
187 type: 'bar',
188 height: 350,
189 },
190 plotOptions: {
191 bar: {
192 columnWidth: '60%'
193 }
194 },
195 series: [ {
196 name: 'Events:',
197 data: [
198 <?php
199 foreach ( $columns as $act => $title ) {
200 Log_Stats::render_chart_series( $posts_data, $act, $title, $posts_prev_data );
201 }
202 ?>
203 ],
204 } ],
205 xaxis: {
206 labels: {
207 style: {
208 colors: '#999999',
209 }
210 }
211 },
212 yaxis: {
213 labels: {
214 style: {
215 colors: '#999999',
216 }
217 }
218 },
219 tooltip: {
220 theme: 'dark'
221 },
222 }
223 let clients = new ApexCharts(document.querySelector("#mainwp-module-log-chart-posts-management-wrapper"), options);
224 setTimeout(() => {
225 clients.render();
226 }, 1000);
227 } );
228 </script>
229 </div>
230 </div>
231 <?php
232 }
233 }
234