PluginProbe
Post Grid Gutenberg Blocks – PostX / 5.1.0
Post Grid Gutenberg Blocks – PostX v5.1.0
5.1.1 5.1.0 5.0.41 5.0.39 5.0.38 5.0.37 5.0.36 5.0.35 5.0.34 5.0.33 5.0.32 5.0.31 5.0.30 5.0.29 5.0.28 5.0.27 5.0.26 5.0.25 5.0.23 5.0.24 5.0.22 5.0.21 5.0.20 5.0.19 5.0.18 All 240 releases
ultimate-post / classes / Dashboard.php

Dashboard.php in Post Grid Gutenberg Blocks – PostX 5.1.0, at classes/Dashboard.php

540 lines 16.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * All Dashboard handler
5 *
6 * @package ULTP\Dashboard
7 * @since 4.1.11
8 */
9
10 namespace ULTP;
11
12 defined( 'ABSPATH' ) || exit;
13
14 use ULTP\Includes\Durbin\DurbinClient;
15
16 /**
17 * Dashboard class.
18 *
19 * Handles the admin dashboard for Ultimate Post plugin.
20 *
21 * @package ULTP\Dashboard
22 * @since 4.0.0
23 */
24 class Dashboard {
25 /**
26 * Setup class.
27 *
28 * @since 4.0.0
29 * @return void
30 */
31 public function __construct() {
32 add_action( 'rest_api_init', array( $this, 'ultp_register_route' ) );
33 }
34
35 /**
36 * REST API Action
37 *
38 * @since 4.1.11
39 * @return void
40 */
41 public function ultp_register_route() {
42 register_rest_route(
43 'ultp/v2',
44 '/addon_block_action/',
45 array(
46 array(
47 'methods' => 'POST',
48 'callback' => array( $this, 'addon_block_action' ),
49 'permission_callback' => function () {
50 return current_user_can( 'manage_options' );
51 },
52 'args' => array(),
53 ),
54 )
55 );
56 register_rest_route(
57 'ultp/v2',
58 '/save_plugin_settings/',
59 array(
60 array(
61 'methods' => 'POST',
62 'callback' => array( $this, 'save_plugin_settings' ),
63 'permission_callback' => function () {
64 return current_user_can( 'manage_options' );
65 },
66 'args' => array(),
67 ),
68 )
69 );
70 register_rest_route(
71 'ultp/v2',
72 '/get_all_settings/',
73 array(
74 array(
75 'methods' => 'POST',
76 'callback' => array( $this, 'get_all_settings' ),
77 'permission_callback' => function () {
78 return current_user_can( 'manage_options' );
79 },
80 'args' => array(),
81 ),
82 )
83 );
84 register_rest_route(
85 'ultp/v2',
86 '/dashborad/',
87 array(
88 array(
89 'methods' => 'POST',
90 'callback' => array( $this, 'get_dashboard_callback' ),
91 'permission_callback' => function () {
92 return current_user_can( 'manage_options' );
93 },
94 'args' => array(),
95 ),
96 )
97 );
98 register_rest_route(
99 'ultp/v2',
100 '/wizard_site_status/',
101 array(
102 array(
103 'methods' => 'POST',
104 'callback' => array( $this, 'wizard_site_status_callback' ),
105 'permission_callback' => function () {
106 return current_user_can( 'manage_options' );
107 },
108 'args' => array(),
109 ),
110 )
111 );
112 register_rest_route(
113 'ultp/v2',
114 '/send_initial_plugin_data/',
115 array(
116 array(
117 'methods' => 'POST',
118 'callback' => array( $this, 'send_initial_plugin_data_callback' ),
119 'permission_callback' => function () {
120 return current_user_can( 'manage_options' );
121 },
122 'args' => array(),
123 ),
124 )
125 );
126 register_rest_route(
127 'ultp/v2',
128 '/initial_setup_complete/',
129 array(
130 array(
131 'methods' => 'POST',
132 'callback' => array( $this, 'initial_setup_complete_callback' ),
133 'permission_callback' => function () {
134 return current_user_can( 'manage_options' );
135 },
136 'args' => array(),
137 ),
138 )
139 );
140
141 register_rest_route(
142 'ultp/v2',
143 '/template_action/',
144 array(
145 array(
146 'methods' => 'POST',
147 'callback' => array( $this, 'template_page_action' ),
148 'permission_callback' => function () {
149 return current_user_can( 'manage_options' );
150 },
151 'args' => array(),
152 ),
153 )
154 );
155 }
156
157 /**
158 * Save addon/blocks on/off data.
159 *
160 * @since v.3.0.0
161 * @param OBJECT $server The REST server request object.
162 * @return ARRAY. Inserted post URL and status.
163 */
164 public function addon_block_action( $server ) {
165 $post = $server->get_params();
166 $addon_name = isset( $post['key'] ) ? ultimate_post()->ultp_rest_sanitize_params( $post['key'] ) : '';
167 $addon_value = isset( $post['value'] ) ? ultimate_post()->ultp_rest_sanitize_params( $post['value'] ) : '';
168 if ( $addon_name ) {
169 $addon_data = ultimate_post()->get_setting();
170 $addon_data[ $addon_name ] = $addon_value;
171 $GLOBALS['ultp_settings'][ $addon_name ] = $addon_value;
172 update_option( 'ultp_options', $addon_data );
173 }
174 return array(
175 'success' => true,
176 'message' => ( $addon_value == 'true' || $addon_value == 'false' ) ? ( $addon_value == 'true' ? __( 'The addon has been enabled.', 'ultimate-post' ) : __( 'The addon has been disabled.', 'ultimate-post' ) ) : ( $addon_value == 'yes' ? __( 'The block has been enabled.', 'ultimate-post' ) : __( 'The block has been disabled.', 'ultimate-post' ) ),
177 );
178 }
179
180 /**
181 * Save settings of option panel.
182 *
183 * @since v.3.0.0
184 * @param OBJECT $server The REST server request object.
185 * @return OBJECT REST response object.
186 */
187 public function save_plugin_settings( $server ) {
188 $post = $server->get_params();
189 $data = ultimate_post()->ultp_rest_sanitize_params( $post['settings'] );
190 if ( count( $data ) > 0 ) {
191 foreach ( $data as $key => $val ) {
192 ultimate_post()->set_setting( $key, $val );
193 }
194 // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Public hook; renaming breaks existing callbacks.
195 do_action( 'ultimate_post_after_setting_save' );
196 }
197 return rest_ensure_response(
198 array(
199 'success' => true,
200 'message' => __( 'You have successfully saved the settings data.', 'ultimate-post' ),
201 'wishListArr' => wp_json_encode( $data ),
202 )
203 );
204 }
205
206 /**
207 * Get all settings of option panel.
208 *
209 * @since v.3.0.0
210 * @param OBJECT $server The REST server request object.
211 * @return OBJECT REST response object.
212 */
213 public function get_all_settings( $server ) {
214 return rest_ensure_response(
215 array(
216 'success' => true,
217 'settings' => ultimate_post()->get_setting(),
218 )
219 );
220 }
221
222 /**
223 * Saved template & custom font actions.
224 *
225 * @since v.3.0.0
226 * @param OBJECT $server The REST server request object.
227 * @return ARRAY Inserted post URL and status.
228 */
229 public function get_dashboard_callback( $server ) {
230 $post = $server->get_params();
231 $request_type = isset( $post['type'] ) ? ultimate_post()->ultp_rest_sanitize_params( $post['type'] ) : '';
232 $pType = isset( $post['pType'] ) ? ultimate_post()->ultp_rest_sanitize_params( $post['pType'] ) : '';
233 switch ( $request_type ) {
234
235 case 'saved_templates':
236 $post_per_page = 10;
237 $data = array();
238 $args = array(
239 'post_type' => $pType,
240 'post_status' => array( 'publish', 'draft' ),
241 'posts_per_page' => $post_per_page,
242 'paged' => isset( $post['pages'] ) ? ultimate_post()->ultp_rest_sanitize_params( $post['pages'] ) : 1,
243 );
244
245 if ( isset( $post['search'] ) ) {
246 $args['paged'] = 1;
247 $args['s'] = ultimate_post()->ultp_rest_sanitize_params( $post['search'] );
248 }
249
250 $the_query = new \WP_Query( $args );
251 if ( $the_query->have_posts() ) {
252 while ( $the_query->have_posts() ) {
253 $the_query->the_post();
254 $final = array(
255 'id' => get_the_ID(),
256 'title' => get_the_title(),
257 'date' => get_the_modified_date( 'Y/m/d h:i a' ),
258 'status' => get_post_status(),
259 'edit' => get_edit_post_link(),
260 );
261
262 if ( $pType == 'ultp_custom_font' ) {
263 $final = array_merge(
264 $final,
265 array(
266 'woff' => false,
267 'woff2' => false,
268 'ttf' => false,
269 'svg' => false,
270 'eot' => false,
271 )
272 );
273 $settings = get_post_meta( get_the_ID(), '__font_settings', true );
274 foreach ( $settings as $key => $value ) {
275 if ( $value['ttf'] ) {
276 $final['ttf'] = true;
277 }
278 if ( $value['svg'] ) {
279 $final['svg'] = true;
280 }
281 if ( $value['eot'] ) {
282 $final['eot'] = true;
283 }
284 if ( $value['woff'] ) {
285 $final['woff'] = true;
286 }
287 if ( $value['woff2'] ) {
288 $final['woff2'] = true;
289 }
290 }
291 $final['font_settings'] = $settings;
292 }
293 $data[] = $final;
294 }
295 }
296 wp_reset_postdata();
297 return array(
298 'success' => true,
299 'data' => $data,
300 'new' => ( $pType == 'ultp_custom_font' ? admin_url( 'post-new.php?post_type=ultp_custom_font' ) : admin_url( 'post-new.php?post_type=ultp_templates' ) ),
301 'found' => $the_query->found_posts,
302 'pages' => $the_query->max_num_pages,
303 );
304 break;
305
306 case 'action_draft':
307 case 'action_publish':
308 if ( isset( $post['ids'] ) && is_array( $post['ids'] ) ) {
309 $post_ids = ultimate_post()->ultp_rest_sanitize_params( $post['ids'] );
310 foreach ( $post_ids as $id ) {
311 wp_update_post(
312 array(
313 'ID' => $id,
314 'post_status' => str_replace( 'action_', '', $request_type ),
315 )
316 );
317 }
318 return array(
319 'success' => true,
320 'message' => __( 'Status changed for selected items.', 'ultimate-post' ),
321 );
322 }
323 break;
324
325 case 'action_delete':
326 if ( isset( $post['ids'] ) && is_array( $post['ids'] ) ) {
327 $post_ids = ultimate_post()->ultp_rest_sanitize_params( $post['ids'] );
328 foreach ( $post_ids as $id ) {
329 wp_delete_post( $id, true );
330 }
331 }
332 return array(
333 'success' => true,
334 'message' => __( 'The selected item is deleted.', 'ultimate-post' ),
335 );
336
337 case 'support_data':
338 $user_info = get_userdata( get_current_user_id() );
339 $name = $user_info->first_name . ( $user_info->last_name ? ' ' . $user_info->last_name : '' );
340 return array(
341 'success' => true,
342 'data' => array(
343 'name' => $name ? $name : $user_info->user_login,
344 'email' => $user_info->user_email,
345 ),
346 );
347
348 case 'support_action':
349 $api_params = array(
350 'user_name' => isset( $post['name'] ) ? ultimate_post()->ultp_rest_sanitize_params( $post['name'] ) : '',
351 'user_email' => isset( $post['email'] ) ? sanitize_email( $post['email'] ) : '',
352 'subject' => isset( $post['subject'] ) ? ultimate_post()->ultp_rest_sanitize_params( $post['subject'] ) : '',
353 'desc' => isset( $post['desc'] ) ? sanitize_textarea_field( $post['desc'] ) : '',
354 );
355 $response = wp_remote_get(
356 'https://wpxpo.com/wp-json/v2/support_mail',
357 array(
358 'method' => 'POST',
359 'timeout' => 120,
360 'body' => $api_params,
361 )
362 );
363 $response_data = json_decode( $response['body'] );
364 $success = ( isset( $response_data->success ) && $response_data->success ) ? true : false;
365
366 return array(
367 'success' => $success,
368 'message' => $success ? __( 'New Support Ticket has been Created.', 'ultimate-post' ) : __( 'New Support Ticket is not Created Due to Some Issues.', 'ultimate-post' ),
369 );
370 break;
371
372 case 'helloBarAction':
373 set_transient( 'ultp_helloBar' . ULTP_HELLOBAR, 'hide', 1296000 );
374 return array(
375 'success' => true,
376 'message' => __( 'Notice is removed.', 'ultimate-post' ),
377 );
378 break;
379 case 'generalDiscountAction':
380 set_transient( 'ultp_generalDiscount', 'hide', 60 * DAY_IN_SECONDS );
381 return array(
382 'success' => true,
383 'message' => __( 'Notice is removed.', 'ultimate-post' ),
384 );
385 break;
386
387 default:
388 // code...
389 break;
390 }
391 }
392
393 /**
394 * Wizard site status callback.
395 *
396 * @since v.3.0.0
397 * @return OBJECT. REST response object.
398 */
399 public static function wizard_site_status_callback() {
400 if ( ! ( isset( $_POST['wpnonce'] ) && wp_verify_nonce( sanitize_key( wp_unslash( $_POST['wpnonce'] ) ), 'ultp-admin-nonce' ) ) ) {
401 die();
402 }
403 if ( isset( $_POST['siteType'] ) ) {
404 $site_type = ultimate_post()->ultp_rest_sanitize_params( wp_unslash( $_POST['siteType'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Sanitized by ultp_rest_sanitize_params().
405 update_option( '__ultp_site_type', $site_type );
406 }
407 DurbinClient::send( DurbinClient::WIZARD_ACTION );
408
409 return rest_ensure_response( array( 'success' => true ) );
410 }
411
412 /**
413 * Send plugin data when initial setup.
414 *
415 * @since v.2.8.1
416 * @param OBJECT $server The REST server request object.
417 */
418 public function send_initial_plugin_data_callback( $server ) {
419 $post = $server->get_params();
420 if ( ! ( isset( $post['wpnonce'] ) && wp_verify_nonce( sanitize_key( wp_unslash( $post['wpnonce'] ) ), 'ultp-admin-nonce' ) ) ) {
421 die();
422 }
423
424 $site = isset( $post['site'] ) ? ultimate_post()->ultp_rest_sanitize_params( $post['site'] ) : '';
425
426 DurbinClient::send( DurbinClient::WIZARD_ACTION );
427 }
428
429 /**
430 * Initial plugin setup complete callback.
431 *
432 * @since v.2.8.1
433 * @param OBJECT $server The REST server request object.
434 * @return OBJECT REST response object.
435 */
436 public static function initial_setup_complete_callback( $server ) {
437 $post = $server->get_params();
438 if ( ! ( isset( $post['wpnonce'] ) && wp_verify_nonce( sanitize_key( wp_unslash( $post['wpnonce'] ) ), 'ultp-admin-nonce' ) ) ) {
439 die();
440 }
441 ultimate_post()->set_setting( 'init_setup', 'yes' );
442 return rest_ensure_response(
443 array(
444 'success' => true,
445 'redirect' => admin_url( 'admin.php?page=ultp-settings#home' ),
446 )
447 );
448 }
449
450 /**
451 * Delete template page and handle builder, saved templates, custom font actions.
452 *
453 * @since v.2.6.6 Shifted from RequestAPI since v4.0.3
454 * @param OBJECT $server The REST server request object.
455 * @return ARRAY Success message.
456 */
457 public function template_page_action( $server ) {
458 $post = $server->get_params();
459 $message = '';
460 $s_Type = isset( $post['type'] ) ? ultimate_post()->ultp_rest_sanitize_params( $post['type'] ) : '';
461 $s_id = isset( $post['id'] ) ? ultimate_post()->ultp_rest_sanitize_params( $post['id'] ) : '';
462 $s_status = isset( $post['status'] ) ? ultimate_post()->ultp_rest_sanitize_params( $post['status'] ) : '';
463
464 if ( $s_Type && $s_id ) {
465 if ( $s_Type == 'delete' ) {
466 if ( isset( $post['section'] ) && $post['section'] == 'builder' ) { // phpcs:ignore WordPress.Security
467 $conditions = get_option( 'ultp_builder_conditions', array() );
468 $builder_type = get_post_meta( $s_id, '__ultp_builder_type', true );
469 if ( isset( $conditions[ $builder_type ][ $s_id ] ) ) {
470 unset( $conditions[ $builder_type ][ $s_id ] );
471 update_option( 'ultp_builder_conditions', $conditions );
472 }
473 }
474 wp_delete_post( $s_id, true );
475 $message = __( 'Template has been deleted.', 'ultimate-post' );
476 } elseif ( $s_Type == 'duplicate' ) {
477 $fromBuilder = ( isset( $post['section'] ) && $post['section'] == 'builder' ) ? true : false; // phpcs:ignore WordPress.Security
478 $post_id = $s_id;
479 $r_post = get_post( $post_id );
480 $current_user = wp_get_current_user();
481 $new_post_author = $current_user->ID;
482 if ( isset( $r_post ) && $r_post != null ) {
483 $args = array(
484 'post_author' => $new_post_author,
485 'post_content' => str_replace( array( 'u0022', 'u002d' ), array( '\u0022', '\u002d' ), $r_post->post_content ),
486 'post_excerpt' => $r_post->post_excerpt,
487 'post_name' => $r_post->post_name,
488 'post_status' => $fromBuilder ? 'draft' : $r_post->post_status,
489 'post_title' => $r_post->post_title,
490 'post_type' => $r_post->post_type,
491 );
492 }
493 $new_post_id = wp_insert_post( $args );
494
495 $css = get_post_meta( $post_id, '_ultp_css', true );
496 update_post_meta( $new_post_id, '_ultp_css', $css );
497 update_post_meta( $new_post_id, '_ultp_active', 'yes' );
498
499 if ( $fromBuilder ) {
500 $type = get_post_meta( $post_id, '__ultp_builder_type', true );
501 update_post_meta( $new_post_id, '__ultp_builder_type', $type );
502
503 $width = get_post_meta( $post_id, '__container_width', true );
504 update_post_meta( $new_post_id, '__container_width', $width );
505
506 $sidebar = get_post_meta( $post_id, '__builder_sidebar', true );
507 update_post_meta( $new_post_id, '__builder_sidebar', $sidebar );
508
509 $widget_area = get_post_meta( $post_id, '__builder_widget_area', true );
510 update_post_meta( $new_post_id, '__builder_widget_area', $widget_area );
511
512 $conditions = get_option( 'ultp_builder_conditions', array() );
513 if ( $conditions && $type ) {
514 if ( isset( $conditions[ $type ][ $post_id ] ) ) {
515 $conditions[ $type ][ $new_post_id ] = $conditions[ $type ][ $post_id ];
516 update_option( 'ultp_builder_conditions', $conditions );
517 }
518 }
519 }
520 $message = __( 'Template has been duplicated.', 'ultimate-post' );
521 } elseif ( $s_Type == 'status' ) {
522 if ( $s_status ) {
523 wp_update_post(
524 array(
525 'ID' => $s_id,
526 'post_status' => $s_status,
527 )
528 );
529 }
530 $message = __( 'Status has been changed.', 'ultimate-post' );
531 }
532 }
533
534 return array(
535 'success' => true,
536 'message' => $message,
537 );
538 }
539 }
540