PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.13.1
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.13.1
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 +88 -6 2.9.12.13.1 View file →
@@ -1,8 +1,16 @@
1 1 <?php
2 2
3 3 namespace ABlocks\admin;
4 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 +
5 13 class Export {
6 14
7 15 public static function init() {
8 16 $self = new self();
@@ -7,8 +15,9 @@
7 15 public static function init() {
8 16 $self = new self();
9 17 add_action( 'rss2_head', [ $self, 'add_options_to_rss' ] );
10 18 add_action( 'export_filters', [ $self, 'add_patterns_radio' ] );
19 + add_action( 'init', [ $self, 'allow_template_export' ] );
11 20 }
12 21
13 22 /**
14 23 * Add options to WXR.
@@ -16,19 +25,74 @@
16 25 * @return void
17 26 */
18 27 public function add_options_to_rss() {
19 28 global $pagenow;
20 - // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Don't need nonce verification here, we're just checking if content's value.
29 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Don't need nonce verification here, we're just checking if content's value.
21 30 if ( 'export.php' !== $pagenow || ! isset( $_GET['content'] ) || 'all' !== sanitize_text_field( wp_unslash( $_GET['content'] ) ) ) {
22 31 return;
23 32 }
24 33
25 - $options = array(
26 - 'show_on_front' => get_option( 'show_on_front', 'posts' ),
27 - 'page_on_front' => get_option( 'page_on_front', 0 ),
28 - 'page_for_posts' => get_option( 'page_for_posts', 0 ),
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() ) ),
29 73 );
30 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 +
31 95 $custom_data_xml = '<ablocks_options>';
32 96 foreach ( $options as $key => $value ) {
33 97 $custom_data_xml .= sprintf(
34 98 '<%1$s>%2$s</%1$s>',
@@ -41,8 +105,14 @@
41 105 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Want to put valid xml in RSS head.
42 106 echo $custom_data_xml;
43 107 }
44 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 +
45 115 /**
46 116 * Display "Patterns" radio in export page.
47 117 *
48 118 * @return void
@@ -50,12 +120,24 @@
50 120 public function add_patterns_radio() {
51 121 ?>
52 122 <p>
53 123 <label>
54 - <input type="radio" name="content" value="wp_block" />
124 + <input type="radio" name="content" value="wp_block"/>
55 125 <?php esc_html_e( 'Patterns', 'ablocks' ); ?>
56 126 </label>
57 127 </p>
58 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 + }
59 141 }
60 142
61 143 }