PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.8.0
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.8.0
2.13.0 2.13.1 2.12.0 2.11.1 2.11.0 2.10.0 2.9.0 2.7.4 2.7.5 2.7.6 2.7.7 2.8.0 2.8.1 2.9.1 trunk 1.0 1.0-beta1 1.0-beta2 1.0-beta3 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 All 80 releases
ablocks / includes / admin / export.php

export.php in aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder 2.8.0, at includes/admin/export.php

139 lines 7.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ABlocks\admin;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit;
7 }
8
9 use ABlocks\Admin\Settings\Base;
10 use ABlocks\Helper;
11
12 class Export {
13
14 public static function init() {
15 $self = new self();
16 add_action( 'rss2_head', [ $self, 'add_options_to_rss' ] );
17 add_action( 'export_filters', [ $self, 'add_patterns_radio' ] );
18 add_action( 'init', [ $self, 'allow_template_export' ] );
19 }
20
21 /**
22 * Add options to WXR.
23 *
24 * @return void
25 */
26 public function add_options_to_rss() {
27 global $pagenow;
28 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Don't need nonce verification here, we're just checking if content's value.
29 if ( 'export.php' !== $pagenow || ! isset( $_GET['content'] ) || 'all' !== sanitize_text_field( wp_unslash( $_GET['content'] ) ) ) {
30 return;
31 }
32
33 $default_settings = Base::get_default_data();
34 $options = array(
35 'show_on_front' => get_option( 'show_on_front', 'posts' ),
36 'page_on_front' => get_option( 'page_on_front', 0 ),
37 'page_for_posts' => get_option( 'page_for_posts', 0 ),
38 'ablocks_login_page' => Helper::get_settings( 'login_page', 0 ),
39 'ablocks_registration_page' => Helper::get_settings( 'registration_page', 0 ),
40 'ablocks_forget_password_page' => Helper::get_settings( 'forget_password_page', 0 ),
41 'ablocks_default_container_width' => Helper::get_settings( 'default_container_width', $default_settings['default_container_width'] ),
42 'ablocks_container_padding' => Helper::get_settings( 'container_padding', $default_settings['container_padding'] ),
43 'ablocks_container_element_gap' => Helper::get_settings( 'container_element_gap', $default_settings['container_element_gap'] ),
44 'ablocks_global_color' => $this->process_ablocks_json_data( 'global_color' ),
45 'ablocks_global_typography' => $this->process_ablocks_json_data( 'global_typography' ),
46 'ablocks_global_font_family_fallback' => Helper::get_settings( 'global_font_family_fallback', $default_settings['global_font_family_fallback'] ),
47 'ablocks_global_body_text_color' => Helper::get_settings( 'global_body_text_color', $default_settings['global_body_text_color'] ),
48 'ablocks_global_body_typography' => $this->process_ablocks_json_data( 'global_body_typography' ),
49 'ablocks_global_body_paragraph_space' => $this->process_ablocks_json_data( 'global_body_paragraph_space' ),
50 'ablocks_global_link_color' => Helper::get_settings( 'global_link_color', $default_settings['global_link_color'] ),
51 'ablocks_global_link_hover_color' => Helper::get_settings( 'global_link_hover_color', $default_settings['global_link_hover_color'] ),
52 'ablocks_global_link_typography' => $this->process_ablocks_json_data( 'global_link_typography' ),
53 'ablocks_global_link_hover_typography' => $this->process_ablocks_json_data( 'global_link_hover_typography' ),
54 'ablocks_global_h1_color' => Helper::get_settings( 'global_h1_color', $default_settings['global_h1_color'] ),
55 'ablocks_global_h1_typography' => $this->process_ablocks_json_data( 'global_h1_typography' ),
56 'ablocks_global_h2_color' => Helper::get_settings( 'global_h2_color', $default_settings['global_h2_color'] ),
57 'ablocks_global_h2_typography' => $this->process_ablocks_json_data( 'global_h2_typography' ),
58 'ablocks_global_h3_color' => Helper::get_settings( 'global_h3_color', $default_settings['global_h3_color'] ),
59 'ablocks_global_h3_typography' => $this->process_ablocks_json_data( 'global_h3_typography' ),
60 'ablocks_global_h4_color' => Helper::get_settings( 'global_h4_color', $default_settings['global_h4_color'] ),
61 'ablocks_global_h4_typography' => $this->process_ablocks_json_data( 'global_h4_typography' ),
62 'ablocks_global_h5_color' => Helper::get_settings( 'global_h5_color', $default_settings['global_h5_color'] ),
63 'ablocks_global_h5_typography' => $this->process_ablocks_json_data( 'global_h5_typography' ),
64 'ablocks_global_h6_color' => Helper::get_settings( 'global_h6_color', $default_settings['global_h6_color'] ),
65 'ablocks_global_h6_typography' => $this->process_ablocks_json_data( 'global_h6_typography' ),
66 'ablocks_frontend_dashboard_page' => $this->process_ablocks_json_data( 'frontend_dashboard_page' ),
67 'ablocks_frontend_dashboard_sub_pages' => base64_encode( get_option( 'ablocks_frontend_dashboard_sub_pages', '' ) )
68 );
69
70 if ( class_exists( 'StoreEngine' ) ) {
71 $options['storeengine_shop_page'] = \StoreEngine\Utils\Helper::get_settings( 'shop_page' );
72 $options['storeengine_cart_page'] = \StoreEngine\Utils\Helper::get_settings( 'cart_page' );
73 $options['storeengine_checkout_page'] = \StoreEngine\Utils\Helper::get_settings( 'checkout_page' );
74 $options['storeengine_thankyou_page'] = \StoreEngine\Utils\Helper::get_settings( 'thankyou_page' );
75 $options['storeengine_dashboard_page'] = \StoreEngine\Utils\Helper::get_settings( 'dashboard_page' );
76 $options['storeengine_membership_pricing_page'] = \StoreEngine\Utils\Helper::get_settings( 'membership_pricing_page' );
77 $options['storeengine_affiliate_registration_page'] = \StoreEngine\Utils\Helper::get_settings( 'affiliate_registration_page' );
78 }
79
80 if ( class_exists( 'Academy' ) ) {
81 $options['academy_frontend_dashboard_page'] = \Academy\Helper::get_settings( 'frontend_dashboard_page' );
82 $options['academy_frontend_student_reg_page'] = \Academy\Helper::get_settings( 'frontend_student_reg_page' );
83 $options['academy_password_reset_page'] = \Academy\Helper::get_settings( 'password_reset_page' );
84 $options['academy_lessons_page'] = \Academy\Helper::get_settings( 'lessons_page' );
85 $options['academy_course_page'] = \Academy\Helper::get_settings( 'course_page' );
86 $options['academy_frontend_instructor_reg_page'] = \Academy\Helper::get_settings( 'frontend_instructor_reg_page' );
87 $options['academy_tutor_booking_page'] = \Academy\Helper::get_settings( 'tutor_booking_page' );
88 }
89
90 $custom_data_xml = '<ablocks_options>';
91 foreach ( $options as $key => $value ) {
92 $custom_data_xml .= sprintf(
93 '<%1$s>%2$s</%1$s>',
94 esc_xml( $key ),
95 esc_xml( $value )
96 );
97 }
98 $custom_data_xml .= '</ablocks_options>';
99
100 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Want to put valid xml in RSS head.
101 echo $custom_data_xml;
102 }
103
104 private function process_ablocks_json_data( string $key ): string {
105 $default_settings = Base::get_default_data();
106
107 return base64_encode( wp_json_encode( Helper::get_settings( $key, $default_settings[ $key ] ) ) );
108 }
109
110 /**
111 * Display "Patterns" radio in export page.
112 *
113 * @return void
114 */
115 public function add_patterns_radio() {
116 ?>
117 <p>
118 <label>
119 <input type="radio" name="content" value="wp_block"/>
120 <?php esc_html_e( 'Patterns', 'ablocks' ); ?>
121 </label>
122 </p>
123 <?php
124 }
125
126 public function allow_template_export() {
127 global $wp_post_types;
128
129 if ( isset( $wp_post_types['wp_template'] ) ) {
130 $wp_post_types['wp_template']->can_export = true;
131 }
132
133 if ( isset( $wp_post_types['wp_template_part'] ) ) {
134 $wp_post_types['wp_template_part']->can_export = true;
135 }
136 }
137
138 }
139