PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.0
Adminify – White Label, Admin Menu Editor, Login Customizer v4.0
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 / Admin / AdminSettings.php

AdminSettings.php in Adminify – White Label, Admin Menu Editor, Login Customizer 4.0, at Inc/Admin/AdminSettings.php

315 lines 14.2 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\Admin;
4
5 use WPAdminify\Inc\Utils;
6 use WPAdminify\Inc\Admin\AdminSettingsModel;
7 use WPAdminify\Inc\Admin\Options\Customize;
8 use WPAdminify\Inc\Admin\Options\Productivity;
9 use WPAdminify\Inc\Admin\Options\CustomCSSJS;
10 use WPAdminify\Inc\Admin\Options\Performance;
11 use WPAdminify\Inc\Admin\Options\MenuLayout;
12 use WPAdminify\Inc\Admin\Options\Security;
13 use WPAdminify\Inc\Admin\Options\White_Label;
14 if ( !defined( 'ABSPATH' ) ) {
15 die;
16 }
17 // Cannot access directly.
18 if ( !class_exists( 'AdminSettings' ) ) {
19 class AdminSettings extends AdminSettingsModel {
20 // AdminSettings cannot be extended by creating instances
21 public static $instance = null;
22
23 public $defaults = [];
24
25 private $message = [];
26
27 public function __construct() {
28 // this should be first so the default values get stored
29 $this->jltwp_adminify_options();
30 parent::__construct( (array) get_option( $this->prefix ) );
31 add_action( 'network_admin_menu', [$this, 'network_panel'] );
32 }
33
34 public function network_panel() {
35 add_menu_page(
36 $this->get_plugin_menu_label(),
37 $this->get_plugin_menu_label(),
38 'manage_options',
39 'wp-adminify-settings',
40 [$this, 'network_panel_display'],
41 WP_ADMINIFY_ASSETS_IMAGE . 'logos/menu-icon.svg',
42 30
43 );
44 }
45
46 public function get_bloginfo( $blog_id, $fields = [] ) {
47 switch_to_blog( $blog_id );
48 $_fields = [];
49 foreach ( $fields as $field ) {
50 $_fields[$field] = get_bloginfo( $field );
51 }
52 restore_current_blog();
53 return $_fields;
54 }
55
56 public function get_sites() {
57 $sites = get_sites();
58 foreach ( $sites as $site ) {
59 $info = $this->get_bloginfo( $site->blog_id, ['name'] );
60 $site->name = $info['name'];
61 }
62 return $sites;
63 }
64
65 public function get_sites_option_empty() {
66 return sprintf( __( '<option value="%1$s">%2$s</option>', 'adminify' ), 0, __( 'Select', 'adminify' ) );
67 }
68
69 public function get_sites_option( $sites = [], $add_empty_slot = false ) {
70 if ( empty( $sites ) ) {
71 $sites = $this->get_sites();
72 }
73 $_sites = [];
74 if ( $add_empty_slot ) {
75 $_sites[] = $this->get_sites_option_empty();
76 }
77 foreach ( $sites as $site ) {
78 $_sites[] = sprintf( __( '<option value="%1$s">%2$s</option>', 'adminify' ), $site->blog_id, $site->name );
79 }
80 return implode( '', $_sites );
81 }
82
83 public function maybe_display_message() {
84 if ( empty( $this->message ) ) {
85 return;
86 }
87 $classes = 'adminify-status adminify-status--' . esc_attr( $this->message['type'] );
88 printf( esc_html__( '<div class="%1$s"><p>%2$s</p></div>', 'adminify' ), esc_attr( $classes ), wp_kses_post( $this->message['message'] ) );
89 }
90
91 public function network_panel_display() {
92 echo sprintf( wp_kses_post( '<h2>%1$1s</h2> <div>%2$2s</div>', 'adminify' ), esc_html__( 'Network Settings', 'adminify' ), Utils::adminify_upgrade_pro( ' ', 'adminify' ) );
93 }
94
95 public function option_modules() {
96 $extra_data_merge = [];
97 $clonable_data = [
98 '_wpadminify' => __( 'WP Adminify Options', 'adminify' ),
99 '_adminify_admin_columns_adminify_admin_page' => __( 'Admin Page Columns Data', 'adminify' ),
100 ];
101 // Activity Logs Active
102 if ( Utils::is_plugin_active( 'adminify-activity-logs/adminify-activity-logs.php' ) ) {
103 $extra_data_merge['adminify_activity_logs'] = __( 'Activity Logs Data', 'adminify' );
104 $clonable_data = array_merge( $clonable_data, $extra_data_merge );
105 }
106 // Quick Circle Menu Active
107 if ( Utils::is_plugin_active( 'adminify-quick-circle-menu/adminify-quick-circle-menu.php' ) ) {
108 $extra_data_merge['_wpadminify_quick_circle_menu'] = __( 'Quick Circle Menu', 'adminify' );
109 $clonable_data = array_merge( $clonable_data, $extra_data_merge );
110 }
111 // Google Pagespeed Active
112 if ( Utils::is_plugin_active( 'adminify-google-pagespeed/adminify-google-pagespeed.php' ) ) {
113 $extra_data_merge['adminify_page_speed'] = __( 'Google Pagespeed', 'adminify' );
114 $clonable_data = array_merge( $clonable_data, $extra_data_merge );
115 }
116 // Login Customizer Active
117 if ( Utils::is_plugin_active( 'loginfy/loginfy.php' ) ) {
118 $extra_data_merge['jltwp_adminify_login'] = __( 'Loginify Data', 'adminify' );
119 $clonable_data = array_merge( $clonable_data, $extra_data_merge );
120 }
121 // Header Footer Scripts Active
122 if ( Utils::is_plugin_active( 'adminify-sidebar-generator/adminify-sidebar-generator.php' ) ) {
123 $extra_data_merge['_wp_adminify_sidebar_settings'] = __( 'Sidebar Generator', 'adminify' );
124 $clonable_data = array_merge( $clonable_data, $extra_data_merge );
125 }
126 // Sidebar Generator Active
127 if ( Utils::is_plugin_active( 'adminify-header-footer-scripts/adminify-header-footer-scripts.php' ) ) {
128 $extra_data_merge['_wpadminify_custom_js_css'] = __( 'Custom JS/CSS', 'adminify' );
129 $clonable_data = array_merge( $clonable_data, $extra_data_merge );
130 }
131 // Admin Columns Active
132 if ( Utils::is_plugin_active( 'adminify-admin-columns/adminify-admin-columns.php' ) ) {
133 $extra_data_merge['_adminify_admin_columns_page'] = __( 'Admin Columns Page Data', 'adminify' );
134 $extra_data_merge['_adminify_admin_columns_post'] = __( 'Admin Columns Post Data', 'adminify' );
135 $clonable_data = array_merge( $clonable_data, $extra_data_merge );
136 }
137 return (array) apply_filters( 'adminify_clone_blog_option_modules', $clonable_data );
138 }
139
140 public function maybe_clone_blog_options() {
141 }
142
143 public function get_pagespeed_data( $copy_from ) {
144 switch_to_blog( $copy_from );
145 global $wpdb;
146 $table_name = $wpdb->prefix . 'adminify_page_speed';
147 $histories = $wpdb->get_results( "SELECT * FROM {$table_name}", ARRAY_A );
148 restore_current_blog();
149 return $histories;
150 }
151
152 public function clone_pagespeed_data( $histories, $copy_to ) {
153 switch_to_blog( $copy_to );
154 global $wpdb;
155 $table_name = $wpdb->prefix . 'adminify_page_speed';
156 foreach ( $histories as $history ) {
157 unset($history['id']);
158 $wpdb->insert( "{$table_name}", $history, [
159 'url' => '%s',
160 'score_desktop' => '%d',
161 'score_mobile' => '%d',
162 'data_desktop' => '%s',
163 'data_mobile' => '%s',
164 'screenshot' => '%s',
165 'time' => '%s',
166 ] );
167 }
168 restore_current_blog();
169 }
170
171 public function get_admin_columns_options( $copy_from ) {
172 $options = [];
173 switch_to_blog( $copy_from );
174 $args = [
175 'public' => true,
176 ];
177 $types = get_post_types( $args );
178 unset($types['attachment']);
179 restore_current_blog();
180 foreach ( $types as $type ) {
181 $options[] = '_adminify_admin_columns_meta_' . esc_attr( $type );
182 }
183 return $options;
184 }
185
186 public static function get_instance() {
187 if ( !is_null( self::$instance ) ) {
188 return self::$instance;
189 }
190 self::$instance = new self();
191 return self::$instance;
192 }
193
194 protected function get_defaults() {
195 return $this->defaults;
196 }
197
198 /**
199 * Admin Settings CSS
200 *
201 * @return void
202 */
203 public function jltwp_adminify_admin_scripts() {
204 }
205
206 public function get_plugin_menu_label() {
207 $plugin_menu_label = WP_ADMINIFY;
208 $saved_data = get_option( $this->prefix );
209 if ( !empty( $saved_data['jltwp_adminify_wl_plugin_menu_label'] ) ) {
210 $plugin_menu_label = $saved_data['jltwp_adminify_wl_plugin_menu_label'];
211 }
212 return $plugin_menu_label;
213 }
214
215 public function jltwp_adminify_options() {
216 if ( !class_exists( 'ADMINIFY' ) ) {
217 return;
218 }
219 $submenu_position = apply_filters( 'jltwp_adminify_submenu_position', 30 );
220 $saved_data = get_option( $this->prefix );
221 $admin_ui_mode = ( empty( $saved_data['light_dark_mode']['admin_ui_mode'] ) ? 'light' : sanitize_text_field( $saved_data['light_dark_mode']['admin_ui_mode'] ) );
222 $light_logo_image_url = WP_ADMINIFY_ASSETS_IMAGE . 'logos/logo-text-light.svg';
223 $dark_logo_image_url = WP_ADMINIFY_ASSETS_IMAGE . 'logos/logo-text-dark.svg';
224 $plugin_author_name = WP_ADMINIFY_AUTHOR;
225 // WP Adminify Options
226 \ADMINIFY::createOptions( $this->prefix, [
227 'framework_title' => '<img class="wp-adminify-settings-logo adminify-settings-light-logo" src=' . esc_url( $light_logo_image_url ) . '><img class="wp-adminify-settings-logo adminify-settings-dark-logo" src=' . esc_url( $dark_logo_image_url ) . '>' . ' <small>by ' . esc_html( $plugin_author_name ) . '</small>',
228 'framework_class' => '',
229 'menu_title' => $this->get_plugin_menu_label(),
230 'menu_slug' => 'wp-adminify-settings',
231 'menu_capability' => 'manage_options',
232 'menu_icon' => WP_ADMINIFY_ASSETS_IMAGE . 'logos/menu-icon-light.svg',
233 'menu_position' => 30,
234 'menu_hidden' => false,
235 'menu_parent' => 'admin.php?page=wp-adminify-settings',
236 'show_bar_menu' => true,
237 'show_sub_menu' => false,
238 'show_in_network' => false,
239 'show_in_customizer' => false,
240 'show_search' => false,
241 'show_reset_all' => true,
242 'show_reset_section' => false,
243 'show_footer' => true,
244 'show_all_options' => false,
245 'show_form_warning' => true,
246 'sticky_header' => false,
247 'save_defaults' => false,
248 'ajax_save' => true,
249 'admin_bar_menu_icon' => '',
250 'admin_bar_menu_priority' => 80,
251 'footer_text' => ' ',
252 'footer_after' => ' ',
253 'footer_credit' => ' ',
254 'database' => 'options',
255 'transient_time' => 0,
256 'contextual_help' => [],
257 'contextual_help_sidebar' => '',
258 'enqueue_webfont' => true,
259 'async_webfont' => false,
260 'output_css' => true,
261 'nav' => 'normal',
262 'has_nav' => false,
263 'theme' => 'dark',
264 'class' => 'wp-adminify-settings',
265 'defaults' => [],
266 ] );
267 $this->defaults = array_merge( $this->defaults, ( new Customize() )->get_defaults() );
268 $this->defaults = array_merge( $this->defaults, ( new MenuLayout() )->get_defaults() );
269 $this->defaults = array_merge( $this->defaults, ( new Productivity() )->get_defaults() );
270 $this->defaults = array_merge( $this->defaults, ( new Security() )->get_defaults() );
271 $this->defaults = array_merge( $this->defaults, ( new Performance() )->get_defaults() );
272 $this->defaults = array_merge( $this->defaults, ( new CustomCSSJS() )->get_defaults() );
273 $this->defaults = array_merge( $this->defaults, ( new White_Label() )->get_defaults() );
274 // Fix Missing keys on save
275 add_filter( "adminify_{$this->prefix}_save", function ( $data ) {
276 $data = $this->fix_missing_keys( $this->defaults, $data );
277 return $data;
278 } );
279 // Backup Settings
280 \ADMINIFY::createSection( $this->prefix, [
281 'title' => __( 'Backup', 'adminify' ),
282 'icon' => 'fas fa-database',
283 'fields' => [[
284 'type' => 'subheading',
285 'content' => Utils::adminfiy_help_urls(
286 __( 'Backup Config Settings', 'adminify' ),
287 'https://wpadminify.com/kb/wp-adminify-options-panel/#adminify-backup',
288 'https://www.youtube.com/playlist?list=PLqpMw0NsHXV-EKj9Xm1DMGa6FGniHHly8',
289 'https://www.facebook.com/groups/jeweltheme',
290 'https://wpadminify.com/support/'
291 ),
292 ], [
293 'type' => 'backup',
294 'class' => 'adminify-block',
295 ]],
296 ] );
297 }
298
299 function fix_missing_keys( $defaults, $data ) {
300 if ( is_array( $defaults ) ) {
301 foreach ( $defaults as $key => $value ) {
302 if ( is_array( $value ) ) {
303 if ( !isset( $data[$key] ) || gettype( $data[$key] ) !== 'array' ) {
304 $data[$key] = [];
305 }
306 $data[$key] = $this->fix_missing_keys( $value, $data[$key] );
307 }
308 }
309 }
310 return $data;
311 }
312
313 }
314
315 }