PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.0.4.6
Adminify – White Label, Admin Menu Editor, Login Customizer v4.0.4.6
4.3.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 All 165 releases
adminify / Inc / Classes / Wizard / Adminify_Setup_Wizard.php

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

205 lines 6.5 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 'rest_nonce' => wp_create_nonce('wp_rest')
160 ];
161
162 wp_localize_script('wp-adminify-sw-setup', 'adminify_setup_wizard_data', $adminify_data);
163
164
165 // // Dequeue Styles
166 // // wp_dequeue_style('install');
167 // wp_deregister_style('install');
168 // // wp_deregister_style('dashicons');
169
170 // // Dequeue Scripts
171 // wp_deregister_script('debug-bar');
172 // wp_deregister_script('debug-bar-js');
173 // wp_deregister_script('admin-bar');
174 // wp_deregister_script('shortcode');
175
176 }
177
178 public function jltwp_adminify_setup_wizard() {
179 global $hook_suffix;
180
181 if (empty($_GET['page']) || 'wp-adminify-setup-wizard' !== $_GET['page']) {
182 return;
183 }
184
185 require_once ABSPATH . WPINC . '/media-template.php';
186 // add_action( 'admin_footer', 'wp_print_media_templates' );
187 // add_action( 'wp_footer', 'wp_print_media_templates' );
188 // add_action( 'customize_controls_print_footer_scripts', 'wp_print_media_templates' );
189
190 add_action( 'admin_print_footer_scripts', 'wp_print_media_templates' );
191
192 $this->load_scripts();
193
194 echo '<div id="wp-adminify--setup-wizard" class="wp-adminify-sw-setup-content"></div>';
195
196 // do_action('admin_footer');
197 // do_action("admin_print_footer_scripts-{$hook_suffix}");
198 do_action('admin_print_footer_scripts');
199 do_action("admin_footer-{$hook_suffix}");
200
201 exit;
202 }
203
204 }
205