PluginProbe
Post Grid Gutenberg Blocks – PostX / 2.9.2
Post Grid Gutenberg Blocks – PostX v2.9.2
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.2, at classes/Initialization.php

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