PluginProbe
Welcart e-Commerce / 2.12.3
Welcart e-Commerce v2.12.3
2.12.3 2.11.35 2.12.2 2.12.1 2.11.34 2.11.33 2.11.32 2.11.31 2.11.30 1.3.16 1.3.17 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.10 1.4.11 1.4.12 1.4.13 All 291 releases
usc-e-shop / classes / cart.class.php

cart.class.php in Welcart e-Commerce 2.12.3, at classes/cart.class.php

810 lines 23.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Cart class
4 */
5 class usces_cart {
6
7 /**
8 * Serial key
9 *
10 * @var string
11 */
12 var $serial;
13
14 /**
15 * Constructor
16 */
17 public function __construct() {
18
19 if ( ! isset( $_SESSION['usces_cart'] ) ) {
20 $_SESSION['usces_cart'] = array();
21 $_SESSION['usces_entry'] = array();
22 }
23 }
24
25 /**
26 * Create instance
27 *
28 * @param string $serial Serial key.
29 * @return object
30 */
31 public static function create( $serial ) {
32 $instance = new self();
33 $instance->serial = $serial;
34
35 return $instance;
36 }
37
38 /**
39 * Add to Cart
40 */
41 public function inCart() {
42 global $usces;
43
44 $_POST = $usces->stripslashes_deep_post( $_POST );
45 if ( $_SERVER['HTTP_REFERER'] ) {
46 $_SESSION['usces_previous_url'] = esc_url( $_SERVER['HTTP_REFERER'] );
47 } else {
48 $_SESSION['usces_previous_url'] = str_replace( 'https://', 'http://', get_home_url() ) . '/';
49 }
50
51 $ids = array_keys( $_POST['inCart'] );
52 $post_id = (int) $ids[0];
53
54 $skus = array_keys( $_POST['inCart'][ $post_id ] );
55 $sku = $skus[0];
56
57 $zaiko_id = $usces->getItemZaikoStatusId( $post_id, urldecode( $sku ) );
58 if ( false === $zaiko_id ) {
59 header( 'HTTP/1.0 400 Bad request' );
60 die();
61 }
62
63 $this->in_serialize( $post_id, $sku );
64 if ( ! isset( $_SESSION['usces_cart'][ $this->serial ]['quant'] ) ) {
65 $_SESSION['usces_cart'][ $this->serial ]['quant'] = 0;
66 }
67
68 if ( isset( $_POST['quant'][ $post_id ][ $sku ] ) && ! WCUtils::is_blank( $_POST['quant'][ $post_id ][ $sku ] ) ) {
69
70 $post_quant = (int) $_POST['quant'][ $post_id ][ $sku ];
71 $_SESSION['usces_cart'][ $this->serial ]['quant'] = apply_filters( 'usces_filter_post_quant', $post_quant, $_SESSION['usces_cart'][ $this->serial ]['quant'] );
72
73 } else {
74
75 if ( isset( $_SESSION['usces_cart'][ $this->serial ] ) ) {
76 $_SESSION['usces_cart'][ $this->serial ]['quant'] = apply_filters( 'usces_filter_post_quant', 1, $_SESSION['usces_cart'][ $this->serial ]['quant'] );
77 } else {
78 $_SESSION['usces_cart'][ $this->serial ]['quant'] = 1;
79 }
80 $_SESSION['usces_cart'][ $this->serial ]['quant'] = apply_filters( 'usces_filter_inCart_quant', $_SESSION['usces_cart'][ $this->serial ]['quant'] );
81
82 }
83
84 $price = $this->get_realprice( $post_id, $sku, $_SESSION['usces_cart'][ $this->serial ]['quant'], null, $unit_price );
85 $price = apply_filters( 'usces_filter_inCart_price', $price, $this->serial );
86
87 $_SESSION['usces_cart'][ $this->serial ]['price'] = $price;
88 $_SESSION['usces_cart'][ $this->serial ]['unit_price'] = $unit_price;
89
90 if ( isset( $_POST['advance'] ) ) {
91 $_SESSION['usces_cart'][ $this->serial ]['advance'] = $this->wc_serialize( $_POST['advance'] );
92 }
93
94 unset( $_SESSION['usces_entry']['order']['usedpoint'] );
95 do_action( 'usces_action_after_inCart', $this->serial );
96 }
97
98 /**
99 * Update Cart
100 */
101 public function upCart() {
102
103 if ( ! isset( $_POST['quant'] ) ) {
104 return false;
105 }
106
107 global $usces;
108 $_POST = $usces->stripslashes_deep_post( $_POST );
109 $keys = array_keys( $_SESSION['usces_cart'] );
110
111 $serial_option = apply_filters( 'usces_filter_upcart_serial_option', false );
112
113 $index = 0;
114 foreach ( $_POST['quant'] as $vs ) {
115
116 if ( ! is_array( $vs ) ) {
117 break;
118 }
119
120 if ( ! isset( $_POST['quant'][ $index ] ) ) {
121 continue;
122 }
123
124 $res = apply_filters( 'usces_filter_upCart_check', '', $index, $vs );
125 if ( '' !== $res ) {
126 return $res;
127 }
128
129 $ids = array_keys( $vs );
130 $post_id = $ids[0];
131
132 $skus = array_keys( $vs[ $post_id ] );
133 $sku = $skus[0];
134
135 $sku_decode = urldecode( $sku );
136
137 $skus = $usces->get_skus( $post_id, 'code' );
138
139 if ( ! $skus || ! isset( $skus[ $sku_decode ] ) ) {
140 continue;
141 }
142
143 if ( $serial_option ) {
144 $this->up_serialize( $index, $post_id, $sku );
145 } else {
146 if ( ! isset( $keys[ $index ] ) ) {
147 /*
148 * The cart in the session has fewer rows than the posted data
149 * ( session GC, deletion in another tab, etc. ).
150 * Skip it, because a null key is converted to "" and would
151 * write a broken row into the session.
152 */
153 $index++;
154 continue;
155 }
156 $this->serial = $keys[ $index ];
157 }
158
159 if ( ! WCUtils::is_blank( $_POST['quant'][ $index ][ $post_id ][ $sku ] ) ) {
160
161 $_SESSION['usces_cart'][ $this->serial ]['quant'] = (int) $_POST['quant'][ $index ][ $post_id ][ $sku ];
162 $_SESSION['usces_cart'][ $this->serial ]['advance'] = isset( $_POST['advance'][ $index ][ $post_id ][ $sku ] ) ? $_POST['advance'][ $index ][ $post_id ][ $sku ] : array();
163
164 // if ( isset( $_POST['order_action'] ) ) {
165 // $price = (int) $_POST['skuPrice'][ $index ][ $post_id ][ $sku ];
166 // } else {
167 $price = $this->get_realprice( $post_id, $sku, $_SESSION['usces_cart'][ $this->serial ]['quant'] );
168 $price = apply_filters( 'usces_filter_upCart_price', $price, $this->serial, $index );
169 // }
170 $_SESSION['usces_cart'][ $this->serial ]['price'] = $price;
171
172 }
173
174 $index++;
175 }
176
177 unset( $_SESSION['usces_entry']['order']['usedpoint'] );
178 do_action( 'usces_action_after_upCart' );
179
180 return false;
181 }
182
183 /**
184 * Add to Cart additional information
185 *
186 * @param string $serial Serial key.
187 * @param string $name Advance name.
188 * @param string $key Advance key.
189 * @param mixed $value Advance value.
190 */
191 public function inCart_advance( $serial, $name, $key, $value ) {
192 $_SESSION['usces_cart'][ $serial ]['advance'][ $name ][ $key ] = $value;
193 }
194
195 /**
196 * Serialize value
197 *
198 * @param array $value Value.
199 * @return string
200 */
201 public function wc_serialize( $value ) {
202 $out = null;
203 if ( ! empty( $value ) ) {
204 $out = urlencode( json_encode( $value ) );
205 }
206 return $out;
207 }
208
209 /**
210 * Unserialize value
211 *
212 * @param string $str Value.
213 * @return array
214 */
215 public function wc_unserialize( $str ) {
216 $out = array();
217 if ( ! empty( $str ) ) {
218 $out = json_decode( urldecode( $str ), true );
219 }
220 return $out;
221 }
222
223 /**
224 * Remove Cart
225 */
226 public function del_row() {
227 $indexs = array_keys( $_POST['delButton'] );
228 $index = $indexs[0];
229 $ids = array_keys( $_POST['delButton'][ $index ] );
230 $post_id = $ids[0];
231 $skus = array_keys( $_POST['delButton'][ $index ][ $post_id ] );
232 $sku = $skus[0];
233
234 $this->up_serialize( $index, $post_id, $sku );
235 do_action( 'usces_cart_del_row', $index );
236
237 if ( isset( $_SESSION['usces_cart'][ $this->serial ] ) ) {
238 unset( $_SESSION['usces_cart'][ $this->serial ] );
239 }
240 unset( $_SESSION['usces_entry']['order']['usedpoint'] );
241 do_action( 'usces_action_after_cart_del_row', $index );
242 }
243
244 /**
245 * Number of rows in cart
246 *
247 * @return int|bool
248 */
249 public function num_row() {
250 if ( ! isset( $_SESSION['usces_cart'] ) ) {
251 return false;
252 }
253
254 $num = ( is_array( $_SESSION['usces_cart'] ) ) ? count( $_SESSION['usces_cart'] ) : 0;
255
256 if ( $num > 0 ) {
257 return $num;
258 } else {
259 return false;
260 }
261 }
262
263 /**
264 * Clear Cart
265 * alias crear_cart()
266 */
267 public function clear_cart() {
268 $this->crear_cart();
269 }
270 /**
271 * Clear Cart
272 */
273 public function crear_cart() {
274 $_SESSION['usces_cart'] = array();
275 $_SESSION['usces_entry'] = array();
276 do_action( 'usces_action_after_clear_cart' );
277 }
278
279 /**
280 * Get Cart
281 *
282 * @return array
283 */
284 public function get_cart() {
285 if ( ! isset( $_SESSION['usces_cart'] ) ) {
286 return array();
287 }
288
289 $rows = array();
290
291 $i = 0;
292 foreach ( (array) $_SESSION['usces_cart'] as $serial => $qua ) {
293 $row = $this->key_unserialize( $serial );
294 if ( false === $row ) {
295 /* A row that cannot be restored is unusable for display and ordering, so remove it from the session. */
296 unset( $_SESSION['usces_cart'][ $serial ] );
297 continue;
298 }
299 $rows[ $i ] = $row;
300 $i++;
301 }
302
303 return $rows;
304 }
305
306 /**
307 * Serial key creation
308 *
309 * @param int $id Post ID.
310 * @param string $sku SKU code.
311 */
312 public function in_serialize( $id, $sku ) {
313 global $usces;
314
315 $_POST = $usces->stripslashes_deep_post( $_POST );
316 $pots = array();
317 $option_field = usces_get_opts( $id, 'name' );
318
319 foreach ( $option_field as $opkey => $opval ) {
320 if ( ! isset( $_POST['itemOption'][ $id ][ $sku ][ urlencode( $opkey ) ] ) ) {
321 if ( 3 === (int) $opval['means'] || 4 === (int) $opval['means'] ) {
322 $pots[ urlencode( $opkey ) ] = '';
323 }
324 }
325 }
326
327 if ( isset( $_POST['itemOption'][ $id ][ $sku ] ) ) {
328 foreach ( $_POST['itemOption'][ $id ][ $sku ] as $key => $value ) {
329 if ( ! isset( $option_field[ urldecode( $key ) ] ) ) {
330 continue;
331 }
332
333 $option = $option_field[ urldecode( $key ) ];
334 if ( 3 === (int) $option['means'] || 4 === (int) $option['means'] ) {
335 if ( is_array( $value ) ) {
336 foreach ( $value as $k => $v ) {
337 $v = trim( wel_safe_text_serialize( $v ) );
338 $pots[ $key ][ $v ] = $v;
339 }
340 } else {
341 $pots[ $key ] = wel_safe_text_serialize( $value );
342 }
343 } else {
344 if ( is_array( $value ) ) {
345 foreach ( $value as $k => $v ) {
346 $pots[ $key ][ urlencode( trim( $v ) ) ] = urlencode( trim( $v ) );
347 }
348 } else {
349 $pots[ $key ] = urlencode( $value );
350 }
351 }
352 }
353 ksort( $pots );
354 $sels[ $id ][ $sku ] = $pots;
355 } else {
356 if ( empty( $pots ) ) {
357 $sels[ $id ][ $sku ] = 0;
358 } else {
359 $sels[ $id ][ $sku ] = $pots;
360 }
361 }
362 $sels = apply_filters( 'usces_filter_in_serialize', $sels, $id, $sku );
363 $this->serial = serialize( $sels );
364 }
365
366 /**
367 * Serial key recreation
368 *
369 * @param int $index Cart index.
370 * @param int $id Post ID.
371 * @param string $sku SKU code.
372 */
373 public function up_serialize( $index, $id, $sku ) {
374 global $usces;
375
376 $_POST = $usces->stripslashes_deep_post( $_POST );
377 $pots = array();
378 $option_field = usces_get_opts( $id, 'name' );
379
380 if ( isset( $_POST['itemOption'][ $index ][ $id ][ $sku ] ) && is_array( $_POST['itemOption'][ $index ][ $id ][ $sku ] ) ) {
381 foreach ( $_POST['itemOption'][ $index ][ $id ][ $sku ] as $key => $value ) {
382 if ( is_array( $value ) ) {
383 foreach ( $value as $k => $v ) {
384 $v = wel_safe_text_serialize( $v );
385 $pots[ $key ][ $v ] = $v;
386 }
387 } else {
388 $pots[ $key ] = wel_safe_text_serialize( $value );
389 }
390 }
391 ksort( $pots );
392 $sels[ $id ][ $sku ] = $pots;
393 } else {
394 $sels[ $id ][ $sku ] = 0;
395 }
396 $sels = apply_filters( 'usces_filter_up_serialize', $sels, $index, $id, $sku );
397 $this->serial = serialize( $sels );
398 }
399
400 /**
401 * Serial key decompression
402 *
403 * @param string $serial Serial key.
404 * @return array|false False if the serial key cannot be restored ( unserialize failure or invalid format ).
405 */
406 public function key_unserialize( $serial ) {
407 $array = wel_safe_unserialize( $serial );
408 if ( ! is_array( $array ) || empty( $array ) ) {
409 return false;
410 }
411 $ids = array_keys( $array );
412 if ( ! is_array( $array[ $ids[0] ] ) || empty( $array[ $ids[0] ] ) ) {
413 return false;
414 }
415 $skus = array_keys( $array[ $ids[0] ] );
416
417 $row['serial'] = $serial;
418 $row['post_id'] = $ids[0];
419 $row['sku'] = $skus[0];
420 $options = $array[ $ids[0] ][ $skus[0] ];
421 $opt_fields = usces_get_opts( $row['post_id'], 'sort' );
422 $new_opt = array();
423 foreach ( $opt_fields as $key => $field ) {
424 $name = urlencode( $field['name'] );
425 $new_opt[ $name ] = isset( $options[ $name ] ) ? $options[ $name ] : '';
426 }
427 $row['options'] = apply_filters( 'usces_filter_key_unserialize_options', $new_opt, $ids[0], $skus[0], $serial );
428 $row['price'] = isset( $_SESSION['usces_cart'][ $serial ]['price'] ) ? $_SESSION['usces_cart'][ $serial ]['price'] : 0;
429 $row['unit_price'] = isset( $_SESSION['usces_cart'][ $serial ]['unit_price'] ) ? $_SESSION['usces_cart'][ $serial ]['unit_price'] : 0;
430 $row['quantity'] = isset( $_SESSION['usces_cart'][ $serial ]['quant'] ) ? $_SESSION['usces_cart'][ $serial ]['quant'] : 0;
431 $row['advance'] = isset( $_SESSION['usces_cart'][ $serial ]['advance'] ) ? $_SESSION['usces_cart'][ $serial ]['advance'] : '';
432
433 return $row;
434 }
435
436 /**
437 * Is condition
438 *
439 * @return bool
440 */
441 public function is_order_condition() {
442 if ( isset( $_SESSION['usces_entry']['condition'] ) ) {
443 return true;
444 } else {
445 return false;
446 }
447 }
448
449 /**
450 * Set condition
451 *
452 * @param array $conditions Condition.
453 */
454 public function set_order_condition( $conditions ) {
455 foreach ( $conditions as $key => $value ) {
456 $_SESSION['usces_entry']['condition'][ $key ] = $value;
457 }
458 }
459
460 /**
461 * Get condition
462 *
463 * @return mixed
464 */
465 public function get_order_condition() {
466 if ( isset( $_SESSION['usces_entry']['condition'] ) ) {
467 return $_SESSION['usces_entry']['condition'];
468 } else {
469 return null;
470 }
471 }
472
473 /**
474 * Set entry information
475 *
476 * @param array $array Entry data.
477 */
478 public function set_order_entry( $array ) {
479 foreach ( $array as $key => $value ) {
480 $_SESSION['usces_entry']['order'][ $key ] = $value;
481 }
482 }
483
484 /**
485 * Get entry information
486 *
487 * @param string $key Key.
488 * @return mixed
489 */
490 public function get_order_entry( $key ) {
491 if ( isset( $_SESSION['usces_entry']['order'][ $key ] ) ) {
492 return $_SESSION['usces_entry']['order'][ $key ];
493 } else {
494 return null;
495 }
496 }
497
498 /**
499 * Set entry data
500 */
501 public function entry() {
502 global $usces;
503 $_POST = $usces->stripslashes_deep_post( $_POST );
504
505 if ( isset( $_SESSION['usces_member']['ID'] ) && ! empty( $_SESSION['usces_member']['ID'] ) ) {
506
507 $usces->set_member_session_data( $_SESSION['usces_member']['ID'] );
508
509 if ( 'confirm' !== $usces->page ) {
510 foreach ( $_SESSION['usces_member'] as $key => $value ) {
511 if ( 'custom_member' === $key ) {
512 unset( $_SESSION['usces_entry']['custom_member'] );
513 foreach ( $_SESSION['usces_member']['custom_member'] as $mbkey => $mbvalue ) {
514 if ( empty( $_SESSION['usces_entry']['custom_customer'][ $mbkey] ) ) {
515 if ( is_array( $mbvalue ) ) {
516 foreach ( $mbvalue as $k => $v ) {
517 $_SESSION['usces_entry']['custom_customer'][ $mbkey ][ $v ] = $v;
518 }
519 } else {
520 $_SESSION['usces_entry']['custom_customer'][ $mbkey ] = $mbvalue;
521 }
522 }
523 }
524 } else {
525 if ( 'country' === $key && empty( $value ) ) {
526 $_SESSION['usces_entry']['customer'][ $key ] = usces_get_base_country();
527 } else {
528 $_SESSION['usces_entry']['customer'][ $key ] = trim( $value );
529 }
530 }
531 }
532 }
533 }
534 if ( isset( $_POST['customer'] ) ) {
535 foreach ( $_POST['customer'] as $key => $value ) {
536 if ( 'country' === $key && empty( $value ) ) {
537 $_SESSION['usces_entry']['customer'][ $key ] = usces_get_base_country();
538 } else {
539 $_SESSION['usces_entry']['customer'][ $key ] = trim( $value );
540 }
541 }
542 }
543
544 if ( isset( $_POST['delivery'] ) ) {
545 foreach ( $_POST['delivery'] as $key => $value ) {
546 if ( 'country' === $key && empty( $value ) ) {
547 $_SESSION['usces_entry']['delivery'][ $key ] = usces_get_base_country();
548 } else {
549 $_SESSION['usces_entry']['delivery'][ $key ] = trim( $value );
550 }
551 }
552 }
553 if ( isset( $_POST['delivery']['delivery_flag'] ) && 0 === (int) $_POST['delivery']['delivery_flag'] ) {
554 foreach ( $_SESSION['usces_entry']['customer'] as $key => $value ) {
555 if ( 'country' === $key && empty( $value ) ) {
556 $_SESSION['usces_entry']['delivery'][ $key ] = usces_get_base_country();
557 } else {
558 $_SESSION['usces_entry']['delivery'][ $key ] = trim( $value );
559 }
560 }
561 }
562
563 if ( isset( $_POST['offer'] ) ) {
564 foreach ( $_POST['offer'] as $key => $value ) {
565 $_SESSION['usces_entry']['order'][ $key ] = trim( $value );
566 }
567 }
568
569 if ( isset( $_POST['reserve'] ) ) {
570 foreach ( $_POST['reserve'] as $key => $value ) {
571 $_SESSION['usces_entry']['reserve'][ $key ] = trim( wel_safe_text_serialize( $value ) );
572 }
573 }
574 if ( isset( $_POST['custom_order'] ) ) {
575 unset( $_SESSION['usces_entry']['custom_order'] );
576 $csod_meta = usces_has_custom_field_meta( 'order' );
577 foreach ( $_POST['custom_order'] as $key => $value ) {
578 if ( ! is_array( $csod_meta ) || ! isset( $csod_meta[ $key ] ) ) {
579 continue;
580 }
581 $value = wel_safe_text_serialize( $value );
582 if ( is_array( $value ) ) {
583 foreach ( $value as $k => $v ) {
584 $_SESSION['usces_entry']['custom_order'][ $key ][ trim( $v ) ] = trim( $v );
585 }
586 } else {
587 $_SESSION['usces_entry']['custom_order'][ $key ] = trim( $value );
588 }
589 }
590 }
591 if ( isset( $_SESSION['usces_entry']['delivery']['delivery_flag'] ) && 0 === (int) $_SESSION['usces_entry']['delivery']['delivery_flag'] ) {
592 $this->set_custom_customer_delivery();
593 }
594 if ( isset( $_POST['custom_customer'] ) ) {
595 unset( $_SESSION['usces_entry']['custom_customer'] );
596 foreach ( $_POST['custom_customer'] as $key => $value ) {
597 $value = wel_safe_text_serialize( $value );
598 if ( is_array( $value ) ) {
599 foreach ( $value as $k => $v ) {
600 $_SESSION['usces_entry']['custom_customer'][ $key ][ trim( $v ) ] = trim( $v );
601 }
602 } else {
603 $_SESSION['usces_entry']['custom_customer'][ $key ] = trim( $value );
604 }
605 }
606 }
607 if ( isset( $_POST['custom_delivery'] ) ) {
608 unset( $_SESSION['usces_entry']['custom_delivery'] );
609 foreach ( $_POST['custom_delivery'] as $key => $value ) {
610 $value = wel_safe_text_serialize( $value );
611 if ( is_array( $value ) ) {
612 foreach ( $value as $k => $v ) {
613 $_SESSION['usces_entry']['custom_delivery'][ $key ][ trim( $v ) ] = trim( $v );
614 }
615 } else {
616 $_SESSION['usces_entry']['custom_delivery'][ $key ] = trim( $value );
617 }
618 }
619 }
620 if ( isset( $_POST['delivery']['delivery_flag'] ) && 0 === (int) $_POST['delivery']['delivery_flag'] ) {
621 $this->set_custom_customer_delivery();
622 }
623 }
624
625 /**
626 * Get entry data
627 *
628 * @return array
629 */
630 public function get_entry() {
631 $res['customer'] = array(
632 'mailaddress1' => '',
633 'mailaddress2' => '',
634 'password1' => '',
635 'password2' => '',
636 'name1' => '',
637 'name2' => '',
638 'name3' => '',
639 'name4' => '',
640 'zipcode' => '',
641 'address1' => '',
642 'address2' => '',
643 'address3' => '',
644 'tel' => '',
645 'fax' => '',
646 'country' => '',
647 'pref' => '',
648 );
649 if ( isset( $_SESSION['usces_entry']['customer'] ) ) {
650 foreach ( (array) $_SESSION['usces_entry']['customer'] as $key => $val ) {
651 $res['customer'][ $key ] = $val;
652 }
653 }
654
655 $res['delivery'] = array(
656 'name1' => '',
657 'name2' => '',
658 'name3' => '',
659 'name4' => '',
660 'zipcode' => '',
661 'address1' => '',
662 'address2' => '',
663 'address3' => '',
664 'tel' => '',
665 'fax' => '',
666 'country' => '',
667 'pref' => '',
668 'delivery_flag' => '0',
669 );
670 if ( isset( $_SESSION['usces_entry']['delivery'] ) ) {
671 foreach ( (array) $_SESSION['usces_entry']['delivery'] as $key => $val ) {
672 $res['delivery'][ $key ] = $val;
673 }
674 }
675
676 $res['order'] = array(
677 'usedpoint' => '',
678 'total_items_price' => '',
679 'discount' => '',
680 'shipping_charge' => '',
681 'cod_fee' => '',
682 'shipping_charge' => '',
683 'payment_name' => '',
684 'delivery_method' => '',
685 'delivery_date' => '',
686 'delivery_time' => '',
687 'total_full_price' => '',
688 'note' => '',
689 'tax' => '',
690 'payment_name' => '',
691 'delidue_date' => '',
692 );
693 if ( isset( $_SESSION['usces_entry']['order'] ) ) {
694 foreach ( (array) $_SESSION['usces_entry']['order'] as $key => $val ) {
695 $res['order'][ $key ] = $val;
696 }
697 }
698 if ( isset( $_SESSION['usces_entry']['reserve'] ) ) {
699 $res['reserve'] = $_SESSION['usces_entry']['reserve'];
700 } else {
701 $res['reserve'] = null;
702 }
703 if ( isset( $_SESSION['usces_entry']['condition'] ) ) {
704 $res['condition'] = $_SESSION['usces_entry']['condition'];
705 } else {
706 $res['condition'] = null;
707 }
708 if ( isset( $_SESSION['usces_entry']['custom_order'] ) ) {
709 $res['custom_order'] = $_SESSION['usces_entry']['custom_order'];
710 } else {
711 $res['custom_order'] = null;
712 }
713 if ( isset( $_SESSION['usces_entry']['custom_customer'] ) ) {
714 $res['custom_customer'] = $_SESSION['usces_entry']['custom_customer'];
715 } else {
716 $res['custom_customer'] = null;
717 }
718 if ( isset( $_SESSION['usces_entry']['custom_delivery'] ) ) {
719 $res['custom_delivery'] = $_SESSION['usces_entry']['custom_delivery'];
720 } else {
721 $res['custom_delivery'] = null;
722 }
723 return $res;
724 }
725
726 /**
727 * Get sales price
728 *
729 * @param int $post_id Post ID.
730 * @param string $sku SKU code.
731 * @param int $quant Quantity.
732 * @param float $price Sales price.
733 * @param float $unit_price Unit price.
734 * @return float
735 */
736 public function get_realprice( $post_id, $sku, $quant, $price = null, &$unit_price = null ) {
737 global $usces;
738
739 $sku = urldecode( $sku );
740 $skus = $usces->get_skus( $post_id, 'code' );
741
742 if ( null === $price ) {
743 $p = isset( $skus[ $sku ]['price'] ) ? $skus[ $sku ]['price'] : '';
744 } else {
745 $p = $price;
746 }
747 $p = apply_filters( 'usces_filter_realprice', $p, $this->serial );
748 $unit_price = $p;
749 if ( isset( $skus[ $sku ]['price'] ) && ! $skus[ $sku ]['gp'] ) {
750 return $p;
751 }
752
753 $realprice = usces_get_gp_price( $post_id, $p, $quant );
754
755 return $realprice;
756 }
757
758 /**
759 * Set Pre-Order ID
760 *
761 * @param string $id Pre-Order ID.
762 * @return void
763 */
764 public function set_pre_order_id( $id ) {
765 $_SESSION['usces_entry']['reserve']['pre_order_id'] = $id;
766 }
767
768 /**
769 * Transcribe membership information to shipping address information
770 *
771 * @return void
772 */
773 public function set_custom_customer_delivery() {
774 if ( isset( $_SESSION['usces_entry']['custom_customer'] ) ) {
775 $delivery = array();
776 $csde_meta = usces_has_custom_field_meta( 'delivery' );
777 if ( ! empty( $csde_meta ) && is_array( $csde_meta ) ) {
778 foreach ( $csde_meta as $key => $entry ) {
779 $delivery[ $key ] = $key;
780 }
781 }
782 foreach ( $_SESSION['usces_entry']['custom_customer'] as $mbkey => $mbvalue ) {
783 if ( array_key_exists( $mbkey, $delivery ) ) {
784 if ( is_array( $mbvalue ) ) {
785 foreach ( $mbvalue as $k => $v ) {
786 $_SESSION['usces_entry']['custom_delivery'][ $mbkey ][ $v ] = $v;
787 }
788 } else {
789 $_SESSION['usces_entry']['custom_delivery'][ $mbkey ] = $mbvalue;
790 }
791 }
792 }
793 }
794 if ( ! empty( $_SESSION['usces_entry']['custom_delivery'] ) ) {
795 foreach ( $_SESSION['usces_entry']['custom_delivery'] as $key => $value ) {
796 if ( ! isset( $_SESSION['usces_entry']['custom_customer'] ) || ! array_key_exists( $key, $_SESSION['usces_entry']['custom_customer'] ) ) {
797 // Set item empty.
798 if ( is_array( $value ) ) {
799 foreach ( $value as $k => $v ) {
800 $_SESSION['usces_entry']['custom_delivery'][ $key ][ $v ] = '';
801 }
802 } else {
803 $_SESSION['usces_entry']['custom_delivery'][ $key ] = '';
804 }
805 }
806 }
807 }
808 }
809 }
810