WooCommerce Cart Abandonment Recovery - Version 1.1.4

Version Description

Download this release

Release Info

Developer sandesh055
Plugin Icon 128x128 WooCommerce Cart Abandonment Recovery
Version 1.1.4
Comparing to
See all releases

Code changes from version 1.1.3 to 1.1.4

changelog.txt CHANGED
@@ -1,3 +1,7 @@
 
 
 
 
1
  Version 1.1.3 - Thursday, 27th June 2019
2
  - Improvement: Added checkout link for abandoned cart inside the admin section.
3
  - Fix: Added pagination for reports.
1
+ Version 1.1.4 - Tuesday, 9th July 2019
2
+ - Fix: Follow up emails were getting sent even after the completion of the order.
3
+ - Fix: Email template variable 'Abandoned Product Names' warning issue.
4
+
5
  Version 1.1.3 - Thursday, 27th June 2019
6
  - Improvement: Added checkout link for abandoned cart inside the admin section.
7
  - Fix: Added pagination for reports.
classes/class-cartflows-ca-loader.php CHANGED
@@ -77,7 +77,7 @@ if ( ! class_exists( 'CARTFLOWS_CA_Loader' ) ) {
77
  define( 'CARTFLOWS_CA_BASE', plugin_basename( CARTFLOWS_CA_FILE ) );
78
  define( 'CARTFLOWS_CA_DIR', plugin_dir_path( CARTFLOWS_CA_FILE ) );
79
  define( 'CARTFLOWS_CA_URL', plugins_url( '/', CARTFLOWS_CA_FILE ) );
80
- define( 'CARTFLOWS_CA_VER', '1.1.3' );
81
  define( 'CARTFLOWS_CA_SLUG', 'cartflows_ca' );
82
 
83
  define( 'CARTFLOWS_CA_CART_ABANDONMENT_TABLE', 'cartflows_ca_cart_abandonment' );
77
  define( 'CARTFLOWS_CA_BASE', plugin_basename( CARTFLOWS_CA_FILE ) );
78
  define( 'CARTFLOWS_CA_DIR', plugin_dir_path( CARTFLOWS_CA_FILE ) );
79
  define( 'CARTFLOWS_CA_URL', plugins_url( '/', CARTFLOWS_CA_FILE ) );
80
+ define( 'CARTFLOWS_CA_VER', '1.1.4' );
81
  define( 'CARTFLOWS_CA_SLUG', 'cartflows_ca' );
82
 
83
  define( 'CARTFLOWS_CA_CART_ABANDONMENT_TABLE', 'cartflows_ca_cart_abandonment' );
classes/class-cartflows-ca-settings.php CHANGED
@@ -57,7 +57,7 @@ class Cartflows_Ca_Settings {
57
 
58
  add_settings_field(
59
  'wcf_ca_status',
60
- __( 'Enable Cart Abandonment Tracking', 'cartflows-ca' ),
61
  array( $this, 'wcf_ca_status_callback' ),
62
  WCF_CA_PAGE_NAME,
63
  WCF_CA_GENERAL_SETTINGS_SECTION,
@@ -73,7 +73,7 @@ class Cartflows_Ca_Settings {
73
  // Start: Settings for email templates.
74
  add_settings_section(
75
  WCF_CA_EMAIL_SETTINGS_SECTION,
76
- __( 'Email settings', 'cartflows-ca' ),
77
  array( $this, 'wcf_cart_abandonment_options_callback' ),
78
  WCF_CA_PAGE_NAME
79
  );
@@ -98,7 +98,7 @@ class Cartflows_Ca_Settings {
98
 
99
  add_settings_field(
100
  'wcf_ca_reply_email',
101
- __( 'Send Reply Emails to', 'cartflows-ca' ),
102
  array( $this, 'wcf_ca_reply_email_callback' ),
103
  WCF_CA_PAGE_NAME,
104
  WCF_CA_EMAIL_SETTINGS_SECTION,
@@ -129,7 +129,7 @@ class Cartflows_Ca_Settings {
129
  array( $this, 'wcf_ca_zapier_tracking_status_callback' ),
130
  WCF_CA_PAGE_NAME,
131
  WCF_CA_ZAPIER_SETTINGS_SECTION,
132
- array( __( 'Allows you to trigger webhooks automatically upon cart abandonment and recovery.', 'cartflows-ca' ) )
133
  );
134
 
135
  add_settings_field(
@@ -238,7 +238,7 @@ class Cartflows_Ca_Settings {
238
 
239
  add_settings_field(
240
  'wcf_ca_gdpr_status',
241
- __( 'Enable GDPR integration', 'cartflows-ca' ),
242
  array( $this, 'wcf_ca_gdpr_status_callback' ),
243
  WCF_CA_PAGE_NAME,
244
  WCF_CA_GDPR_SETTINGS_SECTION,
57
 
58
  add_settings_field(
59
  'wcf_ca_status',
60
+ __( 'Enable Tracking', 'cartflows-ca' ),
61
  array( $this, 'wcf_ca_status_callback' ),
62
  WCF_CA_PAGE_NAME,
63
  WCF_CA_GENERAL_SETTINGS_SECTION,
73
  // Start: Settings for email templates.
74
  add_settings_section(
75
  WCF_CA_EMAIL_SETTINGS_SECTION,
76
+ __( 'Email Settings', 'cartflows-ca' ),
77
  array( $this, 'wcf_cart_abandonment_options_callback' ),
78
  WCF_CA_PAGE_NAME
79
  );
98
 
99
  add_settings_field(
100
  'wcf_ca_reply_email',
101
+ __( '"Reply To" Address', 'cartflows-ca' ),
102
  array( $this, 'wcf_ca_reply_email_callback' ),
103
  WCF_CA_PAGE_NAME,
104
  WCF_CA_EMAIL_SETTINGS_SECTION,
129
  array( $this, 'wcf_ca_zapier_tracking_status_callback' ),
130
  WCF_CA_PAGE_NAME,
131
  WCF_CA_ZAPIER_SETTINGS_SECTION,
132
+ array( __( 'Allows you to trigger webhook automatically upon cart abandonment and recovery.', 'cartflows-ca' ) )
133
  );
134
 
135
  add_settings_field(
238
 
239
  add_settings_field(
240
  'wcf_ca_gdpr_status',
241
+ __( 'Enable GDPR Integration', 'cartflows-ca' ),
242
  array( $this, 'wcf_ca_gdpr_status_callback' ),
243
  WCF_CA_PAGE_NAME,
244
  WCF_CA_GDPR_SETTINGS_SECTION,
languages/cartflows-ca.pot CHANGED
@@ -2,10 +2,10 @@
2
  # This file is distributed under the same license as the WooCommerce Cart Abandonment Recovery package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WooCommerce Cart Abandonment Recovery 1.1.3\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://wordpress.org/support/plugin/woo-cart-abandonment-recovery\n"
8
- "POT-Creation-Date: 2019-06-27 10:59:22+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
@@ -45,7 +45,7 @@ msgid "Cart Abandonment Settings"
45
  msgstr ""
46
 
47
  #: classes/class-cartflows-ca-settings.php:60
48
- msgid "Enable Cart Abandonment Tracking"
49
  msgstr ""
50
 
51
  #: classes/class-cartflows-ca-settings.php:64
@@ -56,7 +56,7 @@ msgid ""
56
  msgstr ""
57
 
58
  #: classes/class-cartflows-ca-settings.php:76
59
- msgid "Email settings"
60
  msgstr ""
61
 
62
  #: classes/class-cartflows-ca-settings.php:83
@@ -68,7 +68,7 @@ msgid "\"From\" Address"
68
  msgstr ""
69
 
70
  #: classes/class-cartflows-ca-settings.php:101
71
- msgid "Send Reply Emails to"
72
  msgstr ""
73
 
74
  #: classes/class-cartflows-ca-settings.php:128
@@ -77,7 +77,7 @@ msgstr ""
77
 
78
  #: classes/class-cartflows-ca-settings.php:132
79
  msgid ""
80
- "Allows you to trigger webhooks automatically upon cart abandonment and "
81
  "recovery."
82
  msgstr ""
83
 
@@ -122,7 +122,7 @@ msgid "GDPR Settings"
122
  msgstr ""
123
 
124
  #: classes/class-cartflows-ca-settings.php:241
125
- msgid "Enable GDPR integration"
126
  msgstr ""
127
 
128
  #: classes/class-cartflows-ca-settings.php:245
@@ -160,14 +160,14 @@ msgid "Delete"
160
  msgstr ""
161
 
162
  #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:70
163
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1417
164
  msgid "Unsubscribe"
165
  msgstr ""
166
 
167
  #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:188
168
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1514
169
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1558
170
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:156
171
  msgid "Name"
172
  msgstr ""
173
 
@@ -176,7 +176,7 @@ msgid "Email"
176
  msgstr ""
177
 
178
  #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:190
179
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1580
180
  msgid "Cart Total"
181
  msgstr ""
182
 
@@ -205,7 +205,7 @@ msgid "You have successfully unsubscribed from our email list."
205
  msgstr ""
206
 
207
  #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:197
208
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:147
209
  msgid "Unsubscribed"
210
  msgstr ""
211
 
@@ -217,68 +217,68 @@ msgstr ""
217
  msgid "You won't receive further emails from us, thank you!"
218
  msgstr ""
219
 
220
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:748
221
  msgid "CartFlows says: This order was abandoned & subsequently recovered."
222
  msgstr ""
223
 
224
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:860
225
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:861
226
  msgid "Cart Abandonment"
227
  msgstr ""
228
 
229
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:894
230
  msgid "Items deleted: %d"
231
  msgstr ""
232
 
233
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:911
234
  msgid "User unsubscribed successfully!"
235
  msgstr ""
236
 
237
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1106
238
  msgid "Report"
239
  msgstr ""
240
 
241
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1122
242
- msgid "Emails"
243
  msgstr ""
244
 
245
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1138
246
  msgid "Settings"
247
  msgstr ""
248
 
249
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1387
250
  msgid "there"
251
  msgstr ""
252
 
253
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1513
254
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1557
255
  msgid "Item"
256
  msgstr ""
257
 
258
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1515
259
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1559
260
  msgid "Quantity"
261
  msgstr ""
262
 
263
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1516
264
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1560
265
  msgid "Price"
266
  msgstr ""
267
 
268
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1517
269
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1561
270
  msgid "Line Subtotal"
271
  msgstr ""
272
 
273
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1567
274
  msgid "Discount"
275
  msgstr ""
276
 
277
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1571
278
  msgid "Other"
279
  msgstr ""
280
 
281
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1576
282
  msgid "Shipping"
283
  msgstr ""
284
 
@@ -378,75 +378,81 @@ msgstr ""
378
  msgid " No Email Scheduled."
379
  msgstr ""
380
 
381
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:106
382
- msgid "The email has unsubscribed and won't be sent further."
 
 
 
 
383
  msgstr ""
384
 
385
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:109
386
  msgid "The email has been sent."
387
  msgstr ""
388
 
389
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:112
390
- msgid "Email is in the queue and will be sent at the scheduled time."
 
 
391
  msgstr ""
392
 
393
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:143
394
  msgid "User Address Details:"
395
  msgstr ""
396
 
397
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:155
398
  msgid "Billing Address"
399
  msgstr ""
400
 
401
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:159
402
  msgid "Email address"
403
  msgstr ""
404
 
405
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:164
406
  msgid "Phone"
407
  msgstr ""
408
 
409
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:169
410
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:189
411
  msgid "Address 1:"
412
  msgstr ""
413
 
414
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:172
415
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:192
416
  msgid "Address 2:"
417
  msgstr ""
418
 
419
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:175
420
  msgid "Country, City:"
421
  msgstr ""
422
 
423
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:178
424
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:198
425
  msgid "State:"
426
  msgstr ""
427
 
428
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:182
429
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:204
430
  msgid "Postcode:"
431
  msgstr ""
432
 
433
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:187
434
  msgid "Shipping Address"
435
  msgstr ""
436
 
437
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:195
438
  msgid "City:"
439
  msgstr ""
440
 
441
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:201
442
  msgid "Country:"
443
  msgstr ""
444
 
445
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:209
446
  msgid "Checkout Link"
447
  msgstr ""
448
 
449
- #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:224
450
  msgid "User Order Details:"
451
  msgstr ""
452
 
@@ -503,7 +509,7 @@ msgid "No Orders Found."
503
  msgstr ""
504
 
505
  #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-tabs.php:10
506
- msgid "Woocommerce Cart Abandonment Recovery "
507
  msgstr ""
508
 
509
  #. Plugin Name of the plugin/theme
2
  # This file is distributed under the same license as the WooCommerce Cart Abandonment Recovery package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: WooCommerce Cart Abandonment Recovery 1.1.4\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://wordpress.org/support/plugin/woo-cart-abandonment-recovery\n"
8
+ "POT-Creation-Date: 2019-07-09 08:57:03+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
45
  msgstr ""
46
 
47
  #: classes/class-cartflows-ca-settings.php:60
48
+ msgid "Enable Tracking"
49
  msgstr ""
50
 
51
  #: classes/class-cartflows-ca-settings.php:64
56
  msgstr ""
57
 
58
  #: classes/class-cartflows-ca-settings.php:76
59
+ msgid "Email Settings"
60
  msgstr ""
61
 
62
  #: classes/class-cartflows-ca-settings.php:83
68
  msgstr ""
69
 
70
  #: classes/class-cartflows-ca-settings.php:101
71
+ msgid "\"Reply To\" Address"
72
  msgstr ""
73
 
74
  #: classes/class-cartflows-ca-settings.php:128
77
 
78
  #: classes/class-cartflows-ca-settings.php:132
79
  msgid ""
80
+ "Allows you to trigger webhook automatically upon cart abandonment and "
81
  "recovery."
82
  msgstr ""
83
 
122
  msgstr ""
123
 
124
  #: classes/class-cartflows-ca-settings.php:241
125
+ msgid "Enable GDPR Integration"
126
  msgstr ""
127
 
128
  #: classes/class-cartflows-ca-settings.php:245
160
  msgstr ""
161
 
162
  #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:70
163
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1429
164
  msgid "Unsubscribe"
165
  msgstr ""
166
 
167
  #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:188
168
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1546
169
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1601
170
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:168
171
  msgid "Name"
172
  msgstr ""
173
 
176
  msgstr ""
177
 
178
  #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:190
179
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1623
180
  msgid "Cart Total"
181
  msgstr ""
182
 
205
  msgstr ""
206
 
207
  #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:197
208
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:159
209
  msgid "Unsubscribed"
210
  msgstr ""
211
 
217
  msgid "You won't receive further emails from us, thank you!"
218
  msgstr ""
219
 
220
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:759
221
  msgid "CartFlows says: This order was abandoned & subsequently recovered."
222
  msgstr ""
223
 
224
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:871
225
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:872
226
  msgid "Cart Abandonment"
227
  msgstr ""
228
 
229
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:905
230
  msgid "Items deleted: %d"
231
  msgstr ""
232
 
233
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:922
234
  msgid "User unsubscribed successfully!"
235
  msgstr ""
236
 
237
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1117
238
  msgid "Report"
239
  msgstr ""
240
 
241
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1133
242
+ msgid "Follow-Up Emails"
243
  msgstr ""
244
 
245
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1149
246
  msgid "Settings"
247
  msgstr ""
248
 
249
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1399
250
  msgid "there"
251
  msgstr ""
252
 
253
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1545
254
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1600
255
  msgid "Item"
256
  msgstr ""
257
 
258
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1547
259
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1602
260
  msgid "Quantity"
261
  msgstr ""
262
 
263
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1548
264
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1603
265
  msgid "Price"
266
  msgstr ""
267
 
268
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1549
269
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1604
270
  msgid "Line Subtotal"
271
  msgstr ""
272
 
273
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1610
274
  msgid "Discount"
275
  msgstr ""
276
 
277
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1614
278
  msgid "Other"
279
  msgstr ""
280
 
281
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1619
282
  msgid "Shipping"
283
  msgstr ""
284
 
378
  msgid " No Email Scheduled."
379
  msgstr ""
380
 
381
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:110
382
+ msgid "The email has been unsubscribed and won't be sent further."
383
+ msgstr ""
384
+
385
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:113
386
+ msgid "Email is in the queue and will be sent at the scheduled time."
387
  msgstr ""
388
 
389
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:118
390
  msgid "The email has been sent."
391
  msgstr ""
392
 
393
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:122
394
+ msgid ""
395
+ "The email has been unscheduled due to the complete order and won't be sent "
396
+ "further."
397
  msgstr ""
398
 
399
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:155
400
  msgid "User Address Details:"
401
  msgstr ""
402
 
403
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:167
404
  msgid "Billing Address"
405
  msgstr ""
406
 
407
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:171
408
  msgid "Email address"
409
  msgstr ""
410
 
411
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:176
412
  msgid "Phone"
413
  msgstr ""
414
 
415
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:181
416
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:201
417
  msgid "Address 1:"
418
  msgstr ""
419
 
420
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:184
421
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:204
422
  msgid "Address 2:"
423
  msgstr ""
424
 
425
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:187
426
  msgid "Country, City:"
427
  msgstr ""
428
 
429
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:190
430
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:210
431
  msgid "State:"
432
  msgstr ""
433
 
434
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:194
435
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:216
436
  msgid "Postcode:"
437
  msgstr ""
438
 
439
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:199
440
  msgid "Shipping Address"
441
  msgstr ""
442
 
443
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:207
444
  msgid "City:"
445
  msgstr ""
446
 
447
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:213
448
  msgid "Country:"
449
  msgstr ""
450
 
451
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:221
452
  msgid "Checkout Link"
453
  msgstr ""
454
 
455
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:236
456
  msgid "User Order Details:"
457
  msgstr ""
458
 
509
  msgstr ""
510
 
511
  #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-tabs.php:10
512
+ msgid "WooCommerce Cart Abandonment Recovery "
513
  msgstr ""
514
 
515
  #. Plugin Name of the plugin/theme
modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php CHANGED
@@ -717,6 +717,7 @@ class Cartflows_Ca_Cart_Abandonment {
717
  function delete_cart_abandonment_data( $order_id ) {
718
  global $wpdb;
719
  $cart_abandonment_table = $wpdb->prefix . CARTFLOWS_CA_CART_ABANDONMENT_TABLE;
 
720
 
721
  if ( isset( WC()->session ) ) {
722
  $session_id = WC()->session->get( 'wcf_session_id' );
@@ -724,6 +725,16 @@ class Cartflows_Ca_Cart_Abandonment {
724
  if ( isset( $session_id ) ) {
725
  $checkout_details = $this->get_checkout_details( $session_id );
726
 
 
 
 
 
 
 
 
 
 
 
727
  $has_mail_sent = count( $this->fetch_scheduled_emails( $session_id, true ) );
728
 
729
  if ( ! $has_mail_sent ) {
@@ -1119,7 +1130,7 @@ class Cartflows_Ca_Cart_Abandonment {
1119
  echo $active_email_templates;}
1120
  ?>
1121
  ">
1122
- <?php _e( 'Emails', 'cartflows-ca' ); ?>
1123
  </a>
1124
 
1125
  <?php
@@ -1355,7 +1366,8 @@ class Cartflows_Ca_Cart_Abandonment {
1355
  WC()->cart->add_to_cart( $random_product->ID );
1356
  }
1357
  }
1358
- $email_data->cart_total = WC()->cart->total + WC()->cart->get_cart_shipping_total();
 
1359
  $email_data->cart_contents = serialize( WC()->cart->get_cart() );
1360
  $email_data->time = current_time( WCF_CA_DATETIME_FORMAT );
1361
  return $email_data;
@@ -1419,7 +1431,10 @@ class Cartflows_Ca_Cart_Abandonment {
1419
  $body_email_preview = str_replace( '{{cart.checkout_url}}', $checkout_url, $body_email_preview );
1420
  $host = parse_url( get_site_url() );
1421
  $body_email_preview = str_replace( '{{site.url}}', $host['host'], $body_email_preview );
1422
- $body_email_preview = str_replace( '{{cart.product.names}}', $this->get_comma_separated_products( $email_data->cart_contents ), $body_email_preview );
 
 
 
1423
 
1424
  $admin_user = get_users(
1425
  array(
@@ -1471,7 +1486,13 @@ class Cartflows_Ca_Cart_Abandonment {
1471
  $index = 0;
1472
  foreach ( $cart_data as $key => $product ) {
1473
 
1474
- $cart_comma_string = $cart_comma_string . $product['data']->get_title();
 
 
 
 
 
 
1475
  if ( ( $cart_length - 2 ) === $index ) {
1476
  $cart_comma_string = $cart_comma_string . ' & ';
1477
  } elseif ( ( $cart_length - 1 ) !== $index ) {
@@ -1492,16 +1513,27 @@ class Cartflows_Ca_Cart_Abandonment {
1492
  */
1493
  function get_email_product_block( $cart_contents, $cart_total ) {
1494
 
1495
- $cart_items = unserialize( $cart_contents );
 
 
 
 
 
1496
  $currency_symbol = get_woocommerce_currency_symbol();
1497
  $tr = '';
1498
  $style = 'style="color: #636363; border: 1px solid #e5e5e5; "';
1499
 
1500
  foreach ( $cart_items as $cart_item ) {
1501
 
 
 
 
 
 
 
1502
  $tr = $tr . '<tr style="color: #636363; border: 1px solid #e5e5e5;" align="center">
1503
- <td ' . $style . '><img class="demo_img" width="42" height="42" src=" ' . esc_url( get_the_post_thumbnail_url( $cart_item['product_id'] ) ) . ' "/></td>
1504
- <td ' . $style . '>' . $cart_item['data']->get_title() . '</td>
1505
  <td ' . $style . '> ' . $cart_item['quantity'] . ' </td>
1506
  <td ' . $style . '>' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
1507
  <td ' . $style . ' >' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
@@ -1529,7 +1561,12 @@ class Cartflows_Ca_Cart_Abandonment {
1529
  */
1530
  function get_admin_product_block( $cart_contents, $cart_total ) {
1531
 
1532
- $cart_items = unserialize( $cart_contents );
 
 
 
 
 
1533
  $currency_symbol = get_woocommerce_currency_symbol();
1534
  $tr = '';
1535
  $total = 0;
@@ -1538,13 +1575,19 @@ class Cartflows_Ca_Cart_Abandonment {
1538
 
1539
  foreach ( $cart_items as $cart_item ) {
1540
 
 
 
 
 
 
 
1541
  $discount = number_format_i18n( $discount + ( $cart_item['line_subtotal'] - $cart_item['line_total'] ), 2 );
1542
  $total = number_format_i18n( $total + $cart_item['line_subtotal'], 2 );
1543
  $tax = number_format_i18n( $tax + $cart_item['line_tax'], 2 );
1544
 
1545
  $tr = $tr . '<tr align="center">
1546
- <td ><img class="demo_img" width="42" height="42" src=" ' . esc_url( get_the_post_thumbnail_url( $cart_item['product_id'] ) ) . ' "/></td>
1547
- <td >' . $cart_item['data']->get_title() . '</td>
1548
  <td > ' . $cart_item['quantity'] . ' </td>
1549
  <td >' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
1550
  <td >' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
717
  function delete_cart_abandonment_data( $order_id ) {
718
  global $wpdb;
719
  $cart_abandonment_table = $wpdb->prefix . CARTFLOWS_CA_CART_ABANDONMENT_TABLE;
720
+ $email_history_table = $wpdb->prefix . CARTFLOWS_CA_EMAIL_HISTORY_TABLE;
721
 
722
  if ( isset( WC()->session ) ) {
723
  $session_id = WC()->session->get( 'wcf_session_id' );
725
  if ( isset( $session_id ) ) {
726
  $checkout_details = $this->get_checkout_details( $session_id );
727
 
728
+ // Skip Future email sending..
729
+ $wpdb->update(
730
+ $email_history_table,
731
+ array( 'email_sent' => -1 ),
732
+ array(
733
+ 'ca_session_id' => $session_id,
734
+ 'email_sent' => 0,
735
+ )
736
+ );
737
+
738
  $has_mail_sent = count( $this->fetch_scheduled_emails( $session_id, true ) );
739
 
740
  if ( ! $has_mail_sent ) {
1130
  echo $active_email_templates;}
1131
  ?>
1132
  ">
1133
+ <?php _e( 'Follow-Up Emails', 'cartflows-ca' ); ?>
1134
  </a>
1135
 
1136
  <?php
1366
  WC()->cart->add_to_cart( $random_product->ID );
1367
  }
1368
  }
1369
+
1370
+ $email_data->cart_total = WC()->cart->total + floatval( WC()->cart->get_cart_shipping_total() );
1371
  $email_data->cart_contents = serialize( WC()->cart->get_cart() );
1372
  $email_data->time = current_time( WCF_CA_DATETIME_FORMAT );
1373
  return $email_data;
1431
  $body_email_preview = str_replace( '{{cart.checkout_url}}', $checkout_url, $body_email_preview );
1432
  $host = parse_url( get_site_url() );
1433
  $body_email_preview = str_replace( '{{site.url}}', $host['host'], $body_email_preview );
1434
+
1435
+ if ( false !== strpos( $body_email_preview, '{{cart.product.names}}' ) ) {
1436
+ $body_email_preview = str_replace( '{{cart.product.names}}', $this->get_comma_separated_products( $email_data->cart_contents ), $body_email_preview );
1437
+ }
1438
 
1439
  $admin_user = get_users(
1440
  array(
1486
  $index = 0;
1487
  foreach ( $cart_data as $key => $product ) {
1488
 
1489
+ if ( ! isset( $product['product_id'] ) ) {
1490
+ continue;
1491
+ }
1492
+
1493
+ $cart_product = wc_get_product( $product['product_id'] );
1494
+
1495
+ $cart_comma_string = $cart_comma_string . $cart_product->get_title();
1496
  if ( ( $cart_length - 2 ) === $index ) {
1497
  $cart_comma_string = $cart_comma_string . ' & ';
1498
  } elseif ( ( $cart_length - 1 ) !== $index ) {
1513
  */
1514
  function get_email_product_block( $cart_contents, $cart_total ) {
1515
 
1516
+ $cart_items = unserialize( $cart_contents );
1517
+
1518
+ if ( ! is_array( $cart_items ) || ! count( $cart_items ) ) {
1519
+ return;
1520
+ }
1521
+
1522
  $currency_symbol = get_woocommerce_currency_symbol();
1523
  $tr = '';
1524
  $style = 'style="color: #636363; border: 1px solid #e5e5e5; "';
1525
 
1526
  foreach ( $cart_items as $cart_item ) {
1527
 
1528
+ if ( isset( $cart_item['product_id'] ) && isset( $cart_item['quantity'] ) && isset( $cart_item['line_total'] ) ) {
1529
+ $product = wc_get_product( $cart_item['product_id'] );
1530
+ } else {
1531
+ continue;
1532
+ }
1533
+
1534
  $tr = $tr . '<tr style="color: #636363; border: 1px solid #e5e5e5;" align="center">
1535
+ <td ' . $style . '><img class="demo_img" width="42" height="42" src=" ' . esc_url( get_the_post_thumbnail_url( $product->get_id() ) ) . ' "/></td>
1536
+ <td ' . $style . '>' . $product->get_title() . '</td>
1537
  <td ' . $style . '> ' . $cart_item['quantity'] . ' </td>
1538
  <td ' . $style . '>' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
1539
  <td ' . $style . ' >' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
1561
  */
1562
  function get_admin_product_block( $cart_contents, $cart_total ) {
1563
 
1564
+ $cart_items = unserialize( $cart_contents );
1565
+
1566
+ if ( ! is_array( $cart_items ) || ! count( $cart_items ) ) {
1567
+ return;
1568
+ }
1569
+
1570
  $currency_symbol = get_woocommerce_currency_symbol();
1571
  $tr = '';
1572
  $total = 0;
1575
 
1576
  foreach ( $cart_items as $cart_item ) {
1577
 
1578
+ if ( isset( $cart_item['product_id'] ) && isset( $cart_item['quantity'] ) && isset( $cart_item['line_total'] ) && isset( $cart_item['line_subtotal'] ) ) {
1579
+ $product = wc_get_product( $cart_item['product_id'] );
1580
+ } else {
1581
+ continue;
1582
+ }
1583
+
1584
  $discount = number_format_i18n( $discount + ( $cart_item['line_subtotal'] - $cart_item['line_total'] ), 2 );
1585
  $total = number_format_i18n( $total + $cart_item['line_subtotal'], 2 );
1586
  $tax = number_format_i18n( $tax + $cart_item['line_tax'], 2 );
1587
 
1588
  $tr = $tr . '<tr align="center">
1589
+ <td ><img class="demo_img" width="42" height="42" src=" ' . esc_url( get_the_post_thumbnail_url( $product->get_id() ) ) . ' "/></td>
1590
+ <td >' . $product->get_title() . '</td>
1591
  <td > ' . $cart_item['quantity'] . ' </td>
1592
  <td >' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
1593
  <td >' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
modules/cart-abandonment/class-cartflows-ca-email-templates.php CHANGED
@@ -138,7 +138,7 @@ class Cartflows_Ca_Email_Templates {
138
  * Initialise all the constants
139
  */
140
  public function define_template_constants() {
141
- define( 'WCF_CA_PAGE_NAME', 'cartflows_abandoned_cart_tracking' );
142
 
143
  define( 'WCF_CA_GENERAL_SETTINGS_SECTION', 'cartflows_cart_abandonment_settings_section' );
144
  define( 'WCF_CA_EMAIL_SETTINGS_SECTION', 'cartflows_email_template_settings_section' );
138
  * Initialise all the constants
139
  */
140
  public function define_template_constants() {
141
+ define( 'WCF_CA_PAGE_NAME', 'woo-cart-abandonment-recovery' );
142
 
143
  define( 'WCF_CA_GENERAL_SETTINGS_SECTION', 'cartflows_cart_abandonment_settings_section' );
144
  define( 'WCF_CA_EMAIL_SETTINGS_SECTION', 'cartflows_email_template_settings_section' );
modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php CHANGED
@@ -101,17 +101,29 @@
101
  WCF_EMAIL_TEMPLATES_NONCE
102
  );
103
 
104
- if ( $details->unsubscribed && ! $scheduled_email->email_sent ) {
105
- $icon = '<span class="dashicons dashicons-dismiss" title="" ></span>';
106
- $title = __( 'The email has unsubscribed and won\'t be sent further.', 'cartflows-ca' );
107
- } elseif ( $scheduled_email->email_sent ) {
108
- $icon = '<span class="dashicons dashicons-yes wp-ui-text-highlight" ></span>';
109
- $title = __( 'The email has been sent.', 'cartflows-ca' );
110
- } else {
111
- $icon = '<span class="dashicons dashicons-no" ></span>';
112
- $title = __( 'Email is in the queue and will be sent at the scheduled time.', 'cartflows-ca' );
 
 
 
 
 
 
 
 
 
 
 
113
  }
114
 
 
115
  $scheduled_time = date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), strtotime( $scheduled_email->scheduled_time ) );
116
  ?>
117
 
101
  WCF_EMAIL_TEMPLATES_NONCE
102
  );
103
 
104
+
105
+
106
+ switch ( $scheduled_email->email_sent ) {
107
+ case 0:
108
+ if ( $details->unsubscribed ) {
109
+ $icon = '<span class="dashicons dashicons-minus"></span>';
110
+ $title = __( 'The email has been unsubscribed and won\'t be sent further.', 'cartflows-ca' );
111
+ } else {
112
+ $icon = '<span class="dashicons dashicons-no"></span>';
113
+ $title = __( 'Email is in the queue and will be sent at the scheduled time.', 'cartflows-ca' );
114
+ }
115
+ break;
116
+ case 1:
117
+ $icon = '<span class="dashicons dashicons-yes wp-ui-text-highlight" ></span>';
118
+ $title = __( 'The email has been sent.', 'cartflows-ca' );
119
+ break;
120
+ case -1:
121
+ $icon = '<span class="dashicons dashicons-dismiss wp-ui-text-highlight" ></span>';
122
+ $title = __( 'The email has been unscheduled due to the complete order and won\'t be sent further.', 'cartflows-ca' );
123
+ break;
124
  }
125
 
126
+
127
  $scheduled_time = date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), strtotime( $scheduled_email->scheduled_time ) );
128
  ?>
129
 
modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php CHANGED
@@ -132,7 +132,7 @@ if ( count( $wcf_list_table->items ) ) {
132
  <?php
133
  } else {
134
 
135
- echo "<div style='text-align: center;'> <strong> " . __( 'No Orders Found.', 'cartflows-ca' ) . '</strong> </div>';
136
 
137
  }
138
 
132
  <?php
133
  } else {
134
 
135
+ echo '<div> <strong> ' . __( 'No Orders Found.', 'cartflows-ca' ) . '</strong> </div>';
136
 
137
  }
138
 
modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-tabs.php CHANGED
@@ -7,7 +7,7 @@
7
 
8
  ?>
9
  <div class="wrap">
10
- <h1 id="wcf_cart_abandonment_tracking_table"><?php echo __( 'Woocommerce Cart Abandonment Recovery ', 'cartflows-ca' ); ?></h1>
11
  <?php
12
 
13
  $action = filter_input( INPUT_GET, 'action', FILTER_SANITIZE_STRING );
7
 
8
  ?>
9
  <div class="wrap">
10
+ <h1 id="wcf_cart_abandonment_tracking_table"><?php echo __( 'WooCommerce Cart Abandonment Recovery ', 'cartflows-ca' ); ?></h1>
11
  <?php
12
 
13
  $action = filter_input( INPUT_GET, 'action', FILTER_SANITIZE_STRING );
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.me/BrainstormForce
4
  Tags: woocommerce, cart abandonment, cart recovery
5
  Requires at least: 4.4
6
  Tested up to: 5.2
7
- Stable tag: 1.1.3
8
  Requires PHP: 5.6
9
  License: GPLv2 or later
10
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -29,6 +29,10 @@ Yes, of course. We have built it in a way that it will work with CartFlows as we
29
  == Screenshots ==
30
 
31
  == Changelog ==
 
 
 
 
32
  = Version 1.1.3 - Thursday, 27th June 2019
33
  * Improvement: Added checkout link for abandoned cart inside the admin section.
34
  * Fix: Added pagination for reports.
4
  Tags: woocommerce, cart abandonment, cart recovery
5
  Requires at least: 4.4
6
  Tested up to: 5.2
7
+ Stable tag: 1.1.4
8
  Requires PHP: 5.6
9
  License: GPLv2 or later
10
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
29
  == Screenshots ==
30
 
31
  == Changelog ==
32
+ = Version 1.1.4 - Tuesday, 9th July 2019
33
+ * Fix: Follow up emails were getting sent even after the completion of the order.
34
+ * Fix: Email template variable 'Abandoned Product Names' warning issue.
35
+
36
  = Version 1.1.3 - Thursday, 27th June 2019
37
  * Improvement: Added checkout link for abandoned cart inside the admin section.
38
  * Fix: Added pagination for reports.
woo-cart-abandonment-recovery.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WooCommerce Cart Abandonment Recovery
4
  * Plugin URI: https://cartflows.com/
5
  * Description: Recover your lost revenue. Capture email address of users on the checkout page and send follow up emails if they don't complete the purchase.
6
- * Version: 1.1.3
7
  * Author: CartFlows Inc
8
  * Author URI: https://cartflows.com/
9
  * Text Domain: cartflows-ca
3
  * Plugin Name: WooCommerce Cart Abandonment Recovery
4
  * Plugin URI: https://cartflows.com/
5
  * Description: Recover your lost revenue. Capture email address of users on the checkout page and send follow up emails if they don't complete the purchase.
6
+ * Version: 1.1.4
7
  * Author: CartFlows Inc
8
  * Author URI: https://cartflows.com/
9
  * Text Domain: cartflows-ca