PluginProbe
Post Grid Gutenberg Blocks – PostX / 2.9.14
Post Grid Gutenberg Blocks – PostX v2.9.14
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.14, at classes/Initialization.php

902 lines 38.3 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'), 999999999, 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 } else if (isset($_GET['et_fb'])) { // Divi Backend Builder
222 $call_common = true;
223 ultimate_post()->register_scripts_common();
224 }
225
226 // For WidgetWidget
227 $has_block = false;
228 $widget_blocks = array();
229 global $wp_registered_sidebars, $sidebars_widgets;
230 foreach ($wp_registered_sidebars as $key => $value) {
231 if (is_active_sidebar($key)) {
232 foreach ($sidebars_widgets[$key] as $val) {
233 if (strpos($val, 'block-') !== false) {
234 if (empty($widget_blocks)) {
235 $widget_blocks = get_option( 'widget_block' );
236 }
237 foreach ( (array) $widget_blocks as $block ) {
238 if (isset( $block['content'] ) && strpos($block['content'], 'wp:ultimate-post') !== false ) {
239 $has_block = true;
240 break;
241 }
242 }
243 if ($has_block) {
244 break;
245 }
246 }
247 }
248 }
249 }
250 if ($has_block) {
251 if (!$call_common) {
252 ultimate_post()->register_scripts_common();
253 }
254 $css = get_option('ultp-widget', true);
255 if ($css) {
256 wp_register_style('ultp-post-widget', false );
257 wp_enqueue_style('ultp-post-widget' );
258 wp_add_inline_style('ultp-post-widget', $css);
259 }
260 }
261 }
262
263
264 /**
265 * Only Backend CSS and JS Scripts
266 *
267 * @since v.1.0.0
268 * @return NULL
269 */
270 public function register_scripts_back_callback() {
271 ultimate_post()->register_scripts_common();
272 global $pagenow;
273 $depends = 'wp-editor';
274 if ($pagenow === 'widgets.php' ) {
275 $depends = 'wp-edit-widgets';
276 }
277 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);
278 wp_enqueue_style('ultp-blocks-editor-css', ULTP_URL.'assets/css/blocks.editor.css', array(), ULTP_VER);
279 if (is_rtl()) {
280 wp_enqueue_style('ultp-blocks-editor-rtl-css', ULTP_URL.'assets/css/rtl.css', array(), ULTP_VER);
281 }
282 $is_active = ultimate_post()->is_lc_active();
283 $post_type = get_post_type();
284 wp_localize_script('ultp-blocks-editor-script', 'ultp_data', array(
285 'url' => ULTP_URL,
286 'ajax' => admin_url('admin-ajax.php'),
287 'security' => wp_create_nonce('ultp-nonce'),
288 'hide_import_btn' => ultimate_post()->get_setting('hide_import_btn'),
289 'upload' => wp_upload_dir()['basedir'] . '/ultp',
290 'premium_link' => ultimate_post()->get_premium_link(),
291 'license' => $is_active ? get_option('edd_ultp_license_key') : '',
292 'active' => $is_active,
293 'archive' => ultimate_post()->is_archive_builder(),
294 'settings' => ultimate_post()->get_setting(),
295 'post_type' => $post_type == 'premade' ? 'ultp_builder' : $post_type, // premade used for ultp.wpxpo.com
296 'date_format' => get_option('date_format'),
297 'time_format' => get_option('time_format'),
298 'blog' => get_current_blog_id(),
299 'archive_child' => ultimate_post()->is_archive_child_builder(),
300 'affiliate_id' => apply_filters( 'ultp_affiliate_id', FALSE ),
301 'category_url' =>admin_url( 'edit-tags.php?taxonomy=category' ),
302 'disable_image_size' => ultimate_post()->get_setting('disable_image_size')
303 ));
304 wp_set_script_translations( 'ultp-blocks-editor-script', 'ultimate-post', ULTP_PATH . 'languages/' );
305 }
306
307
308 /**
309 * Fire When Plugin First Install
310 *
311 * @since v.1.0.0
312 * @return NULL
313 */
314 public function install_hook() {
315 if (!get_option('ultp_options')) {
316 ultimate_post()->init_set_data();
317 }
318 if (!get_transient('wpxpo_installation_date')) {
319 set_transient( 'wpxpo_installation_date', 'yes', 5 * DAY_IN_SECONDS ); // 5 Days Notice
320 }
321 }
322
323
324 /**
325 * Redirect After Active Plugin
326 *
327 * @since v.1.0.0
328 * @param STRING | Plugin Path
329 * @return NULL
330 */
331 public function activation_redirect($plugin) {
332 if (wp_doing_ajax()) {
333 return;
334 }
335
336 if ($plugin == 'ultimate-post/ultimate-post.php' ) {
337 if (ultimate_post()->get_setting('init_setup') != 'yes') {
338 exit(wp_safe_redirect(admin_url('admin.php?page=ultp-initial-setup-wizard')));
339 } else {
340 exit(wp_safe_redirect(admin_url('admin.php?page=ultp-settings#home')));
341 }
342 }
343 }
344
345
346 /**
347 * Require Blocks
348 *
349 * @since v.1.0.0
350 * @return NULL
351 */
352 public function blocks() {
353 global $unique_ID;
354 $setting = ultimate_post()->get_setting();
355 require_once ULTP_PATH.'blocks/Post_List_1.php';
356 require_once ULTP_PATH.'blocks/Post_List_2.php';
357 require_once ULTP_PATH.'blocks/Post_List_3.php';
358 require_once ULTP_PATH.'blocks/Post_List_4.php';
359 require_once ULTP_PATH.'blocks/Post_Grid_1.php';
360 require_once ULTP_PATH.'blocks/Post_Grid_2.php';
361 require_once ULTP_PATH.'blocks/Post_Grid_3.php';
362 require_once ULTP_PATH.'blocks/Post_Grid_4.php';
363 require_once ULTP_PATH.'blocks/Post_Grid_5.php';
364 require_once ULTP_PATH.'blocks/Post_Grid_6.php';
365 require_once ULTP_PATH.'blocks/Post_Grid_7.php';
366 require_once ULTP_PATH.'blocks/Post_Slider_1.php';
367 require_once ULTP_PATH.'blocks/Post_Slider_2.php';
368 require_once ULTP_PATH.'blocks/Post_Module_1.php';
369 require_once ULTP_PATH.'blocks/Post_Module_2.php';
370 require_once ULTP_PATH.'blocks/Heading.php';
371 require_once ULTP_PATH.'blocks/Image.php';
372 require_once ULTP_PATH.'blocks/Taxonomy.php';
373 require_once ULTP_PATH.'blocks/News_Ticker.php';
374
375 $this->all_blocks['ultimate-post_post-list-1'] = new \ULTP\blocks\Post_List_1();
376 $this->all_blocks['ultimate-post_post-list-2'] = new \ULTP\blocks\Post_List_2();
377 $this->all_blocks['ultimate-post_post-list-3'] = new \ULTP\blocks\Post_List_3();
378 $this->all_blocks['ultimate-post_post-list-4'] = new \ULTP\blocks\Post_List_4();
379 $this->all_blocks['ultimate-post_post-grid-1'] = new \ULTP\blocks\Post_Grid_1();
380 $this->all_blocks['ultimate-post_post-grid-2'] = new \ULTP\blocks\Post_Grid_2();
381 $this->all_blocks['ultimate-post_post-grid-3'] = new \ULTP\blocks\Post_Grid_3();
382 $this->all_blocks['ultimate-post_post-grid-4'] = new \ULTP\blocks\Post_Grid_4();
383 $this->all_blocks['ultimate-post_post-grid-5'] = new \ULTP\blocks\Post_Grid_5();
384 $this->all_blocks['ultimate-post_post-grid-6'] = new \ULTP\blocks\Post_Grid_6();
385 $this->all_blocks['ultimate-post_post-grid-7'] = new \ULTP\blocks\Post_Grid_7();
386 $this->all_blocks['ultimate-post_post-slider-1'] = new \ULTP\blocks\Post_Slider_1();
387 $this->all_blocks['ultimate-post_post-slider-2'] = new \ULTP\blocks\Post_Slider_2();
388 $this->all_blocks['ultimate-post_post-module-1'] = new \ULTP\blocks\Post_Module_1();
389 $this->all_blocks['ultimate-post_post-module-2'] = new \ULTP\blocks\Post_Module_2();
390 $this->all_blocks['ultimate-post_heading'] = new \ULTP\blocks\Heading();
391 $this->all_blocks['ultimate-post_image'] = new \ULTP\blocks\Image();
392 $this->all_blocks['ultimate-post_ultp-taxonomy'] = new \ULTP\blocks\Taxonomy();
393 $this->all_blocks['ultimate-post_news-ticker'] = new \ULTP\blocks\News_Ticker();
394
395 if (ultimate_post()->get_setting('ultp_builder') == 'true') {
396 require_once ULTP_PATH.'addons/builder/blocks/Archive_Title.php';
397 require_once ULTP_PATH.'addons/builder/blocks/Post_Title.php';
398 require_once ULTP_PATH.'addons/builder/blocks/Post_Content.php';
399 require_once ULTP_PATH.'addons/builder/blocks/Post_Featured_Image.php';
400 require_once ULTP_PATH.'addons/builder/blocks/Post_Breadcrumb.php';
401 require_once ULTP_PATH.'addons/builder/blocks/Post_Tag.php';
402 require_once ULTP_PATH.'addons/builder/blocks/Post_Category.php';
403 require_once ULTP_PATH.'addons/builder/blocks/Next_Previous.php';
404 require_once ULTP_PATH.'addons/builder/blocks/Post_Excerpt.php';
405 require_once ULTP_PATH.'addons/builder/blocks/Author_Box.php';
406 require_once ULTP_PATH.'addons/builder/blocks/Post_Comments.php';
407 require_once ULTP_PATH.'addons/builder/blocks/Post_View_Count.php';
408 require_once ULTP_PATH.'addons/builder/blocks/Post_Reading_Time.php';
409 require_once ULTP_PATH.'addons/builder/blocks/Post_Comment_Count.php';
410 require_once ULTP_PATH.'addons/builder/blocks/Post_Author_Meta.php';
411 require_once ULTP_PATH.'addons/builder/blocks/Post_Date_Meta.php';
412 // require_once ULTP_PATH.'addons/builder/blocks/Related_Posts.php';
413 require_once ULTP_PATH.'addons/builder/blocks/Post_Social_Share.php';
414 require_once ULTP_PATH.'addons/builder/blocks/Advance_Post_Meta.php';
415
416 new \ULTP\blocks\Archive_Title();
417 new \ULTP\blocks\Post_Title();
418 new \ULTP\blocks\Post_Content();
419 new \ULTP\blocks\Post_Featured_Image();
420 new \ULTP\blocks\Post_Breadcrumb();
421 new \ULTP\blocks\Post_Tag();
422 new \ULTP\blocks\Post_Category();
423 new \ULTP\blocks\Next_Previous();
424 new \ULTP\blocks\Post_Excerpt();
425 new \ULTP\blocks\Author_Box();
426 new \ULTP\blocks\Post_Comments();
427 new \ULTP\blocks\Post_View_Count();
428 new \ULTP\blocks\Post_Reading_Time();
429 new \ULTP\blocks\Post_Comment_Count();
430 new \ULTP\blocks\Post_Author_Meta();
431 new \ULTP\blocks\Post_Date_Meta();
432 // new \ULTP\blocks\Related_Posts();
433 new \ULTP\blocks\Post_Social_Share();
434 new \ULTP\blocks\Advance_Post_Meta();
435 }
436 }
437
438
439 /**
440 * Necessary Requires Class
441 *
442 * @since v.1.0.0
443 * @return NULL
444 */
445 public function requires() {
446 require_once ULTP_PATH.'classes/Notice.php';
447 require_once ULTP_PATH.'classes/Styles.php';
448 require_once ULTP_PATH.'classes/Options.php';
449 require_once ULTP_PATH.'classes/REST_API.php';
450 require_once ULTP_PATH.'classes/Caches.php';
451 new \ULTP\REST_API();
452 new \ULTP\Options();
453 new \ULTP\Caches();
454 new \ULTP\Styles();
455 new \ULTP\Notice();
456
457 require_once ULTP_PATH.'classes/Deactive.php';
458 new \ULTP\Deactive();
459 }
460
461
462 /**
463 * Block Categories Initialization
464 *
465 * @since v.1.0.0
466 * @param $categories(ARRAY) | $post (ARRAY)
467 * @return NULL
468 */
469 public function register_category_callback( $categories, $post ) {
470 $attr = array(
471 array(
472 'slug' => 'ultimate-post',
473 'title' => __('PostX - Gutenberg Post Blocks', 'ultimate-post')
474 ),
475 array(
476 'slug' => 'postx-site-builder',
477 'title' => __('PostX Site Builder', 'ultimate-post')
478 )
479 );
480 return array_merge($attr, $categories);
481 }
482
483
484 /**
485 * Post View Counter for Every Post
486 *
487 * @since v.1.0.0
488 * @param NUMBER | Post ID
489 * @return NULL
490 */
491 public function popular_posts_tracker_callback($post_id) {
492 if (!is_single()) { return; }
493 global $post;
494 $post_id = isset($post->ID) ? $post->ID : '';
495 $isEnable = apply_filters('ultp_view_cookies', true);
496 // add_filter( 'ultp_view_cookies', '__return_false' );
497 $cookies_disable = ultimate_post()->get_setting('disable_view_cookies');
498 if ($post_id && $isEnable && $cookies_disable != 'yes') {
499 $has_cookie = isset( $_COOKIE['ultp_view_'.$post_id] ) ? $_COOKIE['ultp_view_'.$post_id] : false;
500 if (!$has_cookie) {
501 $count = (int)get_post_meta( $post_id, '__post_views_count', true );
502 update_post_meta($post_id, '__post_views_count', $count ? (int)$count + 1 : 1 );
503 setcookie( 'ultp_view_'.$post_id, 1, time() + 86400, COOKIEPATH ); // 1 days cookies
504 }
505 }
506 }
507
508
509 /**
510 * Set Image Size
511 *
512 * @since v.1.0.0
513 * @return NULL
514 */
515 public function add_image_size() {
516 $size_disable = ultimate_post()->get_setting('disable_image_size');
517 if ($size_disable != 'yes') {
518 add_image_size('ultp_layout_landscape_large', 1200, 800, true);
519 add_image_size('ultp_layout_landscape', 870, 570, true);
520 add_image_size('ultp_layout_portrait', 600, 900, true);
521 add_image_size('ultp_layout_square', 600, 600, true);
522 }
523 }
524
525
526 /**
527 * Include Addons Directory
528 *
529 * @since v.1.0.0
530 * @return NULL
531 */
532 public function include_addons() {
533 $addons_dir = array_filter(glob(ULTP_PATH.'addons/*'), 'is_dir');
534 if (count($addons_dir) > 0) {
535 foreach( $addons_dir as $key => $value ) {
536 $addon_dir_name = str_replace(dirname($value).'/', '', $value);
537 $file_name = ULTP_PATH . 'addons/'.$addon_dir_name.'/init.php';
538 if (file_exists($file_name) ) {
539 include_once $file_name;
540 }
541 }
542 }
543 }
544
545
546 /**
547 * Addon Callback
548 *
549 * @since v.1.0.0
550 * @return STRING
551 */
552 public function ultp_addon_callback() {
553 if (!wp_verify_nonce(wp_unslash($_REQUEST['wpnonce']), 'ultp-nonce') && $local){
554 return ;
555 }
556 $addon_name = sanitize_text_field($_POST['addon']);
557 $addon_value = sanitize_text_field($_POST['value']);
558 if ($addon_name && current_user_can('administrator')) {
559 $addon_data = ultimate_post()->get_setting();
560 $addon_data[$addon_name] = $addon_value;
561 $GLOBALS['ultp_settings'][$addon_name] = $addon_value;
562 update_option('ultp_options', $addon_data);
563 }
564 }
565
566
567 /**
568 * Next Preview Callback of the Blocks
569 *
570 * @since v.1.0.0
571 * @return STRING
572 */
573 public function ultp_next_prev_callback() {
574 if (!wp_verify_nonce(wp_unslash($_REQUEST['wpnonce']), 'ultp-nonce') && $local){
575 return ;
576 }
577
578 $paged = sanitize_text_field($_POST['paged']);
579 $blockId = sanitize_text_field($_POST['blockId']);
580 $postId = sanitize_text_field($_POST['postId']);
581 $blockRaw = sanitize_text_field($_POST['blockName']);
582 $builder = isset($_POST['builder']) ? sanitize_text_field($_POST['builder']) : '';
583 $blockName = str_replace('_','/', $blockRaw);
584 $widgetBlockId = sanitize_text_field($_POST['widgetBlockId']);
585 $filterValue = sanitize_text_field($_POST['filterValue']);
586 $filterType = sanitize_text_field($_POST['filterType']);
587
588 $ultp_uniqueIds = json_decode(stripslashes(sanitize_text_field($_POST['ultpUniqueIds'])), true);
589 $ultp_current_unique_posts = json_decode(stripslashes(sanitize_text_field($_POST['ultpCurrentUniquePosts'])), true);
590
591 if($widgetBlockId) {
592 $blocks = parse_blocks(get_option('widget_block')[$widgetBlockId]['content']);
593 $this->block_return($blocks, $paged, $blockId, $blockRaw, $blockName, $builder, '', $filterValue, $filterType, $ultp_uniqueIds, $ultp_current_unique_posts);
594 }elseif ($paged && $blockId && $postId && $blockName ) {
595 $post = get_post($postId);
596 if(has_blocks($post->post_content)) {
597 $blocks = parse_blocks($post->post_content);
598 $this->block_return($blocks, $paged, $blockId, $blockRaw, $blockName, $builder, $postId, $filterValue, $filterType, $ultp_uniqueIds, $ultp_current_unique_posts);
599 }
600 }
601 }
602
603 /**
604 * Pagination for filter cal'back
605 *
606 * @since v.2.8.9
607 * @return STRING
608 */
609 public function pagination_for_filter( $attr, $postId, $blockRaw, $filter_attributes ) {
610 $attr['queryNumber'] = ultimate_post()->get_post_number(4, $attr['queryNumber'], $attr['queryNumPosts']);
611 $recent_posts = new \WP_Query( ultimate_post()->get_query( $attr ) );
612 $pageNum = ultimate_post()->get_page_number($attr, $recent_posts->found_posts);
613
614 $data_filter_value = 'data-filter-value=" ' . $filter_attributes['queryTaxValue']. '"';
615 $data_filter_type = 'data-filter-type=" ' . $filter_attributes['queryTax']. '"';
616 $wraper_after = '';
617 $style = $pageNum == 1 ? 'style="display:none"' : '';
618
619 if($attr['paginationType'] == 'loadMore') {
620 $wraper_after .= '<div '.$style.' class="ultp-loadmore "'. $data_filter_value . $data_filter_type .'>';
621 $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>';
622 $wraper_after .= '</div>';
623 }
624 else if($attr['paginationType'] == 'navigation') {
625 $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 .'>';
626 $wraper_after .= ultimate_post()->next_prev();
627 $wraper_after .= '</div>';
628 }
629 else if($attr['paginationType'] == 'pagination') {
630 $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 .'>';
631 $wraper_after .= ultimate_post()->pagination($pageNum, $attr['paginationNav'], $attr['paginationText'], $attr["paginationAjax"], $_SERVER['HTTP_REFERER']);
632 $wraper_after .= '</div>';
633 }
634 wp_reset_query();
635
636 return $wraper_after;
637 }
638
639 /**
640 * Filter Callback of the Blocks
641 *
642 * @since v.1.0.0
643 * @return STRING
644 */
645 public function filter_block_return($blocks, $blockId, $blockRaw, $blockName, $taxtype, $taxonomy, $postId, &$toReturn) {
646 foreach ($blocks as $key => $value) {
647 if ($blockName == $value['blockName']) {
648 if ($value['attrs']['blockId'] == $blockId) {
649 $attr = $this->all_blocks[$blockRaw]->get_attributes(true);
650 if ($taxonomy) {
651 $value['attrs']['queryTaxValue'] = json_encode(array($taxonomy));
652 $value['attrs']['queryTax'] = $taxtype;
653 $value['attrs']['ajaxCall'] = true;
654 }
655 if (isset($value['attrs']['queryNumber'])) {
656 $value['attrs']['queryNumber'] = $value['attrs']['queryNumber'];
657 }
658 $attr = array_merge($attr, $value['attrs']);
659
660 $filter_attributes = [];
661 $filter_attributes['queryTaxValue'] = $taxonomy;
662 $filter_attributes['queryTax'] = $taxtype;
663
664 $toReturn = [
665 'blocks' => $this->all_blocks[$blockRaw]->content($attr, true),
666 'pagination' => $this->pagination_for_filter($attr, $postId, $blockRaw, $filter_attributes),
667 'paginationType' => $attr['paginationType'],
668 'paginationShow' => $attr['paginationShow']
669 ];
670 }
671 }
672 if (!empty($value['innerBlocks'])) {
673 $this->filter_block_return($value['innerBlocks'], $blockId, $blockRaw, $blockName, $taxtype, $taxonomy, $postId, $toReturn);
674 }
675 }
676 return $toReturn;
677 }
678
679
680 /**
681 * Filter Callback of the Blocks
682 *
683 * @since v.1.0.0
684 * @return STRING
685 */
686 public function ultp_filter_callback() {
687 if (!wp_verify_nonce(wp_unslash($_REQUEST['wpnonce']), 'ultp-nonce') && $local){
688 return ;
689 }
690
691 $taxtype = sanitize_text_field($_POST['taxtype']);
692 if ($taxtype ) {
693 $blockId = sanitize_text_field($_POST['blockId']);
694 $postId = sanitize_text_field($_POST['postId']);
695 $taxonomy = sanitize_text_field($_POST['taxonomy']);
696 $blockRaw = sanitize_text_field($_POST['blockName']);
697 $blockName = str_replace('_','/', $blockRaw);
698 $post = get_post($postId);
699 $widgetBlockId = sanitize_text_field($_POST['widgetBlockId']);
700 $toReturn = [];
701 if($widgetBlockId) {
702 $blocks = parse_blocks(get_option('widget_block')[$widgetBlockId]['content']);
703 $data = $this->filter_block_return($blocks, $blockId, $blockRaw, $blockName, $taxtype, $taxonomy, $postId, $toReturn);
704 }elseif (has_blocks($post->post_content)) {
705 $blocks = parse_blocks($post->post_content);
706 $data = $this->filter_block_return($blocks, $blockId, $blockRaw, $blockName, $taxtype, $taxonomy, $postId, $toReturn);
707 }
708 return wp_send_json_success( [
709 'filteredData' => $data
710 ] );
711 }
712 }
713
714
715 /**
716 * Pagination of the Blocks
717 *
718 * @since v.1.0.0
719 * @return STRING
720 */
721 public function ultp_pagination_callback() {
722 if (!wp_verify_nonce(wp_unslash($_REQUEST['wpnonce']), 'ultp-nonce') && $local) {
723 return ;
724 }
725
726 $paged = sanitize_text_field($_POST['paged']);
727 if ($paged) {
728 $blockId = sanitize_text_field($_POST['blockId']);
729 $postId = sanitize_text_field($_POST['postId']);
730 $blockRaw = sanitize_text_field($_POST['blockName']);
731 $builder = isset($_POST['builder']) ? sanitize_text_field($_POST['builder']) : '';
732 $blockName = str_replace('_','/', $blockRaw);
733 $post = get_post($postId);
734 $widgetBlockId = sanitize_text_field($_POST['widgetBlockId']);
735 $filterValue = sanitize_text_field($_POST['filterValue']);
736 $filterType = sanitize_text_field($_POST['filterType']);
737
738 $ultp_uniqueIds = json_decode(stripslashes(sanitize_text_field($_POST['ultpUniqueIds'])), true);
739 $ultp_current_unique_posts = json_decode(stripslashes(sanitize_text_field($_POST['ultpCurrentUniquePosts'])), true);
740
741 if($widgetBlockId) {
742 $blocks = parse_blocks(get_option('widget_block')[$widgetBlockId]['content']);
743 $this->block_return($blocks, $paged, $blockId, $blockRaw, $blockName, $builder, '', $filterValue, $filterType, $ultp_uniqueIds, $ultp_current_unique_posts);
744 }elseif(has_blocks($post->post_content)) {
745 $blocks = parse_blocks($post->post_content);
746 $this->block_return($blocks, $paged, $blockId, $blockRaw, $blockName, $builder, $postId, $filterValue, $filterType, $ultp_uniqueIds, $ultp_current_unique_posts);
747 }
748 }
749 }
750
751 /**
752 * share Count callback
753 *
754 * @since v.1.0.0
755 * @return STRING
756 */
757 public function ultp_shareCount_callback() {
758 if (!wp_verify_nonce($_REQUEST['wpnonce'], 'ultp-nonce') && $local) {
759 return ;
760 }
761 $id = sanitize_text_field($_POST['postId']);
762 $count = sanitize_text_field($_POST['shareCount']);
763 $post_id = $id;
764 $new_count = $count+1;
765 update_post_meta($post_id, 'share_count', $new_count);
766 }
767
768 /**
769 * Blocks Content Start
770 *
771 * @since v.1.0.0
772 * @return STRING
773 */
774 public function block_return($blocks, $paged, $blockId, $blockRaw, $blockName, $builder, $postId, $filterValue, $filterType, $ultp_uniqueIds=[], $ultp_current_unique_posts=[]) {
775
776 foreach ($blocks as $key => $value) {
777 if ($blockName == $value['blockName']) {
778 if ($value['attrs']['blockId'] == $blockId) {
779 $attr = $this->all_blocks[$blockRaw]->get_attributes(true);
780 $value['attrs']['paged'] = $paged;
781 if ($builder) {
782 $value['attrs']['builder'] = $builder;
783 }
784 if ($postId) {
785 $attr['current_post'] = $postId;
786 }
787 if($value['attrs']['queryUnique']) {
788 $value['attrs']['loadMoreQueryUnique'] = $ultp_uniqueIds;
789 $ultp_uniqueIds[$value['attrs']['queryUnique']] = array_diff( $ultp_uniqueIds[$value['attrs']['queryUnique']], $ultp_current_unique_posts );
790 $value['attrs']['savedQueryUnique'] = $ultp_uniqueIds;
791 $value['attrs']['ultp_current_unique_posts'] = $ultp_current_unique_posts;
792 }
793 if($value['attrs']['queryUnique'] && ( $value['attrs']['paginationType'] == 'loadMore' || $value['attrs']['paginationType'] == 'navigation') && isset($ultp_uniqueIds) && !isset($ultp_current_unique_posts)) {
794 die();
795 }
796
797 if($filterValue) {
798 $value['attrs']['queryTaxValue'] = json_encode(array($filterValue));
799 $value['attrs']['queryTax'] = $filterType;
800 $value['attrs']['checkFilter'] = true;
801 }
802
803 $attr = array_merge($attr, $value['attrs']);
804 echo $this->all_blocks[$blockRaw]->content($attr, true);
805 die();
806 }
807 }
808 if (!empty($value['innerBlocks'])) {
809 $this->block_return($value['innerBlocks'], $paged, $blockId, $blockRaw, $blockName, $builder, $postId, $filterValue, $filterType, $ultp_uniqueIds, $ultp_current_unique_posts);
810 }
811 }
812 }
813
814 /**
815 * Save Settings of Option Panel
816 *
817 * @since v.2.6.0
818 * @return NULL
819 */
820 public function save_plugin_settings_data() {
821 if (!wp_verify_nonce(wp_unslash($_REQUEST['wpnonce']), 'ultp-nonce') && $local){
822 return ;
823 }
824 $data = ultimate_post()->recursive_sanitize_text_field($_POST['data']);
825 if (count($data) > 0) {
826 foreach ($data as $key => $val) {
827 ultimate_post()->set_setting($key, $val);
828 }
829 }
830 wp_send_json_success(__('Settings Data Saved...', 'ultimate-post'));
831 }
832
833 /**
834 * WordPress Plugin Notice
835 *
836 * @since v.2.6.4
837 * @return NULL
838 */
839 public function in_plugin_settings_update_message() {
840 $response = wp_remote_get(
841 'https://plugins.svn.wordpress.org/ultimate-post/trunk/readme.txt', array(
842 'method' => 'GET'
843 ));
844
845 if ( is_wp_error( $response ) || $response['response']['code'] != 200 ) {
846 return;
847 }
848
849 $changelog_lines = preg_split("/(\r\n|\n|\r)/", $response['body']);
850
851 $is_copy = false;
852 $current_tag = '';
853 $tag_text = 'Stable tag:';
854 if (!empty($changelog_lines)) {
855 echo '<hr style="border-color:#dba617;"/>';
856 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>';
857 echo '<hr style="border-color:#dba617;"/>';
858 echo '<ul style="max-height:200px;overflow:scroll;">';
859 foreach ($changelog_lines as $key => $line) {
860 // Get Current Vesion
861 if ($current_tag == '') {
862 if (strpos($line, $tag_text) !== false) {
863 $current_tag = trim(str_replace($tag_text, '', $line));
864 }
865 } else {
866 if ($is_copy) {
867 if (strpos($line, '= '.ULTP_VER) !== false) {
868 break;
869 }
870 if (!empty($line)) {
871 if (strpos($line, '= ') !== false) {
872 echo '<li style="color:#50575e;font-weight:bold;"><br/>'.esc_html($line).'</li>';
873 } else {
874 echo '<li>'.esc_html($line).'</li>';
875 }
876 }
877 } else {
878 if (strpos($line, '= '.$current_tag) !== false) { // Current Version
879 $is_copy = true;
880 echo '<li style="color:#50575e;font-weight:bold;">'.esc_html($line).'</li>';
881 }
882 }
883 }
884 }
885 echo '</ul>';
886 }
887 }
888
889 /**
890 * Check Plugin Upgrade
891 *
892 * @since 2.4.3
893 *
894 * @return void
895 */
896 public function plugin_upgrade_completed() {
897 if (ultimate_post()->get_setting('init_setup') != 'yes') {
898 ultimate_post()->set_setting('init_setup', 'yes');
899 }
900 }
901
902 }