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

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