PluginProbe
Post Grid Gutenberg Blocks – PostX / 2.9.4
Post Grid Gutenberg Blocks – PostX v2.9.4
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 / Initialization.php

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

897 lines 38.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Initialization Action.
4 *
5 * @package ULTP\Notice
6 * @since v.1.1.0
7 */
8 namespace ULTP;
9
10 defined('ABSPATH') || exit;
11
12 /**
13 * Initialization class.
14 */
15 class ULTP_Initialization{
16
17 private $all_blocks;
18
19 /**
20 * Setup class.
21 *
22 * @since v.1.1.0
23 */
24 public function __construct() {
25 $this->compatibility_check();
26 $this->requires(); // Include Necessary Files
27 $this->blocks(); // Include Blocks
28 $this->include_addons(); // Include Addons
29
30 add_action('wp', array($this, 'popular_posts_tracker_callback'));
31 add_filter('block_categories_all', array($this, 'register_category_callback'), 10, 2); // Block Category Register
32 add_action('after_setup_theme', array($this, 'add_image_size'));
33
34 add_action('enqueue_block_editor_assets', array($this, 'register_scripts_back_callback')); // Only editor
35 add_action('admin_enqueue_scripts', array($this, 'register_scripts_option_panel_callback')); // Option Panel
36 add_action('wp_enqueue_scripts', array($this, 'register_scripts_front_callback')); // Both frontend
37 register_activation_hook(ULTP_PATH.'ultimate-post.php', array($this, 'install_hook'));
38 add_action( 'activated_plugin', array($this, 'activation_redirect'));
39
40 add_action('wp_ajax_ultp_next_prev', array($this, 'ultp_next_prev_callback')); // Next Previous AJAX Call
41 add_action('wp_ajax_nopriv_ultp_next_prev', array($this, 'ultp_next_prev_callback')); // Next Previous AJAX Call Logout User
42 add_action('wp_ajax_ultp_filter', array($this, 'ultp_filter_callback')); // Next Previous AJAX Call
43 add_action('wp_ajax_nopriv_ultp_filter', array($this, 'ultp_filter_callback')); // Next Previous AJAX Call Logout User
44 add_action('wp_ajax_ultp_pagination', array($this, 'ultp_pagination_callback')); // Page Number AJAX Call
45 add_action('wp_ajax_nopriv_ultp_pagination',array($this, 'ultp_pagination_callback')); // Page Number AJAX Call Logout User
46 add_action('wp_ajax_ultp_addon', array($this, 'ultp_addon_callback')); // Next Previous AJAX Call
47 add_action('wp_ajax_ultp_share_count', array($this, 'ultp_shareCount_callback')); // share Count save
48
49 add_action('admin_init', array($this, 'check_theme_compatibility'));
50 add_action( 'after_switch_theme', array($this, 'wpxpo_swithch_thememe'));
51
52 add_action( 'wp_ajax_plugin_settings', array( $this, 'save_plugin_settings_data' ) );
53 add_action( 'in_plugin_update_message-'.ULTP_BASE, array( $this, 'in_plugin_settings_update_message' ) );
54
55 add_action( 'upgrader_process_complete', array($this, 'plugin_upgrade_completed'), 10, 2 );
56 }
57
58 /**
59 * Theme Switch Callback
60 *
61 * @since v.1.1.0
62 * @return NULL
63 */
64 public function wpxpo_swithch_thememe () {
65 $this->check_theme_compatibility();
66 }
67
68
69 /**
70 * Theme Compatibility Action
71 *
72 * @since v.1.1.0
73 * @return NULL
74 */
75 public function check_theme_compatibility() {
76 $licence = apply_filters( 'ultp_theme_integration' , FALSE);
77 $theme = get_transient( 'ulpt_theme_enable' );
78
79 if ($licence ) {
80 if ($theme != 'integration' ) {
81 $themes = wp_get_theme();
82 $api_params = array(
83 'wpxpo_theme_action' => 'theme_license',
84 'slug' => $themes->get('TextDomain'),
85 'author' => $themes->get('Author'),
86 'item_id' => 181,
87 'url' => home_url()
88 );
89
90 $response = wp_remote_post( 'https://www.wpxpo.com', array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
91
92 if (!is_wp_error( $response ) || 200 === wp_remote_retrieve_response_code( $response ) ) {
93 $license_data = json_decode( wp_remote_retrieve_body( $response ) );
94 if (isset($license_data->license)) {
95 if ($license_data->license == 'valid' ) {
96 set_transient( 'ulpt_theme_enable', 'integration', 2592000 ); // 30 days time
97 }
98 }
99 }
100 }
101 } else {
102 if ($theme == 'integration' ) {
103 delete_transient('ulpt_theme_enable');
104 }
105 }
106 }
107
108
109 /**
110 * Check Compatibility
111 *
112 * @since v.1.0.0
113 * @return NULL
114 */
115 public function compatibility_check() {
116 require_once ULTP_PATH.'classes/Compatibility.php';
117 new \ULTP\Compatibility();
118 }
119
120
121 /**
122 * Option Panel CSS and JS Scripts
123 *
124 * @since v.1.0.0
125 * @return NULL
126 */
127 public function register_scripts_option_panel_callback() {
128 $is_active = ultimate_post()->is_lc_active();
129 $license_key = $is_active ? get_option('edd_ultp_license_key') : '';
130
131 // Custom Font Support Added
132 $font_settings = ultimate_post()->get_setting('ultp_custom_font');
133 $custom_fonts = array();
134 if ($font_settings == 'true') {
135 wp_enqueue_media();
136 $args = array(
137 'post_type' => 'ultp_custom_font',
138 'post_status' => 'publish',
139 'numberposts' => 333,
140 'order' => 'ASC'
141 );
142 $posts = get_posts( $args );
143 if ($posts) {
144 foreach( $posts as $post) {
145 setup_postdata( $post );
146 $font = get_post_meta($post->ID , '__font_settings', true);
147
148 if ( $font ) {
149 array_push( $custom_fonts, array(
150 'title' => $post->post_title,
151 'font' => $font
152 ));
153 }
154 }
155 wp_reset_postdata();
156 }
157 }
158
159 wp_enqueue_style('wp-color-picker');
160 wp_enqueue_script('wp-color-picker');
161 wp_enqueue_script('ultp-option-script', ULTP_URL.'assets/js/ultp-option.js', array('jquery'), ULTP_VER, true);
162 wp_enqueue_style('ultp-option-style', ULTP_URL.'assets/css/ultp-option.css', array(), ULTP_VER);
163
164 wp_localize_script('ultp-option-script', 'ultp_option_panel', array(
165 'url' => ULTP_URL,
166 'active' => $is_active,
167 'security' => wp_create_nonce('ultp-nonce'),
168 'ajax' => admin_url('admin-ajax.php'),
169 'license' => $license_key,
170 'settings' => ultimate_post()->get_setting(),
171 'block_settings' => ultimate_post()->get_blocks_settings(),
172 'addons' => ultimate_post()->all_addons(),
173 'premium_link' => ultimate_post()->get_premium_link(),
174 'affiliate_id' => apply_filters( 'ultp_affiliate_id', false ),
175 'custom_fonts' => $custom_fonts
176 ));
177
178 /* === Installation Wizard === */
179 $_page = isset($_GET['page']) ? sanitize_text_field($_GET['page']) : '';
180 if ($_page == 'ultp-initial-setup-wizard') {
181 wp_enqueue_script('ultp-initial-setup-script', ULTP_URL.'assets/js/initial-setup.min.js', array('wp-api-request'), ULTP_VER, true);
182 }
183
184 /* === Builder And Setting Pannel === */
185 if ($_page == 'ultp-settings' || get_post_type(get_the_ID()) == 'ultp_builder') {
186 wp_enqueue_script('ultp-conditions-script', ULTP_URL.'addons/builder/assets/js/conditions.js', array('wp-api-fetch','wp-components','wp-i18n','wp-blocks'), ULTP_VER, true);
187 wp_localize_script('ultp-conditions-script', 'ultp_condition', array(
188 'url' => ULTP_URL,
189 'active' => $is_active,
190 'premium_link' => ultimate_post()->get_premium_link(),
191 'license' => $license_key,
192 'builder_url' => admin_url('admin.php?page=ultp-settings#builder'),
193 'affiliate_id' => apply_filters( 'ultp_affiliate_id', FALSE )
194 ));
195 wp_set_script_translations( 'ultp-conditions-script', 'ultimate-post', ULTP_PATH . 'languages/' );
196 }
197
198 }
199
200
201 /**
202 * Only Frontend CSS and JS Scripts
203 *
204 * @since v.1.0.0
205 * @return NULL
206 */
207 public function register_scripts_front_callback() {
208 $call_common = false;
209 if (isset($_GET['preview_id']) && isset($_GET['preview_nonce'])) {
210 $call_common = true;
211 ultimate_post()->register_scripts_common();
212 } else if ('yes' == get_post_meta(ultimate_post()->get_ID(), '_ultp_active', true)) {
213 $call_common = true;
214 ultimate_post()->register_scripts_common();
215 } else if (ultimate_post()->is_builder()) {
216 $call_common = true;
217 ultimate_post()->register_scripts_common();
218 } else if (apply_filters('postx_common_script', false)) {
219 $call_common = true;
220 ultimate_post()->register_scripts_common();
221 }
222
223 // For WidgetWidget
224 $has_block = false;
225 $widget_blocks = array();
226 global $wp_registered_sidebars, $sidebars_widgets;
227 foreach ($wp_registered_sidebars as $key => $value) {
228 if (is_active_sidebar($key)) {
229 foreach ($sidebars_widgets[$key] as $val) {
230 if (strpos($val, 'block-') !== false) {
231 if (empty($widget_blocks)) {
232 $widget_blocks = get_option( 'widget_block' );
233 }
234 foreach ( (array) $widget_blocks as $block ) {
235 if (isset( $block['content'] ) && strpos($block['content'], 'wp:ultimate-post') !== false ) {
236 $has_block = true;
237 break;
238 }
239 }
240 if ($has_block) {
241 break;
242 }
243 }
244 }
245 }
246 }
247 if ($has_block) {
248 if (!$call_common) {
249 ultimate_post()->register_scripts_common();
250 }
251 $css = get_option('ultp-widget', true);
252 if ($css) {
253 wp_register_style('ultp-post-widget', false );
254 wp_enqueue_style('ultp-post-widget' );
255 wp_add_inline_style('ultp-post-widget', $css);
256 }
257 }
258 }
259
260
261 /**
262 * Only Backend CSS and JS Scripts
263 *
264 * @since v.1.0.0
265 * @return NULL
266 */
267 public function register_scripts_back_callback() {
268 ultimate_post()->register_scripts_common();
269 global $pagenow;
270 $depends = 'wp-editor';
271 if ($pagenow === 'widgets.php' ) {
272 $depends = 'wp-edit-widgets';
273 }
274 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);
275 wp_enqueue_style('ultp-blocks-editor-css', ULTP_URL.'assets/css/blocks.editor.css', array(), ULTP_VER);
276 if (is_rtl()) {
277 wp_enqueue_style('ultp-blocks-editor-rtl-css', ULTP_URL.'assets/css/rtl.css', array(), ULTP_VER);
278 }
279 $is_active = ultimate_post()->is_lc_active();
280 $post_type = get_post_type();
281 wp_localize_script('ultp-blocks-editor-script', 'ultp_data', array(
282 'url' => ULTP_URL,
283 'ajax' => admin_url('admin-ajax.php'),
284 'security' => wp_create_nonce('ultp-nonce'),
285 'hide_import_btn' => ultimate_post()->get_setting('hide_import_btn'),
286 'upload' => wp_upload_dir()['basedir'] . '/ultp',
287 'premium_link' => ultimate_post()->get_premium_link(),
288 'license' => $is_active ? get_option('edd_ultp_license_key') : '',
289 'active' => $is_active,
290 'archive' => ultimate_post()->is_archive_builder(),
291 'settings' => ultimate_post()->get_setting(),
292 'post_type' => $post_type == 'premade' ? 'ultp_builder' : $post_type, // premade used for ultp.wpxpo.com
293 'date_format' => get_option('date_format'),
294 'time_format' => get_option('time_format'),
295 'blog' => get_current_blog_id(),
296 'archive_child' => ultimate_post()->is_archive_child_builder(),
297 'affiliate_id' => apply_filters( 'ultp_affiliate_id', FALSE )
298 ));
299 wp_set_script_translations( 'ultp-blocks-editor-script', 'ultimate-post', ULTP_PATH . 'languages/' );
300 }
301
302
303 /**
304 * Fire When Plugin First Install
305 *
306 * @since v.1.0.0
307 * @return NULL
308 */
309 public function install_hook() {
310 if (!get_option('ultp_options')) {
311 ultimate_post()->init_set_data();
312 }
313 if (!get_transient('wpxpo_installation_date')) {
314 set_transient( 'wpxpo_installation_date', 'yes', 5 * DAY_IN_SECONDS ); // 5 Days Notice
315 }
316 }
317
318
319 /**
320 * Redirect After Active Plugin
321 *
322 * @since v.1.0.0
323 * @param STRING | Plugin Path
324 * @return NULL
325 */
326 public function activation_redirect($plugin) {
327 if (wp_doing_ajax()) {
328 return;
329 }
330
331 if ($plugin == 'ultimate-post/ultimate-post.php' ) {
332 if (ultimate_post()->get_setting('init_setup') != 'yes') {
333 exit(wp_safe_redirect(admin_url('admin.php?page=ultp-initial-setup-wizard')));
334 } else {
335 exit(wp_safe_redirect(admin_url('admin.php?page=ultp-settings#home')));
336 }
337 }
338 }
339
340
341 /**
342 * Require Blocks
343 *
344 * @since v.1.0.0
345 * @return NULL
346 */
347 public function blocks() {
348 global $unique_ID;
349 $setting = ultimate_post()->get_setting();
350 require_once ULTP_PATH.'blocks/Post_List_1.php';
351 require_once ULTP_PATH.'blocks/Post_List_2.php';
352 require_once ULTP_PATH.'blocks/Post_List_3.php';
353 require_once ULTP_PATH.'blocks/Post_List_4.php';
354 require_once ULTP_PATH.'blocks/Post_Grid_1.php';
355 require_once ULTP_PATH.'blocks/Post_Grid_2.php';
356 require_once ULTP_PATH.'blocks/Post_Grid_3.php';
357 require_once ULTP_PATH.'blocks/Post_Grid_4.php';
358 require_once ULTP_PATH.'blocks/Post_Grid_5.php';
359 require_once ULTP_PATH.'blocks/Post_Grid_6.php';
360 require_once ULTP_PATH.'blocks/Post_Grid_7.php';
361 require_once ULTP_PATH.'blocks/Post_Slider_1.php';
362 require_once ULTP_PATH.'blocks/Post_Slider_2.php';
363 require_once ULTP_PATH.'blocks/Post_Module_1.php';
364 require_once ULTP_PATH.'blocks/Post_Module_2.php';
365 require_once ULTP_PATH.'blocks/Heading.php';
366 require_once ULTP_PATH.'blocks/Image.php';
367 require_once ULTP_PATH.'blocks/Taxonomy.php';
368 require_once ULTP_PATH.'blocks/News_Ticker.php';
369
370 $this->all_blocks['ultimate-post_post-list-1'] = new \ULTP\blocks\Post_List_1();
371 $this->all_blocks['ultimate-post_post-list-2'] = new \ULTP\blocks\Post_List_2();
372 $this->all_blocks['ultimate-post_post-list-3'] = new \ULTP\blocks\Post_List_3();
373 $this->all_blocks['ultimate-post_post-list-4'] = new \ULTP\blocks\Post_List_4();
374 $this->all_blocks['ultimate-post_post-grid-1'] = new \ULTP\blocks\Post_Grid_1();
375 $this->all_blocks['ultimate-post_post-grid-2'] = new \ULTP\blocks\Post_Grid_2();
376 $this->all_blocks['ultimate-post_post-grid-3'] = new \ULTP\blocks\Post_Grid_3();
377 $this->all_blocks['ultimate-post_post-grid-4'] = new \ULTP\blocks\Post_Grid_4();
378 $this->all_blocks['ultimate-post_post-grid-5'] = new \ULTP\blocks\Post_Grid_5();
379 $this->all_blocks['ultimate-post_post-grid-6'] = new \ULTP\blocks\Post_Grid_6();
380 $this->all_blocks['ultimate-post_post-grid-7'] = new \ULTP\blocks\Post_Grid_7();
381 $this->all_blocks['ultimate-post_post-slider-1'] = new \ULTP\blocks\Post_Slider_1();
382 $this->all_blocks['ultimate-post_post-slider-2'] = new \ULTP\blocks\Post_Slider_2();
383 $this->all_blocks['ultimate-post_post-module-1'] = new \ULTP\blocks\Post_Module_1();
384 $this->all_blocks['ultimate-post_post-module-2'] = new \ULTP\blocks\Post_Module_2();
385 $this->all_blocks['ultimate-post_heading'] = new \ULTP\blocks\Heading();
386 $this->all_blocks['ultimate-post_image'] = new \ULTP\blocks\Image();
387 $this->all_blocks['ultimate-post_ultp-taxonomy'] = new \ULTP\blocks\Taxonomy();
388 $this->all_blocks['ultimate-post_news-ticker'] = new \ULTP\blocks\News_Ticker();
389
390 if (ultimate_post()->get_setting('ultp_builder') == 'true') {
391 require_once ULTP_PATH.'addons/builder/blocks/Archive_Title.php';
392 require_once ULTP_PATH.'addons/builder/blocks/Post_Title.php';
393 require_once ULTP_PATH.'addons/builder/blocks/Post_Content.php';
394 require_once ULTP_PATH.'addons/builder/blocks/Post_Featured_Image.php';
395 require_once ULTP_PATH.'addons/builder/blocks/Post_Breadcrumb.php';
396 require_once ULTP_PATH.'addons/builder/blocks/Post_Tag.php';
397 require_once ULTP_PATH.'addons/builder/blocks/Post_Category.php';
398 require_once ULTP_PATH.'addons/builder/blocks/Next_Previous.php';
399 require_once ULTP_PATH.'addons/builder/blocks/Post_Excerpt.php';
400 require_once ULTP_PATH.'addons/builder/blocks/Author_Box.php';
401 require_once ULTP_PATH.'addons/builder/blocks/Post_Comments.php';
402 require_once ULTP_PATH.'addons/builder/blocks/Post_View_Count.php';
403 require_once ULTP_PATH.'addons/builder/blocks/Post_Reading_Time.php';
404 require_once ULTP_PATH.'addons/builder/blocks/Post_Comment_Count.php';
405 require_once ULTP_PATH.'addons/builder/blocks/Post_Author_Meta.php';
406 require_once ULTP_PATH.'addons/builder/blocks/Post_Date_Meta.php';
407 // require_once ULTP_PATH.'addons/builder/blocks/Related_Posts.php';
408 require_once ULTP_PATH.'addons/builder/blocks/Post_Social_Share.php';
409 require_once ULTP_PATH.'addons/builder/blocks/Advance_Post_Meta.php';
410
411 new \ULTP\blocks\Archive_Title();
412 new \ULTP\blocks\Post_Title();
413 new \ULTP\blocks\Post_Content();
414 new \ULTP\blocks\Post_Featured_Image();
415 new \ULTP\blocks\Post_Breadcrumb();
416 new \ULTP\blocks\Post_Tag();
417 new \ULTP\blocks\Post_Category();
418 new \ULTP\blocks\Next_Previous();
419 new \ULTP\blocks\Post_Excerpt();
420 new \ULTP\blocks\Author_Box();
421 new \ULTP\blocks\Post_Comments();
422 new \ULTP\blocks\Post_View_Count();
423 new \ULTP\blocks\Post_Reading_Time();
424 new \ULTP\blocks\Post_Comment_Count();
425 new \ULTP\blocks\Post_Author_Meta();
426 new \ULTP\blocks\Post_Date_Meta();
427 // new \ULTP\blocks\Related_Posts();
428 new \ULTP\blocks\Post_Social_Share();
429 new \ULTP\blocks\Advance_Post_Meta();
430 }
431 }
432
433
434 /**
435 * Necessary Requires Class
436 *
437 * @since v.1.0.0
438 * @return NULL
439 */
440 public function requires() {
441 require_once ULTP_PATH.'classes/Notice.php';
442 require_once ULTP_PATH.'classes/Styles.php';
443 require_once ULTP_PATH.'classes/Options.php';
444 require_once ULTP_PATH.'classes/REST_API.php';
445 require_once ULTP_PATH.'classes/Caches.php';
446 new \ULTP\REST_API();
447 new \ULTP\Options();
448 new \ULTP\Caches();
449 new \ULTP\Styles();
450 new \ULTP\Notice();
451
452 require_once ULTP_PATH.'classes/Deactive.php';
453 new \ULTP\Deactive();
454 }
455
456
457 /**
458 * Block Categories Initialization
459 *
460 * @since v.1.0.0
461 * @param $categories(ARRAY) | $post (ARRAY)
462 * @return NULL
463 */
464 public function register_category_callback( $categories, $post ) {
465 $attr = array(
466 array(
467 'slug' => 'ultimate-post',
468 'title' => __('PostX - Gutenberg Post Blocks', 'ultimate-post')
469 ),
470 array(
471 'slug' => 'postx-site-builder',
472 'title' => __('PostX Site Builder', 'ultimate-post')
473 )
474 );
475 return array_merge($attr, $categories);
476 }
477
478
479 /**
480 * Post View Counter for Every Post
481 *
482 * @since v.1.0.0
483 * @param NUMBER | Post ID
484 * @return NULL
485 */
486 public function popular_posts_tracker_callback($post_id) {
487 if (!is_single()) { return; }
488 global $post;
489 $post_id = isset($post->ID) ? $post->ID : '';
490 $isEnable = apply_filters('ultp_view_cookies', true);
491 // add_filter( 'ultp_view_cookies', '__return_false' );
492 $cookies_disable = ultimate_post()->get_setting('disable_view_cookies');
493 if ($post_id && $isEnable && $cookies_disable != 'yes') {
494 $has_cookie = isset( $_COOKIE['ultp_view_'.$post_id] ) ? $_COOKIE['ultp_view_'.$post_id] : false;
495 if (!$has_cookie) {
496 $count = (int)get_post_meta( $post_id, '__post_views_count', true );
497 update_post_meta($post_id, '__post_views_count', $count ? (int)$count + 1 : 1 );
498 setcookie( 'ultp_view_'.$post_id, 1, time() + 86400, COOKIEPATH ); // 1 days cookies
499 }
500 }
501 }
502
503
504 /**
505 * Set Image Size
506 *
507 * @since v.1.0.0
508 * @return NULL
509 */
510 public function add_image_size() {
511 $size_disable = ultimate_post()->get_setting('disable_image_size');
512 if ($size_disable != 'yes') {
513 add_image_size('ultp_layout_landscape_large', 1200, 800, true);
514 add_image_size('ultp_layout_landscape', 870, 570, true);
515 add_image_size('ultp_layout_portrait', 600, 900, true);
516 add_image_size('ultp_layout_square', 600, 600, true);
517 }
518 }
519
520
521 /**
522 * Include Addons Directory
523 *
524 * @since v.1.0.0
525 * @return NULL
526 */
527 public function include_addons() {
528 $addons_dir = array_filter(glob(ULTP_PATH.'addons/*'), 'is_dir');
529 if (count($addons_dir) > 0) {
530 foreach( $addons_dir as $key => $value ) {
531 $addon_dir_name = str_replace(dirname($value).'/', '', $value);
532 $file_name = ULTP_PATH . 'addons/'.$addon_dir_name.'/init.php';
533 if (file_exists($file_name) ) {
534 include_once $file_name;
535 }
536 }
537 }
538 }
539
540
541 /**
542 * Addon Callback
543 *
544 * @since v.1.0.0
545 * @return STRING
546 */
547 public function ultp_addon_callback() {
548 if (!wp_verify_nonce(wp_unslash($_REQUEST['wpnonce']), 'ultp-nonce') && $local){
549 return ;
550 }
551 $addon_name = sanitize_text_field($_POST['addon']);
552 $addon_value = sanitize_text_field($_POST['value']);
553 if ($addon_name && current_user_can('administrator')) {
554 $addon_data = ultimate_post()->get_setting();
555 $addon_data[$addon_name] = $addon_value;
556 $GLOBALS['ultp_settings'][$addon_name] = $addon_value;
557 update_option('ultp_options', $addon_data);
558 }
559 }
560
561
562 /**
563 * Next Preview Callback of the Blocks
564 *
565 * @since v.1.0.0
566 * @return STRING
567 */
568 public function ultp_next_prev_callback() {
569 if (!wp_verify_nonce(wp_unslash($_REQUEST['wpnonce']), 'ultp-nonce') && $local){
570 return ;
571 }
572
573 $paged = sanitize_text_field($_POST['paged']);
574 $blockId = sanitize_text_field($_POST['blockId']);
575 $postId = sanitize_text_field($_POST['postId']);
576 $blockRaw = sanitize_text_field($_POST['blockName']);
577 $builder = isset($_POST['builder']) ? sanitize_text_field($_POST['builder']) : '';
578 $blockName = str_replace('_','/', $blockRaw);
579 $widgetBlockId = sanitize_text_field($_POST['widgetBlockId']);
580 $filterValue = sanitize_text_field($_POST['filterValue']);
581 $filterType = sanitize_text_field($_POST['filterType']);
582
583 $ultp_uniqueIds = json_decode(stripslashes(sanitize_text_field($_POST['ultpUniqueIds'])), true);
584 $ultp_current_unique_posts = json_decode(stripslashes(sanitize_text_field($_POST['ultpCurrentUniquePosts'])), true);
585
586 if($widgetBlockId) {
587 $blocks = parse_blocks(get_option('widget_block')[$widgetBlockId]['content']);
588 $this->block_return($blocks, $paged, $blockId, $blockRaw, $blockName, $builder, '', $filterValue, $filterType, $ultp_uniqueIds, $ultp_current_unique_posts);
589 }elseif ($paged && $blockId && $postId && $blockName ) {
590 $post = get_post($postId);
591 if(has_blocks($post->post_content)) {
592 $blocks = parse_blocks($post->post_content);
593 $this->block_return($blocks, $paged, $blockId, $blockRaw, $blockName, $builder, $postId, $filterValue, $filterType, $ultp_uniqueIds, $ultp_current_unique_posts);
594 }
595 }
596 }
597
598 /**
599 * Pagination for filter cal'back
600 *
601 * @since v.2.8.9
602 * @return STRING
603 */
604 public function pagination_for_filter( $attr, $postId, $blockRaw, $filter_attributes ) {
605 $attr['queryNumber'] = ultimate_post()->get_post_number(4, $attr['queryNumber'], $attr['queryNumPosts']);
606 $recent_posts = new \WP_Query( ultimate_post()->get_query( $attr ) );
607 $pageNum = ultimate_post()->get_page_number($attr, $recent_posts->found_posts);
608
609 $data_filter_value = 'data-filter-value=" ' . $filter_attributes['queryTaxValue']. '"';
610 $data_filter_type = 'data-filter-type=" ' . $filter_attributes['queryTax']. '"';
611 $wraper_after = '';
612 $style = $pageNum == 1 ? 'style="display:none"' : '';
613
614 if($attr['paginationType'] == 'loadMore') {
615 $wraper_after .= '<div '.$style.' class="ultp-loadmore "'. $data_filter_value . $data_filter_type .'>';
616 $wraper_after .= '<span class="ultp-loadmore-action" tabindex="0" role="button" data-pages="'.$pageNum.'" data-pagenum="1" data-blockid="'.$attr['blockId'].'" data-blockname="'.$blockRaw.'" data-postid="'.$postId.'" '.ultimate_post()->get_builder_attr($attr['queryType']).'>'.( isset($attr['loadMoreText']) ? $attr['loadMoreText'] : 'Load More' ).' <span class="ultp-spin">'.ultimate_post()->svg_icon('refresh').'</span></span>';
617 $wraper_after .= '</div>';
618 }
619 else if($attr['paginationType'] == 'navigation') {
620 $wraper_after .= '<div '.$style.' class="ultp-next-prev-wrap" data-pages="'.$pageNum.'" data-pagenum="1" data-blockid="'.$attr['blockId'].'" data-blockname="'.$blockRaw.'" data-postid="'.$postId.'" '.ultimate_post()->get_builder_attr($attr['queryType']). $data_filter_value . $data_filter_type .'>';
621 $wraper_after .= ultimate_post()->next_prev();
622 $wraper_after .= '</div>';
623 }
624 else if($attr['paginationType'] == 'pagination') {
625 $wraper_after .= '<div class="ultp-pagination-wrap'.($attr["paginationAjax"] ? " ultp-pagination-ajax-action" : "").'" data-paged="1" data-blockid="'.$attr['blockId'].'" data-postid="'.$postId.'" data-pages="'.$pageNum.'" data-blockname="'.$blockRaw.'" '.ultimate_post()->get_builder_attr($attr['queryType']). $data_filter_value . $data_filter_type .'>';
626 $wraper_after .= ultimate_post()->pagination($pageNum, $attr['paginationNav'], $attr['paginationText'], $attr["paginationAjax"], $_SERVER['HTTP_REFERER']);
627 $wraper_after .= '</div>';
628 }
629 wp_reset_query();
630
631 return $wraper_after;
632 }
633
634 /**
635 * Filter Callback of the Blocks
636 *
637 * @since v.1.0.0
638 * @return STRING
639 */
640 public function filter_block_return($blocks, $blockId, $blockRaw, $blockName, $taxtype, $taxonomy, $postId, &$toReturn) {
641 foreach ($blocks as $key => $value) {
642 if ($blockName == $value['blockName']) {
643 if ($value['attrs']['blockId'] == $blockId) {
644 $attr = $this->all_blocks[$blockRaw]->get_attributes(true);
645 if ($taxonomy) {
646 $value['attrs']['queryTaxValue'] = json_encode(array($taxonomy));
647 $value['attrs']['queryTax'] = $taxtype;
648 $value['attrs']['ajaxCall'] = true;
649 }
650 if (isset($value['attrs']['queryNumber'])) {
651 $value['attrs']['queryNumber'] = $value['attrs']['queryNumber'];
652 }
653 $attr = array_merge($attr, $value['attrs']);
654
655 $filter_attributes = [];
656 $filter_attributes['queryTaxValue'] = $taxonomy;
657 $filter_attributes['queryTax'] = $taxtype;
658
659 $toReturn = [
660 'blocks' => $this->all_blocks[$blockRaw]->content($attr, true),
661 'pagination' => $this->pagination_for_filter($attr, $postId, $blockRaw, $filter_attributes),
662 'paginationType' => $attr['paginationType'],
663 'paginationShow' => $attr['paginationShow']
664 ];
665 }
666 }
667 if (!empty($value['innerBlocks'])) {
668 $this->filter_block_return($value['innerBlocks'], $blockId, $blockRaw, $blockName, $taxtype, $taxonomy, $postId, $toReturn);
669 }
670 }
671 return $toReturn;
672 }
673
674
675 /**
676 * Filter Callback of the Blocks
677 *
678 * @since v.1.0.0
679 * @return STRING
680 */
681 public function ultp_filter_callback() {
682 if (!wp_verify_nonce(wp_unslash($_REQUEST['wpnonce']), 'ultp-nonce') && $local){
683 return ;
684 }
685
686 $taxtype = sanitize_text_field($_POST['taxtype']);
687 if ($taxtype ) {
688 $blockId = sanitize_text_field($_POST['blockId']);
689 $postId = sanitize_text_field($_POST['postId']);
690 $taxonomy = sanitize_text_field($_POST['taxonomy']);
691 $blockRaw = sanitize_text_field($_POST['blockName']);
692 $blockName = str_replace('_','/', $blockRaw);
693 $post = get_post($postId);
694 $widgetBlockId = sanitize_text_field($_POST['widgetBlockId']);
695 $toReturn = [];
696 if($widgetBlockId) {
697 $blocks = parse_blocks(get_option('widget_block')[$widgetBlockId]['content']);
698 $data = $this->filter_block_return($blocks, $blockId, $blockRaw, $blockName, $taxtype, $taxonomy, $postId, $toReturn);
699 }elseif (has_blocks($post->post_content)) {
700 $blocks = parse_blocks($post->post_content);
701 $data = $this->filter_block_return($blocks, $blockId, $blockRaw, $blockName, $taxtype, $taxonomy, $postId, $toReturn);
702 }
703 return wp_send_json_success( [
704 'filteredData' => $data
705 ] );
706 }
707 }
708
709
710 /**
711 * Pagination of the Blocks
712 *
713 * @since v.1.0.0
714 * @return STRING
715 */
716 public function ultp_pagination_callback() {
717 if (!wp_verify_nonce(wp_unslash($_REQUEST['wpnonce']), 'ultp-nonce') && $local) {
718 return ;
719 }
720
721 $paged = sanitize_text_field($_POST['paged']);
722 if ($paged) {
723 $blockId = sanitize_text_field($_POST['blockId']);
724 $postId = sanitize_text_field($_POST['postId']);
725 $blockRaw = sanitize_text_field($_POST['blockName']);
726 $builder = isset($_POST['builder']) ? sanitize_text_field($_POST['builder']) : '';
727 $blockName = str_replace('_','/', $blockRaw);
728 $post = get_post($postId);
729 $widgetBlockId = sanitize_text_field($_POST['widgetBlockId']);
730 $filterValue = sanitize_text_field($_POST['filterValue']);
731 $filterType = sanitize_text_field($_POST['filterType']);
732
733 $ultp_uniqueIds = json_decode(stripslashes(sanitize_text_field($_POST['ultpUniqueIds'])), true);
734 $ultp_current_unique_posts = json_decode(stripslashes(sanitize_text_field($_POST['ultpCurrentUniquePosts'])), true);
735
736 if($widgetBlockId) {
737 $blocks = parse_blocks(get_option('widget_block')[$widgetBlockId]['content']);
738 $this->block_return($blocks, $paged, $blockId, $blockRaw, $blockName, $builder, '', $filterValue, $filterType, $ultp_uniqueIds, $ultp_current_unique_posts);
739 }elseif(has_blocks($post->post_content)) {
740 $blocks = parse_blocks($post->post_content);
741 $this->block_return($blocks, $paged, $blockId, $blockRaw, $blockName, $builder, $postId, $filterValue, $filterType, $ultp_uniqueIds, $ultp_current_unique_posts);
742 }
743 }
744 }
745
746 /**
747 * share Count callback
748 *
749 * @since v.1.0.0
750 * @return STRING
751 */
752 public function ultp_shareCount_callback() {
753 if (!wp_verify_nonce($_REQUEST['wpnonce'], 'ultp-nonce') && $local) {
754 return ;
755 }
756 $id = sanitize_text_field($_POST['postId']);
757 $count = sanitize_text_field($_POST['shareCount']);
758 $post_id = $id;
759 $new_count = $count+1;
760 update_post_meta($post_id, 'share_count', $new_count);
761 }
762
763 /**
764 * Blocks Content Start
765 *
766 * @since v.1.0.0
767 * @return STRING
768 */
769 public function block_return($blocks, $paged, $blockId, $blockRaw, $blockName, $builder, $postId, $filterValue, $filterType, $ultp_uniqueIds=[], $ultp_current_unique_posts=[]) {
770
771 foreach ($blocks as $key => $value) {
772 if ($blockName == $value['blockName']) {
773 if ($value['attrs']['blockId'] == $blockId) {
774 $attr = $this->all_blocks[$blockRaw]->get_attributes(true);
775 $value['attrs']['paged'] = $paged;
776 if ($builder) {
777 $value['attrs']['builder'] = $builder;
778 }
779 if ($postId) {
780 $attr['current_post'] = $postId;
781 }
782 if($value['attrs']['queryUnique']) {
783 $value['attrs']['loadMoreQueryUnique'] = $ultp_uniqueIds;
784 $ultp_uniqueIds[$value['attrs']['queryUnique']] = array_diff( $ultp_uniqueIds[$value['attrs']['queryUnique']], $ultp_current_unique_posts );
785 $value['attrs']['savedQueryUnique'] = $ultp_uniqueIds;
786 $value['attrs']['ultp_current_unique_posts'] = $ultp_current_unique_posts;
787 }
788 if($value['attrs']['queryUnique'] && ( $value['attrs']['paginationType'] == 'loadMore' || $value['attrs']['paginationType'] == 'navigation') && isset($ultp_uniqueIds) && !isset($ultp_current_unique_posts)) {
789 die();
790 }
791
792 if($filterValue) {
793 $value['attrs']['queryTaxValue'] = json_encode(array($filterValue));
794 $value['attrs']['queryTax'] = $filterType;
795 $value['attrs']['checkFilter'] = true;
796 }
797
798 $attr = array_merge($attr, $value['attrs']);
799 echo $this->all_blocks[$blockRaw]->content($attr, true);
800 die();
801 }
802 }
803 if (!empty($value['innerBlocks'])) {
804 $this->block_return($value['innerBlocks'], $paged, $blockId, $blockRaw, $blockName, $builder, $postId, $filterValue, $filterType, $ultp_uniqueIds, $ultp_current_unique_posts);
805 }
806 }
807 }
808
809 /**
810 * Save Settings of Option Panel
811 *
812 * @since v.2.6.0
813 * @return NULL
814 */
815 public function save_plugin_settings_data() {
816 if (!wp_verify_nonce(wp_unslash($_REQUEST['wpnonce']), 'ultp-nonce') && $local){
817 return ;
818 }
819 $data = ultimate_post()->recursive_sanitize_text_field($_POST['data']);
820 if (count($data) > 0) {
821 foreach ($data as $key => $val) {
822 ultimate_post()->set_setting($key, $val);
823 }
824 }
825 wp_send_json_success(__('Settings Data Saved...', 'ultimate-post'));
826 }
827
828 /**
829 * WordPress Plugin Notice
830 *
831 * @since v.2.6.4
832 * @return NULL
833 */
834 public function in_plugin_settings_update_message() {
835 $response = wp_remote_get(
836 'https://plugins.svn.wordpress.org/ultimate-post/trunk/readme.txt', array(
837 'method' => 'GET'
838 ));
839
840 if ( is_wp_error( $response ) || $response['response']['code'] != 200 ) {
841 return;
842 }
843
844 $changelog_lines = preg_split("/(\r\n|\n|\r)/", $response['body']);
845
846 $is_copy = false;
847 $current_tag = '';
848 $tag_text = 'Stable tag:';
849 if (!empty($changelog_lines)) {
850 echo '<hr style="border-color:#dba617;"/>';
851 echo '<div style="color:#50575e;font-size:13px;font-weight:bold;"> <span style="color:#f56e28;" class="dashicons dashicons-warning"></span> ' . esc_html('PostX is ready for the next update. Changelog:-') . '</div>';
852 echo '<hr style="border-color:#dba617;"/>';
853 echo '<ul style="max-height:200px;overflow:scroll;">';
854 foreach ($changelog_lines as $key => $line) {
855 // Get Current Vesion
856 if ($current_tag == '') {
857 if (strpos($line, $tag_text) !== false) {
858 $current_tag = trim(str_replace($tag_text, '', $line));
859 }
860 } else {
861 if ($is_copy) {
862 if (strpos($line, '= '.ULTP_VER) !== false) {
863 break;
864 }
865 if (!empty($line)) {
866 if (strpos($line, '= ') !== false) {
867 echo '<li style="color:#50575e;font-weight:bold;"><br/>'.esc_html($line).'</li>';
868 } else {
869 echo '<li>'.esc_html($line).'</li>';
870 }
871 }
872 } else {
873 if (strpos($line, '= '.$current_tag) !== false) { // Current Version
874 $is_copy = true;
875 echo '<li style="color:#50575e;font-weight:bold;">'.esc_html($line).'</li>';
876 }
877 }
878 }
879 }
880 echo '</ul>';
881 }
882 }
883
884 /**
885 * Check Plugin Upgrade
886 *
887 * @since 2.4.3
888 *
889 * @return void
890 */
891 public function plugin_upgrade_completed() {
892 if (ultimate_post()->get_setting('init_setup') != 'yes') {
893 ultimate_post()->set_setting('init_setup', 'yes');
894 }
895 }
896
897 }