PluginProbe
SellKit – Funnel builder and checkout optimizer for WooCommerce to sell more, faster / 2.7.0
SellKit – Funnel builder and checkout optimizer for WooCommerce to sell more, faster v2.7.0
2.8.0 2.7.0 2.6.0 trunk 1.1.0 1.1.4 1.2.1 1.2.2 1.2.3 1.2.5 1.2.9 1.3.1 1.3.2 1.5.0 1.5.1 1.5.4 1.5.7 1.5.8 1.5.9 1.6.2 1.6.5 1.6.8 1.7.2 1.7.4 1.7.5 All 44 releases
← All changes | includes/admin/funnel/importer/step-importer.php +54 -11 1.5.8 → 2.7.0 View file →
@@ -2,8 +2,9 @@
2 2
3 3 namespace Sellkit\Admin\Funnel\Importer;
4 4
5 5 use Sellkit\Admin\Funnel\Importer\Page_Builder\Importer_Base;
6 +use stdClass;
6 7
7 8 defined( 'ABSPATH' ) || die();
8 9
9 10 /**
@@ -97,13 +98,23 @@
97 98 * @SuppressWarnings(PHPMD.NPathComplexity)
98 99 * @SuppressWarnings(PHPMD.CyclomaticComplexity)
99 100 */
100 101 public function import_to_funnel( $data, $funnel_id, $origin_node = null, $target_node = null, $target_index = 0 ) {
101 - $meta_data = (array) $data->meta;
102 + $meta_data = [];
103 + $step_data = [];
104 +
105 + if ( empty( $data ) ) {
106 + $data = new stdClass();
107 + }
108 +
109 + if ( property_exists( $data, 'meta' ) ) {
110 + $meta_data = (array) $data->meta;
111 + }
112 +
102 113 $funnel_step_data = get_post_meta( $funnel_id, 'sellkit_steps', true );
103 114 $funnel_nodes = get_post_meta( $funnel_id, 'nodes', true );
104 115
105 - if ( empty( $meta_data['nodes'] ) ) {
116 + if ( empty( $meta_data['nodes'] ) && array_key_exists( 'step_data', $meta_data ) ) {
106 117 $step_data = unserialize( $meta_data['step_data'] ); //phpcs:ignore
107 118 }
108 119
109 120 if ( ! empty( $meta_data['nodes'] ) ) {
@@ -147,11 +158,11 @@
147 158 $new_funnel_step_data = (array) $funnel_step_data;
148 159 $new_step_id = intval( end( $old_node_keys ) ) + 1;
149 160
150 161 if (
151 - 'decision' === $new_step_data['type']['key'] && ! is_null( $target_node ) ||
152 - 'upsell' === $new_step_data['type']['key'] && ! is_null( $target_node ) ||
153 - 'downsell' === $new_step_data['type']['key'] && ! is_null( $target_node )
162 + ( array_key_exists( 'type', $new_step_data ) && 'decision' === $new_step_data['type']['key'] && ! is_null( $target_node ) ) ||
163 + ( array_key_exists( 'type', $new_step_data ) && 'upsell' === $new_step_data['type']['key'] && ! is_null( $target_node ) ) ||
164 + ( array_key_exists( 'type', $new_step_data ) && 'downsell' === $new_step_data['type']['key'] && ! is_null( $target_node ) )
154 165 ) {
155 166 $new_step_data['targets'] = [
156 167 $current_target,
157 168 $current_target
@@ -163,9 +174,9 @@
163 174 if ( 'none' === $origin_node && 'none' === $target_node ) {
164 175 $new_funnel_step_data = [ 1 => $new_step_data ];
165 176 }
166 177
167 - if ( 'last-node' !== $origin_node && is_object( $new_funnel_step_data[ $origin_node ]['type'] ) ) {
178 + if ( 'last-node' !== $origin_node && ! empty( $origin_node ) && isset( $new_funnel_step_data[ $origin_node ] ) && is_object( $new_funnel_step_data[ $origin_node ]['type'] ) ) {
168 179 $new_funnel_step_data[ $origin_node ]['type'] = (array) $new_funnel_step_data[ $origin_node ]['type'];
169 180 }
170 181
171 182 if (
@@ -170,8 +181,9 @@
170 181
171 182 if (
172 183 'last-node' !== $origin_node &&
173 184 'none' !== $origin_node &&
185 + ! empty( $origin_node ) &&
174 186 'decision' !== $new_funnel_step_data[ $origin_node ]['type']['key'] &&
175 187 'upsell' !== $new_funnel_step_data[ $origin_node ]['type']['key'] &&
176 188 'downsell' !== $new_funnel_step_data[ $origin_node ]['type']['key']
177 189 ) {
@@ -178,9 +190,11 @@
178 190 $new_funnel_step_data[ $origin_node ]['targets'] = [ [ 'nodeId' => strval( $new_step_id ) ] ];
179 191 }
180 192
181 193 if (
194 + 'none' !== $origin_node &&
182 195 'last-node' !== $origin_node &&
196 + ! empty( $origin_node ) &&
183 197 (
184 198 'decision' === $new_funnel_step_data[ $origin_node ]['type']['key'] ||
185 199 'upsell' === $new_funnel_step_data[ $origin_node ]['type']['key'] ||
186 200 'downsell' === $new_funnel_step_data[ $origin_node ]['type']['key']
@@ -196,8 +210,22 @@
196 210
197 211 $new_funnel_step_data[ $origin_node ]['targets'][ (int) $target_index ] = [ 'nodeId' => strval( $new_step_id ) ];
198 212 }
199 213
214 + if (
215 + 'last-node' !== $origin_node &&
216 + isset( $new_funnel_step_data[ $new_step_id ] ) &&
217 + isset( $new_funnel_step_data[ $new_step_id ]['origin_node'] ) &&
218 + 'last-node' === $new_funnel_step_data[ $new_step_id ]['origin_node'] &&
219 + (
220 + 'decision' !== $new_funnel_step_data[ $new_step_id ]['type']['key'] ||
221 + 'upsell' !== $new_funnel_step_data[ $new_step_id ]['type']['key'] ||
222 + 'downsell' !== $new_funnel_step_data[ $new_step_id ]['type']['key']
223 + )
224 + ) {
225 + unset( $new_funnel_step_data[ $new_step_id ]['origin_node'] );
226 + }
227 +
200 228 if ( empty( $funnel_nodes ) && 'none' !== $origin_node && 'none' !== $target_node ) {
201 229 update_post_meta( $funnel_id, 'sellkit_steps', $new_funnel_step_data );
202 230 }
203 231
@@ -204,22 +232,33 @@
204 232 if ( ! empty( $funnel_nodes ) || ( 'none' === $origin_node && 'none' === $target_node ) ) {
205 233 update_post_meta( $funnel_id, 'nodes', $new_funnel_step_data );
206 234 }
207 235
208 - $args = array(
236 + $content = '';
237 +
238 + if ( property_exists( $data, 'post_content' ) ) {
239 + $content = $data->post_content;
240 + }
241 +
242 + $args = [
209 243 'ID' => $new_step_data['page_id'],
210 - 'post_content' => $data->post_content,
211 - );
244 + 'post_content' => $content,
245 + ];
212 246
213 247 wp_update_post( $args );
214 248
249 + if ( ! property_exists( $data, 'meta' ) ) {
250 + $data->meta = [];
251 + }
252 +
215 253 foreach ( $data->meta as $meta_key => $meta_value ) {
216 254 if ( '_elementor_data' === $meta_key ) {
217 255
218 256 if ( ! is_array( $meta_value ) ) {
219 - $elementor_data = add_magic_quotes( $meta_value );
220 - $elementor_data = json_decode( $elementor_data, true );
257 + $elementor_data = json_decode( $meta_value, true );
258 + $elementor_data = add_magic_quotes( $elementor_data );
221 259 }
260 +
222 261 update_post_meta( $new_step_data['page_id'], $meta_key, $elementor_data );
223 262 continue;
224 263 }
225 264
@@ -247,8 +286,12 @@
247 286 * @since 1.1.0
248 287 * @param array $last_step Step data.
249 288 */
250 289 public function create_new_step_page( $last_step ) {
290 + if ( ! array_key_exists( 'title', $last_step ) || is_null( $last_step['title'] ) ) {
291 + $last_step['title'] = 'step';
292 + }
293 +
251 294 $new_step_id = wp_insert_post( [
252 295 'post_type' => \Sellkit_Admin_Steps::SELLKIT_STEP_POST_TYPE,
253 296 'post_title' => $last_step['title'],
254 297 'post_name' => sanitize_title( $last_step['title'] ),