PluginProbe
Post Grid Gutenberg Blocks – PostX / 4.1.19
Post Grid Gutenberg Blocks – PostX v4.1.19
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 5.0.17 2.1.1 2.1.2 All 237 releases
ultimate-post / classes / Dashboard.php

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

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