PluginProbe
Welcart e-Commerce / 2.12.4
Welcart e-Commerce v2.12.4
2.12.4 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 All 292 releases
← All changes | classes/cart.class.php +809 -626 1.4.112.12.4 View file →
@@ -1,626 +1,809 @@
1 -<?php
2 -//*****************************************************************************
3 -//cart.class.php
4 -//*****************************************************************************
5 -class usces_cart {
6 -
7 - var $serial;
8 -
9 - function usces_cart() {
10 -
11 - if ( !isset($_SESSION['usces_cart']) ) {
12 - $_SESSION['usces_cart'] = array();
13 - $_SESSION['usces_entry'] = array();
14 - }
15 - }
16 - // into Cart ***************************************************************
17 - function inCart() {
18 - global $usces;
19 - $_POST = $usces->stripslashes_deep_post($_POST);
20 - if( $_SERVER['HTTP_REFERER'] ){
21 - $_SESSION['usces_previous_url'] = $_SERVER['HTTP_REFERER'];
22 - }else{
23 - $_SESSION['usces_previous_url'] = str_replace('https://', 'http://', get_home_url()).'/';
24 - }
25 -
26 - $ids = array_keys($_POST['inCart']);
27 - $post_id = $ids[0];
28 -
29 - $skus = array_keys($_POST['inCart'][$post_id]);
30 - $sku = $skus[0];
31 -
32 - $this->in_serialize($post_id, $sku);
33 - if( !isset($_SESSION['usces_cart'][$this->serial]['quant']) ){
34 - $_SESSION['usces_cart'][$this->serial]['quant'] = 0;
35 - }
36 -
37 - if ( isset($_POST['quant'][$post_id][$sku]) && !WCUtils::is_blank($_POST['quant'][$post_id][$sku]) ) {
38 -
39 - $post_quant = (int)$_POST['quant'][$post_id][$sku];
40 - $_SESSION['usces_cart'][$this->serial]['quant'] = apply_filters('usces_filter_post_quant', $post_quant, $_SESSION['usces_cart'][$this->serial]['quant']);
41 -
42 - } else {
43 -
44 - if ( isset($_SESSION['usces_cart'][$this->serial]) )
45 - $_SESSION['usces_cart'][$this->serial]['quant'] = apply_filters('usces_filter_post_quant', 1, $_SESSION['usces_cart'][$this->serial]['quant']);
46 - else
47 - $_SESSION['usces_cart'][$this->serial]['quant'] = 1;
48 -
49 - $_SESSION['usces_cart'][$this->serial]['quant'] = apply_filters('usces_filter_inCart_quant', $_SESSION['usces_cart'][$this->serial]['quant']);
50 -
51 - }
52 -
53 -
54 - if ( isset($_POST['skuPrice']) && !WCUtils::is_blank($_POST['skuPrice'][$post_id][$sku]) ) {
55 - $price = $this->get_realprice($post_id, $sku, $_SESSION['usces_cart'][$this->serial]['quant']);
56 - $price = apply_filters('usces_filter_inCart_price', $price, $this->serial);
57 - $_SESSION['usces_cart'][$this->serial]['price'] = $price;
58 - }
59 -
60 - if ( isset($_POST['advance']) ) {
61 - $_SESSION['usces_cart'][$this->serial]['advance'] = $this->wc_serialize($_POST['advance']);
62 - }
63 -
64 - do_action('usces_action_after_inCart', $this->serial);
65 - }
66 -
67 - // update Cart ***************************************************************
68 - function upCart() {
69 -
70 - if(!isset($_POST['quant'])) return false;
71 -
72 - global $usces;
73 - $_POST = $usces->stripslashes_deep_post($_POST);
74 -
75 - foreach($_POST['quant'] as $index => $vs){
76 -
77 - if( !is_array($vs) )
78 - break;
79 -
80 - $ids = array_keys($vs);
81 - $post_id = $ids[0];
82 -
83 - $skus = array_keys($vs[$post_id]);
84 - $sku = $skus[0];
85 -
86 - $this->up_serialize($index, $post_id, $sku);
87 -
88 - if ( !WCUtils::is_blank($_POST['quant'][$index][$post_id][$sku]) ) {
89 -
90 - $_SESSION['usces_cart'][$this->serial]['quant'] = (int)$_POST['quant'][$index][$post_id][$sku];
91 - $_SESSION['usces_cart'][$this->serial]['advance'] = isset($_POST['advance'][$index][$post_id][$sku]) ? $this->wc_unserialize($_POST['advance'][$index][$post_id][$sku]) : array();
92 - if( isset($_POST['order_action']) ){
93 - $price = (int)$_POST['skuPrice'][$index][$post_id][$sku];
94 - }else{
95 - $price = $this->get_realprice($post_id, $sku, $_SESSION['usces_cart'][$this->serial]['quant']);
96 - $price = apply_filters('usces_filter_upCart_price', $price, $this->serial, $index);
97 - }
98 - $_SESSION['usces_cart'][$this->serial]['price'] = $price;
99 -
100 - }
101 - }
102 -
103 - unset( $_SESSION['usces_entry']['order']['usedpoint'] );
104 - do_action('usces_action_after_upCart');
105 - }
106 -
107 - // inCart_advance ****************************************************************
108 - function inCart_advance( $serial, $name, $key, $value ){
109 - $_SESSION['usces_cart'][$serial]['advance'][$name][$key] = $value;
110 - }
111 -
112 - // serialize ****************************************************************
113 - function wc_serialize( $value ){
114 - $out = NULL;
115 - if( !empty($value) )
116 -// $out = urlencode(serialize($value));
117 - $out = serialize($value);
118 - return $out;
119 - }
120 -
121 - function wc_unserialize( $str ){
122 - $out = array();
123 - if( !empty($str) )
124 -// $out = unserialize(urldecode($str));
125 - $out = unserialize($str);
126 - return $out;
127 - }
128 -
129 - // get data by index ****************************************************************
130 -// function get_row($index) {
131 -//
132 -// if ( !isset($_SESSION['usces_cart']['post_id'][$index]) ) {
133 -// return false;
134 -//
135 -// } else {
136 -// $post_id = $_SESSION['usces_cart']['post_id'][$index];
137 -// $item_quantity = $_SESSION['usces_cart']['item_quantity'][$index];
138 -//
139 -// $rows = compact('post_id', 'item_quantity');
140 -// return $rows;
141 -// }
142 -// }
143 -
144 - // delete data by index ***************************************************************
145 - function del_row() {
146 -
147 - $indexs = array_keys($_POST['delButton']);
148 - $index = $indexs[0];
149 - $ids = array_keys($_POST['delButton'][$index]);
150 - $post_id = $ids[0];
151 - $skus = array_keys($_POST['delButton'][$index][$post_id]);
152 - $sku = $skus[0];
153 -
154 - $this->up_serialize($index, $post_id, $sku);
155 - do_action('usces_cart_del_row', $index);
156 -
157 - if(isset($_SESSION['usces_cart'][$this->serial]))
158 - unset($_SESSION['usces_cart'][$this->serial]);
159 -
160 - unset( $_SESSION['usces_entry']['order']['usedpoint'] );
161 - do_action('usces_action_after_cart_del_row', $index);
162 - }
163 -
164 - // number of data in cart ***********************************************************
165 - function num_row() {
166 - if( !isset($_SESSION['usces_cart']) )
167 - return false;
168 -
169 - $num = count($_SESSION['usces_cart']);
170 -
171 - if( $num > 0 ) {
172 - return $num;
173 - } else {
174 - return false;
175 - }
176 - }
177 -
178 - // clear cart ****************************************************************
179 - function crear_cart() {
180 - $_SESSION['usces_cart'] = array();
181 - $_SESSION['usces_entry'] = array();
182 - }
183 -
184 - // cart associative array ***********************************************************
185 - function get_cart() {
186 -
187 - if(!isset($_SESSION['usces_cart'])) return false;
188 -
189 - $rows = array();
190 -
191 - $i = 0;
192 - foreach($_SESSION['usces_cart'] as $serial => $qua) {
193 - $array = $this->key_unserialize($serial);
194 -
195 - $rows[$i] = $array;
196 -
197 - $i++;
198 - }
199 -
200 - return $rows;
201 - }
202 -
203 - // insert serialize **************************************************************
204 - function in_serialize($id, $sku){
205 - global $usces;
206 - $_POST = $usces->stripslashes_deep_post($_POST);
207 - $pots = array();
208 - $option_field = usces_get_opts($id, 'name');
209 -
210 - foreach( $option_field as $opkey => $opval){
211 - if( !isset($_POST['itemOption'][$id][$sku][urlencode($opkey)])){
212 - if( 3 == $opval['means'] || 4 == $opval['means'] ){
213 -
214 - $pots[urlencode($opkey)] = '';
215 -
216 - }
217 - }
218 - }
219 -
220 - if(isset($_POST['itemOption'])){
221 - foreach( $_POST['itemOption'][$id][$sku] as $key => $value ){
222 - $option = $option_field[urldecode($key)];
223 - if( 3 == $option['means'] || 4 == $option['means'] ){
224 -
225 - if( is_array($value) ) {
226 - foreach( $value as $k => $v ) {
227 - $pots[$key][trim($v)] = trim($v);
228 - }
229 - } else {
230 - $pots[$key] = $value;
231 - }
232 -
233 - }else{
234 - if( is_array($value) ) {
235 - foreach( $value as $k => $v ) {
236 - $pots[$key][urlencode(trim($v))] = urlencode(trim($v));
237 - }
238 - } else {
239 - $pots[$key] = urlencode($value);
240 - }
241 - }
242 - }
243 - ksort($pots);
244 - $sels[$id][$sku] = $pots;
245 - }else{
246 - $sels[$id][$sku] = 0;
247 - }
248 - $sels = apply_filters('usces_filter_in_serialize', $sels, $id, $sku);
249 - $this->serial = serialize($sels);
250 - }
251 -
252 - // update serialize **************************************************************
253 - function up_serialize($index, $id, $sku){
254 -
255 - global $usces;
256 - $_POST = $usces->stripslashes_deep_post($_POST);
257 - $pots = array();
258 - $option_field = usces_get_opts($id, 'name');
259 -
260 - if(isset($_POST['itemOption'][$index])){
261 - foreach( $_POST['itemOption'][$index][$id][$sku] as $key => $value ){
262 - if( is_array($value) ) {
263 - foreach( $value as $k => $v ) {
264 - $pots[$key][$v] = $v;
265 - }
266 - } else {
267 - $pots[$key] = $value;
268 - }
269 - }
270 - ksort($pots);
271 - $sels[$id][$sku] = $pots;
272 - }else{
273 - $sels[$id][$sku] = 0;
274 - }
275 - $sels = apply_filters('usces_filter_up_serialize', $sels, $index, $id, $sku);
276 - $this->serial = serialize($sels);
277 - }
278 -
279 - // key unserialize **************************************************************
280 - function key_unserialize($serial){
281 -
282 - $array = unserialize($serial);
283 - $ids = array_keys($array);
284 - $skus = array_keys($array[$ids[0]]);
285 -
286 - $row['serial'] = $serial;
287 - $row['post_id'] = $ids[0];
288 - $row['sku'] = $skus[0];
289 - $options = $array[$ids[0]][$skus[0]];
290 - $opt_fields = usces_get_opts($row['post_id'], 'sort');
291 - $new_opt = array();
292 - foreach( $opt_fields as $key => $field ){
293 - $name = urlencode($field['name']);
294 - $new_opt[$name] = isset($options[$name]) ? $options[$name] : '';
295 - }
296 - $row['options'] = apply_filters('usces_filter_key_unserialize_options', $new_opt, $ids[0], $skus[0], $serial );
297 - $row['price'] = isset($_SESSION['usces_cart'][$serial]['price']) ? $_SESSION['usces_cart'][$serial]['price'] : 0;
298 - $row['quantity'] = $_SESSION['usces_cart'][$serial]['quant'];
299 - $row['advance'] = isset($_SESSION['usces_cart'][$serial]['advance']) ? $_SESSION['usces_cart'][$serial]['advance'] : array();
300 -
301 - return $row;
302 - }
303 -
304 - // is order condition ***************************************************************
305 - function is_order_condition() {
306 - if ( isset($_SESSION['usces_entry']['condition']) )
307 - return true;
308 - else
309 - return false;
310 - }
311 -
312 - // set order condition ***************************************************************
313 - function set_order_condition( $conditions ) {
314 - foreach( $conditions as $key => $value )
315 - $_SESSION['usces_entry']['condition'][$key] = $value;
316 - }
317 -
318 - // get order condition ***************************************************************
319 - function get_order_condition() {
320 - if(isset($_SESSION['usces_entry']['condition']))
321 - return $_SESSION['usces_entry']['condition'];
322 - else
323 - return NULL;
324 - }
325 -
326 - // entry information ***************************************************************
327 - function set_order_entry( $array ) {
328 - foreach ( $array as $key => $value )
329 - $_SESSION['usces_entry']['order'][$key] = $value;
330 - }
331 -//20110203ysk start
332 - // get entry information ***************************************************************
333 - function get_order_entry( $key ) {
334 - //return $_SESSION['usces_entry']['order'][$key];
335 - if( isset($_SESSION['usces_entry']['order'][$key]) )
336 - return $_SESSION['usces_entry']['order'][$key];
337 - else
338 - return NULL;
339 - }
340 -//20110203ysk end
341 - // entry information ***************************************************************
342 - function entry() {
343 - global $usces;
344 - $_POST = $usces->stripslashes_deep_post($_POST);
345 -
346 - if(isset($_SESSION['usces_member']['ID']) && !empty($_SESSION['usces_member']['ID'])) {
347 -//20110126ysk start
348 - if($usces->page !== 'confirm') {
349 - foreach( $_SESSION['usces_member'] as $key => $value ){
350 -//20100818ysk start
351 - if($key === 'custom_member') {
352 -//20101008ysk start
353 - unset($_SESSION['usces_entry']['custom_member']);
354 -//20101008ysk end
355 - foreach( $_SESSION['usces_member']['custom_member'] as $mbkey => $mbvalue ) {
356 - if(empty($_SESSION['usces_entry']['custom_customer'][$mbkey])) {
357 - if( is_array($mbvalue) ) {
358 - foreach( $mbvalue as $k => $v ) {
359 - $_SESSION['usces_entry']['custom_customer'][$mbkey][$v] = $v;
360 - }
361 - } else {
362 - $_SESSION['usces_entry']['custom_customer'][$mbkey] = $mbvalue;
363 - }
364 - }
365 - }
366 - } else {
367 - //if(empty($_SESSION['usces_entry']['customer'][$key])) {
368 - if( 'country' == $key && empty($value) ){
369 - $_SESSION['usces_entry']['customer'][$key] = usces_get_base_country();//20110513ysk
370 - }else{
371 - $_SESSION['usces_entry']['customer'][$key] = trim($value);
372 - }
373 - //}
374 - }
375 -//20100818ysk end
376 - }
377 - }
378 - }
379 - //} else if(isset($_POST['customer'])) {
380 - if(isset($_POST['customer'])) {
381 - foreach( $_POST['customer'] as $key => $value ){
382 - if( 'country' == $key && empty($value) ){
383 - $_SESSION['usces_entry']['customer'][$key] = usces_get_base_country();//20110513ysk
384 - }else{
385 - $_SESSION['usces_entry']['customer'][$key] = trim($value);
386 - }
387 - }
388 - }
389 -//20110126ysk end
390 -
391 - if(isset($_POST['delivery'])) {
392 - foreach( $_POST['delivery'] as $key => $value )
393 - if( 'country' == $key && empty($value) ){
394 - $_SESSION['usces_entry']['delivery'][$key] = usces_get_base_country();//20110513ysk
395 - }else{
396 - $_SESSION['usces_entry']['delivery'][$key] = trim($value);
397 - }
398 - }
399 -
400 - if(isset($_POST['delivery']['delivery_flag']) && $_POST['delivery']['delivery_flag'] == 0) {
401 - foreach( $_SESSION['usces_entry']['customer'] as $key => $value )
402 - if( 'country' == $key && empty($value) ){
403 - $_SESSION['usces_entry']['delivery'][$key] = usces_get_base_country();//20110513ysk
404 - }else{
405 - $_SESSION['usces_entry']['delivery'][$key] = trim($value);
406 - }
407 - }
408 -
409 - if(isset($_POST['offer'])) {
410 - foreach( $_POST['offer'] as $key => $value )
411 - $_SESSION['usces_entry']['order'][$key] = trim($value);
412 - }
413 -
414 - if(isset($_POST['reserve'])) {
415 - foreach( $_POST['reserve'] as $key => $value )
416 - $_SESSION['usces_entry']['reserve'][$key] = trim($value);
417 - }
418 -//20100809ysk start
419 - if(isset($_POST['custom_order'])) {
420 -//20101008ysk start
421 - unset($_SESSION['usces_entry']['custom_order']);
422 -//20101008ysk end
423 - foreach( $_POST['custom_order'] as $key => $value )
424 - if ( is_array($value) ) {
425 - foreach( $value as $k => $v ) {
426 - $_SESSION['usces_entry']['custom_order'][$key][trim($v)] = trim($v);
427 - }
428 - } else {
429 - $_SESSION['usces_entry']['custom_order'][$key] = trim($value);
430 - }
431 - }
432 -//20100809ysk end
433 -//20110106ysk start
434 - if( isset($_SESSION['usces_entry']['delivery']['delivery_flag']) && $_SESSION['usces_entry']['delivery']['delivery_flag'] == 0 ) {//20131009ysk
435 - $this->set_custom_customer_delivery();
436 - }
437 -//20110106ysk end
438 -//20100818ysk start
439 - if(isset($_POST['custom_customer'])) {
440 -//20101008ysk start
441 - unset($_SESSION['usces_entry']['custom_customer']);
442 -//20101008ysk end
443 - foreach( $_POST['custom_customer'] as $key => $value )
444 - if ( is_array($value) ) {
445 - foreach( $value as $k => $v ) {
446 - $_SESSION['usces_entry']['custom_customer'][$key][trim($v)] = trim($v);
447 - }
448 - } else {
449 - $_SESSION['usces_entry']['custom_customer'][$key] = trim($value);
450 - }
451 - }
452 - if(isset($_POST['custom_delivery'])) {
453 -//20101008ysk start
454 - unset($_SESSION['usces_entry']['custom_delivery']);
455 -//20101008ysk end
456 - foreach( $_POST['custom_delivery'] as $key => $value )
457 - if ( is_array($value) ) {
458 - foreach( $value as $k => $v ) {
459 - $_SESSION['usces_entry']['custom_delivery'][$key][trim($v)] = trim($v);
460 - }
461 - } else {
462 - $_SESSION['usces_entry']['custom_delivery'][$key] = trim($value);
463 - }
464 - }
465 -//20110106ysk start
466 - if(isset($_POST['delivery']['delivery_flag']) && $_POST['delivery']['delivery_flag'] == 0) {
467 - $this->set_custom_customer_delivery();
468 - }
469 -//20110106ysk end
470 - }
471 -
472 - // get entry information ***************************************************************
473 - function get_entry() {
474 -
475 - $res['customer'] = array(
476 - 'mailaddress1' => '',
477 - 'mailaddress2' => '',
478 - 'password1' => '',
479 - 'password2' => '',
480 - 'name1' => '',
481 - 'name2' => '',
482 - 'name3' => '',
483 - 'name4' => '',
484 - 'zipcode' => '',
485 - 'address1' => '',
486 - 'address2' => '',
487 - 'address3' => '',
488 - 'tel' => '',
489 - 'fax' => '',
490 - 'country' => '',
491 - 'pref' => ''
492 - );
493 - if(isset($_SESSION['usces_entry']['customer'])){
494 - foreach((array)$_SESSION['usces_entry']['customer'] as $key => $val){
495 - $res['customer'][$key] = $val;
496 - }
497 - }
498 -
499 - $res['delivery'] = array(
500 - 'name1' => '',
501 - 'name2' => '',
502 - 'name3' => '',
503 - 'name4' => '',
504 - 'zipcode' => '',
505 - 'address1' => '',
506 - 'address2' => '',
507 - 'address3' => '',
508 - 'tel' => '',
509 - 'fax' => '',
510 - 'country' => '',
511 - 'pref' => '',
512 - 'delivery_flag' => ''
513 - );
514 - if(isset($_SESSION['usces_entry']['delivery'])){
515 - foreach((array)$_SESSION['usces_entry']['delivery'] as $key => $val){
516 - $res['delivery'][$key] = $val;
517 - }
518 - }
519 -
520 - $res['order'] = array(
521 - 'usedpoint' => '',
522 - 'total_items_price' => '',
523 - 'discount' => '',
524 - 'shipping_charge' => '',
525 - 'cod_fee' => '',
526 - 'shipping_charge' => '',
527 - 'payment_name' => '',
528 - 'delivery_method' => '',
529 - 'delivery_date' => '',
530 - 'delivery_time' => '',
531 - 'total_full_price' => '',
532 - 'note' => '',
533 - 'tax' => '',
534 - 'payment_name' => '',
535 - 'delidue_date' => ''
536 - );
537 - if(isset($_SESSION['usces_entry']['order'])){
538 - foreach((array)$_SESSION['usces_entry']['order'] as $key => $val){
539 - $res['order'][$key] = $val;
540 - }
541 - }
542 -
543 - if(isset($_SESSION['usces_entry']['reserve']))
544 - $res['reserve'] = $_SESSION['usces_entry']['reserve'];
545 - else
546 - $res['reserve'] = NULL;
547 -
548 - if(isset($_SESSION['usces_entry']['condition']))
549 - $res['condition'] = $_SESSION['usces_entry']['condition'];
550 - else
551 - $res['condition'] = NULL;
552 -
553 -//20100809ysk start
554 - if(isset($_SESSION['usces_entry']['custom_order']))
555 - $res['custom_order'] = $_SESSION['usces_entry']['custom_order'];
556 - else
557 - $res['custom_order'] = NULL;
558 -//20100809ysk end
559 -//20100818ysk start
560 - if(isset($_SESSION['usces_entry']['custom_customer']))
561 - $res['custom_customer'] = $_SESSION['usces_entry']['custom_customer'];
562 - else
563 - $res['custom_customer'] = NULL;
564 - if(isset($_SESSION['usces_entry']['custom_delivery']))
565 - $res['custom_delivery'] = $_SESSION['usces_entry']['custom_delivery'];
566 - else
567 - $res['custom_delivery'] = NULL;
568 -//20100818ysk end
569 - return $res;
570 -
571 - }
572 - // get realprice ***************************************************************
573 - function get_realprice($post_id, $sku, $quant, $price = NULL) {
574 - global $usces;
575 - $sku = urldecode($sku);
576 - $skus = $usces->get_skus( $post_id, 'code' );
577 -
578 - if($price === NULL) {
579 - $p = $skus[$sku]['price'];
580 - } else {
581 - $p = $price;
582 - }
583 -//20110905ysk start 0000251
584 - $p = apply_filters('usces_filter_realprice', $p, $this->serial);
585 -//20110905ysk end
586 - if( !$skus[$sku]['gp'] ) return $p;
587 -
588 - $realprice = usces_get_gp_price($post_id, $p, $quant);
589 -
590 - return $realprice;
591 - }
592 -
593 - function set_pre_order_id($id){
594 - $_SESSION['usces_entry']['reserve']['pre_order_id'] = $id;
595 - }
596 -
597 -//20110106ysk start
598 - function set_custom_customer_delivery() {
599 - if(isset($_SESSION['usces_entry']['custom_customer'])) {
600 - $delivery = array();
601 - $csde_meta = usces_has_custom_field_meta('delivery');
602 - if(!empty($csde_meta) and is_array($csde_meta)) {
603 - foreach($csde_meta as $key => $entry) {
604 - $delivery[$key] = $key;
605 - }
606 - }
607 - foreach( $_SESSION['usces_entry']['custom_customer'] as $mbkey => $mbvalue ) {
608 - if(array_key_exists($mbkey, $delivery)) {
609 -//20110126ysk start
610 - if(empty($_SESSION['usces_entry']['custom_delivery'][$mbkey])) {
611 - if( is_array($mbvalue) ) {
612 - foreach( $mbvalue as $k => $v ) {
613 - $_SESSION['usces_entry']['custom_delivery'][$mbkey][$v] = $v;
614 - }
615 - } else {
616 - $_SESSION['usces_entry']['custom_delivery'][$mbkey] = $mbvalue;
617 - }
618 - }
619 -//20110126ysk end
620 - }
621 - }
622 - }
623 - }
624 -//20110106ysk end
625 -}
626 -?>
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 +}