PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 3.2.4
ShopBuilder – WooCommerce Builder For Elementor v3.2.4
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 +34 -70 2.1.73.2.4 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,20 +35,21 @@
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 - if ( ! Fns::verify_nonce() || ! $page_type ) {
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,
86 55 ];
@@ -86,9 +55,9 @@
86 55 ];
87 56 wp_send_json( $return );
88 57
89 58 }
90 - if ( ! current_user_can( 'manage_options' ) ) {
59 + if ( ! current_user_can( 'manage_options' ) ) {
91 60 $return = [
92 61 'success' => false,
93 62 'post_id' => $page_id,
94 63 ];
@@ -94,29 +63,19 @@
94 63 ];
95 64 wp_send_json( $return );
96 65 }
97 66
98 - add_filter( 'pre_option_elementor_unfiltered_files_upload', function () {
99 - return '1';
100 - }, 99 );
67 + add_filter(
68 + 'pre_option_elementor_unfiltered_files_upload',
69 + function () {
70 + return '1';
71 + },
72 + 99
73 + );
101 74
102 75 Plugin::$instance->files_manager->clear_cache();
103 76 add_filter( 'rtsb_import_status', '__return_true' );
104 77
105 - $status = $_REQUEST['status'] ?? '';
106 - $post_args = [ 'timeout' => 120 ];
107 - $post_args['body'] = [
108 - 'status' => $status,
109 - 'layout_id' => $import_layout,
110 - 'has_pro' => $hasPro
111 - ];
112 - $layoutRequest = wp_remote_post( rtsb()->BASE_API, $post_args );
113 -
114 - $layoutJson = [];
115 - if ( ! is_wp_error( $layoutRequest ) && ! empty( $layoutRequest['body'] ) ) {
116 - $layoutJson = json_decode( $layoutRequest['body'], true );
117 - }
118 -
119 78 $option_name = BuilderFns::option_name( $page_type );
120 79
121 80 $post_data = [
122 81 'ID' => $page_id,
@@ -147,23 +106,26 @@
147 106 }
148 107
149 108 $edit_by = '';
150 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
151 113 if ( 'product' == $page_type ) {
152 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 );
153 116 }
154 - $edit_by = Fns::page_edit_with( $page_id );
155 - $category_archive = array_unique( isset( $_POST['category_archive'] ) && is_array( $_POST['category_archive'] ) ? array_map( 'sanitize_text_field', $_POST['category_archive'] ) : [] );
156 - $the_products = array_unique( isset( $_POST['the_products'] ) && is_array( $_POST['the_products'] ) ? array_map( 'absint', $_POST['the_products'] ) : [] );
157 - 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 {
158 124 if ( 'default_template' === $default_template ) {
159 - // update_option( $option_name, $page_id );
160 125 TemplateSettings::instance()->set_option( $option_name, $page_id );
161 126 } else {
162 - // $has_default = get_option( $option_name );
163 - $has_default = TemplateSettings::instance()->get_option( $option_name );
164 127 if ( ! $has_default ) {
165 - // update_option( $option_name, '' );
166 128 TemplateSettings::instance()->set_option( $option_name, '' );
167 129 }
168 130 }
169 131 }
@@ -179,12 +141,10 @@
179 141 ],
180 142 admin_url( 'post.php' )
181 143 );
182 144
183 - if ( ! empty( $layoutJson['data'] ) ) {
184 - $data = json_decode( $layoutJson['data'], true );
185 - $content = $this->process_export_import_content( $data, 'on_import' );
186 - $content = json_encode( $content );
145 + if ( ! empty( $layoutJson ) && is_array( $layoutJson ) ) {
146 + $content = wp_slash( wp_json_encode( $layoutJson ) );
187 147 update_post_meta( $page_id, '_elementor_data', $content );
188 148 update_post_meta( $page_id, '_rtsb_import_id', $import_layout );
189 149 }
190 150 }
@@ -198,9 +158,13 @@
198 158 'new_page' => $new_page,
199 159
200 160 ];
201 161 if ( $edit_by ) {
202 - $return['edit_btn_text'] = esc_html__( sprintf( 'Edit with %s', $edit_by ), 'shopbuilder' );
162 + $return['edit_btn_text'] = sprintf(
163 + /* translators: %s: Edit */
164 + esc_html__( 'Edit with %s', 'shopbuilder' ),
165 + esc_html( $edit_by )
166 + );
203 167 }
204 168 wp_send_json( $return );
205 169 wp_die();
206 170 }