PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.13.0
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.13.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
← All changes | includes/admin/export.php +143 -0 2.7.52.13.0 View file →
@@ -1,0 +1,143 @@
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 +}