PluginProbe
Welcart e-Commerce / 1.4.11
Welcart e-Commerce v1.4.11
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
usc-e-shop / classes / cart.class.php

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

627 lines 18.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 ?>
627