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

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