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.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 5.2.1 All 155 releases
mainwp / modules / logs / widgets / widget-log-graph-clients-widget.php

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

169 lines 5.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_DB;
14 use MainWP\Dashboard\MainWP_DB_Client;
15 use MainWP\Dashboard\MainWP_UI;
16
17 // Exit if accessed directly.
18 if ( ! defined( 'ABSPATH' ) ) {
19 exit;
20 }
21
22 /**
23 * Class Log_Graph_Clients_Widget
24 *
25 * Displays the Logs info.
26 */
27 class Log_Graph_Clients_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 public function render() {
62 $this->render_widget();
63 }
64
65
66 /**
67 * Render client overview Info.
68 */
69 public function render_widget() {
70 $clients = MainWP_DB_Client::instance()->get_wp_clients();
71 $clients_count = count( $clients );
72 ?>
73 <div class="mainwp-widget-header">
74 <h2 class="ui header handle-drag">
75 <?php esc_html_e( 'Client Sites Distribution', 'mainwp' ); ?>
76 <div class="sub header">
77 <?php esc_html_e( 'Count of sites assigned to each client. Easily compare the site allocations among your client base.', 'mainwp' ); ?>
78 </div>
79 </h2>
80 </div>
81
82 <div class="mainwp-widget-insights-card mainwp-scrolly-overflow">
83 <?php
84 /**
85 * Action: mainwp_logs_widget_top
86 *
87 * Fires at the top of the widget.
88 *
89 * @since 4.6
90 */
91 do_action( 'mainwp_logs_widget_top', 'status' );
92 ?>
93 <div id="mainwp-message-zone" style="display:none;" class="ui message"></div>
94 <?php
95 MainWP_UI::generate_wp_nonce( 'mainwp-admin-nonce' );
96 if ( 0 < intval( $clients_count ) ) {
97 $this->render_widget_content();
98 } else {
99 MainWP_UI::render_empty_element_placeholder( __( 'No Clients Data Yet', 'mainwp' ), '<a href="admin.php?page=ClientAddNew">' . __( 'Start adding your clients now', 'mainwp' ) . '</a>', '<em data-emoji=":bar_chart:" class="medium"></em>' );
100 }
101 ?>
102 <?php
103 /**
104 * Action: mainwp_logs_widget_bottom
105 *
106 * Fires at the bottom of the widget.
107 *
108 * @since 4.6
109 */
110 do_action( 'mainwp_logs_widget_bottom', 'status' );
111 ?>
112 </div>
113 <div class="mainwp-widget-footer ui four columns stackable grid">
114 <div class="column">
115 </div>
116 <div class="column">
117 </div>
118 </div>
119 <?php
120 }
121
122 /**
123 * Method render_widget_content()
124 */
125 public function render_widget_content() {
126 $clients = MainWP_DB_Client::instance()->get_wp_clients();
127 ?>
128 <div id="mainwp-module-log-chart-clients-wrapper" ></div>
129 <script type="text/javascript">
130 jQuery( document ).ready( function() {
131 let options = {
132 chart: {
133 type: 'pie',
134 height: 350,
135 },
136 tooltip: {
137 theme: 'dark'
138 },
139 legend: {
140 labels: {
141 colors: '#999'
142 }
143 },
144 stroke: {
145 width: 0
146 },
147 series: [ {
148 name: 'Sites',
149 data: [
150 <?php foreach ( $clients as $client ) : ?>
151 {
152 x: '<?php echo esc_js( $client['name'] ); ?>',
153 y: <?php echo ! empty( $client['selected_sites'] ) ? count( explode( ',', $client['selected_sites'] ) ) : 0; ?>,
154 fillColor: "#18a4e0",
155 },
156 <?php endforeach; ?>
157 ]
158 } ],
159 }
160 let clients = new ApexCharts(document.querySelector("#mainwp-module-log-chart-clients-wrapper"), options);
161 setTimeout(() => {
162 clients.render();
163 }, 1000);
164 } );
165 </script>
166 <?php
167 }
168 }
169