Abandoned Cart Lite for WooCommerce - Version 5.3.0

Version Description

(26.03.2019) =

  • Enhancement - Corrected the way recovered orders were tracked. Replaced the hooks tracking orders.

  • Bug - Newly created Email Templates will be inactive by default.

  • Bug - When an email template is activated, the emails will not be sent to older abandoned carts.

  • Bug - Fixed an issue where Recovered Order note was getting added to all the Orders.

  • Bug - Fixed an issue where notices were getting displayed in abandoned details page if the product was deleted.

  • Tweak - Updated the pot file with some new strings added. Also corrected the display of a few strings.

Download this release

Release Info

Developer Dhruvin
Plugin Icon 128x128 Abandoned Cart Lite for WooCommerce
Version 5.3.0
Comparing to
See all releases

Code changes from version 5.2.1 to 5.3.0

cron/wcal_send_email.php CHANGED
@@ -71,11 +71,11 @@ if ( !class_exists( 'woocommerce_abandon_cart_cron' ) ) {
71
  $time_to_send_template_after = $value->frequency * $hour_seconds;
72
  }
73
 
74
- $carts = $this->wcal_get_carts( $time_to_send_template_after, $cart_abandon_cut_off_time );
75
  $email_frequency = $value->frequency;
76
  $email_body_template = $value->body;
77
- $email_subject = stripslashes ( $value->subject );
78
- $email_subject = convert_smilies ( $email_subject );
79
  $wcal_from_name = get_option ( 'wcal_from_name' );
80
  $wcal_from_email = get_option ( 'wcal_from_email' );
81
  $wcal_reply_email = get_option ( 'wcal_reply_email' );
@@ -151,7 +151,7 @@ if ( !class_exists( 'woocommerce_abandon_cart_cron' ) ) {
151
  $wcal_check_if_cart_is_present_in_post_meta = "SELECT wpm.post_id, wpost.post_date, wpost.post_status FROM `" . $wpdb->prefix . "postmeta` AS wpm
152
  LEFT JOIN `" . $wpdb->prefix . "posts` AS wpost
153
  ON wpm.post_id = wpost.ID
154
- WHERE wpm.meta_key = 'wcap_recover_order_placed' AND
155
  wpm.meta_value = %s AND wpm.post_id = wpost.ID AND
156
  wpost.post_type = 'shop_order'
157
  ORDER BY wpm.post_id DESC LIMIT 1";
@@ -172,6 +172,7 @@ if ( !class_exists( 'woocommerce_abandon_cart_cron' ) ) {
172
  false == $wcap_check_cart_staus_need_to_update ) {
173
 
174
  $cart_info_db = $value->abandoned_cart_info;
 
175
  $email_body = $email_body_template;
176
  $wcal_check_cart_total = $this->wcal_check_cart_total( $cart );
177
  if( true == $wcal_check_cart_total ) {
@@ -296,32 +297,37 @@ if ( !class_exists( 'woocommerce_abandon_cart_cron' ) ) {
296
  foreach ( $cart_details as $k => $v ) {
297
  $quantity_total = $v->quantity;
298
  $product_id = $v->product_id;
299
- $prod_name = get_post( $product_id );
300
- $product_link_track = get_permalink( $product_id );
301
- $product_name = $prod_name->post_title;
302
- if( $sub_line_prod_name == '' ) {
303
- $sub_line_prod_name = $product_name;
304
- }
305
- // Item subtotal is calculated as product total including taxes
306
- if( $v->line_tax != 0 && $v->line_tax > 0 ) {
307
- $item_subtotal = $item_subtotal + $v->line_total + $v->line_tax;
308
- } else {
309
- $item_subtotal = $item_subtotal + $v->line_total;
310
- }
311
- // Line total
312
- $item_total = $item_subtotal;
313
- $item_subtotal = $item_subtotal / $quantity_total;
314
- $item_total_display = wc_price( $item_total );
315
- $item_subtotal = wc_price( $item_subtotal );
316
  $product = wc_get_product( $product_id );
317
- $prod_image = $product->get_image();
318
- $image_url = wp_get_attachment_url( get_post_thumbnail_id( $product_id ) );
319
- if ( isset( $v->variation_id ) && '' != $v->variation_id ) {
320
- $variation_id = $v->variation_id;
321
- $variation = wc_get_product( $variation_id );
322
- $name = $variation->get_formatted_name() ;
323
- $explode_all = explode ( "–", $name );
324
- if( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
325
  $wcap_sku = '';
326
  if ( $variation->get_sku() ) {
327
  $wcap_sku = "SKU: " . $variation->get_sku() . "<br>";
@@ -357,7 +363,16 @@ if ( !class_exists( 'woocommerce_abandon_cart_cron' ) ) {
357
  </tr>';
358
  $cart_total += $item_total;
359
  $item_subtotal = $item_total = 0;
 
 
 
 
 
 
360
  }
 
 
 
361
  $cart_total = wc_price( $cart_total );
362
  $var .= '<tr align="center">
363
  <td> </td>
@@ -370,7 +385,11 @@ if ( !class_exists( 'woocommerce_abandon_cart_cron' ) ) {
370
  ';
371
  $email_body = str_replace( "{{products.cart}}", $var, $email_body );
372
  $email_subject = str_replace( "{{product.name}}", __( $sub_line_prod_name, 'woocommerce-abandoned-cart' ), $email_subject );
 
 
 
373
  }
 
374
 
375
  $user_email = $value->user_email;
376
  $email_body_final = stripslashes( $email_body );
@@ -453,15 +472,23 @@ if ( !class_exists( 'woocommerce_abandon_cart_cron' ) ) {
453
  * @return array | object $results
454
  * @since 1.3
455
  */
456
- function wcal_get_carts( $template_to_send_after_time, $cart_abandon_cut_off_time ) {
457
  global $wpdb;
458
  $cart_time = current_time( 'timestamp' ) - $template_to_send_after_time - $cart_abandon_cut_off_time;
 
 
 
 
 
 
459
  $cart_ignored = 0;
460
  $unsubscribe = 0;
461
- $query = "SELECT wpac . * , wpu.user_login, wpu.user_email FROM `".$wpdb->prefix."ac_abandoned_cart_history_lite` AS wpac
462
- LEFT JOIN ".$wpdb->base_prefix."users AS wpu ON wpac.user_id = wpu.id
463
- WHERE cart_ignored = %s AND unsubscribe_link = %s AND abandoned_cart_time < $cart_time
464
- ORDER BY `id` ASC ";
 
 
465
 
466
  $results = $wpdb->get_results( $wpdb->prepare( $query, $cart_ignored, $unsubscribe ) );
467
  return $results;
@@ -541,10 +568,10 @@ if ( !class_exists( 'woocommerce_abandon_cart_cron' ) ) {
541
 
542
  $order_id = $wcal_results[0]->post_id;
543
 
544
- $order = new WC_Order( $order_id );
545
 
546
- $query_order = "UPDATE `" . $wpdb->prefix."ac_abandoned_cart_history_lite` SET recovered_cart= '" . $order_id . "', cart_ignored = '1' WHERE id = '".$cart_id."' ";
547
- $wpdb->query( $query_order );
548
 
549
  $order->add_order_note( __( 'This order was abandoned & subsequently recovered.', 'woocommerce-abandoned-cart' ) );
550
 
@@ -553,13 +580,13 @@ if ( !class_exists( 'woocommerce_abandon_cart_cron' ) ) {
553
  }
554
  }else{
555
 
556
- $query_ignored = "UPDATE `" . $wpdb->prefix."ac_abandoned_cart_history_lite` SET cart_ignored = '1' WHERE id ='" . $cart_id . "'";
557
- $wpdb->query( $query_ignored );
558
  }
559
  return 1;
560
  }else if ( strtotime( $order_date_with_time ) > $abandoned_cart_time ) {
561
- $query_ignored = "UPDATE `" . $wpdb->prefix."ac_abandoned_cart_history_lite` SET cart_ignored = '1' WHERE id ='" . $cart_id . "'";
562
- $wpdb->query( $query_ignored );
563
  return 1;
564
  } else if( "wc-pending" == $results_query_email[0]->post_status || "wc-failed" == $results_query_email[0]->post_status ) {
565
 
@@ -608,15 +635,15 @@ if ( !class_exists( 'woocommerce_abandon_cart_cron' ) ) {
608
 
609
  $order_id = $wcal_results[0]->post_id;
610
 
611
- $order = new WC_Order( $order_id );
612
 
613
  $query_order = "UPDATE `" . $wpdb->prefix."ac_abandoned_cart_history_lite` SET recovered_cart= '" . $order_id . "', cart_ignored = '1' WHERE id = '".$cart_id."' ";
614
  $wpdb->query( $query_order );
615
 
616
  $order->add_order_note( __( 'This order was abandoned & subsequently recovered.', 'woocommerce-abandoned-cart' ) );
617
 
618
- delete_post_meta( $order_id, 'wcap_recover_order_placed', $cart_id );
619
- delete_post_meta( $order_id , 'wcap_recover_order_placed_sent_id', $wcal_check_email_sent_to_cart );
620
  }
621
  }else {
622
 
71
  $time_to_send_template_after = $value->frequency * $hour_seconds;
72
  }
73
 
74
+ $carts = $this->wcal_get_carts( $time_to_send_template_after, $cart_abandon_cut_off_time, $value->id );
75
  $email_frequency = $value->frequency;
76
  $email_body_template = $value->body;
77
+ $template_email_subject = stripslashes ( $value->subject );
78
+ $template_email_subject = convert_smilies ( $template_email_subject );
79
  $wcal_from_name = get_option ( 'wcal_from_name' );
80
  $wcal_from_email = get_option ( 'wcal_from_email' );
81
  $wcal_reply_email = get_option ( 'wcal_reply_email' );
151
  $wcal_check_if_cart_is_present_in_post_meta = "SELECT wpm.post_id, wpost.post_date, wpost.post_status FROM `" . $wpdb->prefix . "postmeta` AS wpm
152
  LEFT JOIN `" . $wpdb->prefix . "posts` AS wpost
153
  ON wpm.post_id = wpost.ID
154
+ WHERE wpm.meta_key = 'wcal_recover_order_placed' AND
155
  wpm.meta_value = %s AND wpm.post_id = wpost.ID AND
156
  wpost.post_type = 'shop_order'
157
  ORDER BY wpm.post_id DESC LIMIT 1";
172
  false == $wcap_check_cart_staus_need_to_update ) {
173
 
174
  $cart_info_db = $value->abandoned_cart_info;
175
+ $email_subject = $template_email_subject;
176
  $email_body = $email_body_template;
177
  $wcal_check_cart_total = $this->wcal_check_cart_total( $cart );
178
  if( true == $wcal_check_cart_total ) {
297
  foreach ( $cart_details as $k => $v ) {
298
  $quantity_total = $v->quantity;
299
  $product_id = $v->product_id;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
300
  $product = wc_get_product( $product_id );
301
+ if ( $product ) {
302
+ $prod_name = get_post( $product_id );
303
+ $product_link_track = get_permalink( $product_id );
304
+ $product_name = $prod_name->post_title;
305
+ if( $sub_line_prod_name == '' ) {
306
+ $sub_line_prod_name = $product_name;
307
+ }
308
+ // Item subtotal is calculated as product total including taxes
309
+ if( $v->line_tax != 0 && $v->line_tax > 0 ) {
310
+ $item_subtotal = $item_subtotal + $v->line_total + $v->line_tax;
311
+ } else {
312
+ $item_subtotal = $item_subtotal + $v->line_total;
313
+ }
314
+ // Line total
315
+ $item_total = $item_subtotal;
316
+ $item_subtotal = $item_subtotal / $quantity_total;
317
+ $item_total_display = wc_price( $item_total );
318
+ $item_subtotal = wc_price( $item_subtotal );
319
+ //$product = wc_get_product( $product_id );
320
+ $prod_image = $product->get_image();
321
+ $image_url = wp_get_attachment_url( get_post_thumbnail_id( $product_id ) );
322
+ if ( strpos( $image_url, '/' ) === 0 ) {
323
+ $image_url = get_option('siteurl') . $image_url;
324
+ }
325
+ if ( isset( $v->variation_id ) && '' != $v->variation_id ) {
326
+ $variation_id = $v->variation_id;
327
+ $variation = wc_get_product( $variation_id );
328
+ $name = $variation->get_formatted_name() ;
329
+ $explode_all = explode ( "&ndash;", $name );
330
+ if( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
331
  $wcap_sku = '';
332
  if ( $variation->get_sku() ) {
333
  $wcap_sku = "SKU: " . $variation->get_sku() . "<br>";
363
  </tr>';
364
  $cart_total += $item_total;
365
  $item_subtotal = $item_total = 0;
366
+ $p_exists = true;
367
+ }else {
368
+ $cart_total = 0;
369
+ $item_subtotal = $item_total = 0;
370
+
371
+ $p_exists = false;
372
  }
373
+ }
374
+
375
+ if ( $p_exists ) {
376
  $cart_total = wc_price( $cart_total );
377
  $var .= '<tr align="center">
378
  <td> </td>
385
  ';
386
  $email_body = str_replace( "{{products.cart}}", $var, $email_body );
387
  $email_subject = str_replace( "{{product.name}}", __( $sub_line_prod_name, 'woocommerce-abandoned-cart' ), $email_subject );
388
+ }else {
389
+ $email_body = str_replace( "{{products.cart}}", 'Product no longer exists', $email_body );
390
+ $email_subject = str_replace( "{{product.name}}", __( $sub_line_prod_name, 'woocommerce-abandoned-cart' ), $email_subject );
391
  }
392
+ }
393
 
394
  $user_email = $value->user_email;
395
  $email_body_final = stripslashes( $email_body );
472
  * @return array | object $results
473
  * @since 1.3
474
  */
475
+ function wcal_get_carts( $template_to_send_after_time, $cart_abandon_cut_off_time, $template_id ) {
476
  global $wpdb;
477
  $cart_time = current_time( 'timestamp' ) - $template_to_send_after_time - $cart_abandon_cut_off_time;
478
+
479
+ $wcal_template_time = get_option( 'wcal_template_' . $template_id . '_time' );
480
+ $wcal_add_template_condition = '';
481
+ if ( $wcal_template_time > 0 ) {
482
+ $wcal_add_template_condition = ' AND abandoned_cart_time > ' . $wcal_template_time;
483
+ }
484
  $cart_ignored = 0;
485
  $unsubscribe = 0;
486
+ $query = "SELECT wpac . * , wpu.user_login, wpu.user_email
487
+ FROM `".$wpdb->prefix."ac_abandoned_cart_history_lite` AS wpac
488
+ LEFT JOIN ".$wpdb->base_prefix."users AS wpu ON wpac.user_id = wpu.id
489
+ WHERE cart_ignored = %s AND unsubscribe_link = %s AND abandoned_cart_time < $cart_time
490
+ $wcal_add_template_condition
491
+ ORDER BY `id` ASC ";
492
 
493
  $results = $wpdb->get_results( $wpdb->prepare( $query, $cart_ignored, $unsubscribe ) );
494
  return $results;
568
 
569
  $order_id = $wcal_results[0]->post_id;
570
 
571
+ $order = wc_get_order( $order_id );
572
 
573
+ $query_order = "UPDATE `" . $wpdb->prefix . "ac_abandoned_cart_history_lite` SET recovered_cart= %s, cart_ignored = '1' WHERE id = %s";
574
+ $wpdb->query( $wpdb->prepare( $query_order, $order_id, $cart_id ) );
575
 
576
  $order->add_order_note( __( 'This order was abandoned & subsequently recovered.', 'woocommerce-abandoned-cart' ) );
577
 
580
  }
581
  }else{
582
 
583
+ $query_ignored = "UPDATE `" . $wpdb->prefix."ac_abandoned_cart_history_lite` SET cart_ignored = '1' WHERE id = %s";
584
+ $wpdb->query( $wpdb->prepare( $query_ignored, $cart_id ) );
585
  }
586
  return 1;
587
  }else if ( strtotime( $order_date_with_time ) > $abandoned_cart_time ) {
588
+ $query_ignored = "UPDATE `" . $wpdb->prefix."ac_abandoned_cart_history_lite` SET cart_ignored = '1' WHERE id = %s ";
589
+ $wpdb->query( $wpdb->prepare( $query_ignored, $cart_id ) );
590
  return 1;
591
  } else if( "wc-pending" == $results_query_email[0]->post_status || "wc-failed" == $results_query_email[0]->post_status ) {
592
 
635
 
636
  $order_id = $wcal_results[0]->post_id;
637
 
638
+ $order = wc_get_order( $order_id );
639
 
640
  $query_order = "UPDATE `" . $wpdb->prefix."ac_abandoned_cart_history_lite` SET recovered_cart= '" . $order_id . "', cart_ignored = '1' WHERE id = '".$cart_id."' ";
641
  $wpdb->query( $query_order );
642
 
643
  $order->add_order_note( __( 'This order was abandoned & subsequently recovered.', 'woocommerce-abandoned-cart' ) );
644
 
645
+ delete_post_meta( $order_id, 'wcal_recover_order_placed', $cart_id );
646
+ delete_post_meta( $order_id , 'wcal_recover_order_placed_sent_id', $wcal_check_email_sent_to_cart );
647
  }
648
  }else {
649
 
i18n/languages/woocommerce-abandoned-cart.mo CHANGED
Binary file
i18n/languages/woocommerce-abandoned-cart.po CHANGED
@@ -7,85 +7,80 @@ msgid ""
7
  msgstr ""
8
  "Project-Id-Version: \n"
9
  "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2018-07-20 16:10+0530\n"
11
- "PO-Revision-Date: 2018-07-20 17:23+0530\n"
12
- "Language-Team: \n"
 
 
13
  "MIME-Version: 1.0\n"
14
  "Content-Type: text/plain; charset=UTF-8\n"
15
  "Content-Transfer-Encoding: 8bit\n"
16
- "X-Generator: Poedit 2.0.6\n"
17
- "Last-Translator: \n"
18
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
- "Language: en_US\n"
20
 
21
- #: woocommerce-ac.php:55
22
  msgid "Once Every Fifteen Minutes"
23
  msgstr ""
24
 
25
- #: woocommerce-ac.php:315
 
 
 
 
26
  msgid "Emails are not being sent to customers."
27
  msgstr ""
28
 
29
- #: woocommerce-ac.php:321
30
  msgid "Capturing of cart and other information was not satisfactory."
31
  msgstr ""
32
 
33
- #: woocommerce-ac.php:327
34
  msgid "I cannot see abandoned cart reminder emails records."
35
  msgstr ""
36
 
37
- #: woocommerce-ac.php:333
38
  msgid "I want to upgrade the plugin to the PRO version."
39
  msgstr ""
40
 
41
- #: woocommerce-ac.php:590 woocommerce-ac.php:2046 cron/wcal_send_email.php:542
42
- #: cron/wcal_send_email.php:609
43
- msgid "This order was abandoned & subsequently recovered."
44
- msgstr ""
45
-
46
- #: woocommerce-ac.php:640
47
  msgid "HTML Email Template"
48
  msgstr ""
49
 
50
- #: woocommerce-ac.php:646
51
  msgid "Abandoned cart Email Template"
52
  msgstr ""
53
 
54
- #: woocommerce-ac.php:843 woocommerce-ac.php:2228
55
- msgid "Settings"
56
- msgstr ""
57
-
58
- #: woocommerce-ac.php:850
59
  msgid "Cart abandoned cut-off time"
60
  msgstr ""
61
 
62
- #: woocommerce-ac.php:854
63
  msgid ""
64
  "Consider cart abandoned after X minutes of item being added to cart & order "
65
  "not placed."
66
  msgstr ""
67
 
68
- #: woocommerce-ac.php:859
69
  msgid "Automatically Delete Abandoned Orders after X days"
70
  msgstr ""
71
 
72
- #: woocommerce-ac.php:863
73
  msgid "Automatically delete abandoned cart orders after X days."
74
  msgstr ""
75
 
76
- #: woocommerce-ac.php:869
77
  msgid "Email admin On Order Recovery"
78
  msgstr ""
79
 
80
- #: woocommerce-ac.php:873
81
  msgid "Sends email to Admin if an Abandoned Cart Order is recovered."
82
  msgstr ""
83
 
84
- #: woocommerce-ac.php:879
85
  msgid "Start tracking from Cart Page"
86
  msgstr ""
87
 
88
- #: woocommerce-ac.php:883
89
  msgid ""
90
  "Enable tracking of abandoned products & carts even if customer does not "
91
  "visit the checkout page or does not enter any details on the checkout page "
@@ -93,11 +88,11 @@ msgid ""
93
  "to their cart and visits the cart page."
94
  msgstr ""
95
 
96
- #: woocommerce-ac.php:888
97
  msgid "Message to be displayed for Guest users when tracking their carts"
98
  msgstr ""
99
 
100
- #: woocommerce-ac.php:892
101
  msgid ""
102
  "<br>In compliance with GDPR, add a message on the Checkout page to inform "
103
  "Guest users of how their data is being used.<br><i>For example: Your email "
@@ -105,305 +100,326 @@ msgid ""
105
  "Please check our Privacy Policy to see how we use your personal data.</i>"
106
  msgstr ""
107
 
108
- #: woocommerce-ac.php:897
109
  msgid "Message to be displayed for registered users when tracking their carts."
110
  msgstr ""
111
 
112
- #: woocommerce-ac.php:901
113
  msgid ""
114
  "<br>In compliance with GDPR, add a message on the Shop & Product pages to "
115
  "inform Registered users of how their data is being used.<br><i>For example: "
116
  "Please check our Privacy Policy to see how we use your personal data.</i>"
117
  msgstr ""
118
 
119
- #: woocommerce-ac.php:911
120
  msgid "Settings for abandoned cart recovery emails"
121
  msgstr ""
122
 
123
- #: woocommerce-ac.php:918
124
  msgid "\"From\" Name"
125
  msgstr ""
126
 
127
- #: woocommerce-ac.php:927
128
  msgid "\"From\" Address"
129
  msgstr ""
130
 
131
- #: woocommerce-ac.php:936
132
  msgid "Send Reply Emails to"
133
  msgstr ""
134
 
135
- #: woocommerce-ac.php:1030
136
  msgid ""
137
  "Abandoned cart cut off time should be numeric and has to be greater than 0."
138
  msgstr ""
139
 
140
- #: woocommerce-ac.php:1046
141
  msgid ""
142
  "Automatically Delete Abandoned Orders after X days has to be greater than 0."
143
  msgstr ""
144
 
145
- #: woocommerce-ac.php:1400 woocommerce-ac.php:1402 woocommerce-ac.php:1455
146
- #: woocommerce-ac.php:1457
147
- msgid "New Customer Order - Recovered"
148
- msgstr ""
149
-
150
- #: woocommerce-ac.php:1504 includes/admin/wcal_privacy_export.php:123
151
  msgid "Abandoned Carts"
152
  msgstr ""
153
 
154
- #: woocommerce-ac.php:2226
155
  msgid "Abandoned Orders"
156
  msgstr ""
157
 
158
- #: woocommerce-ac.php:2227
159
  msgid "Email Templates"
160
  msgstr ""
161
 
162
- #: woocommerce-ac.php:2229
163
  msgid "Recovered Orders"
164
  msgstr ""
165
 
166
- #: woocommerce-ac.php:2230
167
  msgid "Product Report"
168
  msgstr ""
169
 
170
- #: woocommerce-ac.php:2356
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  msgid "You do not have sufficient permissions to access this page."
172
  msgstr ""
173
 
174
- #: woocommerce-ac.php:2360
175
  msgid "WooCommerce - Abandon Cart Lite"
176
  msgstr ""
177
 
178
- #: woocommerce-ac.php:2420
179
  msgid "The Abandoned cart has been successfully deleted."
180
  msgstr ""
181
 
182
- #: woocommerce-ac.php:2425
183
  msgid "The Template has been successfully deleted."
184
  msgstr ""
185
 
186
- #: woocommerce-ac.php:2431
187
  msgid ""
188
  "Change settings for sending email notifications to Customers, to Admin etc."
189
  msgstr ""
190
 
191
- #: woocommerce-ac.php:2450
192
  msgid "General Settings"
193
  msgstr ""
194
 
195
- #: woocommerce-ac.php:2453
196
  msgid "Email Sending Settings"
197
  msgstr ""
198
 
199
- #: woocommerce-ac.php:2483
200
  msgid ""
201
  "The list below shows all Abandoned Carts which have remained in cart for a "
202
  "time higher than the \"Cart abandoned cut-off time\" setting."
203
  msgstr ""
204
 
205
- #: woocommerce-ac.php:2525
206
  msgid "All "
207
  msgstr ""
208
 
209
- #: woocommerce-ac.php:2530
210
  #, php-format
211
  msgid "Registered %s"
212
  msgstr ""
213
 
214
- #: woocommerce-ac.php:2536
215
  #, php-format
216
  msgid "Guest %s"
217
  msgstr ""
218
 
219
- #: woocommerce-ac.php:2542
220
  msgid "Carts without Customer Details"
221
  msgstr ""
222
 
223
- #: woocommerce-ac.php:2563
224
  msgid ""
225
  "Add email templates at different intervals to maximize the possibility of "
226
  "recovering your abandoned carts."
227
  msgstr ""
228
 
229
- #: woocommerce-ac.php:2681
230
- msgid "The Email Template has been successfully added."
 
 
231
  msgstr ""
232
 
233
- #: woocommerce-ac.php:2690
234
  msgid ""
235
  "There was a problem adding the email template. Please contact the plugin "
236
  "author via <a href= \"https://wordpress.org/support/plugin/woocommerce-"
237
  "abandoned-cart\">support forum</a>."
238
  msgstr ""
239
 
240
- #: woocommerce-ac.php:2701
241
  msgid "The Email Template has been successfully updated."
242
  msgstr ""
243
 
244
- #: woocommerce-ac.php:2710
245
  msgid ""
246
  "There was a problem updating the email template. Please contact the plugin "
247
  "author via <a href= \"https://wordpress.org/support/plugin/woocommerce-"
248
  "abandoned-cart\">support forum</a>."
249
  msgstr ""
250
 
251
- #: woocommerce-ac.php:2719
252
  msgid "Add New Template"
253
  msgstr ""
254
 
255
- #: woocommerce-ac.php:2796
256
  msgid ""
257
  "The Report below shows how many Abandoned Carts we were able to recover for "
258
  "you by sending automatic emails to encourage shoppers."
259
  msgstr ""
260
 
261
- #: woocommerce-ac.php:2845
262
  msgid "Start Date:"
263
  msgstr ""
264
 
265
- #: woocommerce-ac.php:2847
266
  msgid "End Date:"
267
  msgstr ""
268
 
269
- #: woocommerce-ac.php:2849
270
  msgid "Go"
271
  msgstr ""
272
 
273
- #: woocommerce-ac.php:2855
274
- msgid "During the selected range "
275
- msgstr ""
276
-
277
- #: woocommerce-ac.php:2860
278
- msgid "carts totaling"
279
- msgstr ""
280
-
281
- #: woocommerce-ac.php:2866
282
- msgid " were abandoned. We were able to recover"
283
- msgstr ""
284
-
285
- #: woocommerce-ac.php:2873
286
- msgid " of them, which led to an extra"
287
  msgstr ""
288
 
289
- #: woocommerce-ac.php:2896
290
  #, php-format
291
  msgid "Abandoned Order #%s Details"
292
  msgstr ""
293
 
294
- #: woocommerce-ac.php:2900 woocommerce-ac.php:3581 woocommerce-ac.php:3616
295
- #: cron/wcal_send_email.php:269 cron/wcal_send_email.php:279
296
  msgid "Item"
297
  msgstr ""
298
 
299
- #: woocommerce-ac.php:2901 woocommerce-ac.php:3582 woocommerce-ac.php:3617
300
- #: cron/wcal_send_email.php:270 cron/wcal_send_email.php:280
301
  msgid "Name"
302
  msgstr ""
303
 
304
- #: woocommerce-ac.php:2902 woocommerce-ac.php:3583 woocommerce-ac.php:3618
305
- #: cron/wcal_send_email.php:271 cron/wcal_send_email.php:281
306
  msgid "Quantity"
307
  msgstr ""
308
 
309
- #: woocommerce-ac.php:2903 woocommerce-ac.php:3585 woocommerce-ac.php:3620
310
- #: cron/wcal_send_email.php:273 cron/wcal_send_email.php:283
311
  msgid "Line Subtotal"
312
  msgstr ""
313
 
314
- #: woocommerce-ac.php:2904
315
  msgid "Line Total"
316
  msgstr ""
317
 
318
- #: woocommerce-ac.php:3089
319
  msgid "Customer Details"
320
  msgstr ""
321
 
322
- #: woocommerce-ac.php:3093
323
  msgid "Billing Details"
324
  msgstr ""
325
 
326
- #: woocommerce-ac.php:3094
327
  msgid "Name:"
328
  msgstr ""
329
 
330
- #: woocommerce-ac.php:3097 woocommerce-ac.php:3117
331
  msgid "Address:"
332
  msgstr ""
333
 
334
- #: woocommerce-ac.php:3107
335
  msgid "Email:"
336
  msgstr ""
337
 
338
- #: woocommerce-ac.php:3111
339
  msgid "Phone:"
340
  msgstr ""
341
 
342
- #: woocommerce-ac.php:3116
343
  msgid "Shipping Details"
344
  msgstr ""
345
 
346
- #: woocommerce-ac.php:3204
 
 
 
 
347
  msgid "Template Name:"
348
  msgstr ""
349
 
350
- #: woocommerce-ac.php:3213
351
  msgid "Enter a template name for reference"
352
  msgstr ""
353
 
354
- #: woocommerce-ac.php:3219
355
  msgid "Subject:"
356
  msgstr ""
357
 
358
- #: woocommerce-ac.php:3228
359
  msgid "Enter the subject that should appear in the email sent"
360
  msgstr ""
361
 
362
- #: woocommerce-ac.php:3234
363
  msgid "Email Body:"
364
  msgstr ""
365
 
366
- #: woocommerce-ac.php:3261
367
  msgid "Message to be sent in the reminder email."
368
  msgstr ""
369
 
370
- #: woocommerce-ac.php:3288
371
  msgid "Use WooCommerce Template Style:"
372
  msgstr ""
373
 
374
- #: woocommerce-ac.php:3303
375
  msgid ""
376
  "Use WooCommerce default style template for abandoned cart reminder emails."
377
  msgstr ""
378
 
379
- #: woocommerce-ac.php:3310
380
  msgid "Email Template Header Text: "
381
  msgstr ""
382
 
383
- #: woocommerce-ac.php:3324
384
  msgid ""
385
  "Enter the header which will appear in the abandoned WooCommerce email sent. "
386
  "This is only applicable when only used when \"Use WooCommerce Template Style:"
387
  "\" is checked."
388
  msgstr ""
389
 
390
- #: woocommerce-ac.php:3330
391
  msgid "Send this email:"
392
  msgstr ""
393
 
394
- #: woocommerce-ac.php:3371
395
  msgid "after cart is abandoned."
396
  msgstr ""
397
 
398
- #: woocommerce-ac.php:3378
399
  msgid "Send a test email to:"
400
  msgstr ""
401
 
402
- #: woocommerce-ac.php:3383
403
  msgid "Enter the email id to which the test email needs to be sent."
404
  msgstr ""
405
 
406
- #: woocommerce-ac.php:3416
407
  msgid ""
408
  "If you love <strong>Abandoned Cart Lite for WooCommerce</strong>, then "
409
  "please leave us a <a href=\"https://wordpress.org/support/plugin/woocommerce-"
@@ -412,30 +428,37 @@ msgid ""
412
  " rating. Thank you in advance. :)"
413
  msgstr ""
414
 
415
- #: woocommerce-ac.php:3579 woocommerce-ac.php:3613 cron/wcal_send_email.php:267
416
- #: cron/wcal_send_email.php:276
417
  msgid "Your Shopping Cart"
418
  msgstr ""
419
 
420
- #: woocommerce-ac.php:3584 woocommerce-ac.php:3619 cron/wcal_send_email.php:272
421
- #: cron/wcal_send_email.php:282
422
  msgid "Price"
423
  msgstr ""
424
 
425
- #: woocommerce-ac.php:3589 woocommerce-ac.php:3624
426
  msgid "Men\\'\\s Formal Shoes"
427
  msgstr ""
428
 
429
- #: woocommerce-ac.php:3596 woocommerce-ac.php:3631
430
  msgid "Woman\\'\\s Hand Bags"
431
  msgstr ""
432
 
433
- #: woocommerce-ac.php:3605 woocommerce-ac.php:3640 cron/wcal_send_email.php:359
 
434
  msgid "Cart Total:"
435
  msgstr ""
436
 
437
- #: cron/wcal_send_email.php:86
438
- msgid "You Left Something in Your Cart!"
 
 
 
 
 
 
439
  msgstr ""
440
 
441
  #: includes/wcal-common.php:567
@@ -451,46 +474,53 @@ msgstr ""
451
  msgid ""
452
  "<div id=\"wcal_update\" class=\"updated woocommerce-message\" style="
453
  "\"padding:15px;\"><span>We need to update your email template database for "
454
- "some improvements. Please take a backup of your databases for your peice of "
455
  "mind</span><span class=\"submit\"><a href=\"%s\" class=\"button-primary\" "
456
  "style=\"float:right;\">Update</a></span></div>"
457
  msgstr ""
458
 
459
- #: includes/wcal_all_component.php:86
460
  msgid ""
461
- "Thank you for using Abandoned Cart Lite for WooCommerce! You can use the Pro "
462
- "version for recovering more sales with some additional features. <strong><a "
463
- "target=\"_blank\" href= \""
 
 
464
  msgstr ""
465
 
466
- #: includes/wcal_all_component.php:89
 
467
  msgid ""
468
- "Get an extra benefit of analysis of your Abandoned Cart data with some "
469
- "statistical view present on Dashboard. <strong><a target=\"_blank\" href= \""
 
 
470
  msgstr ""
471
 
472
- #: includes/wcal_all_component.php:92
473
  msgid ""
474
- "Abandoned Cart Pro plugin allows you to recover more revenue by offering "
475
- "discount coupons in the abandoned cart email notifications. <strong><a "
476
- "target=\"_blank\" href= \""
477
  msgstr ""
478
 
479
- #: includes/wcal_all_component.php:95
480
  msgid ""
481
- "Capture guest customer emails while adding a product to cart with our Add to "
482
- "cart modal pop-up feature present in Abandoned Cart Pro for WooCommerce. "
483
- "<strong><a target=\"_blank\" href= \""
484
  msgstr ""
485
 
486
- #: includes/wcal_all_component.php:99
487
  msgid ""
488
- "Using Abandoned Cart Pro plugin, you can add more merge tags, one-click Cart "
489
- "& Checkout page button, send customised abandoned cart reminder email to "
490
- "specific customers & <strong><a target=\"_blank\" href= \""
 
 
491
  msgstr ""
492
 
493
- #: includes/wcal_all_component.php:102
494
  msgid ""
495
  "Reduce cart abandonment rate by 57% with our Order Delivery Date Pro "
496
  "WooCommerce plugin. You can Create Delivery Settings by Shipping Zones & "
@@ -499,14 +529,14 @@ msgid ""
499
  "20 customers. <strong><a target=\"_blank\" href= \""
500
  msgstr ""
501
 
502
- #: includes/wcal_all_component.php:105
503
  msgid ""
504
  "Allow your customers to select the Delivery Date on Single Product Page "
505
  "using our Product Delivery Date pro for WooCommerce Plugin. <br> \n"
506
  " <strong><a target=\"_blank\" href= \""
507
  msgstr ""
508
 
509
- #: includes/wcal_all_component.php:109
510
  #, php-format
511
  msgid ""
512
  " Allow your customers to book an appointment or rent an apartment with our "
@@ -516,193 +546,13 @@ msgid ""
516
  "customers. <strong><a target=\"_blank\" href= \""
517
  msgstr ""
518
 
519
- #: includes/wcal_all_component.php:112
520
  msgid ""
521
  " Allow your customers to pay deposits on products using our Deposits for "
522
- "WooCommerce plguin. <br>\n"
523
  " <strong><a target=\"_blank\" href= \""
524
  msgstr ""
525
 
526
- #: includes/wcal_ts_tracking.php:76
527
- #, php-format
528
- msgid ""
529
- "Want to help make Abandoned Cart even more awesome? Allow Abandoned Cart to "
530
- "collect non-sensitive diagnostic data and usage information and get 20% off "
531
- "on your next purchase. <a href=\"https://www.tychesoftwares.com/abandoned-"
532
- "cart-lite-usage-tracking/\" target=\"_blank\">Find out more</a>. <br><br>"
533
- msgstr ""
534
-
535
- #: includes/wcal_ts_tracking.php:78 includes/component/tracking
536
- #: data/ts-tracking.php:263
537
- msgid "Allow"
538
- msgstr ""
539
-
540
- #: includes/wcal_ts_tracking.php:79 includes/component/tracking
541
- #: data/ts-tracking.php:264
542
- msgid "No thanks"
543
- msgstr ""
544
-
545
- #: includes/welcome.php:49
546
- #, php-format
547
- msgid "Welcome to Abandoned Cart Lite %s"
548
- msgstr ""
549
-
550
- #: includes/welcome.php:50
551
- msgid "Welcome to Abandoned Cart Lite"
552
- msgstr ""
553
-
554
- #: includes/welcome.php:88
555
- msgid ""
556
- "Thank you for activating or updating to the latest version of Abandoned Cart "
557
- "Lite! If you're a first time user, welcome! You're well on your way to start "
558
- "recovering your lost revenues."
559
- msgstr ""
560
-
561
- #: includes/welcome.php:98
562
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:30
563
- msgid "Get Started with Abandoned Cart Lite"
564
- msgstr ""
565
-
566
- #: includes/welcome.php:102 includes/welcome.php:127 includes/welcome.php:154
567
- #: includes/welcome.php:161 includes/welcome.php:188
568
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:34
569
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:59
570
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:86
571
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:93
572
- msgid "WooCommerce Abandoned Cart Lite"
573
- msgstr ""
574
-
575
- #: includes/welcome.php:106
576
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:38
577
- msgid "Activate Email Template"
578
- msgstr ""
579
-
580
- #: includes/welcome.php:108
581
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:40
582
- msgid ""
583
- "To start sending out abandoned cart notification emails, simply activate the "
584
- "email template from under WooCommerce -> Abandoned Carts -> Email Templates "
585
- "page."
586
- msgstr ""
587
-
588
- #: includes/welcome.php:110
589
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:42
590
- msgid "Click Here to go to Email Templates page"
591
- msgstr ""
592
-
593
- #: includes/welcome.php:120
594
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:52
595
- msgid "Know more about Abandoned Cart Pro"
596
- msgstr ""
597
-
598
- #: includes/welcome.php:122
599
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:54
600
- msgid ""
601
- "The Abandoned Cart Pro plugin gives you features where you are able to "
602
- "recover more sales compared to the Lite plugin. Here are some notable "
603
- "features the Pro version provides."
604
- msgstr ""
605
-
606
- #: includes/welcome.php:131
607
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:63
608
- msgid "Capture Visitor Emails on click of Add to Cart button"
609
- msgstr ""
610
-
611
- #: includes/welcome.php:133
612
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:65
613
- msgid ""
614
- "The ability to capture the email address early in the order process is very "
615
- "important to reduce cart abandonment by unknown users as well as to be able "
616
- "to recover their carts if they abandon it. This ultimately leads to increase "
617
- "in your store sales."
618
- msgstr ""
619
-
620
- #: includes/welcome.php:135 includes/welcome.php:148 includes/welcome.php:169
621
- #: includes/welcome.php:182
622
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:67
623
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:80
624
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:101
625
- msgid "Learn More"
626
- msgstr ""
627
-
628
- #: includes/welcome.php:144
629
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:76
630
- msgid "Set different cut-off times for visitors & logged-in users"
631
- msgstr ""
632
-
633
- #: includes/welcome.php:146
634
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:78
635
- msgid ""
636
- "The provision for setting two separate cut-off times for different roles is "
637
- "mainly because sometimes if the store admin wants the visitor carts to be "
638
- "captured earlier than the registered user carts, then these different "
639
- "settings can play an important role."
640
- msgstr ""
641
-
642
- #: includes/welcome.php:165
643
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:97
644
- msgid "Send abandoned cart recovery email in minutes of cart being abandoned"
645
- msgstr ""
646
-
647
- #: includes/welcome.php:167
648
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:99
649
- msgid ""
650
- "The ability to send the abandoned cart recovery email within first few "
651
- "minutes of cart being abandoned is a big advantage. In the Lite plugin, the "
652
- "earliest an email can be sent is after 1 hour. Whereas in the Pro version, "
653
- "the first recovery email gets sent 15 minutes after the cart is abandoned. "
654
- "This increases the recovery chances manifold."
655
- msgstr ""
656
-
657
- #: includes/welcome.php:178
658
- msgid ""
659
- "Full range of merge tags that allow you to personalize the abandoned cart "
660
- "email"
661
- msgstr ""
662
-
663
- #: includes/welcome.php:180
664
- msgid ""
665
- "The Lite version has only 3 merge tags available to personalize the "
666
- "abandoned cart recovery emails. The Pro version instead, has 20 different "
667
- "merge tags that can be used effectively to personalize each email that gets "
668
- "sent out to the customers for recovering their abandoned carts."
669
- msgstr ""
670
-
671
- #: includes/welcome.php:193
672
- msgid "View full list of differences between Lite & Pro plugin"
673
- msgstr ""
674
-
675
- #: includes/welcome.php:202
676
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:110
677
- msgid "Getting to Know Tyche Softwares"
678
- msgstr ""
679
-
680
- #: includes/welcome.php:205
681
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:112
682
- msgid "Visit the Tyche Softwares Website"
683
- msgstr ""
684
-
685
- #: includes/welcome.php:206
686
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:113
687
- msgid "View all Premium Plugins"
688
- msgstr ""
689
-
690
- #: includes/welcome.php:215
691
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:122
692
- msgid "Meet the team"
693
- msgstr ""
694
-
695
- #: includes/welcome.php:223
696
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:128
697
- msgid "Current Offers"
698
- msgstr ""
699
-
700
- #: includes/welcome.php:271
701
- #: includes/component/welcome-page/templates/social-media-elements.php:10
702
- #, php-format
703
- msgid "Follow %s"
704
- msgstr ""
705
-
706
  #: includes/admin/wcal_privacy_erase.php:41
707
  #: includes/admin/wcal_privacy_export.php:41
708
  msgid "Abandoned & Recovered Carts"
@@ -816,7 +666,7 @@ msgid "View order"
816
  msgstr ""
817
 
818
  #: includes/classes/class-wcal-abandoned-orders-table.php:151
819
- #: includes/classes/class-wcal-abandoned-orders-table.php:546
820
  #: includes/classes/class-wcal-templates-table.php:145
821
  #: includes/classes/class-wcal-templates-table.php:330
822
  msgid "Delete"
@@ -838,14 +688,6 @@ msgstr ""
838
  msgid "Unsubscribed"
839
  msgstr ""
840
 
841
- #: includes/classes/class-wcal-abandoned-orders-table.php:367
842
- msgid "Abandoned but new"
843
- msgstr ""
844
-
845
- #: includes/classes/class-wcal-abandoned-orders-table.php:367
846
- msgid "cart created after this"
847
- msgstr ""
848
-
849
  #: includes/classes/class-wcal-product-report-table.php:58
850
  msgid "product_id"
851
  msgstr ""
@@ -981,31 +823,39 @@ msgctxt ""
981
  msgid "Other"
982
  msgstr ""
983
 
984
- #: includes/component/faq_support/ts-faq-support.php:126
985
  #, php-format
986
  msgid "Frequently Asked Questions for %s"
987
  msgstr ""
988
 
989
- #: includes/component/faq_support/ts-faq-support.php:127
990
  msgid "Frequently Asked Questions for "
991
  msgstr ""
992
 
993
- #: includes/component/faq_support/ts-faq-support.php:175
994
  msgid "FAQ & Support"
995
  msgstr ""
996
 
997
- #: includes/component/tracking data/ts-tracking.php:133
998
  msgid "Reset usage tracking"
999
  msgstr ""
1000
 
1001
- #: includes/component/tracking data/ts-tracking.php:177
1002
  msgid "Once in a Week"
1003
  msgstr ""
1004
 
1005
- #: includes/component/tracking data/ts-tracking.php:261
1006
  msgid "Want to help make "
1007
  msgstr ""
1008
 
 
 
 
 
 
 
 
 
1009
  #: includes/component/welcome-page/ts-welcome.php:165
1010
  #, php-format
1011
  msgid "Welcome to %s %s"
@@ -1015,10 +865,120 @@ msgstr ""
1015
  msgid "Welcome to "
1016
  msgstr ""
1017
 
 
 
 
 
 
1018
  #: includes/component/welcome-page/templates/welcome/welcome-page.php:18
1019
  msgid "Thank you for activating or updating to the latest version of "
1020
  msgstr ""
1021
 
1022
- #: includes/component/woocommerce-check/ts-woo-active.php:77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1023
  msgid " plugin requires WooCommerce installed and activate."
1024
  msgstr ""
 
 
 
 
 
7
  msgstr ""
8
  "Project-Id-Version: \n"
9
  "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2019-03-25 19:02+0530\n"
11
+ "PO-Revision-Date: 2019-03-25 19:04+0500\n"
12
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
+ "Language-Team: LANGUAGE <LL@li.org>\n"
14
+ "Language: \n"
15
  "MIME-Version: 1.0\n"
16
  "Content-Type: text/plain; charset=UTF-8\n"
17
  "Content-Transfer-Encoding: 8bit\n"
18
+ "Plural-Forms: \n"
19
+ "X-Generator: Eazy Po 0.9.5.3\n"
 
 
20
 
21
+ #: woocommerce-ac.php:47
22
  msgid "Once Every Fifteen Minutes"
23
  msgstr ""
24
 
25
+ #: woocommerce-ac.php:218 woocommerce-ac.php:499 woocommerce-ac.php:1692
26
+ msgid "Settings"
27
+ msgstr ""
28
+
29
+ #: woocommerce-ac.php:245
30
  msgid "Emails are not being sent to customers."
31
  msgstr ""
32
 
33
+ #: woocommerce-ac.php:251
34
  msgid "Capturing of cart and other information was not satisfactory."
35
  msgstr ""
36
 
37
+ #: woocommerce-ac.php:257
38
  msgid "I cannot see abandoned cart reminder emails records."
39
  msgstr ""
40
 
41
+ #: woocommerce-ac.php:263
42
  msgid "I want to upgrade the plugin to the PRO version."
43
  msgstr ""
44
 
45
+ #: woocommerce-ac.php:293
 
 
 
 
 
46
  msgid "HTML Email Template"
47
  msgstr ""
48
 
49
+ #: woocommerce-ac.php:299
50
  msgid "Abandoned cart Email Template"
51
  msgstr ""
52
 
53
+ #: woocommerce-ac.php:506
 
 
 
 
54
  msgid "Cart abandoned cut-off time"
55
  msgstr ""
56
 
57
+ #: woocommerce-ac.php:510
58
  msgid ""
59
  "Consider cart abandoned after X minutes of item being added to cart & order "
60
  "not placed."
61
  msgstr ""
62
 
63
+ #: woocommerce-ac.php:515
64
  msgid "Automatically Delete Abandoned Orders after X days"
65
  msgstr ""
66
 
67
+ #: woocommerce-ac.php:519
68
  msgid "Automatically delete abandoned cart orders after X days."
69
  msgstr ""
70
 
71
+ #: woocommerce-ac.php:525
72
  msgid "Email admin On Order Recovery"
73
  msgstr ""
74
 
75
+ #: woocommerce-ac.php:529
76
  msgid "Sends email to Admin if an Abandoned Cart Order is recovered."
77
  msgstr ""
78
 
79
+ #: woocommerce-ac.php:535
80
  msgid "Start tracking from Cart Page"
81
  msgstr ""
82
 
83
+ #: woocommerce-ac.php:539
84
  msgid ""
85
  "Enable tracking of abandoned products & carts even if customer does not "
86
  "visit the checkout page or does not enter any details on the checkout page "
88
  "to their cart and visits the cart page."
89
  msgstr ""
90
 
91
+ #: woocommerce-ac.php:544
92
  msgid "Message to be displayed for Guest users when tracking their carts"
93
  msgstr ""
94
 
95
+ #: woocommerce-ac.php:548
96
  msgid ""
97
  "<br>In compliance with GDPR, add a message on the Checkout page to inform "
98
  "Guest users of how their data is being used.<br><i>For example: Your email "
100
  "Please check our Privacy Policy to see how we use your personal data.</i>"
101
  msgstr ""
102
 
103
+ #: woocommerce-ac.php:553
104
  msgid "Message to be displayed for registered users when tracking their carts."
105
  msgstr ""
106
 
107
+ #: woocommerce-ac.php:557
108
  msgid ""
109
  "<br>In compliance with GDPR, add a message on the Shop & Product pages to "
110
  "inform Registered users of how their data is being used.<br><i>For example: "
111
  "Please check our Privacy Policy to see how we use your personal data.</i>"
112
  msgstr ""
113
 
114
+ #: woocommerce-ac.php:567
115
  msgid "Settings for abandoned cart recovery emails"
116
  msgstr ""
117
 
118
+ #: woocommerce-ac.php:574
119
  msgid "\"From\" Name"
120
  msgstr ""
121
 
122
+ #: woocommerce-ac.php:583
123
  msgid "\"From\" Address"
124
  msgstr ""
125
 
126
+ #: woocommerce-ac.php:592
127
  msgid "Send Reply Emails to"
128
  msgstr ""
129
 
130
+ #: woocommerce-ac.php:686
131
  msgid ""
132
  "Abandoned cart cut off time should be numeric and has to be greater than 0."
133
  msgstr ""
134
 
135
+ #: woocommerce-ac.php:702
136
  msgid ""
137
  "Automatically Delete Abandoned Orders after X days has to be greater than 0."
138
  msgstr ""
139
 
140
+ #: woocommerce-ac.php:1083 includes/admin/wcal_privacy_export.php:123
 
 
 
 
 
141
  msgid "Abandoned Carts"
142
  msgstr ""
143
 
144
+ #: woocommerce-ac.php:1690
145
  msgid "Abandoned Orders"
146
  msgstr ""
147
 
148
+ #: woocommerce-ac.php:1691
149
  msgid "Email Templates"
150
  msgstr ""
151
 
152
+ #: woocommerce-ac.php:1693
153
  msgid "Recovered Orders"
154
  msgstr ""
155
 
156
+ #: woocommerce-ac.php:1694
157
  msgid "Product Report"
158
  msgstr ""
159
 
160
+ #: woocommerce-ac.php:1740
161
+ #, php-format
162
+ msgid "Please enter in decimal (%s) format without thousand separators."
163
+ msgstr ""
164
+
165
+ #: woocommerce-ac.php:1742
166
+ #, php-format
167
+ msgid ""
168
+ "Please enter in monetary decimal (%s) format without thousand separators and "
169
+ "currency symbols."
170
+ msgstr ""
171
+
172
+ #: woocommerce-ac.php:1743
173
+ msgid "Please enter in country code with two capital letters."
174
+ msgstr ""
175
+
176
+ #: woocommerce-ac.php:1744
177
+ msgid "Please enter in a value less than the regular price."
178
+ msgstr ""
179
+
180
+ #: woocommerce-ac.php:1748
181
+ msgid "Import"
182
+ msgstr ""
183
+
184
+ #: woocommerce-ac.php:1749
185
+ msgid "Export"
186
+ msgstr ""
187
+
188
+ #: woocommerce-ac.php:1859
189
  msgid "You do not have sufficient permissions to access this page."
190
  msgstr ""
191
 
192
+ #: woocommerce-ac.php:1863
193
  msgid "WooCommerce - Abandon Cart Lite"
194
  msgstr ""
195
 
196
+ #: woocommerce-ac.php:1923
197
  msgid "The Abandoned cart has been successfully deleted."
198
  msgstr ""
199
 
200
+ #: woocommerce-ac.php:1928
201
  msgid "The Template has been successfully deleted."
202
  msgstr ""
203
 
204
+ #: woocommerce-ac.php:1934
205
  msgid ""
206
  "Change settings for sending email notifications to Customers, to Admin etc."
207
  msgstr ""
208
 
209
+ #: woocommerce-ac.php:1952
210
  msgid "General Settings"
211
  msgstr ""
212
 
213
+ #: woocommerce-ac.php:1955
214
  msgid "Email Sending Settings"
215
  msgstr ""
216
 
217
+ #: woocommerce-ac.php:1985
218
  msgid ""
219
  "The list below shows all Abandoned Carts which have remained in cart for a "
220
  "time higher than the \"Cart abandoned cut-off time\" setting."
221
  msgstr ""
222
 
223
+ #: woocommerce-ac.php:2027
224
  msgid "All "
225
  msgstr ""
226
 
227
+ #: woocommerce-ac.php:2032
228
  #, php-format
229
  msgid "Registered %s"
230
  msgstr ""
231
 
232
+ #: woocommerce-ac.php:2038
233
  #, php-format
234
  msgid "Guest %s"
235
  msgstr ""
236
 
237
+ #: woocommerce-ac.php:2044
238
  msgid "Carts without Customer Details"
239
  msgstr ""
240
 
241
+ #: woocommerce-ac.php:2065
242
  msgid ""
243
  "Add email templates at different intervals to maximize the possibility of "
244
  "recovering your abandoned carts."
245
  msgstr ""
246
 
247
+ #: woocommerce-ac.php:2183
248
+ msgid ""
249
+ "The Email Template has been successfully added. In order to start sending "
250
+ "this email to your customers, please activate it."
251
  msgstr ""
252
 
253
+ #: woocommerce-ac.php:2192
254
  msgid ""
255
  "There was a problem adding the email template. Please contact the plugin "
256
  "author via <a href= \"https://wordpress.org/support/plugin/woocommerce-"
257
  "abandoned-cart\">support forum</a>."
258
  msgstr ""
259
 
260
+ #: woocommerce-ac.php:2203
261
  msgid "The Email Template has been successfully updated."
262
  msgstr ""
263
 
264
+ #: woocommerce-ac.php:2212
265
  msgid ""
266
  "There was a problem updating the email template. Please contact the plugin "
267
  "author via <a href= \"https://wordpress.org/support/plugin/woocommerce-"
268
  "abandoned-cart\">support forum</a>."
269
  msgstr ""
270
 
271
+ #: woocommerce-ac.php:2221
272
  msgid "Add New Template"
273
  msgstr ""
274
 
275
+ #: woocommerce-ac.php:2298
276
  msgid ""
277
  "The Report below shows how many Abandoned Carts we were able to recover for "
278
  "you by sending automatic emails to encourage shoppers."
279
  msgstr ""
280
 
281
+ #: woocommerce-ac.php:2347
282
  msgid "Start Date:"
283
  msgstr ""
284
 
285
+ #: woocommerce-ac.php:2349
286
  msgid "End Date:"
287
  msgstr ""
288
 
289
+ #: woocommerce-ac.php:2351
290
  msgid "Go"
291
  msgstr ""
292
 
293
+ #: woocommerce-ac.php:2365
294
+ #, php-format
295
+ msgid ""
296
+ "During the selected range <strong>%d</strong> carts totaling <strong>%s</"
297
+ "strong> were abandoned. We were able to recover <strong>%d</strong> of them, "
298
+ "which led to an extra <strong>%s</strong>"
 
 
 
 
 
 
 
 
299
  msgstr ""
300
 
301
+ #: woocommerce-ac.php:2384
302
  #, php-format
303
  msgid "Abandoned Order #%s Details"
304
  msgstr ""
305
 
306
+ #: woocommerce-ac.php:2388 woocommerce-ac.php:3074 woocommerce-ac.php:3109
307
+ #: cron/wcal_send_email.php:277 cron/wcal_send_email.php:287
308
  msgid "Item"
309
  msgstr ""
310
 
311
+ #: woocommerce-ac.php:2389 woocommerce-ac.php:3075 woocommerce-ac.php:3110
312
+ #: cron/wcal_send_email.php:278 cron/wcal_send_email.php:288
313
  msgid "Name"
314
  msgstr ""
315
 
316
+ #: woocommerce-ac.php:2390 woocommerce-ac.php:3076 woocommerce-ac.php:3111
317
+ #: cron/wcal_send_email.php:279 cron/wcal_send_email.php:289
318
  msgid "Quantity"
319
  msgstr ""
320
 
321
+ #: woocommerce-ac.php:2391 woocommerce-ac.php:3078 woocommerce-ac.php:3113
322
+ #: cron/wcal_send_email.php:281 cron/wcal_send_email.php:291
323
  msgid "Line Subtotal"
324
  msgstr ""
325
 
326
+ #: woocommerce-ac.php:2392
327
  msgid "Line Total"
328
  msgstr ""
329
 
330
+ #: woocommerce-ac.php:2580
331
  msgid "Customer Details"
332
  msgstr ""
333
 
334
+ #: woocommerce-ac.php:2584
335
  msgid "Billing Details"
336
  msgstr ""
337
 
338
+ #: woocommerce-ac.php:2585
339
  msgid "Name:"
340
  msgstr ""
341
 
342
+ #: woocommerce-ac.php:2588 woocommerce-ac.php:2608
343
  msgid "Address:"
344
  msgstr ""
345
 
346
+ #: woocommerce-ac.php:2598
347
  msgid "Email:"
348
  msgstr ""
349
 
350
+ #: woocommerce-ac.php:2602
351
  msgid "Phone:"
352
  msgstr ""
353
 
354
+ #: woocommerce-ac.php:2607
355
  msgid "Shipping Details"
356
  msgstr ""
357
 
358
+ #: woocommerce-ac.php:2628
359
+ msgid "Shipping Charges"
360
+ msgstr ""
361
+
362
+ #: woocommerce-ac.php:2694
363
  msgid "Template Name:"
364
  msgstr ""
365
 
366
+ #: woocommerce-ac.php:2703
367
  msgid "Enter a template name for reference"
368
  msgstr ""
369
 
370
+ #: woocommerce-ac.php:2709
371
  msgid "Subject:"
372
  msgstr ""
373
 
374
+ #: woocommerce-ac.php:2718
375
  msgid "Enter the subject that should appear in the email sent"
376
  msgstr ""
377
 
378
+ #: woocommerce-ac.php:2724
379
  msgid "Email Body:"
380
  msgstr ""
381
 
382
+ #: woocommerce-ac.php:2751
383
  msgid "Message to be sent in the reminder email."
384
  msgstr ""
385
 
386
+ #: woocommerce-ac.php:2778
387
  msgid "Use WooCommerce Template Style:"
388
  msgstr ""
389
 
390
+ #: woocommerce-ac.php:2793
391
  msgid ""
392
  "Use WooCommerce default style template for abandoned cart reminder emails."
393
  msgstr ""
394
 
395
+ #: woocommerce-ac.php:2800
396
  msgid "Email Template Header Text: "
397
  msgstr ""
398
 
399
+ #: woocommerce-ac.php:2814
400
  msgid ""
401
  "Enter the header which will appear in the abandoned WooCommerce email sent. "
402
  "This is only applicable when only used when \"Use WooCommerce Template Style:"
403
  "\" is checked."
404
  msgstr ""
405
 
406
+ #: woocommerce-ac.php:2820
407
  msgid "Send this email:"
408
  msgstr ""
409
 
410
+ #: woocommerce-ac.php:2861
411
  msgid "after cart is abandoned."
412
  msgstr ""
413
 
414
+ #: woocommerce-ac.php:2868
415
  msgid "Send a test email to:"
416
  msgstr ""
417
 
418
+ #: woocommerce-ac.php:2873
419
  msgid "Enter the email id to which the test email needs to be sent."
420
  msgstr ""
421
 
422
+ #: woocommerce-ac.php:2906
423
  msgid ""
424
  "If you love <strong>Abandoned Cart Lite for WooCommerce</strong>, then "
425
  "please leave us a <a href=\"https://wordpress.org/support/plugin/woocommerce-"
428
  " rating. Thank you in advance. :)"
429
  msgstr ""
430
 
431
+ #: woocommerce-ac.php:3072 woocommerce-ac.php:3106
432
+ #: cron/wcal_send_email.php:275 cron/wcal_send_email.php:284
433
  msgid "Your Shopping Cart"
434
  msgstr ""
435
 
436
+ #: woocommerce-ac.php:3077 woocommerce-ac.php:3112
437
+ #: cron/wcal_send_email.php:280 cron/wcal_send_email.php:290
438
  msgid "Price"
439
  msgstr ""
440
 
441
+ #: woocommerce-ac.php:3082 woocommerce-ac.php:3117
442
  msgid "Men\\'\\s Formal Shoes"
443
  msgstr ""
444
 
445
+ #: woocommerce-ac.php:3089 woocommerce-ac.php:3124
446
  msgid "Woman\\'\\s Hand Bags"
447
  msgstr ""
448
 
449
+ #: woocommerce-ac.php:3098 woocommerce-ac.php:3133
450
+ #: cron/wcal_send_email.php:370
451
  msgid "Cart Total:"
452
  msgstr ""
453
 
454
+ #: cron/wcal_send_email.php:93
455
+ msgid "Abandoned cart reminder"
456
+ msgstr ""
457
+
458
+ #: cron/wcal_send_email.php:553 cron/wcal_send_email.php:620
459
+ #: includes/frontend/wcal_checkout_process.php:198
460
+ #: includes/frontend/wcal_checkout_process.php:486
461
+ msgid "This order was abandoned & subsequently recovered."
462
  msgstr ""
463
 
464
  #: includes/wcal-common.php:567
474
  msgid ""
475
  "<div id=\"wcal_update\" class=\"updated woocommerce-message\" style="
476
  "\"padding:15px;\"><span>We need to update your email template database for "
477
+ "some improvements. Please take a backup of your databases for your piece of "
478
  "mind</span><span class=\"submit\"><a href=\"%s\" class=\"button-primary\" "
479
  "style=\"float:right;\">Update</a></span></div>"
480
  msgstr ""
481
 
482
+ #: includes/wcal_all_component.php:88
483
  msgid ""
484
+ "Now that you are all set with the Lite version, you can upgrade to Pro "
485
+ "version to take your abandoned cart recovery to the next level. You can "
486
+ "capture customer’s email address when they click Add to Cart, get access to "
487
+ "11 unique, fully responsive email templates, send text messages for recovery "
488
+ "& <strong><a target=\"_blank\" href= \""
489
  msgstr ""
490
 
491
+ #: includes/wcal_all_component.php:91
492
+ #, php-format
493
  msgid ""
494
+ "Boost your sales by recovering up to 60% of the abandoned carts with our "
495
+ "Abandoned Cart Pro for WooCommerce plugin. You can capture customer email "
496
+ "addresses right when they click the Add To Cart button. <strong><a target="
497
+ "\"_blank\" href= \""
498
  msgstr ""
499
 
500
+ #: includes/wcal_all_component.php:94
501
  msgid ""
502
+ "Don't loose your sales to abandoned carts. Use our Abandon Cart Pro plugin & "
503
+ "start recovering your lost sales in less then 60 seconds. <strong><a target="
504
+ "\"_blank\" href= \""
505
  msgstr ""
506
 
507
+ #: includes/wcal_all_component.php:97
508
  msgid ""
509
+ "Send Abandoned Cart reminders that actually convert. Take advantage of our "
510
+ "fully responsive email templates designed specially with an intent to "
511
+ "trigger conversion. <strong><a target=\"_blank\" href= \""
512
  msgstr ""
513
 
514
+ #: includes/wcal_all_component.php:100
515
  msgid ""
516
+ "Increase your store sales by recovering your abandoned carts for just $119. "
517
+ "No profit sharing, no monthly fees. Our Abandoned Cart Pro plugin comes with "
518
+ "a 30 day money back guarantee as well. :) Use coupon code ACPRO20 & save $24!"
519
+ "<br>\n"
520
+ " <strong><a target=\"_blank\" href= \""
521
  msgstr ""
522
 
523
+ #: includes/wcal_all_component.php:104
524
  msgid ""
525
  "Reduce cart abandonment rate by 57% with our Order Delivery Date Pro "
526
  "WooCommerce plugin. You can Create Delivery Settings by Shipping Zones & "
529
  "20 customers. <strong><a target=\"_blank\" href= \""
530
  msgstr ""
531
 
532
+ #: includes/wcal_all_component.php:107
533
  msgid ""
534
  "Allow your customers to select the Delivery Date on Single Product Page "
535
  "using our Product Delivery Date pro for WooCommerce Plugin. <br> \n"
536
  " <strong><a target=\"_blank\" href= \""
537
  msgstr ""
538
 
539
+ #: includes/wcal_all_component.php:111
540
  #, php-format
541
  msgid ""
542
  " Allow your customers to book an appointment or rent an apartment with our "
546
  "customers. <strong><a target=\"_blank\" href= \""
547
  msgstr ""
548
 
549
+ #: includes/wcal_all_component.php:114
550
  msgid ""
551
  " Allow your customers to pay deposits on products using our Deposits for "
552
+ "WooCommerce plugin. <br>\n"
553
  " <strong><a target=\"_blank\" href= \""
554
  msgstr ""
555
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
556
  #: includes/admin/wcal_privacy_erase.php:41
557
  #: includes/admin/wcal_privacy_export.php:41
558
  msgid "Abandoned & Recovered Carts"
666
  msgstr ""
667
 
668
  #: includes/classes/class-wcal-abandoned-orders-table.php:151
669
+ #: includes/classes/class-wcal-abandoned-orders-table.php:544
670
  #: includes/classes/class-wcal-templates-table.php:145
671
  #: includes/classes/class-wcal-templates-table.php:330
672
  msgid "Delete"
688
  msgid "Unsubscribed"
689
  msgstr ""
690
 
 
 
 
 
 
 
 
 
691
  #: includes/classes/class-wcal-product-report-table.php:58
692
  msgid "product_id"
693
  msgstr ""
823
  msgid "Other"
824
  msgstr ""
825
 
826
+ #: includes/component/faq-support/ts-faq-support.php:126
827
  #, php-format
828
  msgid "Frequently Asked Questions for %s"
829
  msgstr ""
830
 
831
+ #: includes/component/faq-support/ts-faq-support.php:127
832
  msgid "Frequently Asked Questions for "
833
  msgstr ""
834
 
835
+ #: includes/component/faq-support/ts-faq-support.php:175
836
  msgid "FAQ & Support"
837
  msgstr ""
838
 
839
+ #: includes/component/tracking-data/ts-tracking.php:133
840
  msgid "Reset usage tracking"
841
  msgstr ""
842
 
843
+ #: includes/component/tracking-data/ts-tracking.php:177
844
  msgid "Once in a Week"
845
  msgstr ""
846
 
847
+ #: includes/component/tracking-data/ts-tracking.php:268
848
  msgid "Want to help make "
849
  msgstr ""
850
 
851
+ #: includes/component/tracking-data/ts-tracking.php:270
852
+ msgid "Allow"
853
+ msgstr ""
854
+
855
+ #: includes/component/tracking-data/ts-tracking.php:271
856
+ msgid "No thanks"
857
+ msgstr ""
858
+
859
  #: includes/component/welcome-page/ts-welcome.php:165
860
  #, php-format
861
  msgid "Welcome to %s %s"
865
  msgid "Welcome to "
866
  msgstr ""
867
 
868
+ #: includes/component/welcome-page/templates/social-media-elements.php:10
869
+ #, php-format
870
+ msgid "Follow %s"
871
+ msgstr ""
872
+
873
  #: includes/component/welcome-page/templates/welcome/welcome-page.php:18
874
  msgid "Thank you for activating or updating to the latest version of "
875
  msgstr ""
876
 
877
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:30
878
+ msgid "Get Started with Abandoned Cart Lite"
879
+ msgstr ""
880
+
881
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:34
882
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:59
883
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:86
884
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:93
885
+ msgid "WooCommerce Abandoned Cart Lite"
886
+ msgstr ""
887
+
888
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:38
889
+ msgid "Activate Email Template"
890
+ msgstr ""
891
+
892
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:40
893
+ msgid ""
894
+ "To start sending out abandoned cart notification emails, simply activate the "
895
+ "email template from under WooCommerce -> Abandoned Carts -> Email Templates "
896
+ "page."
897
+ msgstr ""
898
+
899
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:42
900
+ msgid "Click Here to go to Email Templates page"
901
+ msgstr ""
902
+
903
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:52
904
+ msgid "Know more about Abandoned Cart Pro"
905
+ msgstr ""
906
+
907
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:54
908
+ msgid ""
909
+ "The Abandoned Cart Pro plugin gives you features where you are able to "
910
+ "recover more sales compared to the Lite plugin. Here are some notable "
911
+ "features the Pro version provides."
912
+ msgstr ""
913
+
914
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:63
915
+ msgid "Capture Visitor Emails on click of Add to Cart button"
916
+ msgstr ""
917
+
918
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:65
919
+ msgid ""
920
+ "The ability to capture the email address early in the order process is very "
921
+ "important to reduce cart abandonment by unknown users as well as to be able "
922
+ "to recover their carts if they abandon it. This ultimately leads to increase "
923
+ "in your store sales."
924
+ msgstr ""
925
+
926
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:67
927
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:80
928
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:101
929
+ msgid "Learn More"
930
+ msgstr ""
931
+
932
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:76
933
+ msgid "Set different cut-off times for visitors & logged-in users"
934
+ msgstr ""
935
+
936
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:78
937
+ msgid ""
938
+ "The provision for setting two separate cut-off times for different roles is "
939
+ "mainly because sometimes if the store admin wants the visitor carts to be "
940
+ "captured earlier than the registered user carts, then these different "
941
+ "settings can play an important role."
942
+ msgstr ""
943
+
944
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:97
945
+ msgid "Send abandoned cart recovery email in minutes of cart being abandoned"
946
+ msgstr ""
947
+
948
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:99
949
+ msgid ""
950
+ "The ability to send the abandoned cart recovery email within first few "
951
+ "minutes of cart being abandoned is a big advantage. In the Lite plugin, the "
952
+ "earliest an email can be sent is after 1 hour. Whereas in the Pro version, "
953
+ "the first recovery email gets sent 15 minutes after the cart is abandoned. "
954
+ "This increases the recovery chances manifold."
955
+ msgstr ""
956
+
957
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:110
958
+ msgid "Getting to Know Tyche Softwares"
959
+ msgstr ""
960
+
961
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:112
962
+ msgid "Visit the Tyche Softwares Website"
963
+ msgstr ""
964
+
965
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:113
966
+ msgid "View all Premium Plugins"
967
+ msgstr ""
968
+
969
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:122
970
+ msgid "Meet the team"
971
+ msgstr ""
972
+
973
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:128
974
+ msgid "Current Offers"
975
+ msgstr ""
976
+
977
+ #: includes/component/woocommerce-check/ts-woo-active.php:82
978
  msgid " plugin requires WooCommerce installed and activate."
979
  msgstr ""
980
+
981
+ #: includes/frontend/wcal_checkout_process.php:293
982
+ #: includes/frontend/wcal_checkout_process.php:295
983
+ msgid "New Customer Order - Recovered"
984
+ msgstr ""
i18n/languages/woocommerce-abandoned-cart.pot CHANGED
@@ -8,7 +8,7 @@ msgid ""
8
  msgstr ""
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2018-07-20 16:10+0530\n"
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,74 +17,69 @@ msgstr ""
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
  "Content-Transfer-Encoding: 8bit\n"
19
 
20
- #: woocommerce-ac.php:55
21
  msgid "Once Every Fifteen Minutes"
22
  msgstr ""
23
 
24
- #: woocommerce-ac.php:315
 
 
 
 
25
  msgid "Emails are not being sent to customers."
26
  msgstr ""
27
 
28
- #: woocommerce-ac.php:321
29
  msgid "Capturing of cart and other information was not satisfactory."
30
  msgstr ""
31
 
32
- #: woocommerce-ac.php:327
33
  msgid "I cannot see abandoned cart reminder emails records."
34
  msgstr ""
35
 
36
- #: woocommerce-ac.php:333
37
  msgid "I want to upgrade the plugin to the PRO version."
38
  msgstr ""
39
 
40
- #: woocommerce-ac.php:590 woocommerce-ac.php:2046 cron/wcal_send_email.php:542
41
- #: cron/wcal_send_email.php:609
42
- msgid "This order was abandoned & subsequently recovered."
43
- msgstr ""
44
-
45
- #: woocommerce-ac.php:640
46
  msgid "HTML Email Template"
47
  msgstr ""
48
 
49
- #: woocommerce-ac.php:646
50
  msgid "Abandoned cart Email Template"
51
  msgstr ""
52
 
53
- #: woocommerce-ac.php:843 woocommerce-ac.php:2228
54
- msgid "Settings"
55
- msgstr ""
56
-
57
- #: woocommerce-ac.php:850
58
  msgid "Cart abandoned cut-off time"
59
  msgstr ""
60
 
61
- #: woocommerce-ac.php:854
62
  msgid ""
63
  "Consider cart abandoned after X minutes of item being added to cart & order "
64
  "not placed."
65
  msgstr ""
66
 
67
- #: woocommerce-ac.php:859
68
  msgid "Automatically Delete Abandoned Orders after X days"
69
  msgstr ""
70
 
71
- #: woocommerce-ac.php:863
72
  msgid "Automatically delete abandoned cart orders after X days."
73
  msgstr ""
74
 
75
- #: woocommerce-ac.php:869
76
  msgid "Email admin On Order Recovery"
77
  msgstr ""
78
 
79
- #: woocommerce-ac.php:873
80
  msgid "Sends email to Admin if an Abandoned Cart Order is recovered."
81
  msgstr ""
82
 
83
- #: woocommerce-ac.php:879
84
  msgid "Start tracking from Cart Page"
85
  msgstr ""
86
 
87
- #: woocommerce-ac.php:883
88
  msgid ""
89
  "Enable tracking of abandoned products & carts even if customer does not "
90
  "visit the checkout page or does not enter any details on the checkout page "
@@ -92,11 +87,11 @@ msgid ""
92
  "to their cart and visits the cart page."
93
  msgstr ""
94
 
95
- #: woocommerce-ac.php:888
96
  msgid "Message to be displayed for Guest users when tracking their carts"
97
  msgstr ""
98
 
99
- #: woocommerce-ac.php:892
100
  msgid ""
101
  "<br>In compliance with GDPR, add a message on the Checkout page to inform "
102
  "Guest users of how their data is being used.<br><i>For example: Your email "
@@ -104,305 +99,326 @@ msgid ""
104
  "Please check our Privacy Policy to see how we use your personal data.</i>"
105
  msgstr ""
106
 
107
- #: woocommerce-ac.php:897
108
  msgid "Message to be displayed for registered users when tracking their carts."
109
  msgstr ""
110
 
111
- #: woocommerce-ac.php:901
112
  msgid ""
113
  "<br>In compliance with GDPR, add a message on the Shop & Product pages to "
114
  "inform Registered users of how their data is being used.<br><i>For example: "
115
  "Please check our Privacy Policy to see how we use your personal data.</i>"
116
  msgstr ""
117
 
118
- #: woocommerce-ac.php:911
119
  msgid "Settings for abandoned cart recovery emails"
120
  msgstr ""
121
 
122
- #: woocommerce-ac.php:918
123
  msgid "\"From\" Name"
124
  msgstr ""
125
 
126
- #: woocommerce-ac.php:927
127
  msgid "\"From\" Address"
128
  msgstr ""
129
 
130
- #: woocommerce-ac.php:936
131
  msgid "Send Reply Emails to"
132
  msgstr ""
133
 
134
- #: woocommerce-ac.php:1030
135
  msgid ""
136
  "Abandoned cart cut off time should be numeric and has to be greater than 0."
137
  msgstr ""
138
 
139
- #: woocommerce-ac.php:1046
140
  msgid ""
141
  "Automatically Delete Abandoned Orders after X days has to be greater than 0."
142
  msgstr ""
143
 
144
- #: woocommerce-ac.php:1400 woocommerce-ac.php:1402 woocommerce-ac.php:1455
145
- #: woocommerce-ac.php:1457
146
- msgid "New Customer Order - Recovered"
147
- msgstr ""
148
-
149
- #: woocommerce-ac.php:1504 includes/admin/wcal_privacy_export.php:123
150
  msgid "Abandoned Carts"
151
  msgstr ""
152
 
153
- #: woocommerce-ac.php:2226
154
  msgid "Abandoned Orders"
155
  msgstr ""
156
 
157
- #: woocommerce-ac.php:2227
158
  msgid "Email Templates"
159
  msgstr ""
160
 
161
- #: woocommerce-ac.php:2229
162
  msgid "Recovered Orders"
163
  msgstr ""
164
 
165
- #: woocommerce-ac.php:2230
166
  msgid "Product Report"
167
  msgstr ""
168
 
169
- #: woocommerce-ac.php:2356
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  msgid "You do not have sufficient permissions to access this page."
171
  msgstr ""
172
 
173
- #: woocommerce-ac.php:2360
174
  msgid "WooCommerce - Abandon Cart Lite"
175
  msgstr ""
176
 
177
- #: woocommerce-ac.php:2420
178
  msgid "The Abandoned cart has been successfully deleted."
179
  msgstr ""
180
 
181
- #: woocommerce-ac.php:2425
182
  msgid "The Template has been successfully deleted."
183
  msgstr ""
184
 
185
- #: woocommerce-ac.php:2431
186
  msgid ""
187
  "Change settings for sending email notifications to Customers, to Admin etc."
188
  msgstr ""
189
 
190
- #: woocommerce-ac.php:2450
191
  msgid "General Settings"
192
  msgstr ""
193
 
194
- #: woocommerce-ac.php:2453
195
  msgid "Email Sending Settings"
196
  msgstr ""
197
 
198
- #: woocommerce-ac.php:2483
199
  msgid ""
200
  "The list below shows all Abandoned Carts which have remained in cart for a "
201
  "time higher than the \"Cart abandoned cut-off time\" setting."
202
  msgstr ""
203
 
204
- #: woocommerce-ac.php:2525
205
  msgid "All "
206
  msgstr ""
207
 
208
- #: woocommerce-ac.php:2530
209
  #, php-format
210
  msgid "Registered %s"
211
  msgstr ""
212
 
213
- #: woocommerce-ac.php:2536
214
  #, php-format
215
  msgid "Guest %s"
216
  msgstr ""
217
 
218
- #: woocommerce-ac.php:2542
219
  msgid "Carts without Customer Details"
220
  msgstr ""
221
 
222
- #: woocommerce-ac.php:2563
223
  msgid ""
224
  "Add email templates at different intervals to maximize the possibility of "
225
  "recovering your abandoned carts."
226
  msgstr ""
227
 
228
- #: woocommerce-ac.php:2681
229
- msgid "The Email Template has been successfully added."
 
 
230
  msgstr ""
231
 
232
- #: woocommerce-ac.php:2690
233
  msgid ""
234
  "There was a problem adding the email template. Please contact the plugin "
235
  "author via <a href= \"https://wordpress.org/support/plugin/woocommerce-"
236
  "abandoned-cart\">support forum</a>."
237
  msgstr ""
238
 
239
- #: woocommerce-ac.php:2701
240
  msgid "The Email Template has been successfully updated."
241
  msgstr ""
242
 
243
- #: woocommerce-ac.php:2710
244
  msgid ""
245
  "There was a problem updating the email template. Please contact the plugin "
246
  "author via <a href= \"https://wordpress.org/support/plugin/woocommerce-"
247
  "abandoned-cart\">support forum</a>."
248
  msgstr ""
249
 
250
- #: woocommerce-ac.php:2719
251
  msgid "Add New Template"
252
  msgstr ""
253
 
254
- #: woocommerce-ac.php:2796
255
  msgid ""
256
  "The Report below shows how many Abandoned Carts we were able to recover for "
257
  "you by sending automatic emails to encourage shoppers."
258
  msgstr ""
259
 
260
- #: woocommerce-ac.php:2845
261
  msgid "Start Date:"
262
  msgstr ""
263
 
264
- #: woocommerce-ac.php:2847
265
  msgid "End Date:"
266
  msgstr ""
267
 
268
- #: woocommerce-ac.php:2849
269
  msgid "Go"
270
  msgstr ""
271
 
272
- #: woocommerce-ac.php:2855
273
- msgid "During the selected range "
274
- msgstr ""
275
-
276
- #: woocommerce-ac.php:2860
277
- msgid "carts totaling"
278
- msgstr ""
279
-
280
- #: woocommerce-ac.php:2866
281
- msgid " were abandoned. We were able to recover"
282
- msgstr ""
283
-
284
- #: woocommerce-ac.php:2873
285
- msgid " of them, which led to an extra"
286
  msgstr ""
287
 
288
- #: woocommerce-ac.php:2896
289
  #, php-format
290
  msgid "Abandoned Order #%s Details"
291
  msgstr ""
292
 
293
- #: woocommerce-ac.php:2900 woocommerce-ac.php:3581 woocommerce-ac.php:3616
294
- #: cron/wcal_send_email.php:269 cron/wcal_send_email.php:279
295
  msgid "Item"
296
  msgstr ""
297
 
298
- #: woocommerce-ac.php:2901 woocommerce-ac.php:3582 woocommerce-ac.php:3617
299
- #: cron/wcal_send_email.php:270 cron/wcal_send_email.php:280
300
  msgid "Name"
301
  msgstr ""
302
 
303
- #: woocommerce-ac.php:2902 woocommerce-ac.php:3583 woocommerce-ac.php:3618
304
- #: cron/wcal_send_email.php:271 cron/wcal_send_email.php:281
305
  msgid "Quantity"
306
  msgstr ""
307
 
308
- #: woocommerce-ac.php:2903 woocommerce-ac.php:3585 woocommerce-ac.php:3620
309
- #: cron/wcal_send_email.php:273 cron/wcal_send_email.php:283
310
  msgid "Line Subtotal"
311
  msgstr ""
312
 
313
- #: woocommerce-ac.php:2904
314
  msgid "Line Total"
315
  msgstr ""
316
 
317
- #: woocommerce-ac.php:3089
318
  msgid "Customer Details"
319
  msgstr ""
320
 
321
- #: woocommerce-ac.php:3093
322
  msgid "Billing Details"
323
  msgstr ""
324
 
325
- #: woocommerce-ac.php:3094
326
  msgid "Name:"
327
  msgstr ""
328
 
329
- #: woocommerce-ac.php:3097 woocommerce-ac.php:3117
330
  msgid "Address:"
331
  msgstr ""
332
 
333
- #: woocommerce-ac.php:3107
334
  msgid "Email:"
335
  msgstr ""
336
 
337
- #: woocommerce-ac.php:3111
338
  msgid "Phone:"
339
  msgstr ""
340
 
341
- #: woocommerce-ac.php:3116
342
  msgid "Shipping Details"
343
  msgstr ""
344
 
345
- #: woocommerce-ac.php:3204
 
 
 
 
346
  msgid "Template Name:"
347
  msgstr ""
348
 
349
- #: woocommerce-ac.php:3213
350
  msgid "Enter a template name for reference"
351
  msgstr ""
352
 
353
- #: woocommerce-ac.php:3219
354
  msgid "Subject:"
355
  msgstr ""
356
 
357
- #: woocommerce-ac.php:3228
358
  msgid "Enter the subject that should appear in the email sent"
359
  msgstr ""
360
 
361
- #: woocommerce-ac.php:3234
362
  msgid "Email Body:"
363
  msgstr ""
364
 
365
- #: woocommerce-ac.php:3261
366
  msgid "Message to be sent in the reminder email."
367
  msgstr ""
368
 
369
- #: woocommerce-ac.php:3288
370
  msgid "Use WooCommerce Template Style:"
371
  msgstr ""
372
 
373
- #: woocommerce-ac.php:3303
374
  msgid ""
375
  "Use WooCommerce default style template for abandoned cart reminder emails."
376
  msgstr ""
377
 
378
- #: woocommerce-ac.php:3310
379
  msgid "Email Template Header Text: "
380
  msgstr ""
381
 
382
- #: woocommerce-ac.php:3324
383
  msgid ""
384
  "Enter the header which will appear in the abandoned WooCommerce email sent. "
385
  "This is only applicable when only used when \"Use WooCommerce Template Style:"
386
  "\" is checked."
387
  msgstr ""
388
 
389
- #: woocommerce-ac.php:3330
390
  msgid "Send this email:"
391
  msgstr ""
392
 
393
- #: woocommerce-ac.php:3371
394
  msgid "after cart is abandoned."
395
  msgstr ""
396
 
397
- #: woocommerce-ac.php:3378
398
  msgid "Send a test email to:"
399
  msgstr ""
400
 
401
- #: woocommerce-ac.php:3383
402
  msgid "Enter the email id to which the test email needs to be sent."
403
  msgstr ""
404
 
405
- #: woocommerce-ac.php:3416
406
  msgid ""
407
  "If you love <strong>Abandoned Cart Lite for WooCommerce</strong>, then "
408
  "please leave us a <a href=\"https://wordpress.org/support/plugin/woocommerce-"
@@ -411,31 +427,37 @@ msgid ""
411
  " rating. Thank you in advance. :)"
412
  msgstr ""
413
 
414
- #: woocommerce-ac.php:3579 woocommerce-ac.php:3613
415
- #: cron/wcal_send_email.php:267 cron/wcal_send_email.php:276
416
  msgid "Your Shopping Cart"
417
  msgstr ""
418
 
419
- #: woocommerce-ac.php:3584 woocommerce-ac.php:3619
420
- #: cron/wcal_send_email.php:272 cron/wcal_send_email.php:282
421
  msgid "Price"
422
  msgstr ""
423
 
424
- #: woocommerce-ac.php:3589 woocommerce-ac.php:3624
425
  msgid "Men\\'\\s Formal Shoes"
426
  msgstr ""
427
 
428
- #: woocommerce-ac.php:3596 woocommerce-ac.php:3631
429
  msgid "Woman\\'\\s Hand Bags"
430
  msgstr ""
431
 
432
- #: woocommerce-ac.php:3605 woocommerce-ac.php:3640
433
- #: cron/wcal_send_email.php:359
434
  msgid "Cart Total:"
435
  msgstr ""
436
 
437
- #: cron/wcal_send_email.php:86
438
- msgid "You Left Something in Your Cart!"
 
 
 
 
 
 
439
  msgstr ""
440
 
441
  #: includes/wcal-common.php:567
@@ -451,46 +473,53 @@ msgstr ""
451
  msgid ""
452
  "<div id=\"wcal_update\" class=\"updated woocommerce-message\" style="
453
  "\"padding:15px;\"><span>We need to update your email template database for "
454
- "some improvements. Please take a backup of your databases for your peice of "
455
  "mind</span><span class=\"submit\"><a href=\"%s\" class=\"button-primary\" "
456
  "style=\"float:right;\">Update</a></span></div>"
457
  msgstr ""
458
 
459
- #: includes/wcal_all_component.php:86
460
  msgid ""
461
- "Thank you for using Abandoned Cart Lite for WooCommerce! You can use the Pro "
462
- "version for recovering more sales with some additional features. <strong><a "
463
- "target=\"_blank\" href= \""
 
 
464
  msgstr ""
465
 
466
- #: includes/wcal_all_component.php:89
 
467
  msgid ""
468
- "Get an extra benefit of analysis of your Abandoned Cart data with some "
469
- "statistical view present on Dashboard. <strong><a target=\"_blank\" href= \""
 
 
470
  msgstr ""
471
 
472
- #: includes/wcal_all_component.php:92
473
  msgid ""
474
- "Abandoned Cart Pro plugin allows you to recover more revenue by offering "
475
- "discount coupons in the abandoned cart email notifications. <strong><a "
476
- "target=\"_blank\" href= \""
477
  msgstr ""
478
 
479
- #: includes/wcal_all_component.php:95
480
  msgid ""
481
- "Capture guest customer emails while adding a product to cart with our Add to "
482
- "cart modal pop-up feature present in Abandoned Cart Pro for WooCommerce. "
483
- "<strong><a target=\"_blank\" href= \""
484
  msgstr ""
485
 
486
- #: includes/wcal_all_component.php:99
487
  msgid ""
488
- "Using Abandoned Cart Pro plugin, you can add more merge tags, one-click Cart "
489
- "& Checkout page button, send customised abandoned cart reminder email to "
490
- "specific customers & <strong><a target=\"_blank\" href= \""
 
 
491
  msgstr ""
492
 
493
- #: includes/wcal_all_component.php:102
494
  msgid ""
495
  "Reduce cart abandonment rate by 57% with our Order Delivery Date Pro "
496
  "WooCommerce plugin. You can Create Delivery Settings by Shipping Zones & "
@@ -499,14 +528,14 @@ msgid ""
499
  "20 customers. <strong><a target=\"_blank\" href= \""
500
  msgstr ""
501
 
502
- #: includes/wcal_all_component.php:105
503
  msgid ""
504
  "Allow your customers to select the Delivery Date on Single Product Page "
505
  "using our Product Delivery Date pro for WooCommerce Plugin. <br> \n"
506
  " <strong><a target=\"_blank\" href= \""
507
  msgstr ""
508
 
509
- #: includes/wcal_all_component.php:109
510
  #, php-format
511
  msgid ""
512
  " Allow your customers to book an appointment or rent an apartment with our "
@@ -516,193 +545,13 @@ msgid ""
516
  "customers. <strong><a target=\"_blank\" href= \""
517
  msgstr ""
518
 
519
- #: includes/wcal_all_component.php:112
520
  msgid ""
521
  " Allow your customers to pay deposits on products using our Deposits for "
522
- "WooCommerce plguin. <br>\n"
523
  " <strong><a target=\"_blank\" href= \""
524
  msgstr ""
525
 
526
- #: includes/wcal_ts_tracking.php:76
527
- #, php-format
528
- msgid ""
529
- "Want to help make Abandoned Cart even more awesome? Allow Abandoned Cart to "
530
- "collect non-sensitive diagnostic data and usage information and get 20% off "
531
- "on your next purchase. <a href=\"https://www.tychesoftwares.com/abandoned-"
532
- "cart-lite-usage-tracking/\" target=\"_blank\">Find out more</a>. <br><br>"
533
- msgstr ""
534
-
535
- #: includes/wcal_ts_tracking.php:78
536
- #: includes/component/tracking data/ts-tracking.php:263
537
- msgid "Allow"
538
- msgstr ""
539
-
540
- #: includes/wcal_ts_tracking.php:79
541
- #: includes/component/tracking data/ts-tracking.php:264
542
- msgid "No thanks"
543
- msgstr ""
544
-
545
- #: includes/welcome.php:49
546
- #, php-format
547
- msgid "Welcome to Abandoned Cart Lite %s"
548
- msgstr ""
549
-
550
- #: includes/welcome.php:50
551
- msgid "Welcome to Abandoned Cart Lite"
552
- msgstr ""
553
-
554
- #: includes/welcome.php:88
555
- msgid ""
556
- "Thank you for activating or updating to the latest version of Abandoned Cart "
557
- "Lite! If you're a first time user, welcome! You're well on your way to start "
558
- "recovering your lost revenues."
559
- msgstr ""
560
-
561
- #: includes/welcome.php:98
562
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:30
563
- msgid "Get Started with Abandoned Cart Lite"
564
- msgstr ""
565
-
566
- #: includes/welcome.php:102 includes/welcome.php:127 includes/welcome.php:154
567
- #: includes/welcome.php:161 includes/welcome.php:188
568
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:34
569
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:59
570
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:86
571
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:93
572
- msgid "WooCommerce Abandoned Cart Lite"
573
- msgstr ""
574
-
575
- #: includes/welcome.php:106
576
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:38
577
- msgid "Activate Email Template"
578
- msgstr ""
579
-
580
- #: includes/welcome.php:108
581
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:40
582
- msgid ""
583
- "To start sending out abandoned cart notification emails, simply activate the "
584
- "email template from under WooCommerce -> Abandoned Carts -> Email Templates "
585
- "page."
586
- msgstr ""
587
-
588
- #: includes/welcome.php:110
589
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:42
590
- msgid "Click Here to go to Email Templates page"
591
- msgstr ""
592
-
593
- #: includes/welcome.php:120
594
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:52
595
- msgid "Know more about Abandoned Cart Pro"
596
- msgstr ""
597
-
598
- #: includes/welcome.php:122
599
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:54
600
- msgid ""
601
- "The Abandoned Cart Pro plugin gives you features where you are able to "
602
- "recover more sales compared to the Lite plugin. Here are some notable "
603
- "features the Pro version provides."
604
- msgstr ""
605
-
606
- #: includes/welcome.php:131
607
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:63
608
- msgid "Capture Visitor Emails on click of Add to Cart button"
609
- msgstr ""
610
-
611
- #: includes/welcome.php:133
612
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:65
613
- msgid ""
614
- "The ability to capture the email address early in the order process is very "
615
- "important to reduce cart abandonment by unknown users as well as to be able "
616
- "to recover their carts if they abandon it. This ultimately leads to increase "
617
- "in your store sales."
618
- msgstr ""
619
-
620
- #: includes/welcome.php:135 includes/welcome.php:148 includes/welcome.php:169
621
- #: includes/welcome.php:182
622
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:67
623
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:80
624
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:101
625
- msgid "Learn More"
626
- msgstr ""
627
-
628
- #: includes/welcome.php:144
629
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:76
630
- msgid "Set different cut-off times for visitors & logged-in users"
631
- msgstr ""
632
-
633
- #: includes/welcome.php:146
634
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:78
635
- msgid ""
636
- "The provision for setting two separate cut-off times for different roles is "
637
- "mainly because sometimes if the store admin wants the visitor carts to be "
638
- "captured earlier than the registered user carts, then these different "
639
- "settings can play an important role."
640
- msgstr ""
641
-
642
- #: includes/welcome.php:165
643
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:97
644
- msgid "Send abandoned cart recovery email in minutes of cart being abandoned"
645
- msgstr ""
646
-
647
- #: includes/welcome.php:167
648
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:99
649
- msgid ""
650
- "The ability to send the abandoned cart recovery email within first few "
651
- "minutes of cart being abandoned is a big advantage. In the Lite plugin, the "
652
- "earliest an email can be sent is after 1 hour. Whereas in the Pro version, "
653
- "the first recovery email gets sent 15 minutes after the cart is abandoned. "
654
- "This increases the recovery chances manifold."
655
- msgstr ""
656
-
657
- #: includes/welcome.php:178
658
- msgid ""
659
- "Full range of merge tags that allow you to personalize the abandoned cart "
660
- "email"
661
- msgstr ""
662
-
663
- #: includes/welcome.php:180
664
- msgid ""
665
- "The Lite version has only 3 merge tags available to personalize the "
666
- "abandoned cart recovery emails. The Pro version instead, has 20 different "
667
- "merge tags that can be used effectively to personalize each email that gets "
668
- "sent out to the customers for recovering their abandoned carts."
669
- msgstr ""
670
-
671
- #: includes/welcome.php:193
672
- msgid "View full list of differences between Lite & Pro plugin"
673
- msgstr ""
674
-
675
- #: includes/welcome.php:202
676
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:110
677
- msgid "Getting to Know Tyche Softwares"
678
- msgstr ""
679
-
680
- #: includes/welcome.php:205
681
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:112
682
- msgid "Visit the Tyche Softwares Website"
683
- msgstr ""
684
-
685
- #: includes/welcome.php:206
686
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:113
687
- msgid "View all Premium Plugins"
688
- msgstr ""
689
-
690
- #: includes/welcome.php:215
691
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:122
692
- msgid "Meet the team"
693
- msgstr ""
694
-
695
- #: includes/welcome.php:223
696
- #: includes/component/welcome-page/templates/welcome/welcome-page.php:128
697
- msgid "Current Offers"
698
- msgstr ""
699
-
700
- #: includes/welcome.php:271
701
- #: includes/component/welcome-page/templates/social-media-elements.php:10
702
- #, php-format
703
- msgid "Follow %s"
704
- msgstr ""
705
-
706
  #: includes/admin/wcal_privacy_erase.php:41
707
  #: includes/admin/wcal_privacy_export.php:41
708
  msgid "Abandoned & Recovered Carts"
@@ -816,7 +665,7 @@ msgid "View order"
816
  msgstr ""
817
 
818
  #: includes/classes/class-wcal-abandoned-orders-table.php:151
819
- #: includes/classes/class-wcal-abandoned-orders-table.php:546
820
  #: includes/classes/class-wcal-templates-table.php:145
821
  #: includes/classes/class-wcal-templates-table.php:330
822
  msgid "Delete"
@@ -838,14 +687,6 @@ msgstr ""
838
  msgid "Unsubscribed"
839
  msgstr ""
840
 
841
- #: includes/classes/class-wcal-abandoned-orders-table.php:367
842
- msgid "Abandoned but new"
843
- msgstr ""
844
-
845
- #: includes/classes/class-wcal-abandoned-orders-table.php:367
846
- msgid "cart created after this"
847
- msgstr ""
848
-
849
  #: includes/classes/class-wcal-product-report-table.php:58
850
  msgid "product_id"
851
  msgstr ""
@@ -981,31 +822,39 @@ msgctxt ""
981
  msgid "Other"
982
  msgstr ""
983
 
984
- #: includes/component/faq_support/ts-faq-support.php:126
985
  #, php-format
986
  msgid "Frequently Asked Questions for %s"
987
  msgstr ""
988
 
989
- #: includes/component/faq_support/ts-faq-support.php:127
990
  msgid "Frequently Asked Questions for "
991
  msgstr ""
992
 
993
- #: includes/component/faq_support/ts-faq-support.php:175
994
  msgid "FAQ & Support"
995
  msgstr ""
996
 
997
- #: includes/component/tracking data/ts-tracking.php:133
998
  msgid "Reset usage tracking"
999
  msgstr ""
1000
 
1001
- #: includes/component/tracking data/ts-tracking.php:177
1002
  msgid "Once in a Week"
1003
  msgstr ""
1004
 
1005
- #: includes/component/tracking data/ts-tracking.php:261
1006
  msgid "Want to help make "
1007
  msgstr ""
1008
 
 
 
 
 
 
 
 
 
1009
  #: includes/component/welcome-page/ts-welcome.php:165
1010
  #, php-format
1011
  msgid "Welcome to %s %s"
@@ -1015,10 +864,120 @@ msgstr ""
1015
  msgid "Welcome to "
1016
  msgstr ""
1017
 
 
 
 
 
 
1018
  #: includes/component/welcome-page/templates/welcome/welcome-page.php:18
1019
  msgid "Thank you for activating or updating to the latest version of "
1020
  msgstr ""
1021
 
1022
- #: includes/component/woocommerce-check/ts-woo-active.php:77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1023
  msgid " plugin requires WooCommerce installed and activate."
1024
  msgstr ""
 
 
 
 
 
8
  msgstr ""
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
  "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2019-03-25 19:02+0530\n"
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
  "Content-Transfer-Encoding: 8bit\n"
19
 
20
+ #: woocommerce-ac.php:47
21
  msgid "Once Every Fifteen Minutes"
22
  msgstr ""
23
 
24
+ #: woocommerce-ac.php:218 woocommerce-ac.php:499 woocommerce-ac.php:1692
25
+ msgid "Settings"
26
+ msgstr ""
27
+
28
+ #: woocommerce-ac.php:245
29
  msgid "Emails are not being sent to customers."
30
  msgstr ""
31
 
32
+ #: woocommerce-ac.php:251
33
  msgid "Capturing of cart and other information was not satisfactory."
34
  msgstr ""
35
 
36
+ #: woocommerce-ac.php:257
37
  msgid "I cannot see abandoned cart reminder emails records."
38
  msgstr ""
39
 
40
+ #: woocommerce-ac.php:263
41
  msgid "I want to upgrade the plugin to the PRO version."
42
  msgstr ""
43
 
44
+ #: woocommerce-ac.php:293
 
 
 
 
 
45
  msgid "HTML Email Template"
46
  msgstr ""
47
 
48
+ #: woocommerce-ac.php:299
49
  msgid "Abandoned cart Email Template"
50
  msgstr ""
51
 
52
+ #: woocommerce-ac.php:506
 
 
 
 
53
  msgid "Cart abandoned cut-off time"
54
  msgstr ""
55
 
56
+ #: woocommerce-ac.php:510
57
  msgid ""
58
  "Consider cart abandoned after X minutes of item being added to cart & order "
59
  "not placed."
60
  msgstr ""
61
 
62
+ #: woocommerce-ac.php:515
63
  msgid "Automatically Delete Abandoned Orders after X days"
64
  msgstr ""
65
 
66
+ #: woocommerce-ac.php:519
67
  msgid "Automatically delete abandoned cart orders after X days."
68
  msgstr ""
69
 
70
+ #: woocommerce-ac.php:525
71
  msgid "Email admin On Order Recovery"
72
  msgstr ""
73
 
74
+ #: woocommerce-ac.php:529
75
  msgid "Sends email to Admin if an Abandoned Cart Order is recovered."
76
  msgstr ""
77
 
78
+ #: woocommerce-ac.php:535
79
  msgid "Start tracking from Cart Page"
80
  msgstr ""
81
 
82
+ #: woocommerce-ac.php:539
83
  msgid ""
84
  "Enable tracking of abandoned products & carts even if customer does not "
85
  "visit the checkout page or does not enter any details on the checkout page "
87
  "to their cart and visits the cart page."
88
  msgstr ""
89
 
90
+ #: woocommerce-ac.php:544
91
  msgid "Message to be displayed for Guest users when tracking their carts"
92
  msgstr ""
93
 
94
+ #: woocommerce-ac.php:548
95
  msgid ""
96
  "<br>In compliance with GDPR, add a message on the Checkout page to inform "
97
  "Guest users of how their data is being used.<br><i>For example: Your email "
99
  "Please check our Privacy Policy to see how we use your personal data.</i>"
100
  msgstr ""
101
 
102
+ #: woocommerce-ac.php:553
103
  msgid "Message to be displayed for registered users when tracking their carts."
104
  msgstr ""
105
 
106
+ #: woocommerce-ac.php:557
107
  msgid ""
108
  "<br>In compliance with GDPR, add a message on the Shop & Product pages to "
109
  "inform Registered users of how their data is being used.<br><i>For example: "
110
  "Please check our Privacy Policy to see how we use your personal data.</i>"
111
  msgstr ""
112
 
113
+ #: woocommerce-ac.php:567
114
  msgid "Settings for abandoned cart recovery emails"
115
  msgstr ""
116
 
117
+ #: woocommerce-ac.php:574
118
  msgid "\"From\" Name"
119
  msgstr ""
120
 
121
+ #: woocommerce-ac.php:583
122
  msgid "\"From\" Address"
123
  msgstr ""
124
 
125
+ #: woocommerce-ac.php:592
126
  msgid "Send Reply Emails to"
127
  msgstr ""
128
 
129
+ #: woocommerce-ac.php:686
130
  msgid ""
131
  "Abandoned cart cut off time should be numeric and has to be greater than 0."
132
  msgstr ""
133
 
134
+ #: woocommerce-ac.php:702
135
  msgid ""
136
  "Automatically Delete Abandoned Orders after X days has to be greater than 0."
137
  msgstr ""
138
 
139
+ #: woocommerce-ac.php:1083 includes/admin/wcal_privacy_export.php:123
 
 
 
 
 
140
  msgid "Abandoned Carts"
141
  msgstr ""
142
 
143
+ #: woocommerce-ac.php:1690
144
  msgid "Abandoned Orders"
145
  msgstr ""
146
 
147
+ #: woocommerce-ac.php:1691
148
  msgid "Email Templates"
149
  msgstr ""
150
 
151
+ #: woocommerce-ac.php:1693
152
  msgid "Recovered Orders"
153
  msgstr ""
154
 
155
+ #: woocommerce-ac.php:1694
156
  msgid "Product Report"
157
  msgstr ""
158
 
159
+ #: woocommerce-ac.php:1740
160
+ #, php-format
161
+ msgid "Please enter in decimal (%s) format without thousand separators."
162
+ msgstr ""
163
+
164
+ #: woocommerce-ac.php:1742
165
+ #, php-format
166
+ msgid ""
167
+ "Please enter in monetary decimal (%s) format without thousand separators and "
168
+ "currency symbols."
169
+ msgstr ""
170
+
171
+ #: woocommerce-ac.php:1743
172
+ msgid "Please enter in country code with two capital letters."
173
+ msgstr ""
174
+
175
+ #: woocommerce-ac.php:1744
176
+ msgid "Please enter in a value less than the regular price."
177
+ msgstr ""
178
+
179
+ #: woocommerce-ac.php:1748
180
+ msgid "Import"
181
+ msgstr ""
182
+
183
+ #: woocommerce-ac.php:1749
184
+ msgid "Export"
185
+ msgstr ""
186
+
187
+ #: woocommerce-ac.php:1859
188
  msgid "You do not have sufficient permissions to access this page."
189
  msgstr ""
190
 
191
+ #: woocommerce-ac.php:1863
192
  msgid "WooCommerce - Abandon Cart Lite"
193
  msgstr ""
194
 
195
+ #: woocommerce-ac.php:1923
196
  msgid "The Abandoned cart has been successfully deleted."
197
  msgstr ""
198
 
199
+ #: woocommerce-ac.php:1928
200
  msgid "The Template has been successfully deleted."
201
  msgstr ""
202
 
203
+ #: woocommerce-ac.php:1934
204
  msgid ""
205
  "Change settings for sending email notifications to Customers, to Admin etc."
206
  msgstr ""
207
 
208
+ #: woocommerce-ac.php:1952
209
  msgid "General Settings"
210
  msgstr ""
211
 
212
+ #: woocommerce-ac.php:1955
213
  msgid "Email Sending Settings"
214
  msgstr ""
215
 
216
+ #: woocommerce-ac.php:1985
217
  msgid ""
218
  "The list below shows all Abandoned Carts which have remained in cart for a "
219
  "time higher than the \"Cart abandoned cut-off time\" setting."
220
  msgstr ""
221
 
222
+ #: woocommerce-ac.php:2027
223
  msgid "All "
224
  msgstr ""
225
 
226
+ #: woocommerce-ac.php:2032
227
  #, php-format
228
  msgid "Registered %s"
229
  msgstr ""
230
 
231
+ #: woocommerce-ac.php:2038
232
  #, php-format
233
  msgid "Guest %s"
234
  msgstr ""
235
 
236
+ #: woocommerce-ac.php:2044
237
  msgid "Carts without Customer Details"
238
  msgstr ""
239
 
240
+ #: woocommerce-ac.php:2065
241
  msgid ""
242
  "Add email templates at different intervals to maximize the possibility of "
243
  "recovering your abandoned carts."
244
  msgstr ""
245
 
246
+ #: woocommerce-ac.php:2183
247
+ msgid ""
248
+ "The Email Template has been successfully added. In order to start sending "
249
+ "this email to your customers, please activate it."
250
  msgstr ""
251
 
252
+ #: woocommerce-ac.php:2192
253
  msgid ""
254
  "There was a problem adding the email template. Please contact the plugin "
255
  "author via <a href= \"https://wordpress.org/support/plugin/woocommerce-"
256
  "abandoned-cart\">support forum</a>."
257
  msgstr ""
258
 
259
+ #: woocommerce-ac.php:2203
260
  msgid "The Email Template has been successfully updated."
261
  msgstr ""
262
 
263
+ #: woocommerce-ac.php:2212
264
  msgid ""
265
  "There was a problem updating the email template. Please contact the plugin "
266
  "author via <a href= \"https://wordpress.org/support/plugin/woocommerce-"
267
  "abandoned-cart\">support forum</a>."
268
  msgstr ""
269
 
270
+ #: woocommerce-ac.php:2221
271
  msgid "Add New Template"
272
  msgstr ""
273
 
274
+ #: woocommerce-ac.php:2298
275
  msgid ""
276
  "The Report below shows how many Abandoned Carts we were able to recover for "
277
  "you by sending automatic emails to encourage shoppers."
278
  msgstr ""
279
 
280
+ #: woocommerce-ac.php:2347
281
  msgid "Start Date:"
282
  msgstr ""
283
 
284
+ #: woocommerce-ac.php:2349
285
  msgid "End Date:"
286
  msgstr ""
287
 
288
+ #: woocommerce-ac.php:2351
289
  msgid "Go"
290
  msgstr ""
291
 
292
+ #: woocommerce-ac.php:2365
293
+ #, php-format
294
+ msgid ""
295
+ "During the selected range <strong>%d</strong> carts totaling <strong>%s</"
296
+ "strong> were abandoned. We were able to recover <strong>%d</strong> of them, "
297
+ "which led to an extra <strong>%s</strong>"
 
 
 
 
 
 
 
 
298
  msgstr ""
299
 
300
+ #: woocommerce-ac.php:2384
301
  #, php-format
302
  msgid "Abandoned Order #%s Details"
303
  msgstr ""
304
 
305
+ #: woocommerce-ac.php:2388 woocommerce-ac.php:3074 woocommerce-ac.php:3109
306
+ #: cron/wcal_send_email.php:277 cron/wcal_send_email.php:287
307
  msgid "Item"
308
  msgstr ""
309
 
310
+ #: woocommerce-ac.php:2389 woocommerce-ac.php:3075 woocommerce-ac.php:3110
311
+ #: cron/wcal_send_email.php:278 cron/wcal_send_email.php:288
312
  msgid "Name"
313
  msgstr ""
314
 
315
+ #: woocommerce-ac.php:2390 woocommerce-ac.php:3076 woocommerce-ac.php:3111
316
+ #: cron/wcal_send_email.php:279 cron/wcal_send_email.php:289
317
  msgid "Quantity"
318
  msgstr ""
319
 
320
+ #: woocommerce-ac.php:2391 woocommerce-ac.php:3078 woocommerce-ac.php:3113
321
+ #: cron/wcal_send_email.php:281 cron/wcal_send_email.php:291
322
  msgid "Line Subtotal"
323
  msgstr ""
324
 
325
+ #: woocommerce-ac.php:2392
326
  msgid "Line Total"
327
  msgstr ""
328
 
329
+ #: woocommerce-ac.php:2580
330
  msgid "Customer Details"
331
  msgstr ""
332
 
333
+ #: woocommerce-ac.php:2584
334
  msgid "Billing Details"
335
  msgstr ""
336
 
337
+ #: woocommerce-ac.php:2585
338
  msgid "Name:"
339
  msgstr ""
340
 
341
+ #: woocommerce-ac.php:2588 woocommerce-ac.php:2608
342
  msgid "Address:"
343
  msgstr ""
344
 
345
+ #: woocommerce-ac.php:2598
346
  msgid "Email:"
347
  msgstr ""
348
 
349
+ #: woocommerce-ac.php:2602
350
  msgid "Phone:"
351
  msgstr ""
352
 
353
+ #: woocommerce-ac.php:2607
354
  msgid "Shipping Details"
355
  msgstr ""
356
 
357
+ #: woocommerce-ac.php:2628
358
+ msgid "Shipping Charges"
359
+ msgstr ""
360
+
361
+ #: woocommerce-ac.php:2694
362
  msgid "Template Name:"
363
  msgstr ""
364
 
365
+ #: woocommerce-ac.php:2703
366
  msgid "Enter a template name for reference"
367
  msgstr ""
368
 
369
+ #: woocommerce-ac.php:2709
370
  msgid "Subject:"
371
  msgstr ""
372
 
373
+ #: woocommerce-ac.php:2718
374
  msgid "Enter the subject that should appear in the email sent"
375
  msgstr ""
376
 
377
+ #: woocommerce-ac.php:2724
378
  msgid "Email Body:"
379
  msgstr ""
380
 
381
+ #: woocommerce-ac.php:2751
382
  msgid "Message to be sent in the reminder email."
383
  msgstr ""
384
 
385
+ #: woocommerce-ac.php:2778
386
  msgid "Use WooCommerce Template Style:"
387
  msgstr ""
388
 
389
+ #: woocommerce-ac.php:2793
390
  msgid ""
391
  "Use WooCommerce default style template for abandoned cart reminder emails."
392
  msgstr ""
393
 
394
+ #: woocommerce-ac.php:2800
395
  msgid "Email Template Header Text: "
396
  msgstr ""
397
 
398
+ #: woocommerce-ac.php:2814
399
  msgid ""
400
  "Enter the header which will appear in the abandoned WooCommerce email sent. "
401
  "This is only applicable when only used when \"Use WooCommerce Template Style:"
402
  "\" is checked."
403
  msgstr ""
404
 
405
+ #: woocommerce-ac.php:2820
406
  msgid "Send this email:"
407
  msgstr ""
408
 
409
+ #: woocommerce-ac.php:2861
410
  msgid "after cart is abandoned."
411
  msgstr ""
412
 
413
+ #: woocommerce-ac.php:2868
414
  msgid "Send a test email to:"
415
  msgstr ""
416
 
417
+ #: woocommerce-ac.php:2873
418
  msgid "Enter the email id to which the test email needs to be sent."
419
  msgstr ""
420
 
421
+ #: woocommerce-ac.php:2906
422
  msgid ""
423
  "If you love <strong>Abandoned Cart Lite for WooCommerce</strong>, then "
424
  "please leave us a <a href=\"https://wordpress.org/support/plugin/woocommerce-"
427
  " rating. Thank you in advance. :)"
428
  msgstr ""
429
 
430
+ #: woocommerce-ac.php:3072 woocommerce-ac.php:3106
431
+ #: cron/wcal_send_email.php:275 cron/wcal_send_email.php:284
432
  msgid "Your Shopping Cart"
433
  msgstr ""
434
 
435
+ #: woocommerce-ac.php:3077 woocommerce-ac.php:3112
436
+ #: cron/wcal_send_email.php:280 cron/wcal_send_email.php:290
437
  msgid "Price"
438
  msgstr ""
439
 
440
+ #: woocommerce-ac.php:3082 woocommerce-ac.php:3117
441
  msgid "Men\\'\\s Formal Shoes"
442
  msgstr ""
443
 
444
+ #: woocommerce-ac.php:3089 woocommerce-ac.php:3124
445
  msgid "Woman\\'\\s Hand Bags"
446
  msgstr ""
447
 
448
+ #: woocommerce-ac.php:3098 woocommerce-ac.php:3133
449
+ #: cron/wcal_send_email.php:370
450
  msgid "Cart Total:"
451
  msgstr ""
452
 
453
+ #: cron/wcal_send_email.php:93
454
+ msgid "Abandoned cart reminder"
455
+ msgstr ""
456
+
457
+ #: cron/wcal_send_email.php:553 cron/wcal_send_email.php:620
458
+ #: includes/frontend/wcal_checkout_process.php:198
459
+ #: includes/frontend/wcal_checkout_process.php:486
460
+ msgid "This order was abandoned & subsequently recovered."
461
  msgstr ""
462
 
463
  #: includes/wcal-common.php:567
473
  msgid ""
474
  "<div id=\"wcal_update\" class=\"updated woocommerce-message\" style="
475
  "\"padding:15px;\"><span>We need to update your email template database for "
476
+ "some improvements. Please take a backup of your databases for your piece of "
477
  "mind</span><span class=\"submit\"><a href=\"%s\" class=\"button-primary\" "
478
  "style=\"float:right;\">Update</a></span></div>"
479
  msgstr ""
480
 
481
+ #: includes/wcal_all_component.php:88
482
  msgid ""
483
+ "Now that you are all set with the Lite version, you can upgrade to Pro "
484
+ "version to take your abandoned cart recovery to the next level. You can "
485
+ "capture customer’s email address when they click Add to Cart, get access to "
486
+ "11 unique, fully responsive email templates, send text messages for recovery "
487
+ "& <strong><a target=\"_blank\" href= \""
488
  msgstr ""
489
 
490
+ #: includes/wcal_all_component.php:91
491
+ #, php-format
492
  msgid ""
493
+ "Boost your sales by recovering up to 60% of the abandoned carts with our "
494
+ "Abandoned Cart Pro for WooCommerce plugin. You can capture customer email "
495
+ "addresses right when they click the Add To Cart button. <strong><a target="
496
+ "\"_blank\" href= \""
497
  msgstr ""
498
 
499
+ #: includes/wcal_all_component.php:94
500
  msgid ""
501
+ "Don't loose your sales to abandoned carts. Use our Abandon Cart Pro plugin & "
502
+ "start recovering your lost sales in less then 60 seconds. <strong><a target="
503
+ "\"_blank\" href= \""
504
  msgstr ""
505
 
506
+ #: includes/wcal_all_component.php:97
507
  msgid ""
508
+ "Send Abandoned Cart reminders that actually convert. Take advantage of our "
509
+ "fully responsive email templates designed specially with an intent to "
510
+ "trigger conversion. <strong><a target=\"_blank\" href= \""
511
  msgstr ""
512
 
513
+ #: includes/wcal_all_component.php:100
514
  msgid ""
515
+ "Increase your store sales by recovering your abandoned carts for just $119. "
516
+ "No profit sharing, no monthly fees. Our Abandoned Cart Pro plugin comes with "
517
+ "a 30 day money back guarantee as well. :) Use coupon code ACPRO20 & save $24!"
518
+ "<br>\n"
519
+ " <strong><a target=\"_blank\" href= \""
520
  msgstr ""
521
 
522
+ #: includes/wcal_all_component.php:104
523
  msgid ""
524
  "Reduce cart abandonment rate by 57% with our Order Delivery Date Pro "
525
  "WooCommerce plugin. You can Create Delivery Settings by Shipping Zones & "
528
  "20 customers. <strong><a target=\"_blank\" href= \""
529
  msgstr ""
530
 
531
+ #: includes/wcal_all_component.php:107
532
  msgid ""
533
  "Allow your customers to select the Delivery Date on Single Product Page "
534
  "using our Product Delivery Date pro for WooCommerce Plugin. <br> \n"
535
  " <strong><a target=\"_blank\" href= \""
536
  msgstr ""
537
 
538
+ #: includes/wcal_all_component.php:111
539
  #, php-format
540
  msgid ""
541
  " Allow your customers to book an appointment or rent an apartment with our "
545
  "customers. <strong><a target=\"_blank\" href= \""
546
  msgstr ""
547
 
548
+ #: includes/wcal_all_component.php:114
549
  msgid ""
550
  " Allow your customers to pay deposits on products using our Deposits for "
551
+ "WooCommerce plugin. <br>\n"
552
  " <strong><a target=\"_blank\" href= \""
553
  msgstr ""
554
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
555
  #: includes/admin/wcal_privacy_erase.php:41
556
  #: includes/admin/wcal_privacy_export.php:41
557
  msgid "Abandoned & Recovered Carts"
665
  msgstr ""
666
 
667
  #: includes/classes/class-wcal-abandoned-orders-table.php:151
668
+ #: includes/classes/class-wcal-abandoned-orders-table.php:544
669
  #: includes/classes/class-wcal-templates-table.php:145
670
  #: includes/classes/class-wcal-templates-table.php:330
671
  msgid "Delete"
687
  msgid "Unsubscribed"
688
  msgstr ""
689
 
 
 
 
 
 
 
 
 
690
  #: includes/classes/class-wcal-product-report-table.php:58
691
  msgid "product_id"
692
  msgstr ""
822
  msgid "Other"
823
  msgstr ""
824
 
825
+ #: includes/component/faq-support/ts-faq-support.php:126
826
  #, php-format
827
  msgid "Frequently Asked Questions for %s"
828
  msgstr ""
829
 
830
+ #: includes/component/faq-support/ts-faq-support.php:127
831
  msgid "Frequently Asked Questions for "
832
  msgstr ""
833
 
834
+ #: includes/component/faq-support/ts-faq-support.php:175
835
  msgid "FAQ & Support"
836
  msgstr ""
837
 
838
+ #: includes/component/tracking-data/ts-tracking.php:133
839
  msgid "Reset usage tracking"
840
  msgstr ""
841
 
842
+ #: includes/component/tracking-data/ts-tracking.php:177
843
  msgid "Once in a Week"
844
  msgstr ""
845
 
846
+ #: includes/component/tracking-data/ts-tracking.php:268
847
  msgid "Want to help make "
848
  msgstr ""
849
 
850
+ #: includes/component/tracking-data/ts-tracking.php:270
851
+ msgid "Allow"
852
+ msgstr ""
853
+
854
+ #: includes/component/tracking-data/ts-tracking.php:271
855
+ msgid "No thanks"
856
+ msgstr ""
857
+
858
  #: includes/component/welcome-page/ts-welcome.php:165
859
  #, php-format
860
  msgid "Welcome to %s %s"
864
  msgid "Welcome to "
865
  msgstr ""
866
 
867
+ #: includes/component/welcome-page/templates/social-media-elements.php:10
868
+ #, php-format
869
+ msgid "Follow %s"
870
+ msgstr ""
871
+
872
  #: includes/component/welcome-page/templates/welcome/welcome-page.php:18
873
  msgid "Thank you for activating or updating to the latest version of "
874
  msgstr ""
875
 
876
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:30
877
+ msgid "Get Started with Abandoned Cart Lite"
878
+ msgstr ""
879
+
880
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:34
881
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:59
882
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:86
883
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:93
884
+ msgid "WooCommerce Abandoned Cart Lite"
885
+ msgstr ""
886
+
887
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:38
888
+ msgid "Activate Email Template"
889
+ msgstr ""
890
+
891
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:40
892
+ msgid ""
893
+ "To start sending out abandoned cart notification emails, simply activate the "
894
+ "email template from under WooCommerce -> Abandoned Carts -> Email Templates "
895
+ "page."
896
+ msgstr ""
897
+
898
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:42
899
+ msgid "Click Here to go to Email Templates page"
900
+ msgstr ""
901
+
902
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:52
903
+ msgid "Know more about Abandoned Cart Pro"
904
+ msgstr ""
905
+
906
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:54
907
+ msgid ""
908
+ "The Abandoned Cart Pro plugin gives you features where you are able to "
909
+ "recover more sales compared to the Lite plugin. Here are some notable "
910
+ "features the Pro version provides."
911
+ msgstr ""
912
+
913
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:63
914
+ msgid "Capture Visitor Emails on click of Add to Cart button"
915
+ msgstr ""
916
+
917
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:65
918
+ msgid ""
919
+ "The ability to capture the email address early in the order process is very "
920
+ "important to reduce cart abandonment by unknown users as well as to be able "
921
+ "to recover their carts if they abandon it. This ultimately leads to increase "
922
+ "in your store sales."
923
+ msgstr ""
924
+
925
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:67
926
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:80
927
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:101
928
+ msgid "Learn More"
929
+ msgstr ""
930
+
931
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:76
932
+ msgid "Set different cut-off times for visitors & logged-in users"
933
+ msgstr ""
934
+
935
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:78
936
+ msgid ""
937
+ "The provision for setting two separate cut-off times for different roles is "
938
+ "mainly because sometimes if the store admin wants the visitor carts to be "
939
+ "captured earlier than the registered user carts, then these different "
940
+ "settings can play an important role."
941
+ msgstr ""
942
+
943
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:97
944
+ msgid "Send abandoned cart recovery email in minutes of cart being abandoned"
945
+ msgstr ""
946
+
947
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:99
948
+ msgid ""
949
+ "The ability to send the abandoned cart recovery email within first few "
950
+ "minutes of cart being abandoned is a big advantage. In the Lite plugin, the "
951
+ "earliest an email can be sent is after 1 hour. Whereas in the Pro version, "
952
+ "the first recovery email gets sent 15 minutes after the cart is abandoned. "
953
+ "This increases the recovery chances manifold."
954
+ msgstr ""
955
+
956
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:110
957
+ msgid "Getting to Know Tyche Softwares"
958
+ msgstr ""
959
+
960
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:112
961
+ msgid "Visit the Tyche Softwares Website"
962
+ msgstr ""
963
+
964
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:113
965
+ msgid "View all Premium Plugins"
966
+ msgstr ""
967
+
968
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:122
969
+ msgid "Meet the team"
970
+ msgstr ""
971
+
972
+ #: includes/component/welcome-page/templates/welcome/welcome-page.php:128
973
+ msgid "Current Offers"
974
+ msgstr ""
975
+
976
+ #: includes/component/woocommerce-check/ts-woo-active.php:82
977
  msgid " plugin requires WooCommerce installed and activate."
978
  msgstr ""
979
+
980
+ #: includes/frontend/wcal_checkout_process.php:293
981
+ #: includes/frontend/wcal_checkout_process.php:295
982
+ msgid "New Customer Order - Recovered"
983
+ msgstr ""
includes/classes/class-wcal-recover-orders-table.php CHANGED
@@ -230,7 +230,7 @@ class wcal_Recover_Orders_Table extends WP_List_Table {
230
  $ac_results = $wpdb->get_results( $wpdb->prepare( $query_ac, $start_date, $end_date ) );
231
 
232
  $query_ac_carts = "SELECT * FROM " . $wpdb->prefix . "ac_abandoned_cart_history_lite
233
- WHERE abandoned_cart_time >= %d AND abandoned_cart_time <= %d AND abandoned_cart_time <= '$compare_time' AND abandoned_cart_info NOT LIKE '%$blank_cart_info%' AND abandoned_cart_info NOT LIKE '$blank_cart_info_guest' AND abandoned_cart_info NOT LIKE '$blank_cart' AND (cart_ignored <> '1') OR (cart_ignored = '1' AND recovered_cart > 0)";
234
  $ac_carts_results = $wpdb->get_results( $wpdb->prepare( $query_ac_carts, $start_date, $end_date ) );
235
 
236
  $recovered_item = $recovered_total = $count_carts = $total_value = $order_total = 0;
@@ -257,22 +257,22 @@ class wcal_Recover_Orders_Table extends WP_List_Table {
257
  }
258
  $total_value += $line_total;
259
  }
260
- $total_value = wc_price( $total_value );
261
  $this->total_order_amount = $total_value;
262
- $this->total_abandoned_cart_count = $count_carts;
263
- $recovered_order_total = 0;
264
- $this->total_recover_amount = round( $recovered_order_total, $number_decimal );
265
- $this->recovered_item = 0;
266
  $table_data = "";
267
 
268
- foreach ( $ac_results as $key => $value ) {
269
- if( $value->recovered_cart != 0 ) {
270
  $return_recovered_orders[$i] = new stdClass();
271
  $recovered_id = $value->recovered_cart;
272
  $rec_order = get_post_meta( $recovered_id );
273
  $woo_order = array();
274
  try{
275
- $woo_order = new WC_Order( $recovered_id );
276
  if( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
277
  $order = get_post( $recovered_id );
278
  $recovered_date = strtotime ( $order->post_date );
@@ -321,16 +321,18 @@ class wcal_Recover_Orders_Table extends WP_List_Table {
321
  $return_recovered_orders[ $i ]->recover_order_date = $recovered_date;
322
  $return_recovered_orders[ $i ]->abandoned_date = $value->abandoned_cart_time;
323
  $return_recovered_orders[ $i ]->order_total = wc_price($recovered_order_total);
324
-
325
  $this->recovered_item = $recovered_item;
326
- $this->total_recover_amount = round( ( $recovered_order_total + $this->total_recover_amount ), $number_decimal );
327
  $i++;
328
  }catch (Exception $e){
329
 
330
- }
331
 
332
- }
333
  }
 
 
334
  $templates_count = count( $return_recovered_orders );
335
  $this->total_count = $templates_count;
336
  // sort for order date
230
  $ac_results = $wpdb->get_results( $wpdb->prepare( $query_ac, $start_date, $end_date ) );
231
 
232
  $query_ac_carts = "SELECT * FROM " . $wpdb->prefix . "ac_abandoned_cart_history_lite
233
+ WHERE abandoned_cart_time >= %d AND abandoned_cart_time <= %d AND abandoned_cart_time <= '$compare_time' AND abandoned_cart_info NOT LIKE '%$blank_cart_info%' AND abandoned_cart_info NOT LIKE '$blank_cart_info_guest' AND abandoned_cart_info NOT LIKE '$blank_cart' AND cart_ignored <> '1'";
234
  $ac_carts_results = $wpdb->get_results( $wpdb->prepare( $query_ac_carts, $start_date, $end_date ) );
235
 
236
  $recovered_item = $recovered_total = $count_carts = $total_value = $order_total = 0;
257
  }
258
  $total_value += $line_total;
259
  }
260
+ //$total_value = wc_price( $total_value );
261
  $this->total_order_amount = $total_value;
262
+ $this->total_abandoned_cart_count = $count_carts;
263
+ $recovered_order_total = 0;
264
+ $this->total_recover_amount = round( $recovered_order_total, $number_decimal );
265
+ $this->recovered_item = 0;
266
  $table_data = "";
267
 
268
+ foreach ( $ac_results as $key => $value ) {
269
+ if( $value->recovered_cart != 0 ) {
270
  $return_recovered_orders[$i] = new stdClass();
271
  $recovered_id = $value->recovered_cart;
272
  $rec_order = get_post_meta( $recovered_id );
273
  $woo_order = array();
274
  try{
275
+ $woo_order = wc_get_order( $recovered_id );
276
  if( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
277
  $order = get_post( $recovered_id );
278
  $recovered_date = strtotime ( $order->post_date );
321
  $return_recovered_orders[ $i ]->recover_order_date = $recovered_date;
322
  $return_recovered_orders[ $i ]->abandoned_date = $value->abandoned_cart_time;
323
  $return_recovered_orders[ $i ]->order_total = wc_price($recovered_order_total);
324
+
325
  $this->recovered_item = $recovered_item;
326
+ $this->total_recover_amount = round( ( $recovered_order_total + $this->total_recover_amount ), $number_decimal );
327
  $i++;
328
  }catch (Exception $e){
329
 
330
+ }
331
 
332
+ }
333
  }
334
+ $this->total_order_amount = wc_price( $this->total_order_amount + $this->total_recover_amount );
335
+ $this->total_abandoned_cart_count = $this->total_abandoned_cart_count + $this->recovered_item;
336
  $templates_count = count( $return_recovered_orders );
337
  $this->total_count = $templates_count;
338
  // sort for order date
includes/frontend/wcal_checkout_process.php ADDED
@@ -0,0 +1,593 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Checkout Process for Abandoned Cart Lite
4
+ *
5
+ * @since 5.3.0
6
+ */
7
+
8
+ // Exit if accessed directly
9
+ if ( !defined( 'ABSPATH' ) ) exit;
10
+
11
+ if ( !class_exists( 'Wcal_Checkout_Process' ) ) {
12
+
13
+ /**
14
+ * Process recovered orders
15
+ */
16
+ class Wcal_Checkout_Process {
17
+
18
+ function __construct() {
19
+
20
+ // delete added temp fields after order is placed
21
+ add_filter ( 'woocommerce_order_details_after_order_table', array( &$this, 'wcal_action_after_delivery_session' ) );
22
+
23
+ add_action( 'woocommerce_order_status_changed', array( &$this, 'wcal_update_cart_details' ), 10, 3);
24
+ add_action( 'woocommerce_order_status_changed', array( &$this, 'wcal_send_recovery_email' ), 10, 3);
25
+
26
+ add_action( 'woocommerce_checkout_order_processed', array( &$this, 'wcal_order_placed' ), 10 , 1 );
27
+ add_filter( 'woocommerce_payment_complete_order_status', array( &$this, 'wcal_order_complete_action' ), 10 , 2 );
28
+ }
29
+
30
+ /**
31
+ * When user places the order and reach the order recieved page, then it will check if it is abandoned cart and subsequently
32
+ * recovered or not.
33
+ * @hook woocommerce_order_details_after_order_table
34
+ * @param array | object $order Order details
35
+ * @globals mixed $wpdb
36
+ * @globals mixed $woocommerce
37
+ * @since 1.0
38
+ */
39
+ function wcal_action_after_delivery_session( $order ) {
40
+
41
+ $order_id= $order->get_id();
42
+
43
+ $wcal_get_order_status = $order->get_status();
44
+
45
+ $get_abandoned_id_of_order = get_post_meta( $order_id, 'wcal_recover_order_placed', true );
46
+ $get_sent_email_id_of_order = get_post_meta( $order_id, 'wcal_recover_order_placed_sent_id', true );
47
+
48
+ if ( isset( $get_sent_email_id_of_order ) && '' != $get_sent_email_id_of_order ) {
49
+ /**
50
+ * When Placed order button is clicked,
51
+ * we create post meta for that order.
52
+ * If that meta is found then update our plugin table for recovered cart
53
+ */
54
+ $this->wcal_updated_recovered_cart_table( $get_abandoned_id_of_order, $order_id, $get_sent_email_id_of_order, $order );
55
+ } else if ( '' != $get_abandoned_id_of_order && isset( $get_abandoned_id_of_order ) ){
56
+ /**
57
+ * if order status is not pending or failed then
58
+ * we will delete the abandoned cart record.
59
+ * post meta will be created only if the cut off time has been reached.
60
+ */
61
+ $this->wcal_delete_abanadoned_data_on_order_status( $order_id , $get_abandoned_id_of_order, $wcal_get_order_status );
62
+ }
63
+
64
+ if ( wcal_common::wcal_get_cart_session( 'email_sent_id' ) != '' ) {
65
+ wcal_common::wcal_unset_cart_session( 'email_sent_id' );
66
+ }
67
+ }
68
+
69
+ /**
70
+ * If customer had placed the order after cut off time and reached the order recived page then it will also delete the abandoned cart if the order status is not pending or failed.
71
+ * @param int | string $order_id Order id
72
+ * @param int | string $get_abandoned_id_of_order Abandoned cart id
73
+ * @param string $wcal_get_order_status Order status
74
+ * @globals mixed $wpdb
75
+ * @globals mixed $woocommerce
76
+ * @since 5.0
77
+ */
78
+ function wcal_delete_abanadoned_data_on_order_status( $order_id, $get_abandoned_id_of_order, $wcal_get_order_status ) {
79
+
80
+ global $wpdb, $woocommerce;
81
+
82
+ $wcal_history_table_name = $wpdb->prefix . 'ac_abandoned_cart_history_lite';
83
+ $wcal_guest_table_name = $wpdb->prefix . 'ac_guest_abandoned_cart_history_lite';
84
+ $wcal_sent_email_table_name = $wpdb->prefix . 'ac_sent_history_lite';
85
+
86
+ if ( 'pending' != $wcal_get_order_status || 'failed' != $wcal_get_order_status ) {
87
+ if ( isset( $get_abandoned_id_of_order ) && '' != $get_abandoned_id_of_order ){
88
+
89
+ $user_id_query = "SELECT user_id FROM `$wcal_history_table_name` WHERE id = %d";
90
+ $user_id_results = $wpdb->get_results(
91
+ $wpdb->prepare(
92
+ $user_id_query,
93
+ $get_abandoned_id_of_order
94
+ )
95
+ );
96
+
97
+ if ( count( $user_id_results ) > 0 ){
98
+ $wcal_user_id = $user_id_results[0]->user_id;
99
+
100
+ if ( $wcal_user_id >= 63000000 ){
101
+ $wpdb->delete( $wcal_guest_table_name, array( 'id' => $wcal_user_id ) );
102
+ }
103
+
104
+ $wpdb->delete( $wcal_history_table_name, array( 'id' => $get_abandoned_id_of_order ) );
105
+ delete_post_meta( $order_id, 'wcal_recover_order_placed', $get_abandoned_id_of_order );
106
+ }
107
+ }
108
+ }
109
+ }
110
+
111
+ /**
112
+ * Updates the Abandoned Cart History table as well as the
113
+ * Email Sent History table to indicate the order has been
114
+ * recovered
115
+ *
116
+ * @param integer $cart_id - ID of the Abandoned Cart
117
+ * @param integer $order_id - Recovered Order ID
118
+ * @param integer $wcal_check_email_sent_to_cart - ID of the record in the Email Sent History table.
119
+ * @param WC_Order $order - Order Details
120
+ *
121
+ * @since 7.7
122
+ */
123
+ function wcal_updated_recovered_cart_table( $cart_id, $order_id, $wcal_check_email_sent_to_cart, $order ) {
124
+
125
+ global $wpdb;
126
+
127
+ $wcal_history_table_name = $wpdb->prefix . 'ac_abandoned_cart_history_lite';
128
+ $wcal_guest_table_name = $wpdb->prefix . 'ac_guest_abandoned_cart_history_lite';
129
+ $wcal_sent_email_table_name = $wpdb->prefix . 'ac_sent_history_lite';
130
+
131
+ // check & make sure that the recovered cart details are not already updated
132
+ $query_status = "SELECT recovered_cart FROM `$wcal_history_table_name` WHERE id = %d";
133
+
134
+ $get_status = $wpdb->get_col(
135
+ $wpdb->prepare(
136
+ $query_status,
137
+ $cart_id
138
+ )
139
+ );
140
+
141
+ $recovered_status = isset( $get_status[0] ) ? $get_status[0] : '';
142
+
143
+ if( $recovered_status == 0 ) {
144
+
145
+ // Update the cart history table
146
+ $update_details = array(
147
+ 'recovered_cart' => $order_id,
148
+ 'cart_ignored' => '1',
149
+ );
150
+
151
+ $current_user_id = get_current_user_id();
152
+
153
+ if ( $current_user_id !== wcal_common::wcal_get_cart_session( 'user_id' ) &&
154
+ $current_user_id != 0 ) {
155
+ $update_details['user_id'] = $current_user_id;
156
+ }
157
+
158
+ // check if more than one reminder email has been sent
159
+ $check_emails = "SELECT abandoned_order_id FROM `$wcal_sent_email_table_name` WHERE id = %d";
160
+ $get_old_cart_id = $wpdb->get_col(
161
+ $wpdb->prepare(
162
+ $check_emails,
163
+ $wcal_check_email_sent_to_cart
164
+ )
165
+ );
166
+
167
+ $get_ids = array();
168
+ if( isset( $get_old_cart_id ) ) {
169
+ $query_ids = "SELECT id FROM `$wcal_sent_email_table_name` WHERE abandoned_order_id = %d";
170
+ $get_ids = $wpdb->get_col( $wpdb->prepare( $query_ids, $get_old_cart_id ) );
171
+ }
172
+
173
+ $update_sent_history = array();
174
+
175
+ if ( get_post_meta( $order_id, 'wcal_abandoned_timestamp', true ) != '' ) {
176
+ $update_details['abandoned_cart_time'] = get_post_meta( $order_id, 'wcal_abandoned_timestamp', true );
177
+
178
+ $update_sent_history['abandoned_order_id'] = $cart_id;
179
+
180
+ delete_post_meta( $order_id, 'wcal_abandoned_timestamp', $update_details['abandoned_cart_time'] );
181
+ }
182
+
183
+ $wpdb->update( $wcal_history_table_name, $update_details, array( 'id' => $cart_id ) );
184
+
185
+ // update the email sent history table
186
+ if( is_array( $get_ids ) && count( $get_ids ) > 1 ) {
187
+ $list_ids = implode( ',', $get_ids );
188
+ $wpdb->query( "UPDATE `$wcal_sent_email_table_name` SET abandoned_order_id = $cart_id WHERE id IN ($list_ids)" );
189
+ } else if ( isset( $update_sent_history['abandoned_order_id'] ) ) {
190
+ $wpdb->update(
191
+ $wcal_sent_email_table_name,
192
+ $update_sent_history,
193
+ array( 'id' => $wcal_check_email_sent_to_cart )
194
+ );
195
+ }
196
+
197
+ // Add Order Note
198
+ $order->add_order_note( __( 'This order was abandoned & subsequently recovered.', 'woocommerce-abandoned-cart' ) );
199
+ delete_post_meta( $order_id, 'wcal_abandoned_cart_id' );
200
+ delete_post_meta( $order_id, 'wcal_recover_order_placed' );
201
+ delete_post_meta( $order_id, 'wcal_recover_order_placed_sent_id' );
202
+ delete_post_meta( $order_id, 'wcal_recovered_email_sent' );
203
+ }
204
+ }
205
+
206
+ /**
207
+ * Send email to admin when cart is recovered only via PayPal.
208
+ * @hook woocommerce_order_status_changed
209
+ * @param int | string $order_id Order id
210
+ * @param string $wc_old_status Old status
211
+ * @param string $wc_new_status New status
212
+ * @globals mixed $wpdb
213
+ * @globals mixed $woocommerce
214
+ * @since 2.9
215
+ */
216
+ public function wcal_update_cart_details( $order_id, $wc_old_status, $wc_new_status ) {
217
+
218
+ if( 'pending' != $wc_new_status &&
219
+ 'failed' != $wc_new_status &&
220
+ 'cancelled' != $wc_new_status &&
221
+ 'trash' != $wc_new_status ) {
222
+
223
+ global $wpdb;
224
+
225
+ $wcal_history_table_name = $wpdb->prefix . 'ac_abandoned_cart_history_lite';
226
+ $wcal_guest_table_name = $wpdb->prefix . 'ac_guest_abandoned_cart_history_lite';
227
+ $wcal_sent_email_table_name = $wpdb->prefix . 'ac_sent_history_lite';
228
+
229
+ if( $order_id > 0 ) {
230
+ $get_abandoned_id_of_order = get_post_meta( $order_id, 'wcal_recover_order_placed', true );
231
+
232
+ if( $get_abandoned_id_of_order > 0 || wcal_common::wcal_get_cart_session( 'email_sent_id' ) != '' ) {
233
+ // recovered order
234
+ } else {
235
+
236
+ $wcal_abandoned_id = get_post_meta( $order_id, 'wcal_abandoned_cart_id', true );
237
+
238
+ // check if it's a guest cart
239
+ $query_cart_data = "SELECT user_id, user_type FROM `$wcal_history_table_name` WHERE id = %d";
240
+ $get_cart_data = $wpdb->get_results(
241
+ $wpdb->prepare(
242
+ $query_cart_data,
243
+ $wcal_abandoned_id
244
+ )
245
+ );
246
+
247
+ if( is_array( $get_cart_data ) && count( $get_cart_data ) > 0 ) {
248
+ $user_type = $get_cart_data[0]->user_type;
249
+ $user_id = $get_cart_data[0]->user_id;
250
+
251
+ if( 'GUEST' == $user_type && $user_id >= 63000000 ) {
252
+ $wpdb->delete( $wcal_guest_table_name, array( 'id' => $user_id ) );
253
+ }
254
+ }
255
+ $wpdb->delete( $wcal_history_table_name, array( 'id' => $wcal_abandoned_id ) );
256
+ }
257
+ }
258
+ }elseif ( 'pending' == $wc_old_status && 'cancelled' == $wc_new_status ) {
259
+ global $wpdb;
260
+
261
+ $wcal_history_table_name = $wpdb->prefix . 'ac_abandoned_cart_history_lite';
262
+ $wcal_abandoned_id = get_post_meta( $order_id, 'wcal_abandoned_cart_id', true );
263
+
264
+ $wpdb->update( $wcal_history_table_name, array( 'cart_ignored' => '1' ), array( 'id' => $wcal_abandoned_id ) );
265
+ }
266
+ }
267
+
268
+ /**
269
+ * This function will send the email to the store admin when any abandoned cart email recovered.
270
+ * @hook woocommerce_order_status_changed
271
+ * @param int | string $order_id Order id
272
+ * @param string $wcap_old_status Old status of the order
273
+ * @param string $wcap_new_status New status of the order
274
+ * @globals mixed $woocommerce
275
+ * @since 1.0
276
+ */
277
+ function wcal_send_recovery_email( $order_id, $wcap_old_status, $wcap_new_status ) {
278
+ global $woocommerce;
279
+
280
+ if ( ( 'pending' == $wcap_old_status && 'processing' == $wcap_new_status )
281
+ || ( 'pending' == $wcap_old_status && 'completed' == $wcap_new_status )
282
+ || ( 'pending' == $wcap_old_status && 'on-hold' == $wcap_new_status )
283
+ || ( 'failed' == $wcap_old_status && 'completed' == $wcap_new_status )
284
+ || ( 'failed' == $wcap_old_status && 'processing' == $wcap_new_status )
285
+ ) {
286
+ $user_id = get_current_user_id();
287
+ $ac_email_admin_recovery = get_option( 'ac_lite_email_admin_on_recovery' );
288
+ $order = wc_get_order( $order_id );
289
+ if( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
290
+ $user_id = $order->get_user_id();
291
+ } else {
292
+ $user_id = $order->user_id;
293
+ }
294
+ if( $ac_email_admin_recovery == 'on' ) {
295
+ $recovered_email_sent = get_post_meta( $order_id, 'wcal_recovered_email_sent', true );
296
+ $wcal_check_order_is_recovered = $this->wcal_check_order_is_recovered ( $order_id );
297
+
298
+ if ( 'yes' != $recovered_email_sent && true === $wcal_check_order_is_recovered ) { // indicates cart is abandoned
299
+ $order = wc_get_order( $order_id );
300
+ $email_heading = __( 'New Customer Order - Recovered', 'woocommerce' );
301
+ $blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
302
+ $email_subject = __( 'New Customer Order - Recovered', 'woocommerce' );
303
+ $user_email = get_option( 'admin_email' );
304
+ $headers[] = "From: Admin <".$user_email.">";
305
+ $headers[] = "Content-Type: text/html";
306
+ // Buffer
307
+ ob_start();
308
+ // Get mail template
309
+ wc_get_template(
310
+ 'emails/admin-new-order.php',
311
+ array(
312
+ 'order' => $order,
313
+ 'email_heading' => $email_heading,
314
+ 'sent_to_admin' => false,
315
+ 'plain_text' => false,
316
+ 'email' => true
317
+ )
318
+ );
319
+ // Get contents
320
+ $email_body = ob_get_clean();
321
+ wc_mail( $user_email, $email_subject, $email_body, $headers );
322
+
323
+ update_post_meta( $order_id, 'wcal_recovered_email_sent', 'yes' );
324
+ }
325
+ }
326
+ }
327
+ }
328
+
329
+ /**
330
+ * For sending Recovery Email to Admin, we will check that order is recovered or not.
331
+ * @param int | string $wcal_order_id Order id
332
+ * @return boolean true | false
333
+ * @globals mixed $wpdb
334
+ * @since 2.3
335
+ */
336
+ function wcal_check_order_is_recovered( $wcal_order_id ) {
337
+ global $wpdb;
338
+ $wcal_recover_order_query = "SELECT recovered_cart FROM `" . $wpdb->prefix . "ac_abandoned_cart_history_lite` WHERE recovered_cart = %d";
339
+ $wcal_recover_order_query_result = $wpdb->get_results( $wpdb->prepare( $wcal_recover_order_query, $wcal_order_id ) );
340
+ if ( count( $wcal_recover_order_query_result ) > 0 ) {
341
+ return true;
342
+ }
343
+ return false;
344
+ }
345
+
346
+ /**
347
+ * It will check the WooCommerce order status. If the order status is pending or failed the we will keep that cart record
348
+ * as an abandoned cart.
349
+ * It will be executed after order placed.
350
+ * @hook woocommerce_payment_complete_order_status
351
+ * @param string $order_status Order Status
352
+ * @param int | string $order_id Order Id
353
+ * @return string $order_status
354
+ * @globals mixed $wpdb
355
+ * @since 3.4
356
+ */
357
+ public function wcal_order_complete_action( $woo_order_status, $order_id ) {
358
+
359
+ global $wpdb;
360
+
361
+ $order = wc_get_order( $order_id );
362
+
363
+ $get_abandoned_id_of_order = get_post_meta( $order_id, 'wcal_recover_order_placed', true );
364
+ $get_sent_email_id_of_order = get_post_meta( $order_id, 'wcal_recover_order_placed_sent_id', true );
365
+
366
+ // Order Status passed in the function is either
367
+ // 'processing' or 'complete' and may or may not reflect the actual order status.
368
+ // Hence, always use the status fetched from the order object.
369
+
370
+ $order_status = ( $order ) ? $order->get_status() : '';
371
+
372
+ $wcal_ac_table_name = $wpdb->prefix . "ac_abandoned_cart_history_lite";
373
+ $wcal_email_sent_history_table_name = $wpdb->prefix . "ac_sent_history_lite";
374
+ $wcal_guest_ac_table_name = $wpdb->prefix . "ac_guest_abandoned_cart_history_lite";
375
+
376
+ if ( 'pending' != $order_status && 'failed' != $order_status && 'cancelled' != $order_status && 'trash' != $order_status) {
377
+ global $wpdb;
378
+
379
+ if ( isset( $get_abandoned_id_of_order ) && '' != $get_abandoned_id_of_order ){
380
+
381
+ $ac_user_id_query = "SELECT user_id, abandoned_cart_time FROM `$wcal_ac_table_name` WHERE id = %d";
382
+ $ac_user_id_result = $wpdb->get_results(
383
+ $wpdb->prepare(
384
+ $ac_user_id_query,
385
+ $get_abandoned_id_of_order
386
+ )
387
+ );
388
+
389
+ if ( count( $ac_user_id_result ) > 0 ){
390
+ $wcal_user_id = $ac_user_id_result[0]->user_id;
391
+
392
+ if ( $wcal_user_id >= 63000000 ){
393
+ add_post_meta( $order_id , 'wcal_abandoned_timestamp', $ac_user_id_result[0]->abandoned_cart_time );
394
+
395
+ $wpdb->delete( $wcal_guest_ac_table_name, array( 'id' => $wcal_user_id ) );
396
+ }
397
+
398
+ $wpdb->delete( $wcal_ac_table_name, array( 'id' => $get_abandoned_id_of_order ) );
399
+ delete_post_meta( $order_id, 'wcal_recover_order_placed', $get_abandoned_id_of_order );
400
+ }
401
+ }
402
+ }
403
+
404
+ if( 'pending' != $woo_order_status &&
405
+ 'failed' != $woo_order_status &&
406
+ 'cancelled' != $woo_order_status &&
407
+ 'trash' != $woo_order_status ) {
408
+
409
+ if ( isset( $get_sent_email_id_of_order ) && '' != $get_sent_email_id_of_order ) {
410
+ $this->wcal_updated_recovered_cart( $get_abandoned_id_of_order, $order_id, $get_sent_email_id_of_order, $order );
411
+ }
412
+ }
413
+
414
+ return $woo_order_status;
415
+ }
416
+
417
+ /**
418
+ * Updates the Abandoned Cart History table as well as the
419
+ * Email Sent History table to indicate the order has been
420
+ * recovered
421
+ *
422
+ * @param integer $cart_id - ID of the Abandoned Cart
423
+ * @param integer $order_id - Recovered Order ID
424
+ * @param integer $wcal_check_email_sent_to_cart - ID of the record in the Email Sent History table.
425
+ * @param WC_Order $order - Order Details
426
+ *
427
+ * @since 5.3.0
428
+ */
429
+ function wcal_updated_recovered_cart( $cart_id, $order_id, $wcal_check_email_sent_to_cart, $order ) {
430
+
431
+ global $wpdb;
432
+
433
+ $wcal_ac_table_name = $wpdb->prefix . "ac_abandoned_cart_history_lite";
434
+ $wcal_email_sent_table = $wpdb->prefix . "ac_sent_history_lite";
435
+ $wcal_guest_ac_table = $wpdb->prefix . "ac_guest_abandoned_cart_history_lite";
436
+
437
+ // check & make sure that the recovered cart details are not already updated
438
+ $query_status = "SELECT recovered_cart FROM `$wcal_ac_table_name` WHERE id = %d";
439
+
440
+ $get_status = $wpdb->get_col( $wpdb->prepare( $query_status, $cart_id ) );
441
+
442
+ $recovered_status = isset( $get_status[0] ) ? $get_status[0] : '';
443
+
444
+ if( $recovered_status == 0 ) {
445
+ // Update the cart history table
446
+ $update_details = array(
447
+ 'recovered_cart' => $order_id,
448
+ 'cart_ignored' => '1'
449
+ );
450
+
451
+ $current_user_id = get_current_user_id();
452
+
453
+ if ( $current_user_id !== wcal_common::wcal_get_cart_session( 'user_id' ) &&
454
+ $current_user_id != 0 ) {
455
+ $update_details['user_id'] = $current_user_id;
456
+ }
457
+
458
+ // check if more than one reminder email has been sent
459
+ $check_emails = "SELECT abandoned_order_id FROM `$wcal_email_sent_table` WHERE id = %d";
460
+ $get_old_cart_id = $wpdb->get_col( $wpdb->prepare( $check_emails, $wcal_check_email_sent_to_cart ) );
461
+
462
+ $get_ids = array();
463
+ if( isset( $get_old_cart_id ) ) {
464
+ $query_ids = "SELECT id FROM `$wcal_email_sent_table` WHERE abandoned_order_id = %d";
465
+ $get_ids = $wpdb->get_col( $wpdb->prepare( $query_ids, $get_old_cart_id ) );
466
+ }
467
+
468
+ $update_sent_history = array();
469
+
470
+ if ( get_post_meta( $order_id, 'wcal_abandoned_timestamp', true ) != '' ) {
471
+ $update_details['abandoned_cart_time'] = get_post_meta( $order_id, 'wcal_abandoned_timestamp', true );
472
+
473
+ $update_sent_history['abandoned_order_id'] = $cart_id;
474
+
475
+ delete_post_meta( $order_id, 'wcal_abandoned_timestamp', $update_details['abandoned_cart_time'] );
476
+ }
477
+
478
+ $wpdb->update( $wcal_ac_table_name, $update_details, array( 'id' => $cart_id ) );
479
+
480
+ // update the email sent history table
481
+ if( is_array( $get_ids ) && count( $get_ids ) > 1 ) {
482
+ $list_ids = implode( ',', $get_ids );
483
+ $wpdb->query( "UPDATE `$wcal_email_sent_table` SET abandoned_order_id = $cart_id WHERE id IN ($list_ids)" );
484
+ } else if( isset( $update_sent_history['abandoned_order_id'] ) ) {
485
+ $wpdb->update(
486
+ $wcal_email_sent_table,
487
+ $update_sent_history,
488
+ array( 'id' => $wcal_check_email_sent_to_cart )
489
+ );
490
+ }
491
+
492
+ // Add Order Note
493
+ $order->add_order_note( __( 'This order was abandoned & subsequently recovered.', 'woocommerce-abandoned-cart' ) );
494
+ delete_post_meta( $order_id, 'wcal_abandoned_cart_id' );
495
+ delete_post_meta( $order_id, 'wcal_recover_order_placed' );
496
+ delete_post_meta( $order_id, 'wcal_recover_order_placed_sent_id' );
497
+ delete_post_meta( $order_id, 'wcal_recovered_email_sent' );
498
+ }
499
+ }
500
+
501
+ /**
502
+ * When customer clicks on the "Place Order" button on the checkout page, it will identify if we need to keep that cart or
503
+ * delete it.
504
+ * @hook woocommerce_checkout_order_processed
505
+ * @param int | string $order_id Order id
506
+ * @globals mixed $wpdb
507
+ * @globals mixed $woocommerce
508
+ *
509
+ * @since 3.4
510
+ */
511
+ function wcal_order_placed( $order_id ) {
512
+
513
+ global $wpdb;
514
+ $email_sent_id = wcal_common::wcal_get_cart_session( 'email_sent_id' );
515
+ $abandoned_order_id = wcal_common::wcal_get_cart_session( 'abandoned_cart_id_lite' );
516
+ $wcal_user_id_of_guest = wcal_common::wcal_get_cart_session( 'user_id' );
517
+
518
+ $wcal_history_table_name = $wpdb->prefix . 'ac_abandoned_cart_history_lite';
519
+ $wcal_guest_table_name = $wpdb->prefix . 'ac_guest_abandoned_cart_history_lite';
520
+ $wcal_sent_email_table_name = $wpdb->prefix . 'ac_sent_history_lite';
521
+
522
+ $abandoned_order_id_to_save = $abandoned_order_id;
523
+ if( $email_sent_id != '' && $email_sent_id > 0 ) { // recovered cart
524
+
525
+ if( $abandoned_order_id == '' || $abandoned_order_id == false ) {
526
+
527
+ $get_ac_id_query = "SELECT abandoned_order_id FROM `$wcal_sent_email_table_name` WHERE id = %d";
528
+ $get_ac_id_results = $wpdb->get_results(
529
+ $wpdb->prepare(
530
+ $get_ac_id_query,
531
+ $email_sent_id
532
+ )
533
+ );
534
+
535
+ $abandoned_order_id_to_save = $get_ac_id_results[0]->abandoned_order_id;
536
+ }
537
+
538
+ // if user becomes the registered user
539
+ if ( ( isset( $_POST['account_password'] ) && $_POST['account_password'] != '' ) ||
540
+ ( isset( $_POST['createaccount'] ) && $_POST['createaccount'] != '' ) ||
541
+ ( !isset( $_POST['createaccount'] ) && 'no' == get_option( 'woocommerce_enable_guest_checkout' ) ) ) {
542
+
543
+ if ( $abandoned_order_id != '' && $wcal_user_id_of_guest != '' ) {
544
+ $abandoned_cart_id_new_user = $abandoned_order_id;
545
+
546
+ // delete the guest record. As it become the logged in user
547
+ $get_ac_id_guest_query = "SELECT id, abandoned_cart_time FROM `$wcal_history_table_name` WHERE user_id = %d ORDER BY id DESC";
548
+ $get_ac_id_guest_results = $wpdb->get_results(
549
+ $wpdb->prepare(
550
+ $get_ac_id_guest_query,
551
+ $wcal_user_id_of_guest
552
+ )
553
+ );
554
+
555
+ if( is_array( $get_ac_id_guest_results ) && count( $get_ac_id_guest_results ) > 0 ) {
556
+ $abandoned_order_id_of_guest = $get_ac_id_guest_results[0]->id;
557
+
558
+ add_post_meta( $order_id , 'wcal_abandoned_timestamp', $get_ac_id_guest_results[0]->abandoned_cart_time );
559
+
560
+ $wpdb->delete( $wcal_guest_table_name , array( 'id' => $wcal_user_id_of_guest ) );
561
+ }
562
+ // it is the new registered users cart id
563
+ $abandoned_order_id_to_save = $abandoned_cart_id_new_user;
564
+ }
565
+ }
566
+
567
+ add_post_meta( $order_id , 'wcal_recover_order_placed_sent_id', $email_sent_id );
568
+ add_post_meta( $order_id , 'wcal_recover_order_placed', $abandoned_order_id );
569
+ }else if ( $abandoned_order_id != '' ){
570
+
571
+ if ( ( isset( $_POST['account_password'] ) && $_POST['account_password'] != '' ) ||
572
+ ( isset( $_POST['createaccount'] ) && $_POST['createaccount'] != '' ) ||
573
+ ( !isset( $_POST['createaccount'] ) && 'no' == get_option( 'woocommerce_enable_guest_checkout' ) ) ) {
574
+
575
+ if ( $abandoned_order_id != '' && $wcal_user_id_of_guest != '' ) {
576
+ $abandoned_cart_id_new_user = $abandoned_order_id;
577
+
578
+ // delete the guest record. As it become the logged in user
579
+ $wpdb->delete( $wcal_history_table_name, array( 'user_id' => $wcal_user_id_of_guest ) );
580
+ $wpdb->delete( $wcal_guest_table_name , array( 'id' => $wcal_user_id_of_guest ) );
581
+
582
+ // it is the new registered users cart id
583
+ $abandoned_order_id_to_save = $abandoned_cart_id_new_user;
584
+ }
585
+ }
586
+ }
587
+
588
+ add_post_meta( $order_id, 'wcal_abandoned_cart_id', $abandoned_order_id_to_save );
589
+ }
590
+ }
591
+ }
592
+
593
+ return new Wcal_Checkout_Process();
includes/frontend/wcal_frontend.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Frontend loader for Abandoned Cart Lite
4
+ *
5
+ * @since 5.3.0
6
+ */
7
+
8
+ // Exit if accessed directly
9
+ if ( !defined( 'ABSPATH' ) ) exit;
10
+
11
+ if ( !class_exists( 'Wcal_Frontend' ) ) {
12
+
13
+ /**
14
+ * Frontend loader
15
+ */
16
+ class Wcal_Frontend {
17
+
18
+ function __construct() {
19
+
20
+ $this->include_files();
21
+ }
22
+
23
+ function include_files() {
24
+
25
+ include_once 'wcal_checkout_process.php';
26
+ }
27
+ }
28
+ }
29
+
30
+ return new Wcal_Frontend();
includes/wcal-common.php CHANGED
@@ -682,61 +682,69 @@ class wcal_common {
682
 
683
  $quantity_total = $v->quantity;
684
  $product_id = $v->product_id;
685
- $prod_name = get_post( $product_id );
686
- $product_name = $prod_name->post_title;
687
-
688
- if ( isset( $v->variation_id ) && '' != $v->variation_id ) {
689
- $variation_id = $v->variation_id;
690
- $variation = wc_get_product( $variation_id );
691
-
692
- if( false != $variation ) {
693
- $name = $variation->get_formatted_name() ;
694
- $explode_all = explode ( "&ndash;", $name );
695
- if( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
696
- $wcap_sku = '';
697
- if ( $variation->get_sku() ) {
698
- $wcap_sku = "SKU: " . $variation->get_sku() . "<br>";
 
 
 
 
 
 
 
 
 
 
699
  }
700
- $wcap_get_formatted_variation = wc_get_formatted_variation( $variation, true );
701
-
702
- $add_product_name = $product_name . ' - ' . $wcap_sku . $wcap_get_formatted_variation;
703
-
704
- $pro_name_variation = (array) $add_product_name;
705
- }else{
706
- $pro_name_variation = array_slice( $explode_all, 1, -1 );
707
- }
708
- $product_name_with_variable = '';
709
- $explode_many_varaition = array();
710
- foreach( $pro_name_variation as $pro_name_variation_key => $pro_name_variation_value ) {
711
- $explode_many_varaition = explode ( ",", $pro_name_variation_value );
712
- if( !empty( $explode_many_varaition ) ) {
713
- foreach( $explode_many_varaition as $explode_many_varaition_key => $explode_many_varaition_value ) {
714
  $product_name_with_variable = $product_name_with_variable . html_entity_decode ( $explode_many_varaition_value ) . "<br>";
715
  }
716
- } else {
717
- $product_name_with_variable = $product_name_with_variable . html_entity_decode ( $explode_many_varaition_value ) . "<br>";
718
  }
 
719
  }
720
- $product_name = $product_name_with_variable;
721
  }
722
- }
723
- $item_subtotal = 0;
724
- // Item subtotal is calculated as product total including taxes
725
- if ( $v->line_subtotal_tax != 0 && $v->line_subtotal_tax > 0 ) {
726
- $item_subtotal = $item_subtotal + $v->line_total + $v->line_subtotal_tax;
 
 
 
 
 
 
 
 
 
 
 
 
727
  } else {
728
- $item_subtotal = $item_subtotal + $v->line_total;
729
- }
730
- // Line total
731
- $item_total = $item_subtotal;
732
- $item_subtotal = $item_subtotal / $quantity_total;
733
- $item_total = wc_price( $item_total );
734
- $item_subtotal = wc_price( $item_subtotal );
735
-
736
- $item_details[ 'product_name' ] = $product_name;
737
- $item_details[ 'item_total_formatted' ] = $item_subtotal;
738
- $item_details[ 'item_total' ] = $item_total;
739
- $item_details[ 'qty' ] = $quantity_total;
740
 
741
  return $item_details;
742
  }
@@ -760,6 +768,9 @@ class wcal_common {
760
  * @since 7.11.0
761
  */
762
  public static function wcal_get_cart_session( $session_key ) {
 
 
 
763
  return WC()->session->get( $session_key );
764
  }
765
 
682
 
683
  $quantity_total = $v->quantity;
684
  $product_id = $v->product_id;
685
+ $product = wc_get_product( $product_id );
686
+ if ( $product ) {
687
+ $prod_name = get_post( $product_id );
688
+ $product_name = $prod_name->post_title;
689
+
690
+ if ( isset( $v->variation_id ) && '' != $v->variation_id ) {
691
+ $variation_id = $v->variation_id;
692
+ $variation = wc_get_product( $variation_id );
693
+
694
+ if( false != $variation ) {
695
+ $name = $variation->get_formatted_name() ;
696
+ $explode_all = explode ( "&ndash;", $name );
697
+ if( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
698
+ $wcap_sku = '';
699
+ if ( $variation->get_sku() ) {
700
+ $wcap_sku = "SKU: " . $variation->get_sku() . "<br>";
701
+ }
702
+ $wcap_get_formatted_variation = wc_get_formatted_variation( $variation, true );
703
+
704
+ $add_product_name = $product_name . ' - ' . $wcap_sku . $wcap_get_formatted_variation;
705
+
706
+ $pro_name_variation = (array) $add_product_name;
707
+ }else{
708
+ $pro_name_variation = array_slice( $explode_all, 1, -1 );
709
  }
710
+ $product_name_with_variable = '';
711
+ $explode_many_varaition = array();
712
+ foreach( $pro_name_variation as $pro_name_variation_key => $pro_name_variation_value ) {
713
+ $explode_many_varaition = explode ( ",", $pro_name_variation_value );
714
+ if( !empty( $explode_many_varaition ) ) {
715
+ foreach( $explode_many_varaition as $explode_many_varaition_key => $explode_many_varaition_value ) {
716
+ $product_name_with_variable = $product_name_with_variable . html_entity_decode ( $explode_many_varaition_value ) . "<br>";
717
+ }
718
+ } else {
 
 
 
 
 
719
  $product_name_with_variable = $product_name_with_variable . html_entity_decode ( $explode_many_varaition_value ) . "<br>";
720
  }
 
 
721
  }
722
+ $product_name = $product_name_with_variable;
723
  }
 
724
  }
725
+ $item_subtotal = 0;
726
+ // Item subtotal is calculated as product total including taxes
727
+ if ( $v->line_subtotal_tax != 0 && $v->line_subtotal_tax > 0 ) {
728
+ $item_subtotal = $item_subtotal + $v->line_total + $v->line_subtotal_tax;
729
+ } else {
730
+ $item_subtotal = $item_subtotal + $v->line_total;
731
+ }
732
+ // Line total
733
+ $item_total = $item_subtotal;
734
+ $item_subtotal = $item_subtotal / $quantity_total;
735
+ $item_total = wc_price( $item_total );
736
+ $item_subtotal = wc_price( $item_subtotal );
737
+
738
+ $item_details[ 'product_name' ] = $product_name;
739
+ $item_details[ 'item_total_formatted' ] = $item_subtotal;
740
+ $item_details[ 'item_total' ] = $item_total;
741
+ $item_details[ 'qty' ] = $quantity_total;
742
  } else {
743
+ $item_details[ 'product_name' ] = __( 'This product no longer exists', 'woocommerce-abandoned-cart' );
744
+ $item_details[ 'item_total_formatted' ] = '';
745
+ $item_details[ 'item_total' ] = '';
746
+ $item_details[ 'qty' ] = '';
747
+ }
 
 
 
 
 
 
 
748
 
749
  return $item_details;
750
  }
768
  * @since 7.11.0
769
  */
770
  public static function wcal_get_cart_session( $session_key ) {
771
+ if ( ! is_object( WC()->session ) ) {
772
+ return false;
773
+ }
774
  return WC()->session->get( $session_key );
775
  }
776
 
includes/wcal_admin_notice.php CHANGED
@@ -34,7 +34,7 @@ class Wcal_Admin_Notice {
34
 
35
  foreach ( $results as $key => $value) {
36
  if ( $value->Collation !== 'utf8mb4_unicode_ci' ) {
37
- printf( __( '<div id="wcal_update" class="updated woocommerce-message" style="padding:15px;"><span>We need to update your email template database for some improvements. Please take a backup of your databases for your peice of mind</span><span class="submit"><a href="%s" class="button-primary" style="float:right;">Update</a></span></div>', 'woocommerce-abandoned-cart' ), 'admin.php?page=woocommerce_ac_page&action=listcart&ac_update=email_templates' );
38
  break;
39
  }
40
  }
34
 
35
  foreach ( $results as $key => $value) {
36
  if ( $value->Collation !== 'utf8mb4_unicode_ci' ) {
37
+ printf( __( '<div id="wcal_update" class="updated woocommerce-message" style="padding:15px;"><span>We need to update your email template database for some improvements. Please take a backup of your databases for your piece of mind</span><span class="submit"><a href="%s" class="button-primary" style="float:right;">Update</a></span></div>', 'woocommerce-abandoned-cart' ), 'admin.php?page=woocommerce_ac_page&action=listcart&ac_update=email_templates' );
38
  break;
39
  }
40
  }
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
- 
2
  === Abandoned Cart Lite for WooCommerce ===
3
  Contributors: ashokrane, pinal.shah, bhavik.kiri, chetnapatel, tychesoftwares, dhruvin
4
  Tags: abandon cart, cart recovery, increase woocommerce conversion rate , recover woocommerce cart, increase sales with woocommerce
5
  Author URI: https://www.tychesoftwares.com/
6
  Requires at least: 1.3
7
- Tested up to: 5.1
8
  Stable tag: trunk
9
  License: GPLv2 or late
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -193,6 +193,20 @@ You can refer **[here](https://www.tychesoftwares.com/differences-between-pro-an
193
 
194
  == Changelog ==
195
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  = 5.2.1 (18.02.2019) =
197
 
198
  * Bug - Fixed an issue where ajax url was missing for some sites preventing emails to be captured.
@@ -297,7 +311,7 @@ Bug Fix - The website was crashing as the folder name for the plugin was not cha
297
 
298
  * New feature - Abandoned Cart details will now be exported to the User's Personal Data from the Tools -> Export Personal Data menu and it can be erased from Tools -> Erase Personal Data.
299
 
300
- * Bug Fixed - Some notices are fixed of the debug.log file.
301
 
302
  = 4.8 (20.03-2018) =
303
  * This is a minor update to the plugin which contains some bug fixes and requires Database update to include emojis in the email templates. We recommend that you take a backup of the database of your store for your piece of mind.
1
+
2
  === Abandoned Cart Lite for WooCommerce ===
3
  Contributors: ashokrane, pinal.shah, bhavik.kiri, chetnapatel, tychesoftwares, dhruvin
4
  Tags: abandon cart, cart recovery, increase woocommerce conversion rate , recover woocommerce cart, increase sales with woocommerce
5
  Author URI: https://www.tychesoftwares.com/
6
  Requires at least: 1.3
7
+ Tested up to: 5.0
8
  Stable tag: trunk
9
  License: GPLv2 or late
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
193
 
194
  == Changelog ==
195
 
196
+ = 5.3.0 (26.03.2019) =
197
+
198
+ * Enhancement - Corrected the way recovered orders were tracked. Replaced the hooks tracking orders.
199
+
200
+ * Bug - Newly created Email Templates will be inactive by default.
201
+
202
+ * Bug - When an email template is activated, the emails will not be sent to older abandoned carts.
203
+
204
+ * Bug - Fixed an issue where Recovered Order note was getting added to all the Orders.
205
+
206
+ * Bug - Fixed an issue where notices were getting displayed in abandoned details page if the product was deleted.
207
+
208
+ * Tweak - Updated the pot file with some new strings added. Also corrected the display of a few strings.
209
+
210
  = 5.2.1 (18.02.2019) =
211
 
212
  * Bug - Fixed an issue where ajax url was missing for some sites preventing emails to be captured.
311
 
312
  * New feature - Abandoned Cart details will now be exported to the User's Personal Data from the Tools -> Export Personal Data menu and it can be erased from Tools -> Erase Personal Data.
313
 
314
+ * Bug Fixed - Some notices are fixed of the debug.log file.
315
 
316
  = 4.8 (20.03-2018) =
317
  * This is a minor update to the plugin which contains some bug fixes and requires Database update to include emojis in the email templates. We recommend that you take a backup of the database of your store for your piece of mind.
uninstall.php ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Abandoned Cart Lite for WooCommerce Uninstall
4
+ *
5
+ * Uninstalling Abandoned Cart Lite for WooCommerce deletes tables, and options.
6
+ *
7
+ * @author Tyche Softwares
8
+ * @package Abandoned-Cart-Lite-for-WooCommerce/Uninstaller
9
+ * @version 5.3.0
10
+ */
11
+
12
+ if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
13
+ exit;
14
+ }
15
+
16
+ global $wpdb;
17
+
18
+ wp_clear_scheduled_hook( 'woocommerce_ac_send_email_action' );
19
+
20
+ if ( ! is_multisite() ) {
21
+ $table_name_ac_abandoned_cart_history = $wpdb->prefix . "ac_abandoned_cart_history_lite";
22
+ $sql_ac_abandoned_cart_history = "DROP TABLE " . $table_name_ac_abandoned_cart_history ;
23
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
24
+ $wpdb->get_results( $sql_ac_abandoned_cart_history );
25
+
26
+ $table_name_ac_email_templates = $wpdb->prefix . "ac_email_templates_lite";
27
+ $sql_ac_email_templates = "DROP TABLE " . $table_name_ac_email_templates ;
28
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
29
+ $wpdb->get_results( $sql_ac_email_templates );
30
+
31
+ $table_name_ac_sent_history = $wpdb->prefix . "ac_sent_history_lite";
32
+ $sql_ac_sent_history = "DROP TABLE " . $table_name_ac_sent_history ;
33
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
34
+ $wpdb->get_results( $sql_ac_sent_history );
35
+
36
+ $table_name_ac_guest_abandoned_cart_history = $wpdb->prefix . "ac_guest_abandoned_cart_history_lite";
37
+ $sql_ac_abandoned_cart_history = "DROP TABLE " . $table_name_ac_guest_abandoned_cart_history ;
38
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
39
+ $wpdb->get_results( $sql_ac_abandoned_cart_history );
40
+
41
+ $sql_table_user_meta_cart = "DELETE FROM `" . $wpdb->prefix . "usermeta` WHERE meta_key = '_woocommerce_persistent_cart'";
42
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
43
+ $wpdb->get_results( $sql_table_user_meta_cart );
44
+
45
+ $sql_table_user_meta_cart_modified = "DELETE FROM `" . $wpdb->prefix . "usermeta` WHERE meta_key = '_woocommerce_ac_modified_cart'";
46
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
47
+ $wpdb->get_results( $sql_table_user_meta_cart_modified );
48
+ } else {
49
+ $query = "SELECT blog_id FROM `".$wpdb->prefix."blogs`";
50
+ $results = $wpdb->get_results( $query );
51
+
52
+ foreach( $results as $key => $value ) {
53
+ $table_name_ac_abandoned_cart_history = $wpdb->prefix .$value->blog_id."_"."ac_abandoned_cart_history_lite";
54
+ $sql_ac_abandoned_cart_history = "DROP TABLE " . $table_name_ac_abandoned_cart_history ;
55
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
56
+ $wpdb->get_results( $sql_ac_abandoned_cart_history );
57
+
58
+ $table_name_ac_email_templates = $wpdb->prefix .$value->blog_id."_"."ac_email_templates_lite";
59
+ $sql_ac_email_templates = "DROP TABLE " . $table_name_ac_email_templates ;
60
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
61
+ $wpdb->get_results( $sql_ac_email_templates );
62
+
63
+ $table_name_ac_sent_history = $wpdb->prefix .$value->blog_id."_"."ac_sent_history_lite";
64
+ $sql_ac_sent_history = "DROP TABLE " . $table_name_ac_sent_history ;
65
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
66
+ $wpdb->get_results( $sql_ac_sent_history );
67
+
68
+ $table_name_ac_guest_abandoned_cart_history = $wpdb->prefix . "ac_guest_abandoned_cart_history_lite";
69
+ $sql_ac_abandoned_cart_history = "DROP TABLE " . $table_name_ac_guest_abandoned_cart_history ;
70
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
71
+ $wpdb->get_results( $sql_ac_abandoned_cart_history );
72
+
73
+ $sql_table_user_meta_cart = "DELETE FROM `" . $wpdb->prefix.$value->blog_id."_"."usermeta` WHERE meta_key = '_woocommerce_persistent_cart'";
74
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
75
+ $wpdb->get_results( $sql_table_user_meta_cart );
76
+
77
+ $sql_table_user_meta_cart_modified = "DELETE FROM `" . $wpdb->prefix.$value->blog_id."_"."usermeta` WHERE meta_key = '_woocommerce_ac_modified_cart'";
78
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
79
+ $wpdb->get_results( $sql_table_user_meta_cart_modified );
80
+ }
81
+ }
82
+ delete_option( 'woocommerce_ac_email_body' );
83
+ delete_option( 'ac_lite_cart_abandoned_time' );
84
+ delete_option( 'ac_lite_email_admin_on_recovery' );
85
+ delete_option( 'ac_lite_settings_status' );
86
+ delete_option( 'woocommerce_ac_default_templates_installed' );
87
+ delete_option( 'wcal_security_key' );
88
+ delete_option( 'ac_lite_track_guest_cart_from_cart_page' );
89
+ delete_option( 'wcal_from_name' );
90
+ delete_option( 'wcal_from_email' );
91
+ delete_option( 'wcal_reply_email' );
92
+
93
+ delete_option( 'ac_security_key' );
94
+ delete_option( 'wcal_activate_time' );
95
+ delete_option( 'ac_lite_alter_table_queries' );
96
+ delete_option( 'ac_lite_delete_alter_table_queries' );
97
+ delete_option( 'wcal_allow_tracking' );
98
+ delete_option( 'wcal_ts_tracker_last_send' );
99
+
100
+ delete_option( 'wcal_welcome_page_shown_time' );
101
+ delete_option( 'wcal_welcome_page_shown' );
102
+
103
+ delete_option( 'wcal_guest_cart_capture_msg' );
104
+ delete_option( 'wcal_logged_cart_capture_msg' );
105
+
106
+ delete_option( 'ac_lite_delete_abandoned_order_days' );
107
+ delete_option( 'wcal_new_default_templates' );
108
+
109
+ delete_option( 'ac_lite_delete_redundant_queries' );
woocommerce-ac.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: This plugin captures abandoned carts by logged-in users & emails them about it.
6
  * <strong><a href="http://www.tychesoftwares.com/store/premium-plugins/woocommerce-abandoned-cart-pro">Click here to get the
7
  * PRO Version.</a></strong>
8
- * Version: 5.2.1
9
  * Author: Tyche Softwares
10
  * Author URI: http://www.tychesoftwares.com/
11
  * Text Domain: woocommerce-abandoned-cart
@@ -17,9 +17,6 @@
17
  * @package Abandoned-Cart-Lite-for-WooCommerce
18
  */
19
 
20
- // Deletion Settings
21
- register_uninstall_hook( __FILE__, 'woocommerce_ac_delete_lite' );
22
-
23
  require_once( "includes/wcal_class-guest.php" );
24
  require_once( "includes/wcal_default-settings.php" );
25
  require_once( "includes/wcal_actions.php" );
@@ -85,107 +82,6 @@ function wcal_send_email_cron() {
85
  $plugin_dir_path = plugin_dir_path( __FILE__ );
86
  require_once( $plugin_dir_path . 'cron/wcal_send_email.php' );
87
  }
88
-
89
- /**
90
- * This function will delete plugin tables, options and usermeta when we delete the plugin.
91
- * @hook register_uninstall_hook
92
- * @globals mixed $wpdb
93
- * @since 1.0
94
- * @package Abandoned-Cart-Lite-for-WooCommerce/Uninstaller
95
- */
96
- function woocommerce_ac_delete_lite() {
97
- global $wpdb;
98
- if ( ! is_multisite() ) {
99
- $table_name_ac_abandoned_cart_history = $wpdb->prefix . "ac_abandoned_cart_history_lite";
100
- $sql_ac_abandoned_cart_history = "DROP TABLE " . $table_name_ac_abandoned_cart_history ;
101
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
102
- $wpdb->get_results( $sql_ac_abandoned_cart_history );
103
-
104
- $table_name_ac_email_templates = $wpdb->prefix . "ac_email_templates_lite";
105
- $sql_ac_email_templates = "DROP TABLE " . $table_name_ac_email_templates ;
106
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
107
- $wpdb->get_results( $sql_ac_email_templates );
108
-
109
- $table_name_ac_sent_history = $wpdb->prefix . "ac_sent_history_lite";
110
- $sql_ac_sent_history = "DROP TABLE " . $table_name_ac_sent_history ;
111
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
112
- $wpdb->get_results( $sql_ac_sent_history );
113
-
114
- $table_name_ac_guest_abandoned_cart_history = $wpdb->prefix . "ac_guest_abandoned_cart_history_lite";
115
- $sql_ac_abandoned_cart_history = "DROP TABLE " . $table_name_ac_guest_abandoned_cart_history ;
116
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
117
- $wpdb->get_results( $sql_ac_abandoned_cart_history );
118
-
119
- $sql_table_user_meta_cart = "DELETE FROM `" . $wpdb->prefix . "usermeta` WHERE meta_key = '_woocommerce_persistent_cart'";
120
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
121
- $wpdb->get_results( $sql_table_user_meta_cart );
122
-
123
- $sql_table_user_meta_cart_modified = "DELETE FROM `" . $wpdb->prefix . "usermeta` WHERE meta_key = '_woocommerce_ac_modified_cart'";
124
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
125
- $wpdb->get_results( $sql_table_user_meta_cart_modified );
126
- } else {
127
- $query = "SELECT blog_id FROM `".$wpdb->prefix."blogs`";
128
- $results = $wpdb->get_results( $query );
129
-
130
- foreach( $results as $key => $value ) {
131
- $table_name_ac_abandoned_cart_history = $wpdb->prefix .$value->blog_id."_"."ac_abandoned_cart_history_lite";
132
- $sql_ac_abandoned_cart_history = "DROP TABLE " . $table_name_ac_abandoned_cart_history ;
133
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
134
- $wpdb->get_results( $sql_ac_abandoned_cart_history );
135
-
136
- $table_name_ac_email_templates = $wpdb->prefix .$value->blog_id."_"."ac_email_templates_lite";
137
- $sql_ac_email_templates = "DROP TABLE " . $table_name_ac_email_templates ;
138
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
139
- $wpdb->get_results( $sql_ac_email_templates );
140
-
141
- $table_name_ac_sent_history = $wpdb->prefix .$value->blog_id."_"."ac_sent_history_lite";
142
- $sql_ac_sent_history = "DROP TABLE " . $table_name_ac_sent_history ;
143
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
144
- $wpdb->get_results( $sql_ac_sent_history );
145
-
146
- $table_name_ac_guest_abandoned_cart_history = $wpdb->prefix . "ac_guest_abandoned_cart_history_lite";
147
- $sql_ac_abandoned_cart_history = "DROP TABLE " . $table_name_ac_guest_abandoned_cart_history ;
148
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
149
- $wpdb->get_results( $sql_ac_abandoned_cart_history );
150
-
151
- $sql_table_user_meta_cart = "DELETE FROM `" . $wpdb->prefix.$value->blog_id."_"."usermeta` WHERE meta_key = '_woocommerce_persistent_cart'";
152
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
153
- $wpdb->get_results( $sql_table_user_meta_cart );
154
-
155
- $sql_table_user_meta_cart_modified = "DELETE FROM `" . $wpdb->prefix.$value->blog_id."_"."usermeta` WHERE meta_key = '_woocommerce_ac_modified_cart'";
156
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
157
- $wpdb->get_results( $sql_table_user_meta_cart_modified );
158
- }
159
- }
160
- delete_option( 'woocommerce_ac_email_body' );
161
- delete_option( 'ac_lite_cart_abandoned_time' );
162
- delete_option( 'ac_lite_email_admin_on_recovery' );
163
- delete_option( 'ac_lite_settings_status' );
164
- delete_option( 'woocommerce_ac_default_templates_installed' );
165
- delete_option( 'wcal_security_key' );
166
- delete_option( 'ac_lite_track_guest_cart_from_cart_page' );
167
- delete_option( 'wcal_from_name' );
168
- delete_option( 'wcal_from_email' );
169
- delete_option( 'wcal_reply_email' );
170
-
171
- delete_option( 'ac_security_key' );
172
- delete_option( 'wcal_activate_time' );
173
- delete_option( 'ac_lite_alter_table_queries' );
174
- delete_option( 'ac_lite_delete_alter_table_queries' );
175
- delete_option( 'wcal_allow_tracking' );
176
- delete_option( 'wcal_ts_tracker_last_send' );
177
-
178
- delete_option( 'wcal_welcome_page_shown_time' );
179
- delete_option( 'wcal_welcome_page_shown' );
180
-
181
- delete_option( 'wcal_guest_cart_capture_msg' );
182
- delete_option( 'wcal_logged_cart_capture_msg' );
183
-
184
- delete_option( 'ac_lite_delete_abandoned_order_days' );
185
- delete_option( 'wcal_new_default_templates' );
186
-
187
- delete_option( 'ac_lite_delete_redundant_queries' );
188
- }
189
  /**
190
  * woocommerce_abandon_cart_lite class
191
  **/
@@ -256,10 +152,7 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
256
 
257
  // Actions to be done on cart update
258
  add_action ( 'woocommerce_cart_updated', array( &$this, 'wcal_store_cart_timestamp' ) );
259
-
260
- // delete added temp fields after order is placed
261
- add_filter ( 'woocommerce_order_details_after_order_table', array( &$this, 'wcal_action_after_delivery_session' ) );
262
-
263
  add_action ( 'admin_init', array( &$this, 'wcal_action_admin_init' ) );
264
 
265
  // Update the options as per settings API
@@ -281,7 +174,7 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
281
 
282
  add_action ( 'admin_enqueue_scripts', array( &$this, 'wcal_enqueue_scripts_js' ) );
283
  add_action ( 'admin_enqueue_scripts', array( &$this, 'wcal_enqueue_scripts_css' ) );
284
- //delete abandoned order after X number of days
285
  if ( class_exists( 'wcal_delete_bulk_action_handler' ) ) {
286
  add_action( 'wcal_clear_carts', array( 'wcal_delete_bulk_action_handler', 'wcal_delete_abandoned_carts_after_x_days' ) );
287
  }
@@ -296,26 +189,38 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
296
  add_filter( 'ts_tracker_opt_out_data', array( 'wcal_common', 'ts_get_data_for_opt_out' ), 10, 1 );
297
  add_filter( 'ts_deativate_plugin_questions', array( &$this, 'wcal_deactivate_add_questions' ), 10, 1 );
298
  }
299
-
300
- // Send Email on order recovery
301
- add_action( 'woocommerce_order_status_pending_to_processing_notification', array( &$this, 'wcal_email_admin_recovery' ) );
302
- add_action( 'woocommerce_order_status_pending_to_completed_notification', array( &$this, 'wcal_email_admin_recovery' ) );
303
- add_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( &$this, 'wcal_email_admin_recovery' ) );
304
- add_action( 'woocommerce_order_status_failed_to_processing_notification', array( &$this, 'wcal_email_admin_recovery' ) );
305
- add_action( 'woocommerce_order_status_failed_to_completed_notification', array( &$this, 'wcal_email_admin_recovery' ) );
306
-
307
- add_action('woocommerce_order_status_changed', array( &$this, 'wcal_email_admin_recovery_for_paypal' ), 10, 3);
308
 
309
  add_action( 'admin_init', array( $this, 'wcal_preview_emails' ) );
310
  add_action( 'init', array( $this, 'wcal_app_output_buffer') );
311
- add_action( 'woocommerce_checkout_order_processed', array( &$this, 'wcal_order_placed' ), 10 , 1 );
312
- add_filter( 'woocommerce_payment_complete_order_status', array( &$this, 'wcal_order_complete_action' ), 10 , 2 );
313
  add_filter( 'admin_footer_text', array( $this, 'wcal_admin_footer_text' ), 1 );
314
 
315
- add_action( 'admin_notices', array( 'Wcal_Admin_Notice', 'wcal_show_db_update_notice' ) );
 
 
 
 
316
  }
317
-
318
- /**
 
 
 
 
 
 
 
 
 
 
 
 
 
 
319
  * It will load the boilerplate components file. In this file we have included all boilerplate files.
320
  * We need to inlcude this file after the init hook.
321
  * @hook init
@@ -363,268 +268,6 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
363
  );
364
  return $wcal_add_questions;
365
  }
366
-
367
- /**
368
- * When customer clicks on the "Place Order" button on the checkout page, it will identify if we need to keep that cart or
369
- * delete it.
370
- * @hook woocommerce_checkout_order_processed
371
- * @param int | string $order_id Order id
372
- * @globals mixed $wpdb
373
- * @globals mixed $woocommerce
374
- *
375
- * @since 3.4
376
- */
377
- public static function wcal_order_placed( $order_id ) {
378
-
379
- /**
380
- * When user comes from the abandoned cart reminder email this conditon will be executed.
381
- * It will check the guest uers data in further 3 conditions.
382
- * 1. When WC setting mandatory to become the logged in users. And places the order
383
- * 2. When WC setting is non - mandatory to become the logged in users. And user choose to be the loggedin
384
- * to the site And places the order
385
- * 3. When user places the orde as guest user.
386
- * It will consider the old cart of the customer as the recovered order and delete the unwanted new records.
387
- */
388
- $email_sent_id = wcal_common::wcal_get_cart_session( 'email_sent_id' );
389
-
390
- if ( $email_sent_id !='' ) {
391
-
392
- global $woocommerce, $wpdb;
393
-
394
- $wcal_history_table_name = $wpdb->prefix . 'ac_abandoned_cart_history_lite';
395
- $wcal_guest_table_name = $wpdb->prefix . 'ac_guest_abandoned_cart_history_lite';
396
- $wcal_sent_email_table_name = $wpdb->prefix . 'ac_sent_history_lite';
397
-
398
- $get_ac_id_query = "SELECT abandoned_order_id FROM ". $wcal_sent_email_table_name ." WHERE id = %d";
399
- $get_ac_id_results = $wpdb->get_results( $wpdb->prepare( $get_ac_id_query, $email_sent_id ) );
400
-
401
- $abandoned_order_id = '';
402
- if ( isset($get_ac_id_results) && count( $get_ac_id_results ) > 0 ) {
403
- $abandoned_order_id = $get_ac_id_results[0]->abandoned_order_id;
404
- }
405
-
406
- $wcal_account_password_check = 'no';
407
-
408
- /*if user becomes the registered user */
409
- if ( isset( $_POST['account_password'] ) && '' != $_POST['account_password'] ) {
410
-
411
- $abandoned_cart_id_new_user = wcal_common::wcal_get_cart_session( 'abandoned_cart_id_lite' );
412
-
413
- $wcal_user_id_of_guest = wcal_common::wcal_get_cart_session( 'user_id' );
414
-
415
- /* delete the guest record. As it become the logged in user */
416
-
417
- $get_ac_id_guest_results = array();
418
- if ( isset( $wcal_user_id_of_guest ) && '' != $wcal_user_id_of_guest ) {
419
- $get_ac_id_guest_query = "SELECT id FROM `" . $wcal_history_table_name ."` WHERE user_id = %d ORDER BY id DESC";
420
- $get_ac_id_guest_results = $wpdb->get_results( $wpdb->prepare( $get_ac_id_guest_query, $wcal_user_id_of_guest ) );
421
- }
422
-
423
- if ( is_array( $get_ac_id_guest_results ) && count ( $get_ac_id_guest_results ) > 0 ) {
424
- $abandoned_order_id_of_guest = $get_ac_id_guest_results[0]->id;
425
- $wpdb->delete( $wcal_history_table_name , array( 'id' => $abandoned_order_id_of_guest ) );
426
- }
427
- if ( isset( $abandoned_cart_id_new_user ) && '' != $abandoned_cart_id_new_user ) {
428
- /* it is the new registered users cart id */
429
- $wpdb->delete( $wcal_history_table_name , array( 'id' => $abandoned_cart_id_new_user ) );
430
- }
431
-
432
- $wcal_account_password_check = 'yes';
433
- }
434
-
435
- $wcap_create_account = 'no';
436
- /*if user becomes the registred user */
437
- if ( isset( $_POST['createaccount'] ) &&
438
- $_POST['createaccount'] != '' &&
439
- 'no' == $wcal_account_password_check ) {
440
-
441
- $abandoned_cart_id_new_user = wcal_common::wcal_get_cart_session( 'abandoned_cart_id_lite' );
442
-
443
- $wcal_user_id_of_guest = '';
444
- if ( isset( $_SESSION['user_id'] ) && '' != $_SESSION['user_id'] ) {
445
- $wcal_user_id_of_guest = $_SESSION['user_id'];
446
- }
447
- /* Delete the guest record. As it become the logged in user */
448
- $get_ac_id_guest_results = array();
449
- if ( isset( $wcal_user_id_of_guest ) && '' != $wcal_user_id_of_guest ) {
450
- $get_ac_id_guest_query = "SELECT id FROM `" . $wcal_history_table_name ."` WHERE user_id = %d ORDER BY id DESC";
451
- $get_ac_id_guest_results = $wpdb->get_results( $wpdb->prepare( $get_ac_id_guest_query, $wcal_user_id_of_guest ) );
452
- }
453
- if( is_array( $get_ac_id_guest_results ) && count ( $get_ac_id_guest_results ) > 0 ) {
454
- $abandoned_order_id_of_guest = $get_ac_id_guest_results[0]->id;
455
- $wpdb->delete( $wcal_history_table_name , array( 'id' => $abandoned_order_id_of_guest ) );
456
- }
457
-
458
- /* It is the new registered users cart id */
459
- if ( isset( $wcal_user_id_of_guest ) && '' != $wcal_user_id_of_guest ) {
460
- $wpdb->delete( $wcal_history_table_name , array( 'id' => $abandoned_cart_id_new_user ) );
461
- }
462
-
463
- $wcap_create_account = 'yes';
464
- }
465
-
466
- if ( 'no' == $wcal_account_password_check && 'no' == $wcap_create_account ) {
467
-
468
- $wcal_user_id_of_guest = '';
469
- if ( isset( $_SESSION['user_id'] ) && '' != $_SESSION['user_id'] ) {
470
- $wcal_user_id_of_guest = $_SESSION['user_id'];
471
- $get_ac_id_guest_query = "SELECT id FROM `" . $wcal_history_table_name ."` WHERE user_id = %d ORDER BY id DESC";
472
- $get_ac_id_guest_results = $wpdb->get_results( $wpdb->prepare( $get_ac_id_guest_query, $wcal_user_id_of_guest ) );
473
-
474
- if ( is_array( $get_ac_id_guest_results ) && count ( $get_ac_id_guest_results ) > 0 ) {
475
- $abandoned_order_id_of_guest = $get_ac_id_guest_results[0]->id;
476
- $wpdb->delete( $wcal_history_table_name, array( 'id' => $abandoned_order_id_of_guest ) );
477
- }
478
- }
479
- }
480
-
481
- add_post_meta( $order_id , 'wcal_recover_order_placed_sent_id', $email_sent_id );
482
- if ( isset( $abandoned_order_id ) && '' != $abandoned_order_id ) {
483
- add_post_meta( $order_id , 'wcal_recover_order_placed', $abandoned_order_id );
484
- }
485
-
486
- }else if ( wcal_common::wcal_get_cart_session( 'abandoned_cart_id_lite' ) != '' ) {
487
-
488
- /**
489
- * In this codition we are cheking that if the order is placed before the cart cut off time then we
490
- * will delete the abandond cart records.
491
- * If the order is placed after the cart cutoff time then we will create the post meta with
492
- * the abandoned cart id. So we will refer this abandoned cart id when order staus is changed
493
- * while placing the order.
494
- */
495
- global $woocommerce, $wpdb;
496
-
497
- $wcal_history_table_name = $wpdb->prefix . 'ac_abandoned_cart_history_lite';
498
- $wcal_guest_table_name = $wpdb->prefix . 'ac_guest_abandoned_cart_history_lite';
499
- $wcal_sent_email_table_name = $wpdb->prefix . 'ac_sent_history_lite';
500
-
501
- $current_time = current_time( 'timestamp' );
502
- $wcal_cart_abandoned_time = '';
503
-
504
- $wcal_abandoned_cart_id = wcal_common::wcal_get_cart_session( 'abandoned_cart_id_lite' );
505
-
506
- if ( $wcal_abandoned_cart_id != '' ) {
507
-
508
- $get_abandoned_cart_query = "SELECT abandoned_cart_time FROM `" . $wcal_history_table_name . "` WHERE id = %d ";
509
- $get_abandoned_cart_results = $wpdb->get_results( $wpdb->prepare( $get_abandoned_cart_query, $wcal_abandoned_cart_id ) );
510
-
511
- if ( is_array( $get_ac_id_guest_results ) && count( $get_abandoned_cart_results ) > 0 ) {
512
- $wcal_cart_abandoned_time = $get_abandoned_cart_results[0]->abandoned_cart_time;
513
- }
514
-
515
- $ac_cutoff_time = get_option( 'ac_lite_cart_abandoned_time' );
516
- $cut_off_time = $ac_cutoff_time * 60;
517
- $compare_time = $current_time - $cut_off_time;
518
-
519
- if ( $compare_time > $wcal_cart_abandoned_time ) {
520
- /* cart is declared as adandoned */
521
- add_post_meta( $order_id , 'wcal_recover_order_placed', $wcal_abandoned_cart_id );
522
- } else {
523
- /**
524
- * Cart order is placed within the cutoff time.
525
- * We will delete that abandoned cart.
526
- */
527
-
528
- /* If user becomes the registred user */
529
-
530
- if ( isset( $_POST['account_password'] ) && '' != $_POST['account_password'] ) {
531
-
532
- $abandoned_cart_id_new_user = wcal_common::wcal_get_cart_session( 'abandoned_cart_id_lite' );
533
- $wcal_user_id_of_guest = wcal_common::wcal_get_cart_session( 'user_id' );
534
-
535
- /* Delete the guest record. As it become the logged in user */
536
-
537
- $wpdb->delete( $wcal_history_table_name , array( 'user_id' => $wcal_user_id_of_guest ) );
538
- $wpdb->delete( $wcal_guest_table_name , array( 'id' => $wcal_user_id_of_guest ) );
539
-
540
- /* It is the new registered users cart id */
541
- $wpdb->delete( $wcal_history_table_name , array( 'id' => $abandoned_cart_id_new_user ) );
542
- } else {
543
-
544
- /**
545
- * It will delete the order from history table if the order is placed before any email sent to
546
- * the user.
547
- */
548
- $wpdb->delete( $wcal_history_table_name , array( 'id' => $wcal_abandoned_cart_id ) );
549
-
550
- /* This user id is set for the guest uesrs. */
551
- if ( wcal_common::wcal_get_cart_session( 'user_id' ) != '' ) {
552
- $wcal_user_id_of_guest = wcal_common::wcal_get_cart_session( 'user_id' );
553
- $wpdb->delete( $wcal_guest_table_name, array( 'id' => $wcal_user_id_of_guest ) );
554
- }
555
- }
556
- }
557
- }
558
- }
559
- }
560
-
561
- /**
562
- * It will check the WooCommerce order status. If the order status is pending or failed the we will keep that cart record
563
- * as an abandoned cart.
564
- * It will be executed after order placed.
565
- * @hook woocommerce_payment_complete_order_status
566
- * @param string $order_status Order Status
567
- * @param int | string $order_id Order Id
568
- * @return string $order_status
569
- * @globals mixed $wpdb
570
- * @globals mixed $woocommerce
571
- * @since 3.4
572
- */
573
- public function wcal_order_complete_action( $order_status, $order_id ) {
574
-
575
- /**
576
- * If the order status is not pending or failed then we will check the order and its respective abandoned
577
- * cart data.
578
- */
579
- if ( 'pending' != $order_status && 'failed' != $order_status ) {
580
- global $woocommerce, $wpdb;
581
- $order = new WC_Order( $order_id );
582
-
583
- $get_abandoned_id_of_order = get_post_meta( $order_id, 'wcal_recover_order_placed', true );
584
- $get_sent_email_id_of_order = get_post_meta( $order_id, 'wcal_recover_order_placed_sent_id', true );
585
-
586
- $wcal_ac_table_name = $wpdb->prefix . "ac_abandoned_cart_history_lite";
587
- $wcal_email_sent_history_table_name = $wpdb->prefix . "ac_sent_history_lite";
588
- $wcal_guest_ac_table_name = $wpdb->prefix . "ac_guest_abandoned_cart_history_lite";
589
-
590
- /**
591
- * Here, in this condition we are checking that if abadoned cart id has any record for the reminder
592
- * email is sent or not.
593
- * If the reminde email is sent to the abandoned cart id the mark that cart as a recovered.
594
- */
595
- if ( isset( $get_sent_email_id_of_order ) && '' != $get_sent_email_id_of_order ) {
596
-
597
- $query_order = "UPDATE $wcal_ac_table_name SET recovered_cart = '" . $order_id . "', cart_ignored = '1' WHERE id = '".$get_abandoned_id_of_order."' ";
598
- $wpdb->query( $query_order );
599
-
600
- $order->add_order_note( __( 'This order was abandoned & subsequently recovered.', 'woocommerce-abandoned-cart' ) );
601
-
602
- delete_post_meta( $order_id, 'wcal_recover_order_placed', $get_abandoned_id_of_order );
603
- delete_post_meta( $order_id , 'wcal_recover_order_placed_sent_id', $get_sent_email_id_of_order );
604
- } else if ( isset( $get_abandoned_id_of_order ) && '' != $get_abandoned_id_of_order ) {
605
-
606
- /**
607
- * If the recover email has not sent then we will delete the abandoned cart data.
608
- */
609
- $get_abandoned_cart_user_id_query = "SELECT user_id FROM $wcal_ac_table_name WHERE id = %d ";
610
- $get_abandoned_cart_user_id_results = $wpdb->get_results( $wpdb->prepare( $get_abandoned_cart_user_id_query, $get_abandoned_id_of_order ) );
611
-
612
- $var = $wpdb->prepare( $get_abandoned_cart_user_id_query, $get_abandoned_id_of_order );
613
-
614
- if ( count( $get_abandoned_cart_user_id_results ) > 0 ) {
615
- $wcap_user_id = $get_abandoned_cart_user_id_results[0]->user_id;
616
-
617
- if ( $wcap_user_id >= 63000000 ) {
618
- $wpdb->delete( $wcal_guest_ac_table_name, array( 'id' => $wcap_user_id ) );
619
- }
620
-
621
- $wpdb->delete( $wcal_ac_table_name, array( 'id' => $get_abandoned_id_of_order ) );
622
- delete_post_meta( $order_id, 'wcap_recover_order_placed', $get_abandoned_id_of_order );
623
- }
624
- }
625
- }
626
- return $order_status;
627
- }
628
 
629
  /**
630
  * It will ganerate the preview email template.
@@ -1237,7 +880,7 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
1237
  $wcal_previous_version = get_option( 'wcal_previous_version' );
1238
 
1239
  if ( $wcal_previous_version != wcal_common::wcal_get_version() ) {
1240
- update_option( 'wcal_previous_version', '5.2.1' );
1241
  }
1242
 
1243
  /**
@@ -1430,134 +1073,7 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
1430
  update_option( 'ac_lite_user_cleanup', 'yes' );
1431
  }
1432
  }
1433
-
1434
- /**
1435
- * Send email to admin when cart is recovered only via PayPal.
1436
- * @hook woocommerce_order_status_changed
1437
- * @param int | string $order_id Order id
1438
- * @param string $old Old status
1439
- * @param string $new_status New status
1440
- * @globals mixed $wpdb
1441
- * @globals mixed $woocommerce
1442
- * @since 2.9
1443
- */
1444
- public static function wcal_email_admin_recovery_for_paypal( $order_id, $old, $new_status ) {
1445
- if ( 'pending' == $old && 'processing' == $new_status ) {
1446
- global $wpdb, $woocommerce;
1447
- $user_id = get_current_user_id();
1448
- $ac_email_admin_recovery = get_option( 'ac_lite_email_admin_on_recovery' );
1449
- $order = new WC_Order( $order_id );
1450
- if ( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
1451
- $user_id = $order->get_user_id();
1452
- } else {
1453
- $user_id = $order->user_id;
1454
- }
1455
-
1456
- if ( 'on' == $ac_email_admin_recovery ) {
1457
- $recovered_email_sent = get_post_meta( $order_id, 'wcap_recovered_email_sent', true );
1458
- $created_via = get_post_meta( $order_id, '_created_via', true );
1459
- $wcal_check_order_is_recovered = woocommerce_abandon_cart_lite::wcal_check_order_is_recovered( $order_id );
1460
-
1461
- if ( 'checkout' == $created_via && 'yes' != $recovered_email_sent && true === $wcal_check_order_is_recovered ) { // indicates cart is abandoned
1462
- $order = new WC_Order( $order_id );
1463
- $email_heading = __( 'New Customer Order - Recovered', 'woocommerce-abandoned-cart' );
1464
- $blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
1465
- $email_subject = __( 'New Customer Order - Recovered', 'woocommerce-abandoned-cart' );
1466
- $user_email = get_option( 'admin_email' );
1467
- $headers[] = "From: Admin <".$user_email.">";
1468
- $headers[] = "Content-Type: text/html";
1469
- // Buffer
1470
- ob_start();
1471
- // Get mail template
1472
- wc_get_template( 'emails/admin-new-order.php', array(
1473
- 'order' => $order,
1474
- 'email_heading' => $email_heading,
1475
- 'sent_to_admin' => false,
1476
- 'plain_text' => false,
1477
- 'email' => true
1478
- )
1479
- );
1480
- // Get contents
1481
- $email_body = ob_get_clean();
1482
- wc_mail( $user_email, $email_subject, $email_body, $headers );
1483
- update_post_meta( $order_id, 'wcap_recovered_email_sent', 'yes' );
1484
- }
1485
- }
1486
- }
1487
- }
1488
-
1489
- /**
1490
- * Send email to admin when cart is recovered via any other payment gateway other than PayPal.
1491
- * @hook woocommerce_order_status_pending_to_processing_notification
1492
- * @hook woocommerce_order_status_pending_to_completed_notification
1493
- * @hook woocommerce_order_status_pending_to_on-hold_notification
1494
- * @hook woocommerce_order_status_failed_to_processing_notification
1495
- * @hook woocommerce_order_status_failed_to_completed_notification
1496
- * @param int | string $order_id Order id
1497
- * @globals mixed $wpdb
1498
- * @globals mixed $woocommerce
1499
- * @since 2.3
1500
- */
1501
- function wcal_email_admin_recovery ( $order_id ) {
1502
- global $wpdb, $woocommerce;
1503
-
1504
- $user_id = get_current_user_id();
1505
- $ac_email_admin_recovery = get_option( 'ac_lite_email_admin_on_recovery' );
1506
- if ( 'on' == $ac_email_admin_recovery ) {
1507
- $order = new WC_Order( $order_id );
1508
-
1509
- if ( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
1510
- $user_id = $order->get_user_id();
1511
- } else {
1512
- $user_id = $order->user_id;
1513
- }
1514
- $recovered_email_sent = get_post_meta( $order_id, 'wcap_recovered_email_sent', true );
1515
- $created_via = get_post_meta( $order_id, '_created_via', true );
1516
- $wcal_check_order_is_recovered = woocommerce_abandon_cart_lite::wcal_check_order_is_recovered( $order_id );
1517
- if ( 'checkout' == $created_via && 'yes' != $recovered_email_sent && true === $wcal_check_order_is_recovered ) { // indicates cart is abandoned
1518
- $email_heading = __( 'New Customer Order - Recovered', 'woocommerce-abandoned-cart' );
1519
- $blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
1520
- $email_subject = __( 'New Customer Order - Recovered', 'woocommerce-abandoned-cart' );
1521
- $user_email = get_option( 'admin_email' );
1522
- $headers[] = "From: Admin <".$user_email.">";
1523
- $headers[] = "Content-Type: text/html";
1524
- // Buffer
1525
- ob_start();
1526
- // Get mail template
1527
- wc_get_template( 'emails/admin-new-order.php', array(
1528
- 'order' => $order,
1529
- 'email_heading' => $email_heading,
1530
- 'sent_to_admin' => false,
1531
- 'plain_text' => false,
1532
- 'email' => true
1533
- ) );
1534
- // Get contents
1535
- $email_body = ob_get_clean();
1536
-
1537
- wc_mail( $user_email, $email_subject, $email_body, $headers );
1538
-
1539
- update_post_meta( $order_id, 'wcap_recovered_email_sent', 'yes' );
1540
- }
1541
- }
1542
- }
1543
-
1544
- /**
1545
- * For sending Recovery Email to Admin, we will check that order is recovered or not.
1546
- * @param int | string $wcal_order_id Order id
1547
- * @return boolean true | false
1548
- * @globals mixed $wpdb
1549
- * @since 2.3
1550
- */
1551
- public static function wcal_check_order_is_recovered( $wcal_order_id ) {
1552
- global $wpdb;
1553
- $wcal_recover_order_query = "SELECT `recovered_cart` FROM `" . $wpdb->prefix . "ac_abandoned_cart_history_lite` WHERE `recovered_cart` = %d";
1554
- $wcal_recover_order_query_result = $wpdb->get_results( $wpdb->prepare( $wcal_recover_order_query, $wcal_order_id ) );
1555
- if ( count( $wcal_recover_order_query_result ) > 0 ) {
1556
- return true;
1557
- }
1558
- return false;
1559
- }
1560
-
1561
  /**
1562
  * Add a submenu page under the WooCommerce.
1563
  * @hook admin_menu
@@ -1576,13 +1092,22 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
1576
  */
1577
  function wcal_store_cart_timestamp() {
1578
 
 
 
 
 
 
 
 
 
 
1579
  global $wpdb,$woocommerce;
1580
  $current_time = current_time( 'timestamp' );
1581
  $cut_off_time = get_option( 'ac_lite_cart_abandoned_time' );
1582
  $track_guest_cart_from_cart_page = get_option( 'ac_lite_track_guest_cart_from_cart_page' );
1583
  $cart_ignored = 0;
1584
  $recovered_cart = 0;
1585
-
1586
  $track_guest_user_cart_from_cart = "";
1587
  if ( isset( $track_guest_cart_from_cart_page ) ) {
1588
  $track_guest_user_cart_from_cart = $track_guest_cart_from_cart_page;
@@ -1608,14 +1133,14 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
1608
 
1609
  $cart_info_meta = json_encode( get_user_meta( $user_id, $wcal_woocommerce_persistent_cart, true ) );
1610
 
1611
- if( '' !== $cart_info_meta && '{"cart":[]}' != $cart_info_meta ) {
1612
  $cart_info = $cart_info_meta;
1613
  $user_type = "REGISTERED";
1614
  $insert_query = "INSERT INTO `".$wpdb->prefix."ac_abandoned_cart_history_lite`
1615
  ( user_id, abandoned_cart_info, abandoned_cart_time, cart_ignored, user_type )
1616
  VALUES ( %d, %s, %d, %s, %s )";
1617
  $wpdb->query( $wpdb->prepare( $insert_query, $user_id, $cart_info,$current_time, $cart_ignored, $user_type ) );
1618
-
1619
  $abandoned_cart_id = $wpdb->insert_id;
1620
  wcal_common::wcal_set_cart_session( 'abandoned_cart_id_lite', $abandoned_cart_id );
1621
  }
@@ -1842,6 +1367,10 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
1842
  $url = substr( $link_decode, $url_pos );
1843
  $get_ac_id_query = "SELECT abandoned_order_id FROM `".$wpdb->prefix."ac_sent_history_lite` WHERE id = %d";
1844
  $get_ac_id_results = $wpdb->get_results( $wpdb->prepare( $get_ac_id_query, $email_sent_id ) );
 
 
 
 
1845
  $get_user_results = array();
1846
  if ( count( $get_ac_id_results ) > 0 ) {
1847
  $get_user_id_query = "SELECT user_id FROM `".$wpdb->prefix."ac_abandoned_cart_history_lite` WHERE id = %d";
@@ -1868,9 +1397,11 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
1868
  wcal_common::wcal_set_cart_session( 'user_id', $user_id );
1869
  } else {
1870
  if ( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
1871
- wp_redirect( get_permalink( wc_get_page_id( 'shop' ) ) );
 
1872
  } else {
1873
- wp_redirect( get_permalink( woocommerce_get_page_id( 'shop' ) ) );
 
1874
  }
1875
  }
1876
  }
@@ -2072,132 +1603,7 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
2072
  }
2073
  return true;
2074
  }
2075
-
2076
- /**
2077
- * When user places the order and reach the order recieved page, then it will check if it is abandoned cart and subsequently
2078
- * recovered or not.
2079
- * @hook woocommerce_order_details_after_order_table
2080
- * @param array | object $order Order details
2081
- * @globals mixed $wpdb
2082
- * @globals mixed $woocommerce
2083
- * @since 1.0
2084
- */
2085
- function wcal_action_after_delivery_session( $order ) {
2086
-
2087
- if ( '' === session_id() ) {
2088
- //session has not started
2089
- session_start();
2090
- }
2091
- global $wpdb, $woocommerce;
2092
- if ( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
2093
- $order_id = $order->get_id();
2094
- } else {
2095
- $order_id = $order->id;
2096
- }
2097
- $get_abandoned_id_of_order = '';
2098
- $get_sent_email_id_of_order = '';
2099
- $get_abandoned_id_of_order = get_post_meta( $order_id, 'wcal_recover_order_placed', true );
2100
- if ( isset( $get_abandoned_id_of_order ) && '' != $get_abandoned_id_of_order ) {
2101
- $get_abandoned_id_of_order = get_post_meta( $order_id, 'wcal_recover_order_placed', true );
2102
- $get_sent_email_id_of_order = get_post_meta( $order_id, 'wcal_recover_order_placed_sent_id', true );
2103
-
2104
- $query_order = "UPDATE `" . $wpdb->prefix . "ac_abandoned_cart_history_lite` SET recovered_cart= '" . $order_id . "', cart_ignored = '1'
2105
- WHERE id = '".$get_abandoned_id_of_order."' ";
2106
- $wpdb->query( $query_order );
2107
-
2108
- $order->add_order_note( __( 'This order was abandoned & subsequently recovered.', 'woocommerce-abandoned-cart' ) );
2109
-
2110
- delete_post_meta( $order_id, 'wcal_recover_order_placed', $get_abandoned_id_of_order );
2111
- delete_post_meta( $order_id , 'wcal_recover_order_placed_sent_id', $get_sent_email_id_of_order );
2112
- }
2113
- $user_id = get_current_user_id();
2114
-
2115
- $sent_email = wcal_common::wcal_get_cart_session( 'email_sent_id' );
2116
-
2117
- if( $user_id == "" ) {
2118
- $user_id = wcal_common::wcal_get_cart_session( 'user_id' );
2119
 
2120
- // Set the session variables to blanks
2121
- wcal_common::wcal_unset_cart_session( 'guest_first_name' );
2122
- wcal_common::wcal_unset_cart_session( 'guest_last_name' );
2123
- wcal_common::wcal_unset_cart_session( 'guest_email' );
2124
- wcal_common::wcal_unset_cart_session( 'user_id' );
2125
- }
2126
- delete_user_meta( $user_id, '_woocommerce_ac_persistent_cart_time' );
2127
- delete_user_meta( $user_id, '_woocommerce_ac_persistent_cart_temp_time' );
2128
- // get all latest abandoned carts that were modified
2129
- $cart_ignored = 0;
2130
- $recovered_cart = 0;
2131
- $query = "SELECT * FROM `".$wpdb->prefix."ac_abandoned_cart_history_lite`
2132
- WHERE user_id = %d
2133
- AND cart_ignored = %s
2134
- AND recovered_cart = %d
2135
- ORDER BY id DESC
2136
- LIMIT 1";
2137
- $results = $wpdb->get_results( $wpdb->prepare( $query, $user_id, $cart_ignored, $recovered_cart ) );
2138
- if ( count( $results ) > 0 ) {
2139
- if ( get_user_meta( $user_id, '_woocommerce_ac_modified_cart', true ) == md5( "yes" ) ||
2140
- get_user_meta( $user_id, '_woocommerce_ac_modified_cart', true ) == md5( "no" ) ) {
2141
-
2142
- if ( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
2143
- $order_id = $order->get_id();
2144
- } else {
2145
- $order_id = $order->id;
2146
- }
2147
- $updated_cart_ignored = 1;
2148
- $query_order = "UPDATE `".$wpdb->prefix."ac_abandoned_cart_history_lite`
2149
- SET recovered_cart = %d,
2150
- cart_ignored = %s
2151
- WHERE id = %d ";
2152
- $wpdb->query( $wpdb->prepare( $query_order, $order_id, $updated_cart_ignored, $results[0]->id ) );
2153
- delete_user_meta( $user_id, '_woocommerce_ac_modified_cart' );
2154
- delete_post_meta( $order_id, 'wcap_recovered_email_sent', 'yes' );
2155
- } else {
2156
- $delete_query = "DELETE FROM `".$wpdb->prefix."ac_abandoned_cart_history_lite`
2157
- WHERE id= %d ";
2158
- $wpdb->query( $wpdb->prepare( $delete_query, $results[0]->id ) );
2159
- }
2160
- } else {
2161
- if ( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
2162
- $email_id = $order->get_billing_email();
2163
- } else {
2164
- $email_id = $order->billing_email;
2165
- }
2166
- $query = "SELECT * FROM `".$wpdb->prefix."ac_guest_abandoned_cart_history_lite` WHERE email_id = %s";
2167
- $results_id = $wpdb->get_results( $wpdb->prepare( $query, $email_id ) );
2168
-
2169
- if ( $results_id ) {
2170
- $record_status = "SELECT * FROM `".$wpdb->prefix."ac_abandoned_cart_history_lite`
2171
- WHERE user_id = %d AND recovered_cart = '0'";
2172
- $results_status = $wpdb->get_results( $wpdb->prepare( $record_status, $results_id[0]->id ) );
2173
-
2174
- if ( $results_status ) {
2175
- if ( get_user_meta( $results_id[0]->id, '_woocommerce_ac_modified_cart', true ) == md5("yes") ||
2176
- get_user_meta( $results_id[0]->id, '_woocommerce_ac_modified_cart', true ) == md5("no") ) {
2177
-
2178
- if ( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
2179
- $order_id = $order->get_id();
2180
- } else {
2181
- $order_id = $order->id;
2182
- }
2183
- $query_order = "UPDATE `".$wpdb->prefix."ac_abandoned_cart_history_lite`
2184
- SET recovered_cart= '".$order_id."', cart_ignored = '1'
2185
- WHERE id='".$results_status[0]->id."' ";
2186
- $wpdb->query( $query_order );
2187
- delete_user_meta( $results_id[0]->id, '_woocommerce_ac_modified_cart' );
2188
- delete_post_meta( $order_id, 'wcap_recovered_email_sent', 'yes' );
2189
- } else {
2190
- $delete_guest = "DELETE FROM `".$wpdb->prefix."ac_guest_abandoned_cart_history_lite` WHERE id = '".$results_id[0]->id."'";
2191
- $wpdb->query( $delete_guest );
2192
-
2193
- $delete_query = "DELETE FROM `".$wpdb->prefix."ac_abandoned_cart_history_lite` WHERE user_id='".$results_id[0]->id."' ";
2194
- $wpdb->query( $delete_query );
2195
- }
2196
- }
2197
- }
2198
- }
2199
- }
2200
-
2201
  /**
2202
  * It will add the wp editor for email body on the email edit page.
2203
  * @hook admin_init
@@ -2774,7 +2180,7 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
2774
  <div id="message" class="updated fade">
2775
  <p>
2776
  <strong>
2777
- <?php _e( 'The Email Template has been successfully added.', 'woocommerce-abandoned-cart' ); ?>
2778
  </strong>
2779
  </p>
2780
  </div>
@@ -2948,31 +2354,17 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
2948
  </div>
2949
  <div id="recovered_stats" class="postbox" style="display:block">
2950
  <div class="inside" >
2951
- <p style="font-size: 15px"><?php _e( 'During the selected range ', 'woocommerce-abandoned-cart' ); ?>
2952
- <strong>
2953
- <?php $count = $wcal_recover_orders_list->total_abandoned_cart_count;
2954
- echo $count; ?>
2955
- </strong>
2956
- <?php _e( 'carts totaling', 'woocommerce-abandoned-cart' ); ?>
2957
- <strong>
2958
- <?php $total_of_all_order = $wcal_recover_orders_list->total_order_amount;
2959
-
2960
- echo $total_of_all_order; ?>
2961
- </strong>
2962
- <?php _e( ' were abandoned. We were able to recover', 'woocommerce-abandoned-cart' ); ?>
2963
- <strong>
2964
- <?php
2965
- $recovered_item = $wcal_recover_orders_list->recovered_item;
2966
-
2967
- echo $recovered_item; ?>
2968
- </strong>
2969
- <?php _e( ' of them, which led to an extra', 'woocommerce-abandoned-cart' ); ?>
2970
- <strong>
2971
- <?php
2972
- $recovered_total = $wcal_recover_orders_list->total_recover_amount;
2973
- echo wc_price( $recovered_total ); ?>
2974
- </strong>
2975
- </p>
2976
  </div>
2977
  </div>
2978
  <div class="wrap">
@@ -3154,6 +2546,9 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
3154
 
3155
  $product_id = $v->product_id;
3156
  $product = wc_get_product( $product_id );
 
 
 
3157
  $prod_image = $product->get_image(array(200, 200));
3158
  $product_page_url = get_permalink( $product_id );
3159
  $product_name = $item_details[ 'product_name' ];
@@ -3627,6 +3022,8 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
3627
  }
3628
 
3629
  $active = "1";
 
 
3630
  } else {
3631
  $active = "0";
3632
  }
5
  * Description: This plugin captures abandoned carts by logged-in users & emails them about it.
6
  * <strong><a href="http://www.tychesoftwares.com/store/premium-plugins/woocommerce-abandoned-cart-pro">Click here to get the
7
  * PRO Version.</a></strong>
8
+ * Version: 5.3.0
9
  * Author: Tyche Softwares
10
  * Author URI: http://www.tychesoftwares.com/
11
  * Text Domain: woocommerce-abandoned-cart
17
  * @package Abandoned-Cart-Lite-for-WooCommerce
18
  */
19
 
 
 
 
20
  require_once( "includes/wcal_class-guest.php" );
21
  require_once( "includes/wcal_default-settings.php" );
22
  require_once( "includes/wcal_actions.php" );
82
  $plugin_dir_path = plugin_dir_path( __FILE__ );
83
  require_once( $plugin_dir_path . 'cron/wcal_send_email.php' );
84
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  /**
86
  * woocommerce_abandon_cart_lite class
87
  **/
152
 
153
  // Actions to be done on cart update
154
  add_action ( 'woocommerce_cart_updated', array( &$this, 'wcal_store_cart_timestamp' ) );
155
+
 
 
 
156
  add_action ( 'admin_init', array( &$this, 'wcal_action_admin_init' ) );
157
 
158
  // Update the options as per settings API
174
 
175
  add_action ( 'admin_enqueue_scripts', array( &$this, 'wcal_enqueue_scripts_js' ) );
176
  add_action ( 'admin_enqueue_scripts', array( &$this, 'wcal_enqueue_scripts_css' ) );
177
+ //delete abandoned order after X number of days
178
  if ( class_exists( 'wcal_delete_bulk_action_handler' ) ) {
179
  add_action( 'wcal_clear_carts', array( 'wcal_delete_bulk_action_handler', 'wcal_delete_abandoned_carts_after_x_days' ) );
180
  }
189
  add_filter( 'ts_tracker_opt_out_data', array( 'wcal_common', 'ts_get_data_for_opt_out' ), 10, 1 );
190
  add_filter( 'ts_deativate_plugin_questions', array( &$this, 'wcal_deactivate_add_questions' ), 10, 1 );
191
  }
192
+
193
+ // Plugin Settings link in WP->Plugins page
194
+ $plugin = plugin_basename( __FILE__ );
195
+ add_action( "plugin_action_links_$plugin", array( &$this, 'wcal_settings_link' ) );
 
 
 
 
 
196
 
197
  add_action( 'admin_init', array( $this, 'wcal_preview_emails' ) );
198
  add_action( 'init', array( $this, 'wcal_app_output_buffer') );
199
+
 
200
  add_filter( 'admin_footer_text', array( $this, 'wcal_admin_footer_text' ), 1 );
201
 
202
+ add_action( 'admin_notices', array( 'Wcal_Admin_Notice', 'wcal_show_db_update_notice' ) );
203
+
204
+ add_action( 'wp_login', array( &$this, 'wcal_remove_action_hook' ), 1 );
205
+
206
+ include_once 'includes/frontend/wcal_frontend.php';
207
  }
208
+
209
+ public static function wcal_remove_action_hook(){
210
+ remove_action( 'woocommerce_cart_updated', array( &$this, 'wcal_store_cart_timestamp' ) );
211
+ }
212
+
213
+ /**
214
+ * Add Settings link to WP->Plugins page
215
+ * @since 5.3.0
216
+ */
217
+ public static function wcal_settings_link( $links ) {
218
+ $settings_link = '<a href="admin.php?page=woocommerce_ac_page&action=emailsettings">' . __( 'Settings', 'woocommerce-abandoned-cart' ) . '</a>';
219
+ array_push( $links, $settings_link );
220
+ return $links;
221
+ }
222
+
223
+ /**
224
  * It will load the boilerplate components file. In this file we have included all boilerplate files.
225
  * We need to inlcude this file after the init hook.
226
  * @hook init
268
  );
269
  return $wcal_add_questions;
270
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
271
 
272
  /**
273
  * It will ganerate the preview email template.
880
  $wcal_previous_version = get_option( 'wcal_previous_version' );
881
 
882
  if ( $wcal_previous_version != wcal_common::wcal_get_version() ) {
883
+ update_option( 'wcal_previous_version', '5.3.0' );
884
  }
885
 
886
  /**
1073
  update_option( 'ac_lite_user_cleanup', 'yes' );
1074
  }
1075
  }
1076
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1077
  /**
1078
  * Add a submenu page under the WooCommerce.
1079
  * @hook admin_menu
1092
  */
1093
  function wcal_store_cart_timestamp() {
1094
 
1095
+ if ( get_transient( 'wcal_email_sent_id' ) !== false ) {
1096
+ wcal_common::wcal_set_cart_session( 'email_sent_id', get_transient( 'wcal_email_sent_id' ) );
1097
+ delete_transient( 'wcal_email_sent_id' );
1098
+ }
1099
+ if ( get_transient( 'wcal_abandoned_id' ) !== false ) {
1100
+ wcal_common::wcal_set_cart_session( 'abandoned_cart_id_lite', get_transient( 'wcal_abandoned_id' ) );
1101
+ delete_transient( 'wcal_abandoned_id' );
1102
+ }
1103
+
1104
  global $wpdb,$woocommerce;
1105
  $current_time = current_time( 'timestamp' );
1106
  $cut_off_time = get_option( 'ac_lite_cart_abandoned_time' );
1107
  $track_guest_cart_from_cart_page = get_option( 'ac_lite_track_guest_cart_from_cart_page' );
1108
  $cart_ignored = 0;
1109
  $recovered_cart = 0;
1110
+
1111
  $track_guest_user_cart_from_cart = "";
1112
  if ( isset( $track_guest_cart_from_cart_page ) ) {
1113
  $track_guest_user_cart_from_cart = $track_guest_cart_from_cart_page;
1133
 
1134
  $cart_info_meta = json_encode( get_user_meta( $user_id, $wcal_woocommerce_persistent_cart, true ) );
1135
 
1136
+ if( '' !== $cart_info_meta && '{"cart":[]}' != $cart_info_meta && '""' !== $cart_info_meta ) {
1137
  $cart_info = $cart_info_meta;
1138
  $user_type = "REGISTERED";
1139
  $insert_query = "INSERT INTO `".$wpdb->prefix."ac_abandoned_cart_history_lite`
1140
  ( user_id, abandoned_cart_info, abandoned_cart_time, cart_ignored, user_type )
1141
  VALUES ( %d, %s, %d, %s, %s )";
1142
  $wpdb->query( $wpdb->prepare( $insert_query, $user_id, $cart_info,$current_time, $cart_ignored, $user_type ) );
1143
+
1144
  $abandoned_cart_id = $wpdb->insert_id;
1145
  wcal_common::wcal_set_cart_session( 'abandoned_cart_id_lite', $abandoned_cart_id );
1146
  }
1367
  $url = substr( $link_decode, $url_pos );
1368
  $get_ac_id_query = "SELECT abandoned_order_id FROM `".$wpdb->prefix."ac_sent_history_lite` WHERE id = %d";
1369
  $get_ac_id_results = $wpdb->get_results( $wpdb->prepare( $get_ac_id_query, $email_sent_id ) );
1370
+
1371
+ wcal_common::wcal_set_cart_session( 'abandoned_cart_id_lite', $get_ac_id_results[0]->abandoned_order_id );
1372
+ set_transient( 'wcal_abandoned_id', $get_ac_id_results[0]->abandoned_order_id, 5 );
1373
+
1374
  $get_user_results = array();
1375
  if ( count( $get_ac_id_results ) > 0 ) {
1376
  $get_user_id_query = "SELECT user_id FROM `".$wpdb->prefix."ac_abandoned_cart_history_lite` WHERE id = %d";
1397
  wcal_common::wcal_set_cart_session( 'user_id', $user_id );
1398
  } else {
1399
  if ( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
1400
+ wp_safe_redirect( get_permalink( wc_get_page_id( 'shop' ) ) );
1401
+ exit;
1402
  } else {
1403
+ wp_safe_redirect( get_permalink( woocommerce_get_page_id( 'shop' ) ) );
1404
+ exit;
1405
  }
1406
  }
1407
  }
1603
  }
1604
  return true;
1605
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1606
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1607
  /**
1608
  * It will add the wp editor for email body on the email edit page.
1609
  * @hook admin_init
2180
  <div id="message" class="updated fade">
2181
  <p>
2182
  <strong>
2183
+ <?php _e( 'The Email Template has been successfully added. In order to start sending this email to your customers, please activate it.', 'woocommerce-abandoned-cart' ); ?>
2184
  </strong>
2185
  </p>
2186
  </div>
2354
  </div>
2355
  <div id="recovered_stats" class="postbox" style="display:block">
2356
  <div class="inside" >
2357
+ <?php
2358
+ $count = $wcal_recover_orders_list->total_abandoned_cart_count;
2359
+ $total_of_all_order = $wcal_recover_orders_list->total_order_amount;
2360
+ $recovered_item = $wcal_recover_orders_list->recovered_item;
2361
+ $recovered_total = wc_price( $wcal_recover_orders_list->total_recover_amount );
2362
+ ?>
2363
+ <p style="font-size: 15px;">
2364
+ <?php
2365
+ printf( __( 'During the selected range <strong>%d</strong> carts totaling <strong>%s</strong> were abandoned. We were able to recover <strong>%d</strong> of them, which led to an extra <strong>%s</strong>', 'woocommerce-abandoned-cart' ), $count, $total_of_all_order, $recovered_item, $recovered_total );
2366
+ ?>
2367
+ </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2368
  </div>
2369
  </div>
2370
  <div class="wrap">
2546
 
2547
  $product_id = $v->product_id;
2548
  $product = wc_get_product( $product_id );
2549
+ if( ! $product ) { // product not found, exclude it from the cart display
2550
+ continue;
2551
+ }
2552
  $prod_image = $product->get_image(array(200, 200));
2553
  $product_page_url = get_permalink( $product_id );
2554
  $product_name = $item_details[ 'product_name' ];
3022
  }
3023
 
3024
  $active = "1";
3025
+
3026
+ update_option( 'wcal_template_' . $template_id . '_time', current_time( 'timestamp' ) );
3027
  } else {
3028
  $active = "0";
3029
  }