PluginProbe
Post Grid Gutenberg Blocks – PostX / 5.0.23
Post Grid Gutenberg Blocks – PostX v5.0.23
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 5.0.17 2.1.1 All 238 releases
ultimate-post / classes / Initialization.php

Initialization.php in Post Grid Gutenberg Blocks – PostX 5.0.23, at classes/Initialization.php

624 lines 20.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Initialization Action.
5 *
6 * @package ULTP\ULTP_Initialization
7 * @since v.1.1.0
8 */
9
10 namespace ULTP;
11
12 defined( 'ABSPATH' ) || exit;
13
14 use ULTP\Includes\Durbin\Xpo;
15 use ULTP\Includes\Notice\Notice;
16
17 /**
18 * Initialization class.
19 *
20 * Handles plugin initialization for Ultimate Post.
21 *
22 * @package ULTP\Initialization
23 * @since 4.0.0
24 */
25 class ULTP_Initialization {
26
27 /**
28 * Setup class.
29 *
30 * @since 4.0.0
31 * @return void No return value.
32 */
33 public function __construct() {
34
35 $this->compatibility_check();
36 $this->requires();
37 $this->include_addons();
38
39 add_filter( 'admin_body_class', array( $this, 'add_admin_body_class' ) ); // add body class in editor.
40 add_filter( 'body_class', array( $this, 'add_body_class' ) ); // add body class in front end.
41
42 add_action( 'wp', array( $this, 'popular_posts_tracker_callback' ) );
43 add_action( 'after_setup_theme', array( $this, 'add_image_size' ) );
44 add_filter( 'block_categories_all', array( $this, 'register_category_callback' ), 999999999, 2 ); // Block Category Register.
45
46 add_filter( 'safe_style_css', array( $this, 'ultp_handle_safe_style_css' ) ); // support for css used in svg icon.
47 add_filter( 'wp_kses_allowed_html', array( $this, 'ultp_handle_allowed_html' ), 99, 2 ); // support for svg icon used in list, row, icon block.
48
49 add_action( 'enqueue_block_editor_assets', array( $this, 'register_block_scripts_editor_area' ) ); // Only editor.
50 add_action( 'admin_enqueue_scripts', array( $this, 'register_option_panel_scripts_callback' ) ); // Option Panel.
51 register_activation_hook( ULTP_PATH . 'ultimate-post.php', array( $this, 'plugin_activation_hook' ) );
52 add_action( 'activated_plugin', array( $this, 'ultp_plugin_activation' ) ); // Plugin Activation Call.
53 // new Notice();
54 }
55
56 /**
57 * Check plugin compatibility.
58 *
59 * @since v.1.0.0
60 * @return void
61 */
62 public function compatibility_check() {
63 require_once ULTP_PATH . 'classes/Compatibility.php';
64 new \ULTP\Compatibility();
65 }
66
67 /**
68 * Load all required classes.
69 *
70 * @since v.1.0.0
71 * @return void No return value.
72 */
73 public function requires() {
74 require_once ULTP_PATH . 'classes/Styles.php';
75 require_once ULTP_PATH . 'classes/Options.php';
76 require_once ULTP_PATH . 'classes/REST_API.php';
77 require_once ULTP_PATH . 'classes/Caches.php';
78 require_once ULTP_PATH . 'classes/Importer.php';
79 require_once ULTP_PATH . 'classes/Dashboard.php';
80 require_once ULTP_PATH . 'classes/Blocks.php';
81 new \ULTP\REST_API();
82 new \ULTP\Options();
83 new \ULTP\Caches();
84 new \ULTP\Styles();
85 new \ULTP\Importer();
86 new \ULTP\Dashboard();
87 new \ULTP\Blocks();
88
89 require_once ULTP_PATH . 'includes/durbin/class-durbin-client.php';
90 require_once ULTP_PATH . 'includes/durbin/class-xpo.php';
91 require_once ULTP_PATH . 'includes/deactive/class-deactive.php';
92 require_once ULTP_PATH . 'includes/notice/class-notice.php';
93 require_once ULTP_PATH . 'includes/durbin/class-our-plugins.php';
94 require_once ULTP_PATH . 'includes/notice/class-wow-shipping-promotion.php';
95 require_once ULTP_PATH . 'includes/notice/class-wow-revenue-promotion.php';
96 require_once ULTP_PATH . 'includes/notice/class-wow-addons-promotion.php';
97 new \ULTP\Includes\Deactive\Deactive();
98 new \ULTP\Includes\notice\Notice();
99 new \ULTP\Includes\notice\WowShippingPromotion();
100 new \ULTP\Includes\notice\WowRevenuePromotion();
101 new \ULTP\Includes\notice\WowAddonsPromotion();
102 new \ULTP\Includes\Durbin\OurPlugins();
103 }
104
105 /**
106 * Include all addons from the addons directory.
107 *
108 * @since v.1.0.0
109 * @return void
110 */
111 public function include_addons() {
112 $addons_dir = array_filter( glob( ULTP_PATH . 'addons/*' ), 'is_dir' );
113 if ( count( $addons_dir ) > 0 ) {
114 foreach ( $addons_dir as $key => $value ) {
115 $addon_dir_name = str_replace( dirname( $value ) . '/', '', $value );
116 $file_name = ULTP_PATH . 'addons/' . $addon_dir_name . '/init.php';
117 if ( file_exists( $file_name ) ) {
118 include_once $file_name;
119 }
120 }
121 }
122 }
123
124
125 /**
126 * Add admin body class in editor.
127 *
128 * @since v.3.1.6
129 * @param STRING $classes The existing admin body classes.
130 * @return STRING Modified admin body classes.
131 */
132 public function add_admin_body_class( $classes ) {
133 $classes .= ' postx-admin-page ';
134 return $classes;
135 }
136
137 /**
138 * Add body class in front end.
139 *
140 * @since v.3.1.6
141 * @param ARRAY $classes The existing body classes.
142 * @return ARRAY Modified body classes.
143 */
144 public function add_body_class( $classes ) {
145 $classes[] = 'postx-page';
146 return $classes;
147 }
148
149 /**
150 * Post view counter for every post.
151 *
152 * @since v.1.0.0
153 * @param INT $post_id The post ID.
154 * @return NULL No return value.
155 */
156 public function popular_posts_tracker_callback( $post_id ) {
157 if ( ! is_single() ) {
158 return;
159 }
160 global $post;
161 $post_id = isset( $post->ID ) ? $post->ID : '';
162 $isEnable = apply_filters( 'ultp_view_cookies', true );
163 // add_filter( 'ultp_view_cookies', '__return_false' );
164 $cookies_disable = ultimate_post()->get_setting( 'disable_view_cookies' );
165 if ( $post_id && $isEnable && $cookies_disable != 'yes' ) {
166 $has_cookie = isset( $_COOKIE[ 'ultp_view_' . $post_id ] ) ? sanitize_text_field( $_COOKIE[ 'ultp_view_' . $post_id ] ) : false;
167 if ( ! $has_cookie ) {
168 $count = (int) get_post_meta( $post_id, '__post_views_count', true );
169 update_post_meta( $post_id, '__post_views_count', $count ? (int) $count + 1 : 1 );
170 setcookie( 'ultp_view_' . $post_id, 1, time() + 86400, COOKIEPATH ); // 1 days cookies
171 }
172 }
173 }
174
175 /**
176 * Set image sizes for the plugin.
177 *
178 * @since v.1.0.0
179 * @return void No return value.
180 */
181 public function add_image_size() {
182 $size_disable = ultimate_post()->get_setting( 'disable_image_size' );
183 if ( $size_disable != 'yes' ) {
184 add_image_size( 'ultp_layout_landscape_large', 1200, 800, true );
185 add_image_size( 'ultp_layout_landscape', 870, 570, true );
186 add_image_size( 'ultp_layout_portrait', 600, 900, true );
187 add_image_size( 'ultp_layout_square', 600, 600, true );
188 }
189 }
190
191 /**
192 * Block categories initialization.
193 *
194 * @since v.1.0.0
195 * @param ARRAY $categories The block categories.
196 * @param ARRAY $post The post object.
197 * @return ARRAY Modified block categories.
198 */
199 public function register_category_callback( $categories, $post ) {
200 $attr = array(
201 array(
202 'slug' => 'ultimate-post',
203 'title' => __( 'PostX - Gutenberg Post Blocks', 'ultimate-post' ),
204 ),
205 array(
206 'slug' => 'postx-site-builder',
207 'title' => __( 'PostX Site Builder', 'ultimate-post' ),
208 ),
209 );
210 return array_merge( $attr, $categories );
211 }
212
213 /**
214 * Add support for CSS to use SVG.
215 *
216 * @since 4.0.0
217 * @param ARRAY $styles The allowed CSS styles.
218 * @return ARRAY Modified allowed CSS styles.
219 */
220 public function ultp_handle_safe_style_css( $styles ) {
221 if ( ! is_multisite() && ! current_user_can( 'edit_posts' ) ) {
222 return $styles;
223 }
224 return array_merge(
225 $styles,
226 array(
227 'opacity',
228 // for SVG gradients.
229 // 'stop-opacity',
230 // 'stop-color',
231 )
232 );
233 }
234
235 /**
236 * Add support for HTML tags to use SVG.
237 *
238 * @since 4.0.0
239 * @param ARRAY $tags The allowed HTML tags.
240 * @param STRING $context The context for allowed HTML.
241 * @return ARRAY Modified allowed HTML tags.
242 */
243 public function ultp_handle_allowed_html( $tags, $context ) {
244 if ( 'post' !== $context && ! is_multisite() && ! current_user_can( 'edit_posts' ) ) {
245 return $tags;
246 }
247 if ( ! isset( $tags['svg'] ) ) {
248 $tags['svg'] = array_merge(
249 array(
250 'xmlns' => true,
251 // 'xmlns:xlink' => true,
252 // 'xlink:href' => true,
253 // 'xml:id' => true,
254 // 'xlink:title' => true,
255 // 'xml:space' => true,
256 'viewbox' => true,
257 'enable-background' => true,
258 'version' => true,
259 'preserveaspectratio' => true,
260 'fill' => true,
261 )
262 );
263 }
264 if ( ! isset( $tags['path'] ) || ! is_array( $tags['path'] ) ) {
265 $tags['path'] = array();
266 }
267
268 $tags['path'] = array_merge(
269 $tags['path'],
270 array(
271 'd' => true,
272 'stroke' => true,
273 'stroke-miterlimit' => true,
274 'data-original' => true,
275 'class' => true,
276 'transform' => true,
277 'style' => true,
278 'opacity' => true,
279 'fill' => true,
280 'stroke-width' => true,
281 'stroke-linecap' => true,
282 'stroke-linejoin' => true,
283 )
284 );
285
286 if ( ! isset( $tags['g'] ) ) {
287 $tags['g'] = array(
288 'transform' => true,
289 'clip-path' => true,
290 );
291 }
292 if ( ! isset( $tags['clippath'] ) ) {
293 $tags['clippath'] = array();
294 }
295 if ( ! isset( $tags['defs'] ) ) {
296 $tags['defs'] = array();
297 }
298 if ( ! isset( $tags['rect'] ) ) {
299 $tags['rect'] = array(
300 'rx' => true,
301 'height' => true,
302 'width' => true,
303 'transform' => true,
304 'x' => true,
305 'fill' => true,
306 );
307 }
308 if ( ! isset( $tags['circle'] ) ) {
309 $tags['circle'] = array(
310 'cx' => true,
311 'cy' => true,
312 'transform' => true,
313 'r' => true,
314 );
315 }
316 if ( ! isset( $tags['polygon'] ) ) {
317 $tags['polygon'] = array(
318 'points' => true,
319 );
320 }
321 if ( ! isset( $tags['lineargradient'] ) ) {
322 $tags['lineargradient'] = array(
323 'gradienttransform' => true,
324 'id' => true,
325 );
326 }
327 if ( ! isset( $tags['stop'] ) ) {
328 $tags['stop'] = array(
329 'offset' => true,
330 'stop-color' => true,
331 'style' => true,
332 'stop-opacity' => true,
333 );
334 }
335 return $tags;
336 }
337
338 /**
339 * Plugin activation callback.
340 *
341 * @since v.1.1.0
342 * @param STRING $plugin The plugin file path.
343 * @return NULL No return value.
344 */
345 public function ultp_plugin_activation( $plugin ) {
346 if ( wp_doing_ajax() ) {
347 return;
348 }
349 if ( $plugin == 'ultimate-post/ultimate-post.php' ) {
350 if ( wp_doing_ajax() || is_network_admin() || isset( $_GET['activate-multi'] ) || isset( $_POST['action'] ) && 'activate-selected' == $_POST['action'] ) {
351 return;
352 }
353 if ( ultimate_post()->get_setting( 'init_setup' ) != 'yes' ) {
354 ultimate_post()->set_setting( 'init_setup', 'yes' );
355 exit(wp_safe_redirect(admin_url('admin.php?page=ultp-setup-wizard'))); //phpcs:ignore
356 } else {
357 exit(wp_safe_redirect(admin_url('admin.php?page=ultp-settings#home'))); //phpcs:ignore
358 }
359 }
360 }
361
362 /**
363 * Enqueue option panel CSS and JS scripts.
364 *
365 * @since v.1.0.0
366 * @return void No return value.
367 */
368 public function register_option_panel_scripts_callback() {
369 $is_active = ultimate_post()->is_lc_active();
370 $license_key = Xpo::get_lc_key();
371 $_page = isset($_GET['page']) ? sanitize_text_field($_GET['page']) : ''; // @codingStandardsIgnoreLine
372 $post_type = get_post_type();
373
374 wp_enqueue_style( 'wp-color-picker' );
375 wp_enqueue_script( 'wp-color-picker' );
376
377 wp_enqueue_script( 'ultp-option-script', ULTP_URL . 'assets/js/ultp-option.js', array( 'jquery' ), ULTP_VER, true );
378 wp_enqueue_style( 'ultp-option-style', ULTP_URL . 'assets/css/ultp-option.css', array(), ULTP_VER );
379 wp_localize_script(
380 'ultp-option-script',
381 'ultp_option_panel',
382 array(
383 'url' => ULTP_URL,
384 'version' => ULTP_VER,
385 'active' => $is_active,
386 'security' => wp_create_nonce( 'ultp-nonce' ),
387 'ajax' => admin_url( 'admin-ajax.php' ),
388 'settings' => ultimate_post()->get_setting(),
389 'post_type' => $post_type,
390 'saved_template_url' => admin_url( 'admin.php?page=ultp-settings#saved-templates' ),
391 )
392 );
393
394 if ( $post_type == 'ultp_custom_font' ) {
395 $font_settings = ultimate_post()->get_setting( 'ultp_custom_font' );
396 if ( $font_settings == 'true' ) {
397 wp_enqueue_media();
398 }
399 }
400
401 /* === Installation Wizard === */
402 if ( $_page == 'ultp-setup-wizard' ) {
403 wp_enqueue_script( 'ultp-initial-setup-script', ULTP_URL . 'assets/js/ultp_initial_setup_min.js', array( 'wp-i18n', 'wp-api-fetch', 'wp-api-request' ), ULTP_VER, true );
404 wp_set_script_translations( 'ultp-initial-setup-script', 'ultimate-post', ULTP_PATH . 'languages/' );
405 }
406
407 /* === Builder And Setting Pannel === */
408 if ( get_post_type( get_the_ID() ) == 'ultp_builder' ) {
409 wp_enqueue_script( 'ultp-conditions-script', ULTP_URL . 'addons/builder/assets/js/conditions.js', array( 'wp-i18n', 'wp-api-fetch', 'wp-components', 'wp-i18n', 'wp-blocks' ), ULTP_VER, true );
410 wp_localize_script(
411 'ultp-conditions-script',
412 'ultp_condition',
413 array(
414 'url' => ULTP_URL,
415 'active' => $is_active,
416 'builder_url' => admin_url( 'admin.php?page=ultp-settings#builder' ),
417 )
418 );
419 wp_set_script_translations( 'ultp-conditions-script', 'ultimate-post', ULTP_PATH . 'languages/' );
420 }
421
422 /* === Dashboard === */
423 if ( $_page == 'ultp-settings' ) {
424 wp_enqueue_script( 'ultp-dashboard-script', ULTP_URL . 'assets/js/ultp_dashboard_min.js', array( 'wp-i18n', 'wp-api-fetch', 'wp-api-request', 'wp-components', 'wp-blocks' ), ULTP_VER, true );
425 $user_info = get_userdata( get_current_user_id() );
426 wp_localize_script(
427 'ultp-dashboard-script',
428 'ultp_dashboard_pannel',
429 array_merge(
430 array(
431 'ajax' => admin_url( 'admin-ajax.php' ),
432 'security' => wp_create_nonce( 'ultp-nonce' ),
433 'url' => ULTP_URL,
434 'active' => $is_active,
435 'license' => $license_key,
436 'settings' => ultimate_post()->get_setting(),
437 'addons_settings' => apply_filters( 'ultp_settings', array() ),
438 'builder_url' => admin_url( 'admin.php?page=ultp-settings#builder' ),
439 'version' => ULTP_VER,
440 'setup_wizard_link' => admin_url( 'admin.php?page=ultp-setup-wizard' ),
441 'is_free' => ! $is_active,
442 'user_email' => wp_get_current_user()->user_email,
443 'home_url' => home_url(),
444 'generalDiscount' => get_transient( 'ultp_generalDiscount' ),
445 'helloBar' => Notice::get_hellobar_config(),
446 'userInfo' => array(
447 'name' => $user_info->first_name ? $user_info->first_name . ( $user_info->last_name ? ' ' . $user_info->last_name : '' ) : $user_info->user_login,
448 'email' => $user_info->user_email,
449 ),
450 ),
451 Xpo::get_wow_products_details()
452 )
453 );
454 wp_set_script_translations( 'ultp-dashboard-script', 'ultimate-post', ULTP_PATH . 'languages/' );
455 }
456 }
457
458 /**
459 * Enqueue backend CSS and JS scripts for the block editor.
460 *
461 * @since v.1.0.0
462 * @return void No return value.
463 */
464 public function register_block_scripts_editor_area() {
465 ultimate_post()->register_scripts_common();
466 global $pagenow;
467 $depends = 'wp-editor';
468 if ( $pagenow === 'widgets.php' ) {
469 $depends = 'wp-edit-widgets';
470 }
471 wp_enqueue_script( 'ultp-blocks-editor-script', ULTP_URL . 'assets/js/editor.blocks.js', array( 'wp-i18n', 'wp-element', 'wp-blocks', 'wp-components', $depends ), ULTP_VER, true );
472 wp_enqueue_style( 'ultp-blocks-editor-css', ULTP_URL . 'assets/css/blocks.editor.css', array(), ULTP_VER );
473 if ( is_rtl() ) {
474 wp_enqueue_style( 'ultp-blocks-editor-rtl-css', ULTP_URL . 'assets/css/rtl.css', array(), ULTP_VER );
475 }
476 $is_active = ultimate_post()->is_lc_active();
477 $post_type = get_post_type();
478
479 // Custom Font Support Added
480 $font_settings = ultimate_post()->get_setting( 'ultp_custom_font' );
481 $custom_fonts = array();
482 if ( $font_settings == 'true' ) {
483 $args = array(
484 'post_type' => 'ultp_custom_font',
485 'post_status' => 'publish',
486 'numberposts' => -1,
487 'order' => 'ASC',
488 );
489 $posts = get_posts( $args );
490 if ( $posts ) {
491 foreach ( $posts as $post ) {
492 setup_postdata( $post );
493 $font = get_post_meta( $post->ID, '__font_settings', true );
494
495 if ( $font ) {
496 array_push(
497 $custom_fonts,
498 array(
499 'title' => $post->post_title,
500 'font' => $font,
501 )
502 );
503 }
504 }
505 wp_reset_postdata();
506 }
507 }
508
509 wp_localize_script(
510 'ultp-blocks-editor-script',
511 'ultp_data',
512 array(
513 'url' => ULTP_URL,
514 'ajax' => admin_url( 'admin-ajax.php' ),
515 'security' => wp_create_nonce( 'ultp-nonce' ),
516 'hide_import_btn' => ultimate_post()->get_setting( 'hide_import_btn' ),
517 'premium_link' => Xpo::generate_utm_link(),
518 'license' => $is_active ? Xpo::get_lc_key() : '',
519 'active' => $is_active,
520 'archive' => ultimate_post()->is_archive_builder(),
521 'settings' => ultimate_post()->get_setting(),
522 'post_type' => $post_type == 'premade' ? 'ultp_builder' : $post_type, // premade used for ultp.wpxpo.com
523 'date_format' => get_option( 'date_format' ),
524 'time_format' => get_option( 'time_format' ),
525 'blog' => get_current_blog_id(),
526 'affiliate_id' => apply_filters( 'ultp_affiliate_id', false ),
527 'category_url' => admin_url( 'edit-tags.php?taxonomy=category' ),
528 'disable_image_size' => ultimate_post()->get_setting( 'disable_image_size' ),
529 'dark_logo' => get_option( 'ultp_site_dark_logo' ) ? get_option( 'ultp_site_dark_logo' ) : false,
530 'builder_url' => admin_url( 'admin.php?page=ultp-settings#builder' ),
531 'custom_fonts' => $custom_fonts,
532 )
533 );
534 wp_set_script_translations( 'ultp-blocks-editor-script', 'ultimate-post', ULTP_PATH . 'languages/' );
535 }
536
537
538 /**
539 * Fire when plugin is first installed.
540 *
541 * @since v.1.0.0
542 * @return void No return value.
543 */
544 public function plugin_activation_hook() {
545 $data = get_option( 'ultp_options', array() );
546 $currentDate = new \DateTime();
547 $currentDate->setTime( 0, 0, 0, 0 );
548 $init_data = array(
549 'preloader_style' => 'style1',
550 'preloader_color' => '#037fff',
551 'container_width' => '1140',
552 'hide_import_btn' => '',
553 'disable_image_size' => '',
554 'disable_view_cookies' => '',
555 'disable_google_font' => '',
556 'ultp_templates' => 'true',
557 'ultp_elementor' => 'true',
558 'ultp_table_of_content' => 'true',
559 'ultp_builder' => 'true',
560 'ultp_dynamic_content' => 'true',
561 'ultp_custom_font' => 'true',
562 'ultp_chatgpt' => 'true',
563 'post_grid_1' => 'yes',
564 'post_grid_2' => 'yes',
565 'post_grid_3' => 'yes',
566 'post_grid_4' => 'yes',
567 'post_grid_5' => 'yes',
568 'post_grid_6' => 'yes',
569 'post_grid_7' => 'yes',
570 'post_list_1' => 'yes',
571 'post_list_2' => 'yes',
572 'post_list_3' => 'yes',
573 'post_list_4' => 'yes',
574 'post_module_1' => 'yes',
575 'post_module_2' => 'yes',
576 'post_slider_1' => 'yes',
577 'post_slider_2' => 'yes',
578 'heading' => 'yes',
579 'image' => 'yes',
580 'taxonomy' => 'yes',
581 'wrapper' => 'yes',
582 'news_ticker' => 'yes',
583 'accordion' => 'yes',
584 'star_rating' => 'yes',
585 'youtube_gallery' => 'yes',
586 'builder_advance_post_meta' => 'yes',
587 'builder_archive_title' => 'yes',
588 'builder_author_box' => 'yes',
589 'builder_post_next_previous' => 'yes',
590 'builder_post_author_meta' => 'yes',
591 'builder_post_breadcrumb' => 'yes',
592 'builder_post_category' => 'yes',
593 'builder_post_comment_count' => 'yes',
594 'builder_post_comments' => 'yes',
595 'builder_post_content' => 'yes',
596 'builder_post_date_meta' => 'yes',
597 'builder_post_excerpt' => 'yes',
598 'builder_post_featured_image' => 'yes',
599 'builder_post_reading_time' => 'yes',
600 'builder_post_social_share' => 'yes',
601 'builder_post_tag' => 'yes',
602 'builder_post_title' => 'yes',
603 'builder_post_view_count' => 'yes',
604 'save_version' => wp_rand( 1, 1000 ),
605 'activated_date' => $currentDate->getTimestamp(),
606 );
607 if ( empty( $data ) ) {
608 update_option( 'ultp_options', $init_data );
609 $GLOBALS['ultp_settings'] = $init_data;
610 } else {
611 foreach ( $init_data as $key => $single ) {
612 if ( ! isset( $data[ $key ] ) ) {
613 $data[ $key ] = $single;
614 }
615 }
616 update_option( 'ultp_options', $data );
617 $GLOBALS['ultp_settings'] = $data;
618 }
619 if ( ! get_transient( 'wpxpo_installation_date' ) ) {
620 set_transient( 'wpxpo_installation_date', 'yes', 5 * DAY_IN_SECONDS ); // 5 Days Notice
621 }
622 }
623 }
624