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

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

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