PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 3.2.0
ShopBuilder – WooCommerce Builder For Elementor v3.2.0
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 +41 -71 2.1.43.2.0 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,48 +35,47 @@
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 = '#';
51 + if ( ! wp_verify_nonce( Fns::get_nonce(), rtsb()->nonceText ) || ! $page_type ) {
52 + $return = [
53 + 'success' => false,
54 + 'post_id' => $page_id,
55 + ];
56 + wp_send_json( $return );
81 57
82 - if ( ! Fns::verify_nonce() || ! $page_type ) {
58 + }
59 + if ( ! current_user_can( 'manage_options' ) ) {
83 60 $return = [
84 61 'success' => false,
85 62 'post_id' => $page_id,
86 63 ];
87 64 wp_send_json( $return );
88 -
89 65 }
90 66
91 - add_filter( 'pre_option_elementor_unfiltered_files_upload', function () {
92 - return '1';
93 - }, 99 );
67 + add_filter(
68 + 'pre_option_elementor_unfiltered_files_upload',
69 + function () {
70 + return '1';
71 + },
72 + 99
73 + );
94 74
95 75 Plugin::$instance->files_manager->clear_cache();
96 76 add_filter( 'rtsb_import_status', '__return_true' );
97 77
98 - $status = $_REQUEST['status'] ?? '';
99 - $post_args = [ 'timeout' => 120 ];
100 - $post_args['body'] = [
101 - 'status' => $status,
102 - 'layout_id' => $import_layout,
103 - 'has_pro' => $hasPro
104 - ];
105 - $layoutRequest = wp_remote_post( rtsb()->BASE_API, $post_args );
106 -
107 - if ( is_wp_error( $layoutRequest ) ) {
108 - wp_send_json_error( [ 'messages' => $layoutRequest->get_error_messages() ] );
109 - }
110 - $layoutJson = json_decode( $layoutRequest['body'], true );
111 78 $option_name = BuilderFns::option_name( $page_type );
112 79
113 80 $post_data = [
114 81 'ID' => $page_id,
@@ -139,25 +106,26 @@
139 106 }
140 107
141 108 $edit_by = '';
142 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
143 113 if ( 'product' == $page_type ) {
144 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 );
145 116 }
146 - $edit_by = Fns::page_edit_with( $page_id );
147 - $category_archive = array_unique( isset( $_POST['category_archive'] ) && is_array( $_POST['category_archive'] ) ? array_map( 'sanitize_text_field', $_POST['category_archive'] ) : [] );
148 - $the_products = array_unique( isset( $_POST['the_products'] ) && is_array( $_POST['the_products'] ) ? array_map( 'absint', $_POST['the_products'] ) : [] );
149 - 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 {
150 124 if ( 'default_template' === $default_template ) {
151 - // update_option( $option_name, $page_id );
152 125 TemplateSettings::instance()->set_option( $option_name, $page_id );
153 126 } else {
154 - // $has_default = get_option( $option_name );
155 - $has_default = TemplateSettings::instance()->get_option( $option_name );
156 - if ( ! $has_default ) {
157 - // update_option( $option_name, '' );
158 - TemplateSettings::instance()->set_option( $option_name, '' );
159 - }
127 + TemplateSettings::instance()->set_option( $option_name, '' );
160 128 }
161 129 }
162 130
163 131 $action = 'edit';
@@ -171,12 +139,10 @@
171 139 ],
172 140 admin_url( 'post.php' )
173 141 );
174 142
175 - if ( ! empty( $layoutJson['data'] ) ) {
176 - $data = json_decode( $layoutJson['data'], true );
177 - $content = $this->process_export_import_content( $data, 'on_import' );
178 - $content = json_encode( $content );
143 + if ( ! empty( $layoutJson ) && is_array( $layoutJson ) ) {
144 + $content = wp_slash( wp_json_encode( $layoutJson ) );
179 145 update_post_meta( $page_id, '_elementor_data', $content );
180 146 update_post_meta( $page_id, '_rtsb_import_id', $import_layout );
181 147 }
182 148 }
@@ -190,9 +156,13 @@
190 156 'new_page' => $new_page,
191 157
192 158 ];
193 159 if ( $edit_by ) {
194 - $return['edit_btn_text'] = esc_html__( sprintf( 'Edit with %s', $edit_by ), 'shopbuilder' );
160 + $return['edit_btn_text'] = sprintf(
161 + /* translators: %s: Edit */
162 + esc_html__( 'Edit with %s', 'shopbuilder' ),
163 + esc_html( $edit_by )
164 + );
195 165 }
196 166 wp_send_json( $return );
197 167 wp_die();
198 168 }