PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 3.2.6
ShopBuilder – WooCommerce Builder For Elementor v3.2.6
3.4.2 3.4.1 3.4.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 All 63 releases
← All changes | app/Controllers/Admin/Ajax/CreateTemplate.php +20 -61 2.1.143.2.6 View file →
@@ -1,12 +1,11 @@
1 1 <?php
2 2
3 3 namespace RadiusTheme\SB\Controllers\Admin\Ajax;
4 4
5 -use Elementor\Core\Files\Uploads_Manager;
6 5 use Elementor\Plugin;
7 -use Elementor\TemplateLibrary\Source_Base;
8 6 use RadiusTheme\SB\Helpers\BuilderFns;
7 +use RadiusTheme\SB\Helpers\Cache;
9 8 use RadiusTheme\SB\Helpers\Fns;
10 9 use RadiusTheme\SB\Models\TemplateSettings;
11 10 use RadiusTheme\SB\Traits\SingletonTrait;
12 11
@@ -17,9 +16,9 @@
17 16
18 17 /**
19 18 * Default Template Switch.
20 19 */
21 -class CreateTemplate extends Source_Base {
20 +class CreateTemplate {
22 21 /**
23 22 * Singleton Trait.
24 23 */
25 24 use SingletonTrait;
@@ -30,39 +29,8 @@
30 29 private function __construct() {
31 30 add_action( 'wp_ajax_rtsb_builder_create_template', [ $this, 'response' ] );
32 31 }
33 32
34 -
35 - public function get_id() {
36 - }
37 -
38 - public function get_title() {
39 - }
40 -
41 - public function register_data() {
42 - }
43 -
44 - public function get_items( $args = [] ) {
45 - }
46 -
47 - public function get_item( $template_id ) {
48 - }
49 -
50 - public function get_data( array $args ) {
51 - }
52 -
53 - public function delete_template( $template_id ) {
54 - }
55 -
56 - public function save_item( $template_data ) {
57 - }
58 -
59 - public function update_item( $new_data ) {
60 - }
61 -
62 - public function export_template( $template_id ) {
63 - }
64 -
65 33 /**
66 34 * Create template
67 35 *
68 36 * @return void
@@ -67,19 +35,20 @@
67 35 *
68 36 * @return void
69 37 */
70 38 public function response() {
71 - $page_type = isset( $_POST['page_type'] ) ? sanitize_text_field( wp_unslash( $_POST['page_type'] ) ) : null; // rtsb_tb_template_type - it represent to template type
39 + Cache::clear_transient_cache();
40 + $page_type = isset( $_POST['page_type'] ) ? sanitize_text_field( wp_unslash( $_POST['page_type'] ) ) : null; // rtsb_tb_template_type - it represent to template type.
72 41 $page_id = isset( $_POST['page_id'] ) ? absint( wp_unslash( $_POST['page_id'] ) ) : null;
73 42 $page_name = isset( $_POST['page_name'] ) ? sanitize_text_field( wp_unslash( $_POST['page_name'] ) ) : null;
74 43 $hasPro = isset( $_POST['hasPro'] ) ? sanitize_text_field( wp_unslash( $_POST['hasPro'] ) ) : null;
75 44 $edit_with = isset( $_POST['template_edit_with'] ) ? sanitize_text_field( wp_unslash( $_POST['template_edit_with'] ) ) : null;
76 45 $default_template = isset( $_POST['default_template'] ) ? sanitize_text_field( wp_unslash( $_POST['default_template'] ) ) : null;
77 - $import_layout = isset( $_POST['import_default_layout'] ) ? sanitize_text_field( $_POST['import_default_layout'] ) : null;
46 + $import_layout = isset( $_POST['import_default_layout'] ) ? sanitize_text_field( $_POST['import_default_layout'] ) : null; //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash
47 + $layoutJson = isset( $_POST['demoData'] ) ? $_POST['demoData'] : null; // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
78 48 $product_id = isset( $_POST['preview_product_id'] ) ? absint( $_POST['preview_product_id'] ) : null;
49 + $url = '#';
79 50
80 - $url = '#';
81 -
82 51 if ( ! wp_verify_nonce( Fns::get_nonce(), rtsb()->nonceText ) || ! $page_type ) {
83 52 $return = [
84 53 'success' => false,
85 54 'post_id' => $page_id,
@@ -105,22 +74,8 @@
105 74
106 75 Plugin::$instance->files_manager->clear_cache();
107 76 add_filter( 'rtsb_import_status', '__return_true' );
108 77
109 - $status = sanitize_text_field( wp_unslash( $_REQUEST['status'] ?? '' ) );
110 - $post_args = [ 'timeout' => 120 ];
111 - $post_args['body'] = [
112 - 'status' => $status,
113 - 'layout_id' => $import_layout,
114 - 'has_pro' => $hasPro,
115 - ];
116 - $layoutRequest = wp_remote_post( rtsb()->BASE_API, $post_args );
117 -
118 - $layoutJson = [];
119 - if ( ! is_wp_error( $layoutRequest ) && ! empty( $layoutRequest['body'] ) ) {
120 - $layoutJson = json_decode( $layoutRequest['body'], true );
121 - }
122 -
123 78 $option_name = BuilderFns::option_name( $page_type );
124 79
125 80 $post_data = [
126 81 'ID' => $page_id,
@@ -151,19 +106,25 @@
151 106 }
152 107
153 108 $edit_by = '';
154 109 if ( $page_id ) {
110 + $edit_by = Fns::page_edit_with( $page_id );
111 + $template_for = sanitize_text_field( wp_unslash( $_POST['product_page_for'] ?? '' ) );
112 + $selected_category = array_unique( isset( $_POST['selected_category'] ) && is_array( $_POST['selected_category'] ) ? array_map( 'sanitize_text_field', $_POST['selected_category'] ) : [] ); //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash
155 113 if ( 'product' == $page_type ) {
156 114 update_post_meta( $page_id, BuilderFns::$product_template_meta, $product_id );
115 + update_post_meta( $page_id, '_is_product_page_template_for', $template_for );
157 116 }
158 - $edit_by = Fns::page_edit_with( $page_id );
159 - $category_archive = array_unique( isset( $_POST['category_archive'] ) && is_array( $_POST['category_archive'] ) ? array_map( 'sanitize_text_field', $_POST['category_archive'] ) : [] );
160 - $the_products = array_unique( isset( $_POST['the_products'] ) && is_array( $_POST['the_products'] ) ? array_map( 'absint', $_POST['the_products'] ) : [] );
161 - if ( ! count( $the_products ) && ! count( $category_archive ) ) {
117 +
118 + $has_default = TemplateSettings::instance()->get_option( $option_name );
119 + if ( ( 'product' === $page_type && 'all_products' !== $template_for ) || ( 'archive' === $page_type && count( $selected_category ) ) ) {
120 + if ( ! $has_default ) {
121 + TemplateSettings::instance()->set_option( $option_name, '' );
122 + }
123 + } else {
162 124 if ( 'default_template' === $default_template ) {
163 125 TemplateSettings::instance()->set_option( $option_name, $page_id );
164 126 } else {
165 - $has_default = TemplateSettings::instance()->get_option( $option_name );
166 127 if ( ! $has_default ) {
167 128 TemplateSettings::instance()->set_option( $option_name, '' );
168 129 }
169 130 }
@@ -180,12 +141,10 @@
180 141 ],
181 142 admin_url( 'post.php' )
182 143 );
183 144
184 - if ( ! empty( $layoutJson['data'] ) ) {
185 - $data = json_decode( $layoutJson['data'], true );
186 - $content = $this->process_export_import_content( $data, 'on_import' );
187 - $content = wp_json_encode( $content );
145 + if ( ! empty( $layoutJson ) && is_array( $layoutJson ) ) {
146 + $content = wp_slash( wp_json_encode( $layoutJson ) );
188 147 update_post_meta( $page_id, '_elementor_data', $content );
189 148 update_post_meta( $page_id, '_rtsb_import_id', $import_layout );
190 149 }
191 150 }