PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 1.0.4
Adminify – White Label, Admin Menu Editor, Login Customizer v1.0.4
4.3.1 4.3.0 4.2.26 4.2.25 4.2.24 4.2.23 4.2.22 4.2.21 4.2.20 4.2.19 4.2.18 4.2.17 4.2.16 4.2.15 4.2.14 4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 4.1.17 All 164 releases
adminify / Inc / classes / DashboardWidgets.php

DashboardWidgets.php in Adminify – White Label, Admin Menu Editor, Login Customizer 1.0.4, at Inc/classes/DashboardWidgets.php

209 lines 5.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPAdminify\Inc\Classes;
4
5 use WPAdminify\Inc\Admin\AdminSettings;
6 use WPAdminify\Inc\Admin\AdminSettingsModel;
7 use WPAdminify\Inc\DashboardWidgets\Adminify_RecentPosts;
8 use WPAdminify\Inc\DashboardWidgets\Adminify_UserActivities;
9 use WPAdminify\Inc\DashboardWidgets\Adminify_SystemInfo;
10 use WPAdminify\Inc\DashboardWidgets\Adminify_Memory_Usage;
11 use WPAdminify\Inc\DashboardWidgets\Adminify_Search_Engine_Visibility;
12 use WPAdminify\Inc\DashboardWidgets\Adminify_Activity_Logs;
13 use WPAdminify\Inc\DashboardWidgets\Adminify_Server_Uptime;
14 use WPAdminify\Inc\DashboardWidgets\Adminify_News_Feed;
15
16 use WPAdminify\Inc\Utils;
17
18 // no direct access allowed
19 if (!defined('ABSPATH')) exit;
20 /**
21 * WPAdminify
22 * Dashboard Widgets
23 *
24 * @author Jewel Theme <support@jeweltheme.com>
25 */
26
27 class DashboardWidgets extends AdminSettingsModel
28 {
29 public function __construct()
30 {
31 $this->widget_list = (array) AdminSettings::get_instance()->get('dashboard_widgets_list');
32 $this->restrict_for = (array) AdminSettings::get_instance()->get('dashboard_widgets_user_roles');
33
34 // Dashboard widgets by WP Adminify
35 add_action('admin_init', [$this, 'jltwp_adminify_add_hooks']);
36 add_action('plugins_loaded', [$this, 'jltwp_adminify_dashboard_widgets']);
37
38 // add_action('admin_enqueue_scripts', [$this, 'dashboard_styles'], 100);
39 }
40
41 public function jltwp_adminify_add_hooks()
42 {
43
44 $user = wp_get_current_user();
45
46 if (!empty(array_intersect($this->restrict_for, $user->roles))) return;
47
48 add_action('wp_dashboard_setup', [$this, 'disable_dashboard_widgets'], 100);
49 add_action('wp_network_dashboard_setup', [$this, 'disable_dashboard_widgets'], 100);
50 }
51
52
53
54 public static function get_dashboard_widgets_checkbox()
55 {
56 $widgets = (new self)->get_default_dashboard_widgets();
57
58 $flat_widgets = [];
59
60 foreach ($widgets as $context => $priority) {
61 foreach ($priority as $data) {
62 foreach ($data as $id => $widget) {
63 if (!$widget) {
64 continue;
65 }
66 $key = $id . "|" . $context;
67 $widget['title'] = isset($widget['title']) ? $widget['title'] : '';
68 $flat_widgets[$key] = wp_strip_all_tags($widget['title']);
69 }
70 }
71 }
72
73 $widgets = wp_list_sort($flat_widgets, ['title_stripped' => 'ASC'], null, true);
74 return $widgets;
75 }
76
77 public static function render_dashboard_checkboxes()
78 {
79 (new self)->get_default_dashboard_widgets();
80 return get_site_option('dashboard_widgets', []);
81 }
82
83 /**
84 * Get the default dashboard widgets.
85 *
86 * @return array Sidebar widgets.
87 */
88 public function get_default_dashboard_widgets()
89 {
90 global $wp_meta_boxes;
91
92 $screen = is_network_admin() ? 'dashboard-network' : 'dashboard';
93
94 $current_screen = get_current_screen();
95
96 if (!isset($wp_meta_boxes[$screen]) || !is_array($wp_meta_boxes[$screen])) {
97 require_once ABSPATH . '/wp-admin/includes/dashboard.php';
98
99 set_current_screen($screen);
100
101 wp_dashboard_setup();
102
103 if (is_callable(['Antispam_Bee', 'add_dashboard_chart'])) {
104 \Antispam_Bee::add_dashboard_chart();
105 }
106 }
107
108 if (isset($wp_meta_boxes[$screen][0])) {
109 unset($wp_meta_boxes[$screen][0]);
110 }
111
112 $widgets = [];
113
114 if (isset($wp_meta_boxes[$screen])) {
115 $widgets = $wp_meta_boxes[$screen];
116 }
117
118 set_current_screen($current_screen);
119
120 /**
121 * Filters the available dashboard widgets.
122 *
123 * @param array $widgets The globally available dashboard widgets.
124 */
125 return apply_filters('wp_adminify_dashboard_widgets', $widgets);
126 }
127
128
129
130 public function disable_dashboard_widgets()
131 {
132 $widgets = $this->widget_list;
133
134 $_widgets = self::get_dashboard_widgets_checkbox();
135
136 update_site_option('dashboard_widgets', $_widgets);
137
138 if (!$widgets) {
139 return;
140 }
141
142 foreach ($widgets as $meta_box) {
143
144 $widget_data = explode("|", $meta_box);
145 $widget_id = $widget_data[0];
146 $widget_pos = '';
147 if(!empty($widget_data[1])){
148 $widget_pos = $widget_data[1];
149 }
150
151
152 if ('dashboard_welcome_panel' === $widget_id) {
153 remove_action('welcome_panel', 'wp_welcome_panel');
154 continue;
155 }
156
157 if ('try_gutenberg_panel' === $widget_id) {
158 remove_action('try_gutenberg_panel', 'wp_try_gutenberg_panel');
159 continue;
160 }
161
162 if ('dashboard_browser_nag' === $widget_id || 'dashboard_php_nag' === $widget_id) {
163 continue;
164 }
165
166
167 /**
168 * Docs: https://developer.wordpress.org/reference/functions/remove_meta_box/
169 * Example: remove_meta_box('dashboard_right_now', 'dashboard', 'normal'); // Right Now
170 */
171
172 remove_meta_box($widget_id, get_current_screen()->base, $widget_pos);
173 }
174 }
175
176
177
178
179 /**
180 * WP Adminify: Dashboard Widgets
181 */
182 public function jltwp_adminify_dashboard_widgets()
183 {
184 // Recent Posts
185 new Adminify_RecentPosts();
186
187 // User Activities
188 new Adminify_UserActivities;
189
190 // System Info
191 new Adminify_SystemInfo();
192
193 // Memory Usage
194 new Adminify_Memory_Usage();
195
196 // Search Engine Visibility
197 new Adminify_Search_Engine_Visibility();
198
199 // Activity Logs
200 new Adminify_Activity_Logs();
201
202 // Server Uptime
203 new Adminify_Server_Uptime();
204
205 // News Feed
206 new Adminify_News_Feed();
207 }
208 }
209