PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / trunk
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder vtrunk
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 1.2.0 1.2.1 All 78 releases
ablocks / includes / admin / export.php

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

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