PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.1.3
Adminify – White Label, Admin Menu Editor, Login Customizer v4.1.3
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.1.3, at Inc/Classes/Wizard/Adminify_Setup_Wizard.php

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