PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.0.2.2
Adminify – White Label, Admin Menu Editor, Login Customizer v4.0.2.2
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 / Wizard / Adminify_Setup_Wizard.php

Adminify_Setup_Wizard.php in Adminify – White Label, Admin Menu Editor, Login Customizer 4.0.2.2, at Inc/Classes/Wizard/Adminify_Setup_Wizard.php

204 lines 6.4 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\Wizard;
4
5 use \WPAdminify\Inc\Admin\AdminSettings;
6 use WPAdminify\Inc\Utils;
7
8 // no direct access allowed
9 if (!defined('ABSPATH')) {
10 exit;
11 }
12
13 class Adminify_Setup_Wizard {
14 public $options;
15
16 public function __construct() {
17
18 if (current_user_can('manage_options') && current_user_can('administrator')) {
19
20 add_action('wp_ajax_wpadminify_save_wizard_data', [$this, 'wpadminify_save_wizard_data']);
21
22 $this->options = (array) AdminSettings::get_instance()->get();
23
24 $this->jltwp_adminify_setup_wizard();
25
26 add_action('wp_ajax_adminify_drag_and_drop_image', [$this, 'adminify_drag_and_drop_image_callback']);
27
28 }
29
30 }
31
32 // Drag and Drop Image
33 public function adminify_drag_and_drop_image_callback() {
34 check_ajax_referer('jltwp_adminify_sw');
35
36 $data_source = empty($_POST['settings']) ? [] : (array) wp_kses_post_deep(wp_unslash($_POST['settings']));
37
38 $base64_image = $data_source['image_data'];
39
40 // Extract the base64 data (remove the data URI scheme)
41 list($type, $data) = explode(';', $base64_image);
42 list(, $data) = explode(',', $data);
43 $decoded_data = base64_decode($data);
44
45 // Define the output file path
46 $upload_dir = wp_upload_dir();
47 $upload_path = $upload_dir['path'] . '/' . $data_source['image_name'];
48
49 // Save the image to the file
50 if (file_put_contents($upload_path, $decoded_data) === false) {
51 wp_send_json_error('Failed to save the image.');
52 }
53
54 // Get the URL of the uploaded image
55 $upload_url = $upload_dir['url'] . '/' . basename($upload_path);
56
57 wp_send_json_success($upload_url);
58
59 wp_die();
60 }
61
62 public function validate_before_save($settings) {
63 foreach ($settings as $key => $setting) {
64 $settings[$key] = $this->maybe_convert_to_boolean($setting);
65 }
66
67 return $settings;
68 }
69
70 public function maybe_convert_to_boolean(&$setting) {
71 if (gettype($setting) == 'string' && ($setting === 'true' || $setting === 'false')) {
72 $setting = wp_validate_boolean($setting);
73 } elseif (gettype($setting) == 'array') {
74 foreach ($setting as $key => $_setting) {
75 $setting[$key] = $this->maybe_convert_to_boolean($_setting);
76 }
77 }
78 return $setting;
79 }
80
81 // TEXT validation
82 public function wpadminify_text_validation($text) {
83 return sanitize_text_field( wp_unslash( $text ?? '' ) );
84 }
85
86 public function wpadminify_save_wizard_data() {
87 check_ajax_referer('jltwp_adminify_sw');
88
89 $settings = empty($_POST['settings']) ? [] : (array) wp_kses_post_deep(wp_unslash($_POST['settings']));
90
91 $validate_settings = $this->validate_before_save($settings);
92
93 $settings = get_option('_wpadminify', []);
94
95 // Adminify UI
96 if( array_key_exists('admin_ui', $validate_settings) ) {
97 $settings['admin_ui'] = !empty($validate_settings['admin_ui']) ? true : false;
98 }
99
100 // Admin Bar Logo
101 if( array_key_exists('admin_ui_logo_type', $validate_settings) && array_key_exists('admin_ui_light_mode', $validate_settings)) {
102
103 $settings['light_dark_mode']['admin_ui_logo_type'] = $validate_settings['admin_ui_logo_type'];
104 if($validate_settings['admin_ui_logo_type'] === 'text_logo') {
105 $settings['light_dark_mode']['admin_ui_light_mode']['admin_ui_light_logo_text'] = $this->wpadminify_text_validation( $validate_settings['admin_ui_light_mode']['admin_ui_light_logo_text'] );
106 }
107 if($validate_settings['admin_ui_logo_type'] === 'image_logo') {
108 $settings['light_dark_mode']['admin_ui_light_mode']['admin_ui_light_logo']['url'] = wp_http_validate_url($validate_settings['admin_ui_light_mode']['admin_ui_light_logo']['url']);
109 }
110
111 }
112
113 // WP Footer Text
114 if( array_key_exists('footer_text', $validate_settings) ) {
115 $settings['white_label']['wordpress']['footer_text'] = wp_kses_post( $validate_settings['footer_text'] );
116 }
117
118 update_option('_wpadminify', $settings);
119 wp_send_json_success(
120 [
121 'redirect' => true,
122 ]
123 );
124 }
125
126 public function load_scripts() {
127
128 // Register
129 // wp_register_script('wp-adminify-vue-vendors', WP_ADMINIFY_ASSETS . 'admin/js/vendor' . Utils::assets_ext('.js'), [], WP_ADMINIFY_VER, true);
130 wp_register_style('wp-adminify-sw-setup', WP_ADMINIFY_ASSETS . 'css/setup.css');
131 wp_register_script('wp-adminify-sw-setup', WP_ADMINIFY_ASSETS . 'admin/js/wp-adminify--setup-wizard' . Utils::assets_ext('.js'), ['react', 'jquery'], WP_ADMINIFY_VER, true);
132
133 // Media uploader
134 wp_enqueue_media();
135
136 // Load
137 wp_enqueue_style('wp-adminify-sw-setup');
138 // wp_enqueue_script('media-upload');
139 wp_enqueue_script('wp-adminify-sw-setup');
140
141
142 // Localize Script
143 $adminify_data = [
144 // 'rest_base' => $this->get_rest_url(''),
145 'ajax_url' => admin_url('admin-ajax.php'),
146 'settings' => [
147 'admin_ui' => $this->options['admin_ui'],
148 'admin_ui_logo_type' => $this->options['light_dark_mode']['admin_ui_logo_type'],
149 'admin_ui_light_mode' => [
150 'admin_ui_light_logo' => [
151 'url' => $this->options['light_dark_mode']['admin_ui_light_mode']['admin_ui_light_logo']['url']
152 ],
153 'admin_ui_light_logo_text' => $this->options['light_dark_mode']['admin_ui_light_mode']['admin_ui_light_logo_text'],
154 ],
155 'footer_text' => $this->options['white_label']['wordpress']['footer_text'],
156 ],
157 'images' => WP_ADMINIFY_ASSETS_IMAGE,
158 'wpnonce' => wp_create_nonce('jltwp_adminify_sw'),
159 ];
160
161 wp_localize_script('wp-adminify-sw-setup', 'adminify_setup_wizard_data', $adminify_data);
162
163
164 // // Dequeue Styles
165 // // wp_dequeue_style('install');
166 // wp_deregister_style('install');
167 // // wp_deregister_style('dashicons');
168
169 // // Dequeue Scripts
170 // wp_deregister_script('debug-bar');
171 // wp_deregister_script('debug-bar-js');
172 // wp_deregister_script('admin-bar');
173 // wp_deregister_script('shortcode');
174
175 }
176
177 public function jltwp_adminify_setup_wizard() {
178 global $hook_suffix;
179
180 if (empty($_GET['page']) || 'wp-adminify-setup-wizard' !== $_GET['page']) {
181 return;
182 }
183
184 require_once ABSPATH . WPINC . '/media-template.php';
185 // add_action( 'admin_footer', 'wp_print_media_templates' );
186 // add_action( 'wp_footer', 'wp_print_media_templates' );
187 // add_action( 'customize_controls_print_footer_scripts', 'wp_print_media_templates' );
188
189 add_action( 'admin_print_footer_scripts', 'wp_print_media_templates' );
190
191 $this->load_scripts();
192
193 echo '<div id="wp-adminify--setup-wizard" class="wp-adminify-sw-setup-content"></div>';
194
195 // do_action('admin_footer');
196 // do_action("admin_print_footer_scripts-{$hook_suffix}");
197 do_action('admin_print_footer_scripts');
198 do_action("admin_footer-{$hook_suffix}");
199
200 exit;
201 }
202
203 }
204