WooCommerce Cart Abandonment Recovery - Version 1.2.16

Version Description

Download this release

Release Info

Developer cartflowswp
Plugin Icon 128x128 WooCommerce Cart Abandonment Recovery
Version 1.2.16
Comparing to
See all releases

Code changes from version 1.2.15 to 1.2.16

Files changed (31) hide show
  1. admin/assets/images/cartflows-email-logo.png +0 -0
  2. admin/assets/images/cartflows-logo-small.jpg +0 -0
  3. admin/assets/images/facebook2x.png +0 -0
  4. admin/assets/images/twitter2x.png +0 -0
  5. admin/assets/images/wcar-icon.png +0 -0
  6. admin/assets/images/youtube2x.png +0 -0
  7. admin/assets/js/admin-email-templates.js +10 -7
  8. admin/assets/js/admin-mce.js +5 -5
  9. admin/assets/js/admin-settings.js +56 -9
  10. changelog.txt +5 -0
  11. classes/class-cartflows-ca-admin-notices.php +46 -2
  12. classes/class-cartflows-ca-loader.php +3 -1
  13. classes/class-cartflows-ca-settings.php +89 -8
  14. classes/class-cartflows-ca-update.php +4 -0
  15. languages/woo-cart-abandonment-recovery.pot +190 -136
  16. modules/cart-abandonment/assets/js/cart-abandonment-tracking.js +9 -9
  17. modules/cart-abandonment/classes/class-cartflows-ca-database.php +1 -0
  18. modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php +36 -12
  19. modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php +59 -33
  20. modules/cart-abandonment/classes/class-cartflows-ca-module-loader.php +1 -0
  21. modules/weekly-email-report/class-cartflows-ca-admin-report-emails.php +185 -0
  22. modules/weekly-email-report/templates/email-body.php +94 -0
  23. modules/weekly-email-report/templates/email-bsf-product-block.php +58 -0
  24. modules/weekly-email-report/templates/email-cf-block.php +82 -0
  25. modules/weekly-email-report/templates/email-content-section.php +113 -0
  26. modules/weekly-email-report/templates/email-footer.php +83 -0
  27. modules/weekly-email-report/templates/email-header.php +75 -0
  28. modules/weekly-email-report/templates/email-recovery-stat.php +152 -0
  29. readme.txt +6 -1
  30. uninstall.php +2 -0
  31. woo-cart-abandonment-recovery.php +2 -2
admin/assets/images/cartflows-email-logo.png ADDED
Binary file
admin/assets/images/cartflows-logo-small.jpg DELETED
Binary file
admin/assets/images/facebook2x.png ADDED
Binary file
admin/assets/images/twitter2x.png ADDED
Binary file
admin/assets/images/wcar-icon.png ADDED
Binary file
admin/assets/images/youtube2x.png ADDED
Binary file
admin/assets/js/admin-email-templates.js CHANGED
@@ -1,4 +1,4 @@
1
- ( function( $ ) {
2
  EmailTemplatesAdmin = {
3
  init() {
4
  $( document ).on(
@@ -34,7 +34,7 @@
34
  $( document ).on(
35
  'click',
36
  '#wcf_override_global_coupon',
37
- function() {
38
  $( coupon_child_fields )
39
  .closest( 'tr' )
40
  .fadeToggle(
@@ -56,6 +56,8 @@
56
 
57
  const email_subject = $( '#wcf_email_subject' ).val();
58
  const email_send_to = $( '#wcf_send_test_email' ).val();
 
 
59
  const wp_nonce = $( '#_wpnonce' ).val();
60
 
61
  $( this ).next( 'div.error' ).remove();
@@ -77,6 +79,7 @@
77
  email_subject,
78
  email_body,
79
  email_send_to,
 
80
  action: 'wcf_ca_preview_email_send',
81
  security: wp_nonce,
82
  };
@@ -85,7 +88,7 @@
85
  .attr( 'disabled', true );
86
 
87
  // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
88
- $.post( ajaxurl, data, function( response ) {
89
  $( '#mail_response_msg' ).empty().fadeIn();
90
 
91
  if ( response.success ) {
@@ -126,7 +129,7 @@
126
  $( '#wcf_ca_delete_coupons' )
127
  .css( 'cursor', 'wait' )
128
  .attr( 'disabled', true );
129
- $.post( ajaxurl, data, function( response ) {
130
  $( '.wcf-ca-response-msg' ).empty().fadeIn();
131
  if ( response.success ) {
132
  $( '.wcf-ca-spinner' ).hide();
@@ -163,7 +166,7 @@
163
  state,
164
  security: wcf_ca_details.email_toggle_button_nonce,
165
  },
166
- function( response ) {
167
  $( '#wcf_activate_email_template' ).val(
168
  new_state === 'on' ? 1 : 0
169
  );
@@ -194,7 +197,7 @@
194
  },
195
  };
196
 
197
- $( function() {
198
  EmailTemplatesAdmin.init();
199
  } );
200
- }( jQuery ) );
1
+ ( function ( $ ) {
2
  EmailTemplatesAdmin = {
3
  init() {
4
  $( document ).on(
34
  $( document ).on(
35
  'click',
36
  '#wcf_override_global_coupon',
37
+ function () {
38
  $( coupon_child_fields )
39
  .closest( 'tr' )
40
  .fadeToggle(
56
 
57
  const email_subject = $( '#wcf_email_subject' ).val();
58
  const email_send_to = $( '#wcf_send_test_email' ).val();
59
+ const email_template_id = document.getElementsByName( 'id' )[ 0 ]
60
+ .value;
61
  const wp_nonce = $( '#_wpnonce' ).val();
62
 
63
  $( this ).next( 'div.error' ).remove();
79
  email_subject,
80
  email_body,
81
  email_send_to,
82
+ email_template_id,
83
  action: 'wcf_ca_preview_email_send',
84
  security: wp_nonce,
85
  };
88
  .attr( 'disabled', true );
89
 
90
  // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
91
+ $.post( ajaxurl, data, function ( response ) {
92
  $( '#mail_response_msg' ).empty().fadeIn();
93
 
94
  if ( response.success ) {
129
  $( '#wcf_ca_delete_coupons' )
130
  .css( 'cursor', 'wait' )
131
  .attr( 'disabled', true );
132
+ $.post( ajaxurl, data, function ( response ) {
133
  $( '.wcf-ca-response-msg' ).empty().fadeIn();
134
  if ( response.success ) {
135
  $( '.wcf-ca-spinner' ).hide();
166
  state,
167
  security: wcf_ca_details.email_toggle_button_nonce,
168
  },
169
+ function ( response ) {
170
  $( '#wcf_activate_email_template' ).val(
171
  new_state === 'on' ? 1 : 0
172
  );
197
  },
198
  };
199
 
200
+ $( function () {
201
  EmailTemplatesAdmin.init();
202
  } );
203
+ } )( jQuery );
admin/assets/js/admin-mce.js CHANGED
@@ -1,6 +1,6 @@
1
- ( function( $ ) {
2
- $( document ).ready( function() {
3
- tinymce.PluginManager.add( 'cartflows_ac', function( editor ) {
4
  editor.addButton( 'cartflows_ac', {
5
  type: 'menubutton',
6
  text: 'WCAR Fields',
@@ -90,10 +90,10 @@
90
  editor.insertContent( this.value() );
91
  },
92
  },
93
- ].sort( function( a, b ) {
94
  return a.text.localeCompare( b.text );
95
  } ),
96
  } );
97
  } );
98
  } );
99
- }( jQuery ) );
1
+ ( function ( $ ) {
2
+ $( document ).ready( function () {
3
+ tinymce.PluginManager.add( 'cartflows_ac', function ( editor ) {
4
  editor.addButton( 'cartflows_ac', {
5
  type: 'menubutton',
6
  text: 'WCAR Fields',
90
  editor.insertContent( this.value() );
91
  },
92
  },
93
+ ].sort( function ( a, b ) {
94
  return a.text.localeCompare( b.text );
95
  } ),
96
  } );
97
  } );
98
  } );
99
+ } )( jQuery );
admin/assets/js/admin-settings.js CHANGED
@@ -1,4 +1,4 @@
1
- ( function( $ ) {
2
  CartAbandonmentSettings = {
3
  init() {
4
  $( '#wcf_ca_custom_filter_from' )
@@ -31,7 +31,7 @@
31
  .attr( 'readonly', 'readonly' )
32
  .css( 'background', 'white' );
33
 
34
- $( '#wcf_ca_custom_filter' ).on( 'click', function() {
35
  const from = $( '#wcf_ca_custom_filter_from' ).val().trim();
36
  const to = $( '#wcf_ca_custom_filter_to' ).val().trim();
37
  let url = window.location.search;
@@ -45,7 +45,7 @@
45
  window.location.href = url;
46
  } );
47
 
48
- $( '#wcf_search_id_submit' ).on( 'click', function() {
49
  const search = $( '#wcf_search_id_search_input' ).val().trim();
50
  window.location.href =
51
  window.location.search + '&search_term=' + search;
@@ -81,7 +81,7 @@
81
  .show();
82
  }
83
 
84
- $( '#wcf_ca_coupon_code_status' ).on( 'click', function() {
85
  if ( ! $( '#wcf_ca_coupon_code_status:checked' ).length ) {
86
  $(
87
  '#wcf_ca_discount_type, #wcf_ca_coupon_amount, #wcf_ca_coupon_expiry'
@@ -97,7 +97,7 @@
97
  }
98
  } );
99
 
100
- $( '#wcf_ca_gdpr_status' ).on( 'click', function() {
101
  if ( ! $( '#wcf_ca_gdpr_status:checked' ).length ) {
102
  $( '#wcf_ca_gdpr_message' ).closest( 'tr' ).fadeOut();
103
  } else {
@@ -105,7 +105,7 @@
105
  }
106
  } );
107
 
108
- $( '#wcf_ca_zapier_tracking_status' ).on( 'click', function() {
109
  if ( ! $( '#wcf_ca_zapier_tracking_status:checked' ).length ) {
110
  $(
111
  '#wcf_ca_zapier_cart_abandoned_webhook, #wcf_ca_coupon_code_status'
@@ -137,6 +137,27 @@
137
  .fadeOut();
138
  }
139
  } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  },
141
  };
142
 
@@ -241,7 +262,7 @@
241
  init() {
242
  $( '.wcf-ca-report-table-row .wcf-ca-icon-row' ).on(
243
  'hover',
244
- function() {
245
  $( this )
246
  .find( '.wcf-ca-tooltip-text' )
247
  .toggleClass( 'display_tool_tip' );
@@ -250,9 +271,35 @@
250
  },
251
  };
252
 
253
- $( function() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
254
  CartAbandonmentSettings.init();
255
  ZapierSettings.init();
256
  ToolTipHover.init();
 
257
  } );
258
- }( jQuery ) );
1
+ ( function ( $ ) {
2
  CartAbandonmentSettings = {
3
  init() {
4
  $( '#wcf_ca_custom_filter_from' )
31
  .attr( 'readonly', 'readonly' )
32
  .css( 'background', 'white' );
33
 
34
+ $( '#wcf_ca_custom_filter' ).on( 'click', function () {
35
  const from = $( '#wcf_ca_custom_filter_from' ).val().trim();
36
  const to = $( '#wcf_ca_custom_filter_to' ).val().trim();
37
  let url = window.location.search;
45
  window.location.href = url;
46
  } );
47
 
48
+ $( '#wcf_search_id_submit' ).on( 'click', function () {
49
  const search = $( '#wcf_search_id_search_input' ).val().trim();
50
  window.location.href =
51
  window.location.search + '&search_term=' + search;
81
  .show();
82
  }
83
 
84
+ $( '#wcf_ca_coupon_code_status' ).on( 'click', function () {
85
  if ( ! $( '#wcf_ca_coupon_code_status:checked' ).length ) {
86
  $(
87
  '#wcf_ca_discount_type, #wcf_ca_coupon_amount, #wcf_ca_coupon_expiry'
97
  }
98
  } );
99
 
100
+ $( '#wcf_ca_gdpr_status' ).on( 'click', function () {
101
  if ( ! $( '#wcf_ca_gdpr_status:checked' ).length ) {
102
  $( '#wcf_ca_gdpr_message' ).closest( 'tr' ).fadeOut();
103
  } else {
105
  }
106
  } );
107
 
108
+ $( '#wcf_ca_zapier_tracking_status' ).on( 'click', function () {
109
  if ( ! $( '#wcf_ca_zapier_tracking_status:checked' ).length ) {
110
  $(
111
  '#wcf_ca_zapier_cart_abandoned_webhook, #wcf_ca_coupon_code_status'
137
  .fadeOut();
138
  }
139
  } );
140
+
141
+ if (
142
+ ! $( '#wcf_ca_send_recovery_report_emails_to_admin:checked' )
143
+ .length
144
+ ) {
145
+ $( '#wcf_ca_admin_email' ).closest( 'tr' ).hide();
146
+ }
147
+ $( '#wcf_ca_send_recovery_report_emails_to_admin' ).on(
148
+ 'click',
149
+ function () {
150
+ if (
151
+ ! $(
152
+ '#wcf_ca_send_recovery_report_emails_to_admin:checked'
153
+ ).length
154
+ ) {
155
+ $( '#wcf_ca_admin_email' ).closest( 'tr' ).fadeOut();
156
+ } else {
157
+ $( '#wcf_ca_admin_email' ).closest( 'tr' ).fadeIn();
158
+ }
159
+ }
160
+ );
161
  },
162
  };
163
 
262
  init() {
263
  $( '.wcf-ca-report-table-row .wcf-ca-icon-row' ).on(
264
  'hover',
265
+ function () {
266
  $( this )
267
  .find( '.wcf-ca-tooltip-text' )
268
  .toggleClass( 'display_tool_tip' );
271
  },
272
  };
273
 
274
+ DisableAdminNotices = {
275
+ init() {
276
+ $( document ).on(
277
+ 'click',
278
+ '.weekly-report-email-notice.wcar-dismissible-notice .notice-dismiss',
279
+ DisableAdminNotices.disable_weekly_report_email_admin_notice
280
+ );
281
+ },
282
+
283
+ disable_weekly_report_email_admin_notice( event ) {
284
+ event.preventDefault();
285
+ $.ajax( {
286
+ url: ajaxurl,
287
+ type: 'POST',
288
+ data: {
289
+ action: 'wcar_disable_weekly_report_email_notice',
290
+ security: wcf_ca_details.weekly_report_email_notice_nonce,
291
+ },
292
+ } )
293
+ .done( function () {} )
294
+ .fail( function () {} )
295
+ .always( function () {} );
296
+ },
297
+ };
298
+
299
+ $( function () {
300
  CartAbandonmentSettings.init();
301
  ZapierSettings.init();
302
  ToolTipHover.init();
303
+ DisableAdminNotices.init();
304
  } );
305
+ } )( jQuery );
changelog.txt CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  Version 1.2.15 - Thursday, 21st April 2022
2
  - Improvement: Handled WordPress database error while creating tables on plugin activation.
3
 
1
+ Version 1.2.16 - Tuesday, 17th May 2022
2
+ - New: Introduced weekly order recovery reports via email.
3
+ - New: Added an option to send the recovery emails in WooCommerce email format.
4
+ - Improvement: Updated the default unsubscribe text from "Unsubscribe" to "Don't remind me again".
5
+
6
  Version 1.2.15 - Thursday, 21st April 2022
7
  - Improvement: Handled WordPress database error while creating tables on plugin activation.
8
 
classes/class-cartflows-ca-admin-notices.php CHANGED
@@ -42,6 +42,10 @@ class Cartflows_Ca_Admin_Notices {
42
  public function __construct() {
43
 
44
  add_action( 'admin_init', array( $this, 'show_admin_notices' ) );
 
 
 
 
45
  }
46
 
47
  /**
@@ -49,7 +53,7 @@ class Cartflows_Ca_Admin_Notices {
49
  */
50
  public function show_admin_notices() {
51
 
52
- $image_path = esc_url( CARTFLOWS_CA_URL . 'admin/assets/images/cartflows-logo-small.jpg' );
53
 
54
  Astra_Notices::add_notice(
55
  array(
@@ -60,7 +64,7 @@ class Cartflows_Ca_Admin_Notices {
60
  /* translators: %1$s white label plugin name and %2$s deactivation link */
61
  'message' => sprintf(
62
  '<div class="notice-image" style="display: flex;">
63
- <img src="%1$s" class="custom-logo" alt="CartFlows Icon" itemprop="logo" style="max-width: 90px; border-radius: 50px;"></div>
64
  <div class="notice-content">
65
  <div class="notice-heading">
66
  %2$s
@@ -94,6 +98,46 @@ class Cartflows_Ca_Admin_Notices {
94
  )
95
  );
96
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  }
98
 
99
  Cartflows_Ca_Admin_Notices::get_instance();
42
  public function __construct() {
43
 
44
  add_action( 'admin_init', array( $this, 'show_admin_notices' ) );
45
+
46
+ add_action( 'admin_notices', array( $this, 'show_weekly_report_email_settings_notice' ) );
47
+
48
+ add_action( 'wp_ajax_wcar_disable_weekly_report_email_notice', array( $this, 'disable_weekly_report_email_notice' ) );
49
  }
50
 
51
  /**
53
  */
54
  public function show_admin_notices() {
55
 
56
+ $image_path = esc_url( CARTFLOWS_CA_URL . 'admin/assets/images/wcar-icon.png' );
57
 
58
  Astra_Notices::add_notice(
59
  array(
64
  /* translators: %1$s white label plugin name and %2$s deactivation link */
65
  'message' => sprintf(
66
  '<div class="notice-image" style="display: flex;">
67
+ <img src="%1$s" class="custom-logo" alt="CartFlows Icon" itemprop="logo" style="max-width: 90px;"></div>
68
  <div class="notice-content">
69
  <div class="notice-heading">
70
  %2$s
98
  )
99
  );
100
  }
101
+
102
+ /**
103
+ * Show the weekly email Notice
104
+ *
105
+ * @return void
106
+ */
107
+ public function show_weekly_report_email_settings_notice() {
108
+
109
+ $is_show_notice = get_option( 'wcf_ca_show_weekly_report_email_notice', 'no' );
110
+
111
+ if ( 'yes' === $is_show_notice && current_user_can( 'manage_options' ) ) {
112
+
113
+ $setting_url = admin_url( 'admin.php?page=woo-cart-abandonment-recovery&action=settings#wcf-ca-weekly-report-email-settings' );
114
+
115
+ /* translators: %1$s Software Title, %2$s Plugin, %3$s Anchor opening tag, %4$s Anchor closing tag, %5$s Software Title. */
116
+ $message = sprintf( __( '%1$sWooCommerce Cart Abandonment recovery:%2$s We just introduced an awesome new feature, weekly order recovery reports via email. Now you can see how many orders we are recovering for your store each week, without having to log into your website. You can set the email address for these email from %3$shere.%4$s', 'woo-cart-abandonment-recovery' ), '<strong>', '</strong>', '<a class="wcf-ca-redirect-to-settings" target="_blank" href=" ' . esc_url( $setting_url ) . ' ">', '</a>' );
117
+ $output = '<div class="weekly-report-email-notice wcar-dismissible-notice notice notice-info is-dismissible">';
118
+ $output .= '<p>' . $message . '</p>';
119
+ $output .= '</div>';
120
+
121
+ echo wp_kses_post( $output );
122
+ }
123
+
124
+ }
125
+
126
+ /**
127
+ * Disable the weekly email Notice
128
+ *
129
+ * @return void
130
+ */
131
+ public function disable_weekly_report_email_notice() {
132
+
133
+ if ( ! current_user_can( 'manage_options' ) ) {
134
+ return;
135
+ }
136
+
137
+ check_ajax_referer( 'wcar_disable_weekly_report_email_notice', 'security' );
138
+ delete_option( 'wcf_ca_show_weekly_report_email_notice' );
139
+ wp_send_json_success();
140
+ }
141
  }
142
 
143
  Cartflows_Ca_Admin_Notices::get_instance();
classes/class-cartflows-ca-loader.php CHANGED
@@ -81,7 +81,7 @@ if ( ! class_exists( 'CARTFLOWS_CA_Loader' ) ) {
81
  define( 'CARTFLOWS_CA_BASE', plugin_basename( CARTFLOWS_CA_FILE ) );
82
  define( 'CARTFLOWS_CA_DIR', plugin_dir_path( CARTFLOWS_CA_FILE ) );
83
  define( 'CARTFLOWS_CA_URL', plugins_url( '/', CARTFLOWS_CA_FILE ) );
84
- define( 'CARTFLOWS_CA_VER', '1.2.15' );
85
 
86
  define( 'CARTFLOWS_CA_SLUG', 'cartflows_ca' );
87
 
@@ -331,6 +331,8 @@ if ( ! class_exists( 'CARTFLOWS_CA_Loader' ) ) {
331
  /* Cart abandonment templates class */
332
  include_once CARTFLOWS_CA_DIR . 'modules/cart-abandonment/classes/class-cartflows-ca-module-loader.php';
333
 
 
 
334
  }
335
 
336
 
81
  define( 'CARTFLOWS_CA_BASE', plugin_basename( CARTFLOWS_CA_FILE ) );
82
  define( 'CARTFLOWS_CA_DIR', plugin_dir_path( CARTFLOWS_CA_FILE ) );
83
  define( 'CARTFLOWS_CA_URL', plugins_url( '/', CARTFLOWS_CA_FILE ) );
84
+ define( 'CARTFLOWS_CA_VER', '1.2.16' );
85
 
86
  define( 'CARTFLOWS_CA_SLUG', 'cartflows_ca' );
87
 
331
  /* Cart abandonment templates class */
332
  include_once CARTFLOWS_CA_DIR . 'modules/cart-abandonment/classes/class-cartflows-ca-module-loader.php';
333
 
334
+ include_once CARTFLOWS_CA_DIR . 'modules/weekly-email-report/class-cartflows-ca-admin-report-emails.php';
335
+
336
  }
337
 
338
 
classes/class-cartflows-ca-settings.php CHANGED
@@ -55,7 +55,8 @@ class Cartflows_Ca_Settings {
55
  // Start: Settings for cart abandonment.
56
  add_settings_section(
57
  WCF_CA_GENERAL_SETTINGS_SECTION,
58
- __( 'Cart Abandonment Settings', 'woo-cart-abandonment-recovery' ),
 
59
  array( $this, 'wcf_cart_abandonment_options_callback' ),
60
  WCF_CA_PAGE_NAME
61
  );
@@ -149,7 +150,8 @@ class Cartflows_Ca_Settings {
149
 
150
  add_settings_section(
151
  WCF_CA_COUPONS_SETTINGS_SECTION,
152
- __( 'Coupons Settings', 'woo-cart-abandonment-recovery' ),
 
153
  array( $this, 'wcf_cart_abandonment_options_callback' ),
154
  WCF_CA_PAGE_NAME
155
  );
@@ -186,7 +188,8 @@ class Cartflows_Ca_Settings {
186
  // Start: Settings for email templates.
187
  add_settings_section(
188
  WCF_CA_EMAIL_SETTINGS_SECTION,
189
- __( 'Email Settings', 'woo-cart-abandonment-recovery' ),
 
190
  array( $this, 'wcf_cart_abandonment_options_callback' ),
191
  WCF_CA_PAGE_NAME
192
  );
@@ -235,6 +238,44 @@ class Cartflows_Ca_Settings {
235
  array( $this, 'wcf_ca_reply_email_validation' )
236
  );
237
  // End: Settings for email templates.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
238
  // Start: Settings for coupon code.
239
  add_settings_field(
240
  'wcf_ca_zapier_tracking_status',
@@ -266,7 +307,8 @@ class Cartflows_Ca_Settings {
266
 
267
  add_settings_section(
268
  WCF_CA_ZAPIER_SETTINGS_SECTION,
269
- __( 'Coupon Code Settings', 'woo-cart-abandonment-recovery' ),
 
270
  array( $this, 'wcf_cart_abandonment_options_callback' ),
271
  WCF_CA_PAGE_NAME
272
  );
@@ -335,7 +377,8 @@ class Cartflows_Ca_Settings {
335
  // Start: Settings for Zapier.
336
  add_settings_section(
337
  WCF_CA_ZAPIER_SETTINGS_SECTION,
338
- __( 'Webhook Settings', 'woo-cart-abandonment-recovery' ),
 
339
  array( $this, 'wcf_cart_abandonment_options_callback' ),
340
  WCF_CA_PAGE_NAME
341
  );
@@ -344,7 +387,8 @@ class Cartflows_Ca_Settings {
344
  // Start: GDPR Settings.
345
  add_settings_section(
346
  WCF_CA_GDPR_SETTINGS_SECTION,
347
- __( 'GDPR Settings', 'woo-cart-abandonment-recovery' ),
 
348
  array( $this, 'wcf_cart_abandonment_options_callback' ),
349
  WCF_CA_PAGE_NAME
350
  );
@@ -381,7 +425,8 @@ class Cartflows_Ca_Settings {
381
 
382
  add_settings_section(
383
  WCF_CA_PLUGIN_SETTINGS_SECTION,
384
- __( 'Plugin Settings', 'woo-cart-abandonment-recovery' ),
 
385
  array( $this, 'wcf_cart_abandonment_options_callback' ),
386
  WCF_CA_PAGE_NAME
387
  );
@@ -400,6 +445,42 @@ class Cartflows_Ca_Settings {
400
 
401
  }
402
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
403
  /**
404
  * Callback for add utm param.
405
  *
@@ -674,7 +755,7 @@ class Cartflows_Ca_Settings {
674
  <?php
675
  foreach ( $roles_names_array as $role_name ) {
676
  ?>
677
- <input type="checkbox" name="wcf_ca_ignore_users[]"
678
  <?php
679
  if ( ! empty( $wcf_ca_ignore_users ) ) {
680
  foreach ( $wcf_ca_ignore_users as $user ) {
55
  // Start: Settings for cart abandonment.
56
  add_settings_section(
57
  WCF_CA_GENERAL_SETTINGS_SECTION,
58
+ /* translators: %1$s: html start, %2$s: html end*/
59
+ sprintf( __( '%1$sCart Abandonment Settings%2$s', 'woo-cart-abandonment-recovery' ), '<span class="wcf-ca-tracking-settings">', '</span>' ),
60
  array( $this, 'wcf_cart_abandonment_options_callback' ),
61
  WCF_CA_PAGE_NAME
62
  );
150
 
151
  add_settings_section(
152
  WCF_CA_COUPONS_SETTINGS_SECTION,
153
+ /* translators: %1$s: html start, %2$s: html end*/
154
+ sprintf( __( '%1$sCoupons Settings%2$s', 'woo-cart-abandonment-recovery' ), '<span class="wcf-ca-coupon-settings">', '</span>' ),
155
  array( $this, 'wcf_cart_abandonment_options_callback' ),
156
  WCF_CA_PAGE_NAME
157
  );
188
  // Start: Settings for email templates.
189
  add_settings_section(
190
  WCF_CA_EMAIL_SETTINGS_SECTION,
191
+ /* translators: %1$s: html start, %2$s: html end*/
192
+ sprintf( __( '%1$sEmail Settings%2$s', 'woo-cart-abandonment-recovery' ), '<span class="wcf-ca-email-settings">', '</span>' ),
193
  array( $this, 'wcf_cart_abandonment_options_callback' ),
194
  WCF_CA_PAGE_NAME
195
  );
238
  array( $this, 'wcf_ca_reply_email_validation' )
239
  );
240
  // End: Settings for email templates.
241
+ // Start: Settings for recovery report email templates.
242
+ add_settings_section(
243
+ WCF_CA_RECOVERY_EMAIL_SETTINGS_SECTION,
244
+ /* translators: %1$s: html start, %2$s: html end*/
245
+ sprintf( __( '%1$sRecovery Report Emails%2$s', 'woo-cart-abandonment-recovery' ), '<span id="wcf-ca-weekly-report-email-settings">', '<span/>' ),
246
+ array( $this, 'wcf_cart_abandonment_options_callback' ),
247
+ WCF_CA_PAGE_NAME
248
+ );
249
+
250
+ add_settings_field(
251
+ 'wcf_ca_send_recovery_report_emails_to_admin',
252
+ __( 'Send recovery report emails', 'woo-cart-abandonment-recovery' ),
253
+ array( $this, 'send_recovery_report_emails_to_admin' ),
254
+ WCF_CA_PAGE_NAME,
255
+ WCF_CA_RECOVERY_EMAIL_SETTINGS_SECTION,
256
+ array( __( 'Enable sending recovery report emails.', 'woo-cart-abandonment-recovery' ) )
257
+ );
258
+
259
+ add_settings_field(
260
+ 'wcf_ca_admin_email',
261
+ __( 'Email address', 'woo-cart-abandonment-recovery' ),
262
+ array( $this, 'admin_email_callback' ),
263
+ WCF_CA_PAGE_NAME,
264
+ WCF_CA_RECOVERY_EMAIL_SETTINGS_SECTION,
265
+ array( __( 'Email to send recovery report emails.', 'woo-cart-abandonment-recovery' ) )
266
+ );
267
+
268
+ register_setting(
269
+ WCF_CA_SETTINGS_OPTION_GROUP,
270
+ 'wcf_ca_send_recovery_report_emails_to_admin'
271
+ );
272
+
273
+ register_setting(
274
+ WCF_CA_SETTINGS_OPTION_GROUP,
275
+ 'wcf_ca_admin_email',
276
+ array( $this, 'wcf_ca_from_email_validation' )
277
+ );
278
+ // End: Settings for recovery report email templates.
279
  // Start: Settings for coupon code.
280
  add_settings_field(
281
  'wcf_ca_zapier_tracking_status',
307
 
308
  add_settings_section(
309
  WCF_CA_ZAPIER_SETTINGS_SECTION,
310
+ /* translators: %1$s: html start, %2$s: html end*/
311
+ sprintf( __( '%1$sCoupon Code Settings%2$s', 'woo-cart-abandonment-recovery' ), '<span class="wcf-ca-webhook-coupon-settings">', '</span>' ),
312
  array( $this, 'wcf_cart_abandonment_options_callback' ),
313
  WCF_CA_PAGE_NAME
314
  );
377
  // Start: Settings for Zapier.
378
  add_settings_section(
379
  WCF_CA_ZAPIER_SETTINGS_SECTION,
380
+ /* translators: %1$s: html start, %2$s: html end*/
381
+ sprintf( __( '%1$sWebhook Settings%2$s', 'woo-cart-abandonment-recovery' ), '<span class="wcf-ca-webhook-settings">', '</span>' ),
382
  array( $this, 'wcf_cart_abandonment_options_callback' ),
383
  WCF_CA_PAGE_NAME
384
  );
387
  // Start: GDPR Settings.
388
  add_settings_section(
389
  WCF_CA_GDPR_SETTINGS_SECTION,
390
+ /* translators: %1$s: html start, %2$s: html end*/
391
+ sprintf( __( '%1$sGDPR Settings%2$s', 'woo-cart-abandonment-recovery' ), '<span class="wcf-ca-gdpr-settings">', '</span>' ),
392
  array( $this, 'wcf_cart_abandonment_options_callback' ),
393
  WCF_CA_PAGE_NAME
394
  );
425
 
426
  add_settings_section(
427
  WCF_CA_PLUGIN_SETTINGS_SECTION,
428
+ /* translators: %1$s: html start, %2$s: html end*/
429
+ sprintf( __( '%1$sPlugin Settings%2$s', 'woo-cart-abandonment-recovery' ), '<span class="wcf-ca-plugin-settings">', '</span>' ),
430
  array( $this, 'wcf_cart_abandonment_options_callback' ),
431
  WCF_CA_PAGE_NAME
432
  );
445
 
446
  }
447
 
448
+ /**
449
+ * Callback for send recovery report email to admin.
450
+ *
451
+ * @param array $args args.
452
+ * @since 1.1.5
453
+ */
454
+ public function send_recovery_report_emails_to_admin( $args ) {
455
+ $email_admin_on_recovery = get_option( 'wcf_ca_send_recovery_report_emails_to_admin', 'on' );
456
+
457
+ $html = '';
458
+ printf(
459
+ '<input type="checkbox" id="wcf_ca_send_recovery_report_emails_to_admin" name="wcf_ca_send_recovery_report_emails_to_admin" value="on"
460
+ ' . checked( 'on', $email_admin_on_recovery, false ) . ' />'
461
+ );
462
+ $html .= '<label for="wcf_ca_send_recovery_report_emails_to_admin"> ' . $args[0] . '</label>';
463
+ echo wp_kses_post( $html );
464
+ }
465
+
466
+ /**
467
+ * Callback for send recovery report email to admin.
468
+ *
469
+ * @param array $args args.
470
+ * @since 1.1.5
471
+ */
472
+ public function admin_email_callback( $args ) {
473
+ $wcf_ca_admin_email = get_option( 'wcf_ca_admin_email', get_option( 'admin_email' ) );
474
+
475
+ $html = '';
476
+ printf(
477
+ '<input class="wcf-ca-trigger-input wcf-ca-recovery-email-inputs" type="text" id="wcf_ca_admin_email" name="wcf_ca_admin_email" value="%s" />',
478
+ isset( $wcf_ca_admin_email ) ? esc_attr( $wcf_ca_admin_email ) : ''
479
+ );
480
+ $html = '<label for="wcf_ca_admin_email"> ' . $args[0] . '</label>';
481
+ echo wp_kses_post( $html );
482
+ }
483
+
484
  /**
485
  * Callback for add utm param.
486
  *
755
  <?php
756
  foreach ( $roles_names_array as $role_name ) {
757
  ?>
758
+ <input type="checkbox" name="wcf_ca_ignore_users[]"
759
  <?php
760
  if ( ! empty( $wcf_ca_ignore_users ) ) {
761
  foreach ( $wcf_ca_ignore_users as $user ) {
classes/class-cartflows-ca-update.php CHANGED
@@ -79,6 +79,10 @@ if ( ! class_exists( 'Cartflows_Ca_Update' ) ) :
79
  return;
80
  }
81
 
 
 
 
 
82
  // Update auto saved version number.
83
  update_option( 'wcf_ca_version', CARTFLOWS_CA_VER );
84
 
79
  return;
80
  }
81
 
82
+ if ( version_compare( $saved_version, '1.2.16', '<' ) ) {
83
+ update_option( 'wcf_ca_show_weekly_report_email_notice', 'yes' );
84
+ }
85
+
86
  // Update auto saved version number.
87
  update_option( 'wcf_ca_version', CARTFLOWS_CA_VER );
88
 
languages/woo-cart-abandonment-recovery.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the WooCommerce Cart Abandonment Recovery plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WooCommerce Cart Abandonment Recovery 1.2.15\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woo-cart-abandonment-recovery\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2022-04-20T09:41:25+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.5.0\n"
15
  "X-Domain: woo-cart-abandonment-recovery\n"
@@ -71,239 +71,273 @@ msgstr ""
71
  msgid "Learn More."
72
  msgstr ""
73
 
74
- #: classes/class-cartflows-ca-admin-notices.php:84
75
  msgid "Hello! Seems like you have used WooCommerce Cart Abandonment Recovery plugin to recover abandoned carts. &mdash; Thanks a ton!"
76
  msgstr ""
77
 
78
- #: classes/class-cartflows-ca-admin-notices.php:85
79
  msgid "Could you please do us a BIG favor and give it a 5-star rating on WordPress? This would boost our motivation and help other users make a comfortable decision while choosing the CartFlows cart abandonment plugin."
80
  msgstr ""
81
 
82
- #: classes/class-cartflows-ca-admin-notices.php:87
83
  msgid "Ok, you deserve it"
84
  msgstr ""
85
 
86
- #: classes/class-cartflows-ca-admin-notices.php:89
87
  msgid "Nope, maybe later"
88
  msgstr ""
89
 
90
- #: classes/class-cartflows-ca-admin-notices.php:90
91
  msgid "I already did"
92
  msgstr ""
93
 
 
 
 
 
 
94
  #. translators: %s: html tags
95
- #: classes/class-cartflows-ca-loader.php:138
96
- msgid "Required database tables are not generated for %1$sWooCommerce Cart Abandonment Recovery%2$s. Please make sure that the DB user has the REFERENCES privilege to create tables."
97
  msgstr ""
98
 
99
  #. translators: %s: html tags
100
- #: classes/class-cartflows-ca-loader.php:161
101
  msgid "The %1$sWooCommerce Cart Abandonment Recovery%2$s plugin requires %1$sWooCommerce%2$s plugin installed & activated."
102
  msgstr ""
103
 
104
- #: classes/class-cartflows-ca-loader.php:170
105
  msgid "Activate WooCommerce"
106
  msgstr ""
107
 
108
- #: classes/class-cartflows-ca-loader.php:178
109
  msgid "Install WooCommerce"
110
  msgstr ""
111
 
112
- #: classes/class-cartflows-ca-settings.php:58
113
- msgid "Cart Abandonment Settings"
 
114
  msgstr ""
115
 
116
- #: classes/class-cartflows-ca-settings.php:65
117
  msgid "Enable Tracking"
118
  msgstr ""
119
 
120
- #: classes/class-cartflows-ca-settings.php:69
121
  msgid "Start capturing abandoned carts. <br/><br/> <span class=\"description\"><strong>Note:</strong> Cart will be considered abandoned if order is not completed in cart abandoned cut-off time.</span>"
122
  msgstr ""
123
 
124
- #: classes/class-cartflows-ca-settings.php:79
125
  msgid "Cart abandoned cut-off time"
126
  msgstr ""
127
 
128
- #: classes/class-cartflows-ca-settings.php:83
129
  msgid "Minutes. <br/><br/> <span class=\"description\"><strong>Note:</strong> Consider cart abandoned after above entered minutes of item being added to cart and order not placed.</span><span class=\"dashicons dashicons-editor-help\" title=\"Please remove the custom code to update cron cut off time, if added.\"></span>"
130
  msgstr ""
131
 
132
- #: classes/class-cartflows-ca-settings.php:93
133
  msgid "Disable Tracking For"
134
  msgstr ""
135
 
136
- #: classes/class-cartflows-ca-settings.php:97
137
  msgid " It will ignore selected users from abandonment process when they logged in, and hence they can not receive mail for cart abandoned by themselves."
138
  msgstr ""
139
 
140
- #: classes/class-cartflows-ca-settings.php:107
141
  msgid "Exclude email sending For"
142
  msgstr ""
143
 
144
- #: classes/class-cartflows-ca-settings.php:111
145
  msgid " It will not send future recovery emails to selected order status and will mark as recovered."
146
  msgstr ""
147
 
148
- #: classes/class-cartflows-ca-settings.php:121
149
  msgid "Notify recovery to admin"
150
  msgstr ""
151
 
152
- #: classes/class-cartflows-ca-settings.php:125
153
  msgid "This option will send an email to admin on new order recovery."
154
  msgstr ""
155
 
156
- #: classes/class-cartflows-ca-settings.php:135
157
  msgid "UTM parameters"
158
  msgstr ""
159
 
160
- #: classes/class-cartflows-ca-settings.php:139
161
  msgid "The UTM parameters will be appended to the checkout page links which is available in the recovery emails."
162
  msgstr ""
163
 
164
- #: classes/class-cartflows-ca-settings.php:152
165
- msgid "Coupons Settings"
 
166
  msgstr ""
167
 
168
- #: classes/class-cartflows-ca-settings.php:159
169
  msgid "Delete Coupons Automatically"
170
  msgstr ""
171
 
172
- #: classes/class-cartflows-ca-settings.php:163
173
  msgid "Delete coupons automatically on weekly basis.<br><span class=\"description\"><br/><strong>Note:</strong> This option will set a weekly cron to delete all <strong>expired</strong> and <strong>used</strong> coupons automatically in the background.</p>"
174
  msgstr ""
175
 
176
- #: classes/class-cartflows-ca-settings.php:173
177
  msgid "Delete Coupons Manually"
178
  msgstr ""
179
 
180
- #: classes/class-cartflows-ca-settings.php:177
181
  msgid "<br><strong>Note:</strong> This will delete all <strong>expired</strong> and <strong>used</strong> coupons that were created by Woo Cart Abandonment Recovery.</p>"
182
  msgstr ""
183
 
184
- #: classes/class-cartflows-ca-settings.php:189
185
- msgid "Email Settings"
 
186
  msgstr ""
187
 
188
- #: classes/class-cartflows-ca-settings.php:196
189
  msgid "\"From\" Name"
190
  msgstr ""
191
 
192
- #: classes/class-cartflows-ca-settings.php:200
193
  msgid "Name will appear in email sent."
194
  msgstr ""
195
 
196
- #: classes/class-cartflows-ca-settings.php:205
197
  msgid "\"From\" Address"
198
  msgstr ""
199
 
200
- #: classes/class-cartflows-ca-settings.php:209
201
  msgid "Email which send from."
202
  msgstr ""
203
 
204
- #: classes/class-cartflows-ca-settings.php:214
205
  msgid "\"Reply To\" Address"
206
  msgstr ""
207
 
208
- #: classes/class-cartflows-ca-settings.php:218
209
  msgid "When a user clicks reply, which email address should that reply be sent to?"
210
  msgstr ""
211
 
212
- #: classes/class-cartflows-ca-settings.php:241
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  msgid "Enable Webhook"
214
  msgstr ""
215
 
216
- #: classes/class-cartflows-ca-settings.php:245
217
  msgid "Allows you to trigger webhook automatically upon cart abandonment and recovery."
218
  msgstr ""
219
 
220
- #: classes/class-cartflows-ca-settings.php:250
221
  msgid "Webhook URL"
222
  msgstr ""
223
 
224
- #: classes/class-cartflows-ca-settings.php:269
225
- msgid "Coupon Code Settings"
 
226
  msgstr ""
227
 
228
- #: classes/class-cartflows-ca-settings.php:276
229
  msgid "Create Coupon Code"
230
  msgstr ""
231
 
232
- #: classes/class-cartflows-ca-settings.php:280
233
  msgid "Auto-create the special coupon for the abandoned cart to send over the emails."
234
  msgstr ""
235
 
236
- #: classes/class-cartflows-ca-settings.php:285
237
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:545
238
  msgid "Discount Type"
239
  msgstr ""
240
 
241
- #: classes/class-cartflows-ca-settings.php:294
242
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:577
243
  msgid "Coupon Amount"
244
  msgstr ""
245
 
246
- #: classes/class-cartflows-ca-settings.php:303
247
  msgid "Coupon Expires After"
248
  msgstr ""
249
 
250
- #: classes/class-cartflows-ca-settings.php:307
251
  msgid "<br/><br/> <span class=\"description\"><strong>Note: </strong>. Enter zero (0) to restrict coupon from expiring.</span>"
252
  msgstr ""
253
 
254
- #: classes/class-cartflows-ca-settings.php:338
255
- msgid "Webhook Settings"
 
256
  msgstr ""
257
 
258
- #: classes/class-cartflows-ca-settings.php:347
259
- msgid "GDPR Settings"
 
260
  msgstr ""
261
 
262
- #: classes/class-cartflows-ca-settings.php:354
263
  msgid "Enable GDPR Integration"
264
  msgstr ""
265
 
266
- #: classes/class-cartflows-ca-settings.php:358
267
  msgid "Ask confirmation from the user before tracking data. <br/><br/> <span class=\"description\"><strong>Note:</strong> By checking this, it will show up confirmation text below the email id on checkout page.</span>"
268
  msgstr ""
269
 
270
- #: classes/class-cartflows-ca-settings.php:363
271
  msgid "GDPR Message"
272
  msgstr ""
273
 
274
- #: classes/class-cartflows-ca-settings.php:384
275
- msgid "Plugin Settings"
 
276
  msgstr ""
277
 
278
- #: classes/class-cartflows-ca-settings.php:394
279
  msgid "Delete Plugin Data"
280
  msgstr ""
281
 
282
- #: classes/class-cartflows-ca-settings.php:398
283
  msgid "Enabling this option will delete the plugin data while deleting the Plugin."
284
  msgstr ""
285
 
286
- #: classes/class-cartflows-ca-settings.php:413
287
  msgid "Add UTM parameter per line."
288
  msgstr ""
289
 
290
- #: classes/class-cartflows-ca-settings.php:539
291
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:615
292
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:711
293
  msgid "Hour(s)"
294
  msgstr ""
295
 
296
- #: classes/class-cartflows-ca-settings.php:540
297
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:616
298
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:712
299
  msgid "Day(s)"
300
  msgstr ""
301
 
302
- #: classes/class-cartflows-ca-settings.php:608
303
  msgid "Coupon code should be numeric and has to be greater than or equals to 1."
304
  msgstr ""
305
 
306
- #: classes/class-cartflows-ca-settings.php:758
307
  #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates-table.php:88
308
  #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates-table.php:122
309
  #: modules/cart-abandonment/classes/class-cartflows-ca-order-table.php:86
@@ -311,11 +345,11 @@ msgstr ""
311
  msgid "Delete"
312
  msgstr ""
313
 
314
- #: classes/class-cartflows-ca-settings.php:844
315
  msgid "Invalid email \"From\" address field"
316
  msgstr ""
317
 
318
- #: classes/class-cartflows-ca-settings.php:862
319
  msgid "Invalid email \"Reply\" address field"
320
  msgstr ""
321
 
@@ -345,29 +379,29 @@ msgid "Settings"
345
  msgstr ""
346
 
347
  #: classes/class-cartflows-ca-tabs.php:450
348
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:297
349
  msgid "Item"
350
  msgstr ""
351
 
352
  #: classes/class-cartflows-ca-tabs.php:451
353
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:298
354
  #: modules/cart-abandonment/classes/class-cartflows-ca-order-table.php:236
355
  #: modules/cart-abandonment/includes/cartflows-ca-single-report-details.php:176
356
  msgid "Name"
357
  msgstr ""
358
 
359
  #: classes/class-cartflows-ca-tabs.php:452
360
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:299
361
  msgid "Quantity"
362
  msgstr ""
363
 
364
  #: classes/class-cartflows-ca-tabs.php:453
365
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:300
366
  msgid "Price"
367
  msgstr ""
368
 
369
  #: classes/class-cartflows-ca-tabs.php:454
370
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:301
371
  msgid "Line Subtotal"
372
  msgstr ""
373
 
@@ -409,16 +443,14 @@ msgid "there"
409
  msgstr ""
410
 
411
  #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:124
412
- #: modules/cart-abandonment/classes/class-cartflows-ca-order-table.php:90
413
- #: modules/cart-abandonment/classes/class-cartflows-ca-order-table.php:142
414
- msgid "Unsubscribe"
415
  msgstr ""
416
 
417
  #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:143
418
  msgid "Admin"
419
  msgstr ""
420
 
421
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:290
422
  msgid "Cart Total ( Cart Total + Shipping + Tax )"
423
  msgstr ""
424
 
@@ -447,195 +479,203 @@ msgstr ""
447
  msgid "Activate Template"
448
  msgstr ""
449
 
450
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:132
451
  msgid "Admin Firstname"
452
  msgstr ""
453
 
454
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:133
455
  msgid "Admin Company"
456
  msgstr ""
457
 
458
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:134
459
  msgid "Abandoned Product Details Table"
460
  msgstr ""
461
 
462
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:135
463
  msgid "Abandoned Product Names"
464
  msgstr ""
465
 
466
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:136
467
  msgid "Cart Checkout URL"
468
  msgstr ""
469
 
470
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:137
471
  msgid "Coupon Code"
472
  msgstr ""
473
 
474
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:138
475
  msgid "Customer First Name"
476
  msgstr ""
477
 
478
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:139
479
  msgid "Customer Last Name"
480
  msgstr ""
481
 
482
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:140
483
  msgid "Customer Full Name"
484
  msgstr ""
485
 
486
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:141
487
  msgid "Cart Abandonment Date"
488
  msgstr ""
489
 
490
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:142
491
  msgid "Site URL"
492
  msgstr ""
493
 
494
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:143
495
  msgid "Unsubscribe Link"
496
  msgstr ""
497
 
498
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:145
499
  msgid "Triggering..."
500
  msgstr ""
501
 
502
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:146
503
  msgid "Trigger Failed."
504
  msgstr ""
505
 
506
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:147
507
  msgid "Trigger Success."
508
  msgstr ""
509
 
510
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:148
511
  msgid "Please verify webhook URL."
512
  msgstr ""
513
 
514
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:149
515
  msgid "Webhook URL is required."
516
  msgstr ""
517
 
518
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:170
519
  msgid "Something went wrong"
520
  msgstr ""
521
 
522
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:177
523
  msgid "Activated"
524
  msgstr ""
525
 
526
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:180
527
  msgid "Deactivated"
528
  msgstr ""
529
 
530
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:240
531
  msgid "The Email Template has been successfully added."
532
  msgstr ""
533
 
534
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:250
535
  msgid "The Email Template has been cloned successfully."
536
  msgstr ""
537
 
538
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:260
539
  msgid "The Email Template has been successfully deleted."
540
  msgstr ""
541
 
542
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:269
543
  msgid "The Email Template has been successfully updated."
544
  msgstr ""
545
 
546
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:279
547
  msgid "Default Email Templates has been restored successfully."
548
  msgstr ""
549
 
550
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:446
551
  msgid "Activate Template now?"
552
  msgstr ""
553
 
554
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:466
555
  msgid "Template Name:"
556
  msgstr ""
557
 
558
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:481
559
  msgid "Email Subject:"
560
  msgstr ""
561
 
562
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:496
563
  msgid "Email Body:"
564
  msgstr ""
565
 
566
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:525
 
 
 
 
 
 
 
 
567
  msgid "Create Coupon"
568
  msgstr ""
569
 
570
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:538
571
  msgid "Allows you to send new coupon only for this template."
572
  msgstr ""
573
 
574
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:595
575
  msgid "Coupon expiry date"
576
  msgstr ""
577
 
578
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:625
579
  msgid "Enter zero (0) to restrict coupon from expiring"
580
  msgstr ""
581
 
582
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:631
583
  msgid "Free Shipping"
584
  msgstr ""
585
 
586
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:644
587
  msgid "Allows you to grant free shipping. A free shipping method must be enabled in your shipping zone and be set to require \"a valid free shipping coupon\". "
588
  msgstr ""
589
 
590
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:651
591
  msgid "Individual use only"
592
  msgstr ""
593
 
594
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:665
595
  msgid "Check this box if the coupon cannot be used in conjunction with other coupons."
596
  msgstr ""
597
 
598
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:672
599
  msgid "Auto Apply Coupon"
600
  msgstr ""
601
 
602
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:686
603
  msgid " Automatically add the coupon to the cart at the checkout."
604
  msgstr ""
605
 
606
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:692
607
  msgid "Send This Email"
608
  msgstr ""
609
 
610
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:710
611
  msgid "Minute(s)"
612
  msgstr ""
613
 
614
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:725
615
  msgid "after cart is abandoned."
616
  msgstr ""
617
 
618
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:735
619
  msgid "Send Test Email To:"
620
  msgstr ""
621
 
622
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:739
623
  msgid "Send a test email"
624
  msgstr ""
625
 
626
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:752
627
  msgid "Save Changes"
628
  msgstr ""
629
 
630
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:754
631
  msgid "Update Changes"
632
  msgstr ""
633
 
634
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:1060
635
  msgid "Create New Template"
636
  msgstr ""
637
 
638
- #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:1063
639
  msgid " Restore Default Templates"
640
  msgstr ""
641
 
@@ -643,6 +683,11 @@ msgstr ""
643
  msgid "View"
644
  msgstr ""
645
 
 
 
 
 
 
646
  #: modules/cart-abandonment/classes/class-cartflows-ca-order-table.php:237
647
  msgid "Email"
648
  msgstr ""
@@ -680,6 +725,7 @@ msgstr ""
680
 
681
  #: modules/cart-abandonment/classes/class-cartflows-ca-tracking.php:250
682
  #: modules/cart-abandonment/includes/cartflows-ca-single-report-details.php:167
 
683
  msgid "Unsubscribed"
684
  msgstr ""
685
 
@@ -779,10 +825,6 @@ msgstr ""
779
  msgid "Billing Address"
780
  msgstr ""
781
 
782
- #: modules/cart-abandonment/includes/cartflows-ca-single-report-details.php:179
783
- msgid "Email address"
784
- msgstr ""
785
-
786
  #: modules/cart-abandonment/includes/cartflows-ca-single-report-details.php:184
787
  msgid "Phone"
788
  msgstr ""
@@ -917,3 +959,15 @@ msgstr ""
917
  #: modules/cart-abandonment/includes/cartflows-cart-abandonment-tabs.php:16
918
  msgid "WooCommerce Cart Abandonment Recovery "
919
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
2
  # This file is distributed under the same license as the WooCommerce Cart Abandonment Recovery plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: WooCommerce Cart Abandonment Recovery 1.2.16\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woo-cart-abandonment-recovery\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2022-05-17T05:56:18+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.5.0\n"
15
  "X-Domain: woo-cart-abandonment-recovery\n"
71
  msgid "Learn More."
72
  msgstr ""
73
 
74
+ #: classes/class-cartflows-ca-admin-notices.php:88
75
  msgid "Hello! Seems like you have used WooCommerce Cart Abandonment Recovery plugin to recover abandoned carts. &mdash; Thanks a ton!"
76
  msgstr ""
77
 
78
+ #: classes/class-cartflows-ca-admin-notices.php:89
79
  msgid "Could you please do us a BIG favor and give it a 5-star rating on WordPress? This would boost our motivation and help other users make a comfortable decision while choosing the CartFlows cart abandonment plugin."
80
  msgstr ""
81
 
82
+ #: classes/class-cartflows-ca-admin-notices.php:91
83
  msgid "Ok, you deserve it"
84
  msgstr ""
85
 
86
+ #: classes/class-cartflows-ca-admin-notices.php:93
87
  msgid "Nope, maybe later"
88
  msgstr ""
89
 
90
+ #: classes/class-cartflows-ca-admin-notices.php:94
91
  msgid "I already did"
92
  msgstr ""
93
 
94
+ #. translators: %1$s Software Title, %2$s Plugin, %3$s Anchor opening tag, %4$s Anchor closing tag, %5$s Software Title.
95
+ #: classes/class-cartflows-ca-admin-notices.php:116
96
+ msgid "%1$sWooCommerce Cart Abandonment recovery:%2$s We just introduced an awesome new feature, weekly order recovery reports via email. Now you can see how many orders we are recovering for your store each week, without having to log into your website. You can set the email address for these email from %3$shere.%4$s"
97
+ msgstr ""
98
+
99
  #. translators: %s: html tags
100
+ #: classes/class-cartflows-ca-loader.php:139
101
+ msgid "Required database tables are not created for %1$sWooCommerce Cart Abandonment Recovery%2$s plugin. Please make sure that the database user has the REFERENCES privilege to create tables."
102
  msgstr ""
103
 
104
  #. translators: %s: html tags
105
+ #: classes/class-cartflows-ca-loader.php:162
106
  msgid "The %1$sWooCommerce Cart Abandonment Recovery%2$s plugin requires %1$sWooCommerce%2$s plugin installed & activated."
107
  msgstr ""
108
 
109
+ #: classes/class-cartflows-ca-loader.php:171
110
  msgid "Activate WooCommerce"
111
  msgstr ""
112
 
113
+ #: classes/class-cartflows-ca-loader.php:179
114
  msgid "Install WooCommerce"
115
  msgstr ""
116
 
117
+ #. translators: %1$s: html start, %2$s: html end
118
+ #: classes/class-cartflows-ca-settings.php:59
119
+ msgid "%1$sCart Abandonment Settings%2$s"
120
  msgstr ""
121
 
122
+ #: classes/class-cartflows-ca-settings.php:66
123
  msgid "Enable Tracking"
124
  msgstr ""
125
 
126
+ #: classes/class-cartflows-ca-settings.php:70
127
  msgid "Start capturing abandoned carts. <br/><br/> <span class=\"description\"><strong>Note:</strong> Cart will be considered abandoned if order is not completed in cart abandoned cut-off time.</span>"
128
  msgstr ""
129
 
130
+ #: classes/class-cartflows-ca-settings.php:80
131
  msgid "Cart abandoned cut-off time"
132
  msgstr ""
133
 
134
+ #: classes/class-cartflows-ca-settings.php:84
135
  msgid "Minutes. <br/><br/> <span class=\"description\"><strong>Note:</strong> Consider cart abandoned after above entered minutes of item being added to cart and order not placed.</span><span class=\"dashicons dashicons-editor-help\" title=\"Please remove the custom code to update cron cut off time, if added.\"></span>"
136
  msgstr ""
137
 
138
+ #: classes/class-cartflows-ca-settings.php:94
139
  msgid "Disable Tracking For"
140
  msgstr ""
141
 
142
+ #: classes/class-cartflows-ca-settings.php:98
143
  msgid " It will ignore selected users from abandonment process when they logged in, and hence they can not receive mail for cart abandoned by themselves."
144
  msgstr ""
145
 
146
+ #: classes/class-cartflows-ca-settings.php:108
147
  msgid "Exclude email sending For"
148
  msgstr ""
149
 
150
+ #: classes/class-cartflows-ca-settings.php:112
151
  msgid " It will not send future recovery emails to selected order status and will mark as recovered."
152
  msgstr ""
153
 
154
+ #: classes/class-cartflows-ca-settings.php:122
155
  msgid "Notify recovery to admin"
156
  msgstr ""
157
 
158
+ #: classes/class-cartflows-ca-settings.php:126
159
  msgid "This option will send an email to admin on new order recovery."
160
  msgstr ""
161
 
162
+ #: classes/class-cartflows-ca-settings.php:136
163
  msgid "UTM parameters"
164
  msgstr ""
165
 
166
+ #: classes/class-cartflows-ca-settings.php:140
167
  msgid "The UTM parameters will be appended to the checkout page links which is available in the recovery emails."
168
  msgstr ""
169
 
170
+ #. translators: %1$s: html start, %2$s: html end
171
+ #: classes/class-cartflows-ca-settings.php:154
172
+ msgid "%1$sCoupons Settings%2$s"
173
  msgstr ""
174
 
175
+ #: classes/class-cartflows-ca-settings.php:161
176
  msgid "Delete Coupons Automatically"
177
  msgstr ""
178
 
179
+ #: classes/class-cartflows-ca-settings.php:165
180
  msgid "Delete coupons automatically on weekly basis.<br><span class=\"description\"><br/><strong>Note:</strong> This option will set a weekly cron to delete all <strong>expired</strong> and <strong>used</strong> coupons automatically in the background.</p>"
181
  msgstr ""
182
 
183
+ #: classes/class-cartflows-ca-settings.php:175
184
  msgid "Delete Coupons Manually"
185
  msgstr ""
186
 
187
+ #: classes/class-cartflows-ca-settings.php:179
188
  msgid "<br><strong>Note:</strong> This will delete all <strong>expired</strong> and <strong>used</strong> coupons that were created by Woo Cart Abandonment Recovery.</p>"
189
  msgstr ""
190
 
191
+ #. translators: %1$s: html start, %2$s: html end
192
+ #: classes/class-cartflows-ca-settings.php:192
193
+ msgid "%1$sEmail Settings%2$s"
194
  msgstr ""
195
 
196
+ #: classes/class-cartflows-ca-settings.php:199
197
  msgid "\"From\" Name"
198
  msgstr ""
199
 
200
+ #: classes/class-cartflows-ca-settings.php:203
201
  msgid "Name will appear in email sent."
202
  msgstr ""
203
 
204
+ #: classes/class-cartflows-ca-settings.php:208
205
  msgid "\"From\" Address"
206
  msgstr ""
207
 
208
+ #: classes/class-cartflows-ca-settings.php:212
209
  msgid "Email which send from."
210
  msgstr ""
211
 
212
+ #: classes/class-cartflows-ca-settings.php:217
213
  msgid "\"Reply To\" Address"
214
  msgstr ""
215
 
216
+ #: classes/class-cartflows-ca-settings.php:221
217
  msgid "When a user clicks reply, which email address should that reply be sent to?"
218
  msgstr ""
219
 
220
+ #. translators: %1$s: html start, %2$s: html end
221
+ #: classes/class-cartflows-ca-settings.php:245
222
+ msgid "%1$sRecovery Report Emails%2$s"
223
+ msgstr ""
224
+
225
+ #: classes/class-cartflows-ca-settings.php:252
226
+ msgid "Send recovery report emails"
227
+ msgstr ""
228
+
229
+ #: classes/class-cartflows-ca-settings.php:256
230
+ msgid "Enable sending recovery report emails."
231
+ msgstr ""
232
+
233
+ #: classes/class-cartflows-ca-settings.php:261
234
+ #: modules/cart-abandonment/includes/cartflows-ca-single-report-details.php:179
235
+ msgid "Email address"
236
+ msgstr ""
237
+
238
+ #: classes/class-cartflows-ca-settings.php:265
239
+ msgid "Email to send recovery report emails."
240
+ msgstr ""
241
+
242
+ #: classes/class-cartflows-ca-settings.php:282
243
  msgid "Enable Webhook"
244
  msgstr ""
245
 
246
+ #: classes/class-cartflows-ca-settings.php:286
247
  msgid "Allows you to trigger webhook automatically upon cart abandonment and recovery."
248
  msgstr ""
249
 
250
+ #: classes/class-cartflows-ca-settings.php:291
251
  msgid "Webhook URL"
252
  msgstr ""
253
 
254
+ #. translators: %1$s: html start, %2$s: html end
255
+ #: classes/class-cartflows-ca-settings.php:311
256
+ msgid "%1$sCoupon Code Settings%2$s"
257
  msgstr ""
258
 
259
+ #: classes/class-cartflows-ca-settings.php:318
260
  msgid "Create Coupon Code"
261
  msgstr ""
262
 
263
+ #: classes/class-cartflows-ca-settings.php:322
264
  msgid "Auto-create the special coupon for the abandoned cart to send over the emails."
265
  msgstr ""
266
 
267
+ #: classes/class-cartflows-ca-settings.php:327
268
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:568
269
  msgid "Discount Type"
270
  msgstr ""
271
 
272
+ #: classes/class-cartflows-ca-settings.php:336
273
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:600
274
  msgid "Coupon Amount"
275
  msgstr ""
276
 
277
+ #: classes/class-cartflows-ca-settings.php:345
278
  msgid "Coupon Expires After"
279
  msgstr ""
280
 
281
+ #: classes/class-cartflows-ca-settings.php:349
282
  msgid "<br/><br/> <span class=\"description\"><strong>Note: </strong>. Enter zero (0) to restrict coupon from expiring.</span>"
283
  msgstr ""
284
 
285
+ #. translators: %1$s: html start, %2$s: html end
286
+ #: classes/class-cartflows-ca-settings.php:381
287
+ msgid "%1$sWebhook Settings%2$s"
288
  msgstr ""
289
 
290
+ #. translators: %1$s: html start, %2$s: html end
291
+ #: classes/class-cartflows-ca-settings.php:391
292
+ msgid "%1$sGDPR Settings%2$s"
293
  msgstr ""
294
 
295
+ #: classes/class-cartflows-ca-settings.php:398
296
  msgid "Enable GDPR Integration"
297
  msgstr ""
298
 
299
+ #: classes/class-cartflows-ca-settings.php:402
300
  msgid "Ask confirmation from the user before tracking data. <br/><br/> <span class=\"description\"><strong>Note:</strong> By checking this, it will show up confirmation text below the email id on checkout page.</span>"
301
  msgstr ""
302
 
303
+ #: classes/class-cartflows-ca-settings.php:407
304
  msgid "GDPR Message"
305
  msgstr ""
306
 
307
+ #. translators: %1$s: html start, %2$s: html end
308
+ #: classes/class-cartflows-ca-settings.php:429
309
+ msgid "%1$sPlugin Settings%2$s"
310
  msgstr ""
311
 
312
+ #: classes/class-cartflows-ca-settings.php:439
313
  msgid "Delete Plugin Data"
314
  msgstr ""
315
 
316
+ #: classes/class-cartflows-ca-settings.php:443
317
  msgid "Enabling this option will delete the plugin data while deleting the Plugin."
318
  msgstr ""
319
 
320
+ #: classes/class-cartflows-ca-settings.php:494
321
  msgid "Add UTM parameter per line."
322
  msgstr ""
323
 
324
+ #: classes/class-cartflows-ca-settings.php:620
325
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:638
326
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:734
327
  msgid "Hour(s)"
328
  msgstr ""
329
 
330
+ #: classes/class-cartflows-ca-settings.php:621
331
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:639
332
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:735
333
  msgid "Day(s)"
334
  msgstr ""
335
 
336
+ #: classes/class-cartflows-ca-settings.php:689
337
  msgid "Coupon code should be numeric and has to be greater than or equals to 1."
338
  msgstr ""
339
 
340
+ #: classes/class-cartflows-ca-settings.php:839
341
  #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates-table.php:88
342
  #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates-table.php:122
343
  #: modules/cart-abandonment/classes/class-cartflows-ca-order-table.php:86
345
  msgid "Delete"
346
  msgstr ""
347
 
348
+ #: classes/class-cartflows-ca-settings.php:925
349
  msgid "Invalid email \"From\" address field"
350
  msgstr ""
351
 
352
+ #: classes/class-cartflows-ca-settings.php:943
353
  msgid "Invalid email \"Reply\" address field"
354
  msgstr ""
355
 
379
  msgstr ""
380
 
381
  #: classes/class-cartflows-ca-tabs.php:450
382
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:321
383
  msgid "Item"
384
  msgstr ""
385
 
386
  #: classes/class-cartflows-ca-tabs.php:451
387
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:322
388
  #: modules/cart-abandonment/classes/class-cartflows-ca-order-table.php:236
389
  #: modules/cart-abandonment/includes/cartflows-ca-single-report-details.php:176
390
  msgid "Name"
391
  msgstr ""
392
 
393
  #: classes/class-cartflows-ca-tabs.php:452
394
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:323
395
  msgid "Quantity"
396
  msgstr ""
397
 
398
  #: classes/class-cartflows-ca-tabs.php:453
399
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:324
400
  msgid "Price"
401
  msgstr ""
402
 
403
  #: classes/class-cartflows-ca-tabs.php:454
404
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:325
405
  msgid "Line Subtotal"
406
  msgstr ""
407
 
443
  msgstr ""
444
 
445
  #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:124
446
+ msgid "Don't remind me again."
 
 
447
  msgstr ""
448
 
449
  #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:143
450
  msgid "Admin"
451
  msgstr ""
452
 
453
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php:314
454
  msgid "Cart Total ( Cart Total + Shipping + Tax )"
455
  msgstr ""
456
 
479
  msgid "Activate Template"
480
  msgstr ""
481
 
482
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:133
483
  msgid "Admin Firstname"
484
  msgstr ""
485
 
486
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:134
487
  msgid "Admin Company"
488
  msgstr ""
489
 
490
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:135
491
  msgid "Abandoned Product Details Table"
492
  msgstr ""
493
 
494
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:136
495
  msgid "Abandoned Product Names"
496
  msgstr ""
497
 
498
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:137
499
  msgid "Cart Checkout URL"
500
  msgstr ""
501
 
502
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:138
503
  msgid "Coupon Code"
504
  msgstr ""
505
 
506
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:139
507
  msgid "Customer First Name"
508
  msgstr ""
509
 
510
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:140
511
  msgid "Customer Last Name"
512
  msgstr ""
513
 
514
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:141
515
  msgid "Customer Full Name"
516
  msgstr ""
517
 
518
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:142
519
  msgid "Cart Abandonment Date"
520
  msgstr ""
521
 
522
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:143
523
  msgid "Site URL"
524
  msgstr ""
525
 
526
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:144
527
  msgid "Unsubscribe Link"
528
  msgstr ""
529
 
530
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:146
531
  msgid "Triggering..."
532
  msgstr ""
533
 
534
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:147
535
  msgid "Trigger Failed."
536
  msgstr ""
537
 
538
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:148
539
  msgid "Trigger Success."
540
  msgstr ""
541
 
542
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:149
543
  msgid "Please verify webhook URL."
544
  msgstr ""
545
 
546
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:150
547
  msgid "Webhook URL is required."
548
  msgstr ""
549
 
550
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:171
551
  msgid "Something went wrong"
552
  msgstr ""
553
 
554
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:178
555
  msgid "Activated"
556
  msgstr ""
557
 
558
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:181
559
  msgid "Deactivated"
560
  msgstr ""
561
 
562
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:242
563
  msgid "The Email Template has been successfully added."
564
  msgstr ""
565
 
566
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:252
567
  msgid "The Email Template has been cloned successfully."
568
  msgstr ""
569
 
570
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:262
571
  msgid "The Email Template has been successfully deleted."
572
  msgstr ""
573
 
574
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:271
575
  msgid "The Email Template has been successfully updated."
576
  msgstr ""
577
 
578
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:281
579
  msgid "Default Email Templates has been restored successfully."
580
  msgstr ""
581
 
582
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:448
583
  msgid "Activate Template now?"
584
  msgstr ""
585
 
586
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:468
587
  msgid "Template Name:"
588
  msgstr ""
589
 
590
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:483
591
  msgid "Email Subject:"
592
  msgstr ""
593
 
594
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:498
595
  msgid "Email Body:"
596
  msgstr ""
597
 
598
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:527
599
+ msgid "Use WooCommerce email style"
600
+ msgstr ""
601
+
602
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:540
603
+ msgid "Email will be sent in WooCommerce email format. Also the sender name and sender email address will be replaced by the Woocommerce Email sender options."
604
+ msgstr ""
605
+
606
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:548
607
  msgid "Create Coupon"
608
  msgstr ""
609
 
610
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:561
611
  msgid "Allows you to send new coupon only for this template."
612
  msgstr ""
613
 
614
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:618
615
  msgid "Coupon expiry date"
616
  msgstr ""
617
 
618
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:648
619
  msgid "Enter zero (0) to restrict coupon from expiring"
620
  msgstr ""
621
 
622
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:654
623
  msgid "Free Shipping"
624
  msgstr ""
625
 
626
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:667
627
  msgid "Allows you to grant free shipping. A free shipping method must be enabled in your shipping zone and be set to require \"a valid free shipping coupon\". "
628
  msgstr ""
629
 
630
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:674
631
  msgid "Individual use only"
632
  msgstr ""
633
 
634
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:688
635
  msgid "Check this box if the coupon cannot be used in conjunction with other coupons."
636
  msgstr ""
637
 
638
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:695
639
  msgid "Auto Apply Coupon"
640
  msgstr ""
641
 
642
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:709
643
  msgid " Automatically add the coupon to the cart at the checkout."
644
  msgstr ""
645
 
646
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:715
647
  msgid "Send This Email"
648
  msgstr ""
649
 
650
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:733
651
  msgid "Minute(s)"
652
  msgstr ""
653
 
654
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:748
655
  msgid "after cart is abandoned."
656
  msgstr ""
657
 
658
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:758
659
  msgid "Send Test Email To:"
660
  msgstr ""
661
 
662
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:762
663
  msgid "Send a test email"
664
  msgstr ""
665
 
666
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:775
667
  msgid "Save Changes"
668
  msgstr ""
669
 
670
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:777
671
  msgid "Update Changes"
672
  msgstr ""
673
 
674
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:1086
675
  msgid "Create New Template"
676
  msgstr ""
677
 
678
+ #: modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php:1089
679
  msgid " Restore Default Templates"
680
  msgstr ""
681
 
683
  msgid "View"
684
  msgstr ""
685
 
686
+ #: modules/cart-abandonment/classes/class-cartflows-ca-order-table.php:90
687
+ #: modules/cart-abandonment/classes/class-cartflows-ca-order-table.php:142
688
+ msgid "Unsubscribe"
689
+ msgstr ""
690
+
691
  #: modules/cart-abandonment/classes/class-cartflows-ca-order-table.php:237
692
  msgid "Email"
693
  msgstr ""
725
 
726
  #: modules/cart-abandonment/classes/class-cartflows-ca-tracking.php:250
727
  #: modules/cart-abandonment/includes/cartflows-ca-single-report-details.php:167
728
+ #: modules/weekly-email-report/class-cartflows-ca-admin-report-emails.php:148
729
  msgid "Unsubscribed"
730
  msgstr ""
731
 
825
  msgid "Billing Address"
826
  msgstr ""
827
 
 
 
 
 
828
  #: modules/cart-abandonment/includes/cartflows-ca-single-report-details.php:184
829
  msgid "Phone"
830
  msgstr ""
959
  #: modules/cart-abandonment/includes/cartflows-cart-abandonment-tabs.php:16
960
  msgid "WooCommerce Cart Abandonment Recovery "
961
  msgstr ""
962
+
963
+ #: modules/weekly-email-report/class-cartflows-ca-admin-report-emails.php:106
964
+ msgid "Your Weekly Cart Abandonment Summary is here - CartFlows"
965
+ msgstr ""
966
+
967
+ #: modules/weekly-email-report/class-cartflows-ca-admin-report-emails.php:148
968
+ msgid "You have successfully unsubscribed from our weekly emails list."
969
+ msgstr ""
970
+
971
+ #: modules/weekly-email-report/templates/email-body.php:19
972
+ msgid "Cart Abandonment Recovery Weekly Report"
973
+ msgstr ""
modules/cart-abandonment/assets/js/cart-abandonment-tracking.js CHANGED
@@ -1,4 +1,4 @@
1
- ( function( $ ) {
2
  let timer;
3
  const wcf_cart_abandonment = {
4
  init() {
@@ -21,16 +21,16 @@
21
  this._getCheckoutData
22
  );
23
 
24
- $( '#wcf_ca_gdpr_no_thanks' ).on( 'click', function() {
25
  wcf_cart_abandonment._set_cookie();
26
  } );
27
 
28
- $( document.body ).on( 'updated_checkout', function() {
29
  wcf_cart_abandonment._getCheckoutData();
30
  } );
31
 
32
- $( function() {
33
- setTimeout( function() {
34
  wcf_cart_abandonment._getCheckoutData();
35
  }, 800 );
36
  } );
@@ -43,7 +43,7 @@
43
  security: wcf_ca_vars._gdpr_nonce,
44
  };
45
 
46
- jQuery.post( wcf_ca_vars.ajaxurl, data, function( response ) {
47
  if ( response.success ) {
48
  $( '#wcf_cf_gdpr_message_block' )
49
  .empty()
@@ -176,14 +176,14 @@
176
  wcf_post_id: wcf_ca_vars._post_id,
177
  };
178
 
179
- timer = setTimeout( function() {
180
  if (
181
  wcf_cart_abandonment._validate_email( data.wcf_email )
182
  ) {
183
  jQuery.post(
184
  wcf_ca_vars.ajaxurl,
185
  data, //Ajaxurl coming from localized script and contains the link to wp-admin/admin-ajax.php file that handles AJAX requests on Wordpress
186
- function() {
187
  // success response
188
  }
189
  );
@@ -196,4 +196,4 @@
196
  };
197
 
198
  wcf_cart_abandonment.init();
199
- }( jQuery ) );
1
+ ( function ( $ ) {
2
  let timer;
3
  const wcf_cart_abandonment = {
4
  init() {
21
  this._getCheckoutData
22
  );
23
 
24
+ $( '#wcf_ca_gdpr_no_thanks' ).on( 'click', function () {
25
  wcf_cart_abandonment._set_cookie();
26
  } );
27
 
28
+ $( document.body ).on( 'updated_checkout', function () {
29
  wcf_cart_abandonment._getCheckoutData();
30
  } );
31
 
32
+ $( function () {
33
+ setTimeout( function () {
34
  wcf_cart_abandonment._getCheckoutData();
35
  }, 800 );
36
  } );
43
  security: wcf_ca_vars._gdpr_nonce,
44
  };
45
 
46
+ jQuery.post( wcf_ca_vars.ajaxurl, data, function ( response ) {
47
  if ( response.success ) {
48
  $( '#wcf_cf_gdpr_message_block' )
49
  .empty()
176
  wcf_post_id: wcf_ca_vars._post_id,
177
  };
178
 
179
+ timer = setTimeout( function () {
180
  if (
181
  wcf_cart_abandonment._validate_email( data.wcf_email )
182
  ) {
183
  jQuery.post(
184
  wcf_ca_vars.ajaxurl,
185
  data, //Ajaxurl coming from localized script and contains the link to wp-admin/admin-ajax.php file that handles AJAX requests on Wordpress
186
+ function () {
187
  // success response
188
  }
189
  );
196
  };
197
 
198
  wcf_cart_abandonment.init();
199
+ } )( jQuery );
modules/cart-abandonment/classes/class-cartflows-ca-database.php CHANGED
@@ -259,6 +259,7 @@ class Cartflows_Ca_Database {
259
  'coupon_amount' => 10,
260
  'coupon_expiry_date' => '',
261
  'coupon_expiry_unit' => 'hours',
 
262
  );
263
 
264
  $email_tmpl_id = $wpdb->insert_id;
259
  'coupon_amount' => 10,
260
  'coupon_expiry_date' => '',
261
  'coupon_expiry_unit' => 'hours',
262
+ 'use_woo_email_style' => false,
263
  );
264
 
265
  $email_tmpl_id = $wpdb->insert_id;
modules/cart-abandonment/classes/class-cartflows-ca-email-schedule.php CHANGED
@@ -121,7 +121,7 @@ class Cartflows_Ca_Email_Schedule {
121
 
122
  $current_time_stamp = $email_data->time;
123
  $body_email_preview = str_replace( '{{cart.abandoned_date}}', $current_time_stamp, $body_email_preview );
124
- $unsubscribe_element = '<a target="_blank" style="color: lightgray" href="' . $checkout_url . '&unsubscribe=true ">' . __( 'Unsubscribe', 'woo-cart-abandonment-recovery' ) . '</a>';
125
  $body_email_preview = str_replace( '{{cart.unsubscribe}}', $unsubscribe_element, $body_email_preview );
126
  $body_email_preview = str_replace( 'http://{{cart.checkout_url}}', '{{cart.checkout_url}}', $body_email_preview );
127
  $body_email_preview = str_replace( 'https://{{cart.checkout_url}}', '{{cart.checkout_url}}', $body_email_preview );
@@ -151,7 +151,30 @@ class Cartflows_Ca_Email_Schedule {
151
 
152
  $body_email_preview = str_replace( '{{cart.product.table}}', $var, $body_email_preview );
153
  $body_email_preview = wpautop( $body_email_preview );
154
- $mail_result = wp_mail( $email_data->email, $subject_email_preview, stripslashes( $body_email_preview ), $headers );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  if ( $mail_result ) {
156
  return true;
157
  } else {
@@ -177,15 +200,16 @@ class Cartflows_Ca_Email_Schedule {
177
 
178
  $email_data = new stdClass();
179
  $current_user = wp_get_current_user();
180
- $email_data->email_template_id = null;
181
- $email_data->checkout_id = wc_get_page_id( 'checkout' );
182
- $email_data->session_id = 'dummy-session-id';
183
- $email_send_to = filter_input( INPUT_POST, 'email_send_to', FILTER_SANITIZE_EMAIL );
184
- $email_data->email = $email_send_to ? $email_send_to : $current_user->user_email;
185
- $email_data->email_body = filter_input( INPUT_POST, 'email_body', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
186
- $email_data->email_subject = filter_input( INPUT_POST, 'email_subject', FILTER_SANITIZE_STRING );
187
- $email_data->email_body = html_entity_decode( $email_data->email_body, ENT_COMPAT, 'UTF-8' );
188
- $email_data->other_fields = serialize(
 
189
  array(
190
  'wcf_first_name' => $current_user->user_firstname,
191
  'wcf_last_name' => $current_user->user_lastname,
@@ -299,7 +323,7 @@ class Cartflows_Ca_Email_Schedule {
299
  <th style="' . $style . '">' . __( 'Quantity', 'woo-cart-abandonment-recovery' ) . '</th>
300
  <th style="' . $style . '">' . __( 'Price', 'woo-cart-abandonment-recovery' ) . '</th>
301
  <th style="' . $style . '">' . __( 'Line Subtotal', 'woo-cart-abandonment-recovery' ) . '</th>
302
- </tr> ' . $tr . '
303
  </table>';
304
  }
305
 
121
 
122
  $current_time_stamp = $email_data->time;
123
  $body_email_preview = str_replace( '{{cart.abandoned_date}}', $current_time_stamp, $body_email_preview );
124
+ $unsubscribe_element = '<a target="_blank" style="color: lightgray" href="' . $checkout_url . '&unsubscribe=true ">' . __( 'Don\'t remind me again.', 'woo-cart-abandonment-recovery' ) . '</a>';
125
  $body_email_preview = str_replace( '{{cart.unsubscribe}}', $unsubscribe_element, $body_email_preview );
126
  $body_email_preview = str_replace( 'http://{{cart.checkout_url}}', '{{cart.checkout_url}}', $body_email_preview );
127
  $body_email_preview = str_replace( 'https://{{cart.checkout_url}}', '{{cart.checkout_url}}', $body_email_preview );
151
 
152
  $body_email_preview = str_replace( '{{cart.product.table}}', $var, $body_email_preview );
153
  $body_email_preview = wpautop( $body_email_preview );
154
+
155
+ $use_woo_style = $email_instance->get_email_template_meta_by_key( $email_data->email_template_id, 'use_woo_email_style' );
156
+
157
+ if ( '1' === $use_woo_style->meta_value ) {
158
+ ob_start();
159
+
160
+ wc_get_template( 'emails/email-header.php', array( 'email_heading' => $subject_email_preview ) );
161
+ $email_body_template_header = ob_get_clean();
162
+
163
+ ob_start();
164
+
165
+ wc_get_template( 'emails/email-footer.php' );
166
+ $email_body_template_footer = ob_get_clean();
167
+
168
+ $site_title = get_bloginfo( 'name' );
169
+ $email_body_template_footer = str_ireplace( '{site_title}', $site_title, $email_body_template_footer );
170
+
171
+ $final_email_body = $email_body_template_header . $body_email_preview . $email_body_template_footer;
172
+ wc_mail( $email_data->email, $subject_email_preview, stripslashes( $final_email_body ), $headers );
173
+
174
+ return true;
175
+ }
176
+
177
+ $mail_result = wp_mail( $email_data->email, $subject_email_preview, stripslashes( $body_email_preview ), $headers );
178
  if ( $mail_result ) {
179
  return true;
180
  } else {
200
 
201
  $email_data = new stdClass();
202
  $current_user = wp_get_current_user();
203
+ $email_data->email_template_id = filter_input( INPUT_POST, 'email_template_id', FILTER_SANITIZE_STRING );
204
+
205
+ $email_data->checkout_id = wc_get_page_id( 'checkout' );
206
+ $email_data->session_id = 'dummy-session-id';
207
+ $email_send_to = filter_input( INPUT_POST, 'email_send_to', FILTER_SANITIZE_EMAIL );
208
+ $email_data->email = $email_send_to ? $email_send_to : $current_user->user_email;
209
+ $email_data->email_body = filter_input( INPUT_POST, 'email_body', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
210
+ $email_data->email_subject = filter_input( INPUT_POST, 'email_subject', FILTER_SANITIZE_STRING );
211
+ $email_data->email_body = html_entity_decode( $email_data->email_body, ENT_COMPAT, 'UTF-8' );
212
+ $email_data->other_fields = serialize(
213
  array(
214
  'wcf_first_name' => $current_user->user_firstname,
215
  'wcf_last_name' => $current_user->user_lastname,
323
  <th style="' . $style . '">' . __( 'Quantity', 'woo-cart-abandonment-recovery' ) . '</th>
324
  <th style="' . $style . '">' . __( 'Price', 'woo-cart-abandonment-recovery' ) . '</th>
325
  <th style="' . $style . '">' . __( 'Line Subtotal', 'woo-cart-abandonment-recovery' ) . '</th>
326
+ </tr> ' . $tr . '
327
  </table>';
328
  }
329
 
modules/cart-abandonment/classes/class-cartflows-ca-email-templates.php CHANGED
@@ -110,38 +110,39 @@ class Cartflows_Ca_Email_Templates {
110
 
111
  $current_user = wp_get_current_user();
112
  $vars = array(
113
- 'email' => $current_user->user_email,
114
- 'name' => $current_user->user_firstname,
115
- 'surname' => $current_user->user_lastname,
116
- 'phone' => get_user_meta( $current_user->ID, 'billing_phone', true ),
117
- 'billing_company' => get_user_meta( $current_user->ID, 'billing_company', true ),
118
- 'billing_address_1' => get_user_meta( $current_user->ID, 'billing_address_1', true ),
119
- 'billing_address_2' => get_user_meta( $current_user->ID, 'billing_address_2', true ),
120
- 'billing_state' => get_user_meta( $current_user->ID, 'billing_state', true ),
121
- 'billing_postcode' => get_user_meta( $current_user->ID, 'billing_postcode', true ),
122
- 'shipping_first_name' => $current_user->user_firstname,
123
- 'shipping_last_name' => $current_user->user_lastname,
124
- 'shipping_company' => get_user_meta( $current_user->ID, 'shipping_company', true ),
125
- 'shipping_address_1' => get_user_meta( $current_user->ID, 'shipping_address_1', true ),
126
- 'shipping_address_2' => get_user_meta( $current_user->ID, 'shipping_address_2', true ),
127
- 'shipping_city' => get_user_meta( $current_user->ID, 'shipping_city', true ),
128
- 'shipping_state' => get_user_meta( $current_user->ID, 'shipping_state', true ),
129
- 'shipping_postcode' => get_user_meta( $current_user->ID, 'shipping_postcode', true ),
130
- 'woo_currency_symbol' => get_woocommerce_currency_symbol(),
131
- 'email_toggle_button_nonce' => wp_create_nonce( 'activate_email_templates' ),
132
- 'admin_firstname' => __( 'Admin Firstname', 'woo-cart-abandonment-recovery' ),
133
- 'admin_company' => __( 'Admin Company', 'woo-cart-abandonment-recovery' ),
134
- 'abandoned_product_details_table' => __( 'Abandoned Product Details Table', 'woo-cart-abandonment-recovery' ),
135
- 'abandoned_product_names' => __( 'Abandoned Product Names', 'woo-cart-abandonment-recovery' ),
136
- 'cart_checkout_url' => __( 'Cart Checkout URL', 'woo-cart-abandonment-recovery' ),
137
- 'coupon_code' => __( 'Coupon Code', 'woo-cart-abandonment-recovery' ),
138
- 'customer_firstname' => __( 'Customer First Name', 'woo-cart-abandonment-recovery' ),
139
- 'customer_lastname' => __( 'Customer Last Name', 'woo-cart-abandonment-recovery' ),
140
- 'customer_full_name' => __( 'Customer Full Name', 'woo-cart-abandonment-recovery' ),
141
- 'cart_abandonment_date' => __( 'Cart Abandonment Date', 'woo-cart-abandonment-recovery' ),
142
- 'site_url' => __( 'Site URL', 'woo-cart-abandonment-recovery' ),
143
- 'unsubscribe_link' => __( 'Unsubscribe Link', 'woo-cart-abandonment-recovery' ),
144
- 'strings' => array(
 
145
  'trigger_process' => __( 'Triggering...', 'woo-cart-abandonment-recovery' ),
146
  'trigger_failed' => __( 'Trigger Failed.', 'woo-cart-abandonment-recovery' ),
147
  'trigger_success' => __( 'Trigger Success.', 'woo-cart-abandonment-recovery' ),
@@ -198,6 +199,7 @@ class Cartflows_Ca_Email_Templates {
198
  define( 'WCF_CA_ZAPIER_SETTINGS_SECTION', 'cartflows_zapier_settings_section' );
199
  define( 'WCF_CA_GDPR_SETTINGS_SECTION', 'cartflows_gdpr_settings_section' );
200
  define( 'WCF_CA_PLUGIN_SETTINGS_SECTION', 'cartflows_cart_abandonment_plugin_settings_section' );
 
201
 
202
  define( 'WCF_CA_SETTINGS_OPTION_GROUP', 'cartflows-cart-abandonment-settings' );
203
  define( 'WCF_CA_EMAIL_SETTINGS_OPTION_GROUP', 'cartflows-cart-abandonment-email-settings' );
@@ -359,7 +361,7 @@ class Cartflows_Ca_Email_Templates {
359
  'coupon_amount' => 10,
360
  'coupon_expiry_date' => '',
361
  'coupon_expiry_unit' => 'hours',
362
-
363
  );
364
 
365
  foreach ( $meta_data as $mera_key => $meta_value ) {
@@ -520,6 +522,27 @@ class Cartflows_Ca_Email_Templates {
520
  </td>
521
  </tr>
522
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
523
  <tr>
524
  <th>
525
  <label for="wcf_override_global_coupon"><b><?php esc_html_e( 'Create Coupon', 'woo-cart-abandonment-recovery' ); ?></b></label>
@@ -833,6 +856,7 @@ class Cartflows_Ca_Email_Templates {
833
  $sanitized_post['wcf_free_shipping_coupon'] = isset( $_POST['wcf_free_shipping_coupon'] ) ? true : false; //phpcs:ignore
834
  $sanitized_post['wcf_individual_use_only'] = isset( $_POST['wcf_individual_use_only'] ) ? true : false; //phpcs:ignore
835
  $sanitized_post['wcf_email_body'] = html_entity_decode( $sanitized_post['wcf_email_body'], ENT_COMPAT, 'UTF-8' );
 
836
 
837
  return $sanitized_post;
838
 
@@ -868,6 +892,7 @@ class Cartflows_Ca_Email_Templates {
868
  'auto_coupon' => $sanitized_post['wcf_auto_coupon_apply'],
869
  'free_shipping_coupon' => $sanitized_post['wcf_free_shipping_coupon'],
870
  'individual_use_only' => $sanitized_post['wcf_individual_use_only'],
 
871
 
872
  );
873
 
@@ -918,6 +943,7 @@ class Cartflows_Ca_Email_Templates {
918
  'auto_coupon' => $sanitized_post['wcf_auto_coupon_apply'],
919
  'free_shipping_coupon' => $sanitized_post['wcf_free_shipping_coupon'],
920
  'individual_use_only' => $sanitized_post['wcf_individual_use_only'],
 
921
 
922
  );
923
  foreach ( $meta_data as $mera_key => $meta_value ) {
110
 
111
  $current_user = wp_get_current_user();
112
  $vars = array(
113
+ 'email' => $current_user->user_email,
114
+ 'name' => $current_user->user_firstname,
115
+ 'surname' => $current_user->user_lastname,
116
+ 'phone' => get_user_meta( $current_user->ID, 'billing_phone', true ),
117
+ 'billing_company' => get_user_meta( $current_user->ID, 'billing_company', true ),
118
+ 'billing_address_1' => get_user_meta( $current_user->ID, 'billing_address_1', true ),
119
+ 'billing_address_2' => get_user_meta( $current_user->ID, 'billing_address_2', true ),
120
+ 'billing_state' => get_user_meta( $current_user->ID, 'billing_state', true ),
121
+ 'billing_postcode' => get_user_meta( $current_user->ID, 'billing_postcode', true ),
122
+ 'shipping_first_name' => $current_user->user_firstname,
123
+ 'shipping_last_name' => $current_user->user_lastname,
124
+ 'shipping_company' => get_user_meta( $current_user->ID, 'shipping_company', true ),
125
+ 'shipping_address_1' => get_user_meta( $current_user->ID, 'shipping_address_1', true ),
126
+ 'shipping_address_2' => get_user_meta( $current_user->ID, 'shipping_address_2', true ),
127
+ 'shipping_city' => get_user_meta( $current_user->ID, 'shipping_city', true ),
128
+ 'shipping_state' => get_user_meta( $current_user->ID, 'shipping_state', true ),
129
+ 'shipping_postcode' => get_user_meta( $current_user->ID, 'shipping_postcode', true ),
130
+ 'woo_currency_symbol' => get_woocommerce_currency_symbol(),
131
+ 'email_toggle_button_nonce' => wp_create_nonce( 'activate_email_templates' ),
132
+ 'weekly_report_email_notice_nonce' => wp_create_nonce( 'wcar_disable_weekly_report_email_notice' ),
133
+ 'admin_firstname' => __( 'Admin Firstname', 'woo-cart-abandonment-recovery' ),
134
+ 'admin_company' => __( 'Admin Company', 'woo-cart-abandonment-recovery' ),
135
+ 'abandoned_product_details_table' => __( 'Abandoned Product Details Table', 'woo-cart-abandonment-recovery' ),
136
+ 'abandoned_product_names' => __( 'Abandoned Product Names', 'woo-cart-abandonment-recovery' ),
137
+ 'cart_checkout_url' => __( 'Cart Checkout URL', 'woo-cart-abandonment-recovery' ),
138
+ 'coupon_code' => __( 'Coupon Code', 'woo-cart-abandonment-recovery' ),
139
+ 'customer_firstname' => __( 'Customer First Name', 'woo-cart-abandonment-recovery' ),
140
+ 'customer_lastname' => __( 'Customer Last Name', 'woo-cart-abandonment-recovery' ),
141
+ 'customer_full_name' => __( 'Customer Full Name', 'woo-cart-abandonment-recovery' ),
142
+ 'cart_abandonment_date' => __( 'Cart Abandonment Date', 'woo-cart-abandonment-recovery' ),
143
+ 'site_url' => __( 'Site URL', 'woo-cart-abandonment-recovery' ),
144
+ 'unsubscribe_link' => __( 'Unsubscribe Link', 'woo-cart-abandonment-recovery' ),
145
+ 'strings' => array(
146
  'trigger_process' => __( 'Triggering...', 'woo-cart-abandonment-recovery' ),
147
  'trigger_failed' => __( 'Trigger Failed.', 'woo-cart-abandonment-recovery' ),
148
  'trigger_success' => __( 'Trigger Success.', 'woo-cart-abandonment-recovery' ),
199
  define( 'WCF_CA_ZAPIER_SETTINGS_SECTION', 'cartflows_zapier_settings_section' );
200
  define( 'WCF_CA_GDPR_SETTINGS_SECTION', 'cartflows_gdpr_settings_section' );
201
  define( 'WCF_CA_PLUGIN_SETTINGS_SECTION', 'cartflows_cart_abandonment_plugin_settings_section' );
202
+ define( 'WCF_CA_RECOVERY_EMAIL_SETTINGS_SECTION', 'cartflows_cart_abandonment_recovery_report_settings_section' );
203
 
204
  define( 'WCF_CA_SETTINGS_OPTION_GROUP', 'cartflows-cart-abandonment-settings' );
205
  define( 'WCF_CA_EMAIL_SETTINGS_OPTION_GROUP', 'cartflows-cart-abandonment-email-settings' );
361
  'coupon_amount' => 10,
362
  'coupon_expiry_date' => '',
363
  'coupon_expiry_unit' => 'hours',
364
+ 'use_woo_email_style' => false,
365
  );
366
 
367
  foreach ( $meta_data as $mera_key => $meta_value ) {
522
  </td>
523
  </tr>
524
 
525
+ <tr>
526
+ <th>
527
+ <label for="wcf_use_woo_email_style"><b><?php esc_html_e( 'Use WooCommerce email style', 'woo-cart-abandonment-recovery' ); ?></b></label>
528
+ </th>
529
+ <td>
530
+ <?php
531
+
532
+ $wcf_woo_email_style = '';
533
+ if ( WCF_SUB_ACTION_EDIT_EMAIL_TEMPLATES === $sub_action && $results ) {
534
+ $wcf_woo_email_style = $this->get_email_template_meta_by_key( $results->id, 'use_woo_email_style' );
535
+ if ( isset( $wcf_woo_email_style->meta_value ) ) {
536
+ $wcf_woo_email_style = $wcf_woo_email_style->meta_value ? 'checked' : '';
537
+ }
538
+ }
539
+
540
+ print '<input ' . esc_attr( $wcf_woo_email_style ) . ' id="wcf_use_woo_email_style" name="wcf_use_woo_email_style" type="checkbox" value="" /><span class="description">' . esc_html__( 'Email will be sent in WooCommerce email format. Also the sender name and sender email address will be replaced by the Woocommerce Email sender options.', 'woo-cart-abandonment-recovery' ) . '</span>';
541
+ ?>
542
+
543
+ </td>
544
+ </tr>
545
+
546
  <tr>
547
  <th>
548
  <label for="wcf_override_global_coupon"><b><?php esc_html_e( 'Create Coupon', 'woo-cart-abandonment-recovery' ); ?></b></label>
856
  $sanitized_post['wcf_free_shipping_coupon'] = isset( $_POST['wcf_free_shipping_coupon'] ) ? true : false; //phpcs:ignore
857
  $sanitized_post['wcf_individual_use_only'] = isset( $_POST['wcf_individual_use_only'] ) ? true : false; //phpcs:ignore
858
  $sanitized_post['wcf_email_body'] = html_entity_decode( $sanitized_post['wcf_email_body'], ENT_COMPAT, 'UTF-8' );
859
+ $sanitized_post['wcf_use_woo_email_style'] = isset( $_POST['wcf_use_woo_email_style'] ) ? true : false; //phpcs:ignore
860
 
861
  return $sanitized_post;
862
 
892
  'auto_coupon' => $sanitized_post['wcf_auto_coupon_apply'],
893
  'free_shipping_coupon' => $sanitized_post['wcf_free_shipping_coupon'],
894
  'individual_use_only' => $sanitized_post['wcf_individual_use_only'],
895
+ 'use_woo_email_style' => $sanitized_post['wcf_use_woo_email_style'],
896
 
897
  );
898
 
943
  'auto_coupon' => $sanitized_post['wcf_auto_coupon_apply'],
944
  'free_shipping_coupon' => $sanitized_post['wcf_free_shipping_coupon'],
945
  'individual_use_only' => $sanitized_post['wcf_individual_use_only'],
946
+ 'use_woo_email_style' => $sanitized_post['wcf_use_woo_email_style'],
947
 
948
  );
949
  foreach ( $meta_data as $mera_key => $meta_value ) {
modules/cart-abandonment/classes/class-cartflows-ca-module-loader.php CHANGED
@@ -68,6 +68,7 @@ class Cartflows_Ca_Module_Loader {
68
  include_once $filename;
69
  }
70
  }
 
71
  }
72
 
73
  }
68
  include_once $filename;
69
  }
70
  }
71
+
72
  }
73
 
74
  }
modules/weekly-email-report/class-cartflows-ca-admin-report-emails.php ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Settings.
4
+ *
5
+ * @package Woocommerce-Cart-Abandonment-Recovery
6
+ */
7
+
8
+ if ( ! defined( 'ABSPATH' ) ) {
9
+ exit; // Exit if accessed directly.
10
+ }
11
+
12
+ /**
13
+ * Class Cartflows_Ca_Admin_Report_Emails.
14
+ */
15
+ class Cartflows_Ca_Admin_Report_Emails {
16
+
17
+
18
+ /**
19
+ * Class instance.
20
+ *
21
+ * @access private
22
+ * @var $instance Class instance.
23
+ */
24
+ private static $instance;
25
+
26
+ /**
27
+ * Initiator
28
+ */
29
+ public static function get_instance() {
30
+ if ( ! isset( self::$instance ) ) {
31
+ self::$instance = new self();
32
+ }
33
+ return self::$instance;
34
+ }
35
+
36
+
37
+ /**
38
+ * Constructor.
39
+ */
40
+ public function __construct() {
41
+
42
+ add_action( 'admin_init', array( $this, 'schedule_weekly_report_email' ) );
43
+
44
+ add_action( 'cartflows_ca_send_report_summary_email', array( $this, 'send_weekly_report_email' ) );
45
+
46
+ add_action( 'admin_init', array( $this, 'unsubscribe_cart_abandonment_weekly_emails' ), 9 );
47
+
48
+ }
49
+
50
+ /**
51
+ * Sechedule the email.
52
+ */
53
+ public function schedule_weekly_report_email() {
54
+
55
+ $is_emails_enabled = get_option( 'wcf_ca_send_recovery_report_emails_to_admin', 'on' );
56
+
57
+ if ( 'on' === $is_emails_enabled && function_exists( 'as_next_scheduled_action' ) && false === as_next_scheduled_action( 'cartflows_ca_send_report_summary_email' ) ) {
58
+
59
+ $date = new DateTime( 'next monday 2pm' );
60
+
61
+ // It will automatically reschedule the action once initiated.
62
+ as_schedule_recurring_action( $date, WEEK_IN_SECONDS, 'cartflows_ca_send_report_summary_email' );
63
+ } elseif ( 'on' !== $is_emails_enabled && as_next_scheduled_action( 'cartflows_ca_send_report_summary_email' ) ) {
64
+ as_unschedule_all_actions( 'cartflows_ca_send_report_summary_email' );
65
+ }
66
+ }
67
+
68
+ /**
69
+ * Send the email.
70
+ */
71
+ public function send_weekly_report_email() {
72
+
73
+ $is_emails_enabled = get_option( 'wcf_ca_send_recovery_report_emails_to_admin', 'on' );
74
+
75
+ if ( 'on' === $is_emails_enabled && apply_filters( 'cartflows_ca_send_weekly_report_email', true ) ) {
76
+
77
+ $report_details = $this->get_last_week_report();
78
+
79
+ if ( isset( $report_details['recovered_orders'] ) && 0 < intval( $report_details['recovered_orders'] ) ) {
80
+
81
+ $subject = $this->get_email_subject();
82
+ $headers = 'Content-Type: text/html' . "\r\n";
83
+
84
+ $admin_email = get_option( 'wcf_ca_admin_email', get_option( 'admin_email' ) );
85
+ $user_info = get_user_by( 'email', $admin_email );
86
+ $user_name = $user_info ? $user_info->display_name : '';
87
+
88
+ $email_body = $this->get_email_content( $report_details, $user_name );
89
+ wp_mail( $admin_email, $subject, stripslashes( $email_body ), $headers );
90
+ }
91
+ }
92
+ }
93
+
94
+ /**
95
+ * Get admin report email subject.
96
+ */
97
+ public function get_email_subject() {
98
+
99
+ $home_url = wp_parse_url( home_url() );
100
+ $site_domain = $home_url['host'];
101
+
102
+ if ( is_multisite() && isset( $home_url['path'] ) ) {
103
+ $site_domain .= $home_url['path'];
104
+ }
105
+
106
+ return esc_html__( 'Your Weekly Cart Abandonment Summary is here - CartFlows', 'woo-cart-abandonment-recovery' );
107
+ }
108
+
109
+ /**
110
+ * Get admin report email content.
111
+ *
112
+ * @param array $report_details report data.
113
+ * @param string $user_name user name.
114
+ */
115
+ public function get_email_content( $report_details, $user_name ) {
116
+
117
+ $cf_logo = CARTFLOWS_CA_URL . 'admin/assets/images/cartflows-email-logo.png';
118
+ $unsubscribe_link = add_query_arg(
119
+ array(
120
+ 'page' => 'woo-cart-abandonment-recovery',
121
+ 'unsubscribe_weekly_email' => true,
122
+ ),
123
+ admin_url( 'admin.php' )
124
+ );
125
+
126
+ $facebook_icon = CARTFLOWS_CA_URL . 'admin/assets/images/facebook2x.png';
127
+ $twitter_icon = CARTFLOWS_CA_URL . 'admin/assets/images/twitter2x.png';
128
+ $youtube_icon = CARTFLOWS_CA_URL . 'admin/assets/images/youtube2x.png';
129
+
130
+ $from_date = gmdate( 'M j', strtotime( '-7 days' ) );
131
+ $to_date = gmdate( 'M j' );
132
+ $store_name = get_bloginfo( 'name' );
133
+
134
+ return include CARTFLOWS_CA_DIR . 'modules/weekly-email-report/templates/email-body.php';
135
+ }
136
+
137
+ /**
138
+ * Unsubscribe the user from the mailing list.
139
+ */
140
+ public function unsubscribe_cart_abandonment_weekly_emails() {
141
+
142
+ $unsubscribe = filter_input( INPUT_GET, 'unsubscribe_weekly_email', FILTER_VALIDATE_BOOLEAN );
143
+ $page = filter_input( INPUT_GET, 'page', FILTER_SANITIZE_STRING );
144
+
145
+ if ( $unsubscribe && 'woo-cart-abandonment-recovery' === $page && is_user_logged_in() && current_user_can( 'manage_options' ) ) {
146
+
147
+ update_option( 'wcf_ca_send_recovery_report_emails_to_admin', 'off' );
148
+ wp_die( esc_html__( 'You have successfully unsubscribed from our weekly emails list.', 'woo-cart-abandonment-recovery' ), esc_html__( 'Unsubscribed', 'woo-cart-abandonment-recovery' ) );
149
+ }
150
+
151
+ }
152
+
153
+ /**
154
+ * Get last week report.
155
+ */
156
+ public function get_last_week_report() {
157
+
158
+ $from_date = gmdate( 'Y-m-d', strtotime( '-7 days' ) );
159
+ $to_date = gmdate( 'Y-m-d' );
160
+
161
+ $report_instance = Cartflows_Ca_Tabs::get_instance();
162
+ $abandoned_report = $report_instance->get_report_by_type( $from_date, $to_date, WCF_CART_ABANDONED_ORDER );
163
+ $recovered_report = $report_instance->get_report_by_type( $from_date, $to_date, WCF_CART_COMPLETED_ORDER );
164
+ $lost_report = $report_instance->get_report_by_type( $from_date, $to_date, WCF_CART_LOST_ORDER );
165
+
166
+ $total_orders = ( $recovered_report['no_of_orders'] + $abandoned_report['no_of_orders'] + $lost_report['no_of_orders'] );
167
+ if ( $total_orders ) {
168
+ $conversion_rate = ( $recovered_report['no_of_orders'] / $total_orders ) * 100;
169
+ }
170
+
171
+ $from_date = gmdate( 'Y-m-d', strtotime( '-30 days' ) );
172
+ $last_month_recovered_report = $report_instance->get_report_by_type( $from_date, $to_date, WCF_CART_COMPLETED_ORDER );
173
+
174
+ return array(
175
+ 'recovered_revenue' => $recovered_report['revenue'],
176
+ 'recovered_orders' => $recovered_report['no_of_orders'],
177
+ 'abandonded_orders' => $abandoned_report['no_of_orders'],
178
+ 'last_month_recovered_Revenue' => $last_month_recovered_report['revenue'],
179
+ 'conversion_rate' => $conversion_rate,
180
+ );
181
+ }
182
+
183
+ }
184
+
185
+ Cartflows_Ca_Admin_Report_Emails::get_instance();
modules/weekly-email-report/templates/email-body.php ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Template Name: Email Header
4
+ *
5
+ * @package Cart Abandonment Recovery
6
+ */
7
+
8
+ // Exit if accessed directly.
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+ ob_start();
13
+ ?>
14
+
15
+ <!doctype html>
16
+ <html>
17
+
18
+ <head>
19
+ <title><?php echo esc_html__( 'Cart Abandonment Recovery Weekly Report', 'woo-cart-abandonment-recovery' ); ?></title>
20
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
21
+ <meta content="width=device-width, initial-scale=1.0" name="viewport" />
22
+ <!--[if mso]><xml><o:OfficeDocumentSettings><o:PixelsPerInch>96</o:PixelsPerInch><o:AllowPNG/></o:OfficeDocumentSettings></xml><![endif]-->
23
+ <style>
24
+ * {
25
+ box-sizing: border-box;
26
+ }
27
+
28
+ body {
29
+ margin: 0;
30
+ padding: 0;
31
+ }
32
+
33
+ a[x-apple-data-detectors] {
34
+ color: inherit !important;
35
+ text-decoration: inherit !important;
36
+ }
37
+
38
+ #MessageViewBody a {
39
+ color: inherit;
40
+ text-decoration: none;
41
+ }
42
+
43
+ p {
44
+ line-height: inherit
45
+ }
46
+
47
+ @media (max-width:620px) {
48
+ .row-content {
49
+ width: 100% !important;
50
+ }
51
+
52
+ .column .border {
53
+ display: none;
54
+ }
55
+
56
+ .stack .column {
57
+ width: 100%;
58
+ display: block;
59
+ }
60
+ }
61
+ </style>
62
+ </head>
63
+
64
+ <body style="background-color: #FFFFFF; margin: 0; padding: 0; -webkit-text-size-adjust: none; text-size-adjust: none;">
65
+ <table border="0" cellpadding="0" cellspacing="0" class="nl-container" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #FFFFFF;" width="100%">
66
+ <tbody>
67
+ <tr>
68
+ <td>
69
+ <?php
70
+ require CARTFLOWS_CA_DIR . 'modules/weekly-email-report/templates/email-header.php';
71
+
72
+ require CARTFLOWS_CA_DIR . 'modules/weekly-email-report/templates/email-content-section.php';
73
+
74
+ require CARTFLOWS_CA_DIR . 'modules/weekly-email-report/templates/email-recovery-stat.php';
75
+
76
+ if ( ! class_exists( 'Cartflows_Pro_Loader' ) ) {
77
+ include CARTFLOWS_CA_DIR . 'modules/weekly-email-report/templates/email-cf-block.php';
78
+ } else {
79
+ include CARTFLOWS_CA_DIR . 'modules/weekly-email-report/templates/email-bsf-product-block.php';
80
+ }
81
+
82
+ require CARTFLOWS_CA_DIR . 'modules/weekly-email-report/templates/email-footer.php';
83
+
84
+ ?>
85
+ </td>
86
+ </tr>
87
+ </tbody>
88
+ </table><!-- End -->
89
+ </body>
90
+
91
+ </html>
92
+
93
+ <?php
94
+ return ob_get_clean();
modules/weekly-email-report/templates/email-bsf-product-block.php ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Template Name: Email Header
4
+ *
5
+ * @package Cart Abandonment Recovery
6
+ */
7
+
8
+ // Exit if accessed directly.
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+ ?>
13
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-6" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #fff3f0;" width="100%">
14
+ <tbody>
15
+ <tr>
16
+ <td>
17
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
18
+ <tbody>
19
+ <tr>
20
+ <td class="column column-1" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; padding-top: 50px; padding-bottom: 50px; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="100%">
21
+ <table border="0" cellpadding="0" cellspacing="0" class="heading_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
22
+ <tr>
23
+ <td style="padding-bottom:10px;text-align:center;width:100%;">
24
+ <h1 style="margin: 0; color: #1f2937; direction: ltr; font-family: Arial, Helvetica Neue, Helvetica, sans-serif; font-size: 28px; font-weight: 400; letter-spacing: normal; line-height: 120%; text-align: center; margin-top: 0; margin-bottom: 0;">
25
+ <?php
26
+ echo esc_html__(
27
+ 'Would you like to try our other products that make help you more sale and money?',
28
+ 'cartflows'
29
+ )
30
+ ?>
31
+  </h1>
32
+ </td>
33
+ </tr>
34
+ </table>
35
+ <table border="0" cellpadding="0" cellspacing="0" class="button_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
36
+ <tr>
37
+ <td style="padding-bottom:10px;padding-left:10px;padding-right:10px;padding-top:20px;text-align:center;">
38
+ <div align="center">
39
+ <!--[if mso]><v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" style="height:43px;width:273px;v-text-anchor:middle;" arcsize="10%" strokeweight="0.75pt" strokecolor="#F06434" fillcolor="#f06434"><w:anchorlock/><v:textbox inset="0px,0px,0px,0px"><center style="color:#ffffff; font-family:Arial, sans-serif; font-size:14px"><![endif]-->
40
+ <div style="text-decoration:none;display:inline-block;color:#ffffff;background-color:#f06434;border-radius:4px;width:auto;border-top:1px solid #F06434;border-right:1px solid #F06434;border-bottom:1px solid #F06434;border-left:1px solid #F06434;padding-top:5px;padding-bottom:5px;font-family:Arial, Helvetica Neue, Helvetica, sans-serif;text-align:center;mso-border-alt:none;word-break:keep-all;">
41
+ <span style="padding-left:20px;padding-right:20px;font-size:14px;display:inline-block;letter-spacing:normal;"><span style="font-size: 16px; line-height: 2; word-break: break-word; mso-line-height-alt: 32px;"><strong><span data-mce-style="font-size: 14px; line-height: 28px;" style="font-size: 14px; line-height: 28px;"><a href="https://cartflows.com/products-to-scale-growth/?utm_source=newsletter&utm_medium=email&utm_campaign=cart-abandonment-bsf" target="_blank" style="text-decoration:none; color:#ffffff;"><?php echo esc_html__( 'CHECK OUR OTHERS PRODUCTS', 'cartflows' ); ?></a></span></strong></span></span>
42
+ </div>
43
+ <!--[if mso]></center></v:textbox></v:roundrect><![endif]-->
44
+ </div>
45
+ </td>
46
+ </tr>
47
+ </table>
48
+ </td>
49
+ </tr>
50
+ </tbody>
51
+ </table>
52
+ </td>
53
+ </tr>
54
+ </tbody>
55
+ </table>
56
+
57
+
58
+ <?php
modules/weekly-email-report/templates/email-cf-block.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Template Name: Email Header
4
+ *
5
+ * @package Cart Abandonment Recovery
6
+ */
7
+
8
+ // Exit if accessed directly.
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+ ?>
13
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-6" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #fff3f0;" width="100%">
14
+ <tbody>
15
+ <tr>
16
+ <td>
17
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
18
+ <tbody>
19
+ <tr>
20
+ <td class="column column-1" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; padding-top: 50px; padding-bottom: 50px; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="100%">
21
+ <table border="0" cellpadding="0" cellspacing="0" class="heading_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
22
+ <tr>
23
+ <td style="padding-bottom:10px;text-align:center;width:100%;">
24
+ <h1 style="margin: 0; color: #1f2937; direction: ltr; font-family: Arial, Helvetica Neue, Helvetica, sans-serif; font-size: 28px; font-weight: 400; letter-spacing: normal; line-height: 120%; text-align: center; margin-top: 0; margin-bottom: 0;">
25
+ <?php
26
+ echo esc_html__(
27
+ 'CartFlows Pro can help you to increase conversion and maximize profits.',
28
+ 'cartflows'
29
+ )
30
+ ?>
31
+ </h1>
32
+ </td>
33
+ </tr>
34
+ </table>
35
+ <table border="0" cellpadding="0" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
36
+ <tr>
37
+ <td style="padding-bottom:15px;padding-left:10px;padding-right:10px;padding-top:10px;">
38
+ <div style="font-family: sans-serif">
39
+ <div style="font-size: 14px; mso-line-height-alt: 25.2px; color: #393d47; line-height: 1.8; font-family: Arial, Helvetica Neue, Helvetica, sans-serif;">
40
+ <p style="margin: 0; font-size: 14px; text-align: center; mso-line-height-alt: 28.8px;">
41
+ <span style="font-size:16px;">
42
+ <?php
43
+ echo esc_html__(
44
+ 'Want to earn 30% more store revenue on autopilot? CartFlows order bumps and upsells help you do just that. Try CartFlows Pro risk-free for 30 days!',
45
+ 'cartflows'
46
+ )
47
+ ?>
48
+ </span>
49
+ </p>
50
+ </div>
51
+ </div>
52
+ </td>
53
+ </tr>
54
+ </table>
55
+ <table border="0" cellpadding="10" cellspacing="0" class="button_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
56
+ <tr>
57
+ <td>
58
+ <div align="center">
59
+ <!--[if mso]><v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="https://cartflows.com/" style="height:43px;width:204px;v-text-anchor:middle;" arcsize="10%" strokeweight="0.75pt" strokecolor="#F06434" fillcolor="#f06434"><w:anchorlock/><v:textbox inset="0px,0px,0px,0px"><center style="color:#ffffff; font-family:Arial, sans-serif; font-size:14px"><![endif]--><a href="https://cartflows.com/use-cartflows-pro?utm_source=newsletter&utm_medium=email&utm_campaign=cart-abandonment-cf-pro" style="text-decoration:none;display:inline-block;color:#ffffff;background-color:#f06434;border-radius:4px;width:auto;border-top:1px solid #F06434;border-right:1px solid #F06434;border-bottom:1px solid #F06434;border-left:1px solid #F06434;padding-top:5px;padding-bottom:5px;font-family:Arial, Helvetica Neue, Helvetica, sans-serif;text-align:center;mso-border-alt:none;word-break:keep-all;" target="_blank"><span style="padding-left:20px;padding-right:20px;font-size:14px;display:inline-block;letter-spacing:normal;"><span style="font-size: 16px; line-height: 2; word-break: break-word; mso-line-height-alt: 32px;"><strong><span data-mce-style="font-size: 14px; line-height: 28px;" style="font-size: 14px; line-height: 28px;">
60
+ <?php
61
+ echo esc_html__(
62
+ 'GET CARTFLOWS NOW',
63
+ 'cartflows'
64
+ )
65
+ ?>
66
+ </span></strong></span></span></a>
67
+ <!--[if mso]></center></v:textbox></v:roundrect><![endif]-->
68
+ </div>
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </td>
73
+ </tr>
74
+ </tbody>
75
+ </table>
76
+ </td>
77
+ </tr>
78
+ </tbody>
79
+ </table>
80
+
81
+
82
+ <?php
modules/weekly-email-report/templates/email-content-section.php ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Template Name: Email Header
4
+ *
5
+ * @package Cart Abandonment Recovery
6
+ */
7
+
8
+ // Exit if accessed directly.
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+ ?>
13
+
14
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-3" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #fff3f0;" width="100%">
15
+ <tbody>
16
+ <tr>
17
+ <td>
18
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
19
+ <tbody>
20
+ <tr>
21
+ <td class="column column-1" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="50%">
22
+ <table border="0" cellpadding="0" cellspacing="0" class="heading_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
23
+ <tr>
24
+ <td style="padding-bottom:10px;padding-left:10px;padding-top:60px;text-align:center;width:100%;">
25
+ <h1 style="margin: 0; color: #1f2937; direction: ltr; font-family: Arial, Helvetica Neue, Helvetica, sans-serif; font-size: 32px; font-weight: 400; letter-spacing: normal; line-height: 120%; text-align: left; margin-top: 0; margin-bottom: 0;">
26
+ <?php echo sprintf(esc_html__('Hey %s!', 'cartflows'), esc_attr__($user_name)); // phpcs:ignore
27
+ ?>
28
+ </h1>
29
+ </td>
30
+ </tr>
31
+ </table>
32
+ <table border="0" cellpadding="0" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
33
+ <tr>
34
+ <td style="padding-bottom:55px;padding-left:10px;padding-right:10px;padding-top:10px;">
35
+ <div style="font-family: sans-serif">
36
+ <div style="font-size: 14px; mso-line-height-alt: 25.2px; color: #393d47; line-height: 1.8; font-family: Arial, Helvetica Neue, Helvetica, sans-serif;">
37
+ <p style="margin: 0; font-size: 14px; text-align: left;">
38
+ <?php
39
+ echo sprintf(
40
+ /* translators: %1$s: store name, %2$s: total revenue. %3$s: total revenue*/
41
+ esc_html__(
42
+ '%1$s has recovered a total %2$s revenue in last week from CartFlows cart abandonment! And in last month, it generated %3$s',
43
+ 'cartflows'
44
+ ),
45
+ esc_attr( $store_name ),
46
+ wp_kses_post( wc_price( $report_details['recovered_revenue'] ) ),
47
+ wp_kses_post( wc_price( $report_details['last_month_recovered_Revenue'] ) )
48
+ ); // phpcs:ignore
49
+ ?>
50
+ </p>
51
+ </div>
52
+ </div>
53
+ </td>
54
+ </tr>
55
+ </table>
56
+ </td>
57
+ <td class="column column-2" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="50%">
58
+ <table border="0" cellpadding="0" cellspacing="0" class="heading_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
59
+ <tr>
60
+ <td style="padding-bottom:10px;padding-top:60px;text-align:center;width:100%;">
61
+ <h1 style="margin: 0; color: #1f2937; direction: ltr; font-family: Arial, Helvetica Neue, Helvetica, sans-serif; font-size: 32px; font-weight: 400; letter-spacing: normal; line-height: 120%; text-align: center; margin-top: 0; margin-bottom: 0;">
62
+ <?php echo wp_kses_post( wc_price( $report_details['recovered_revenue'] ) ); ?>
63
+ </h1>
64
+ </td>
65
+ </tr>
66
+ </table>
67
+ <table border="0" cellpadding="0" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
68
+ <tr>
69
+ <td style="padding-bottom:55px;padding-left:10px;padding-right:10px;padding-top:10px;">
70
+ <div style="font-family: sans-serif">
71
+ <div style="font-size: 14px; mso-line-height-alt: 16.8px; color: #393d47; line-height: 1.2; font-family: Arial, Helvetica Neue, Helvetica, sans-serif;">
72
+ <p style="margin: 0; font-size: 14px; text-align: center;">
73
+ <span style="font-size:14px;"><?php echo esc_attr( $from_date ) . ' - ' . esc_attr( $to_date ); ?></span>
74
+ </p>
75
+ <p style="margin: 0; font-size: 14px; text-align: center;">
76
+ <span style="font-size:12px;">
77
+ <?php
78
+ echo esc_html__(
79
+ '(In last 7 days)',
80
+ 'cartflows'
81
+ )
82
+ ?>
83
+ </span>
84
+ </p>
85
+ <p style="margin: 0; font-size: 14px; text-align: center; mso-line-height-alt: 16.8px;">
86
+  </p>
87
+ <p style="margin: 0; font-size: 14px; text-align: center;">
88
+ <span style="font-size:22px;"><?php echo wp_kses_post( wc_price( $report_details['last_month_recovered_Revenue'] ) ); ?></span>
89
+ </p>
90
+ <p style="margin: 0; text-align: center;"><span style="font-size:12px;">
91
+ <?php
92
+ echo esc_html__(
93
+ '(In last 30 days)',
94
+ 'cartflows'
95
+ )
96
+ ?>
97
+ </span></p>
98
+ </div>
99
+ </div>
100
+ </td>
101
+ </tr>
102
+ </table>
103
+ </td>
104
+ </tr>
105
+ </tbody>
106
+ </table>
107
+ </td>
108
+ </tr>
109
+ </tbody>
110
+ </table>
111
+
112
+
113
+ <?php
modules/weekly-email-report/templates/email-footer.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Template Name: Email Header
4
+ *
5
+ * @package Cart Abandonment Recovery
6
+ */
7
+
8
+ // Exit if accessed directly.
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+ ?>
13
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-7" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
14
+ <tbody>
15
+ <tr>
16
+ <td>
17
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
18
+ <tbody>
19
+ <tr>
20
+ <td class="column column-1" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; padding-top: 5px; padding-bottom: 5px; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="100%">
21
+ <table border="0" cellpadding="20" cellspacing="0" class="social_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
22
+ <tr>
23
+ <td>
24
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="social-table" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="138px">
25
+ <tr>
26
+ <td style="padding:0 7px 0 7px;"><a href="https://www.facebook.com/groups/cartflows/" target="_blank"><img alt="Facebook" height="32" src="<?php echo esc_url( $facebook_icon ); ?>" style="display: block; height: auto; border: 0;" title="facebook" width="32" /></a>
27
+ </td>
28
+ <td style="padding:0 7px 0 7px;"><a href="https://twitter.com/cartflows" target="_blank"><img alt="Twitter" height="32" src="<?php echo esc_url( $twitter_icon ); ?>" style="display: block; height: auto; border: 0;" title="twitter" width="32" /></a>
29
+ </td>
30
+ <td style="padding:0 7px 0 7px;"><a href="https://www.youtube.com/channel/UCEdXT5pEI_Vbd5te5v7sOpQ" target="_blank"><img alt="YouTube" height="32" src="<?php echo esc_url( $youtube_icon ); ?>" style="display: block; height: auto; border: 0;" title="YouTube" width="32" /></a>
31
+ </td>
32
+ </tr>
33
+ </table>
34
+ </td>
35
+ </tr>
36
+ </table>
37
+ </td>
38
+ </tr>
39
+ </tbody>
40
+ </table>
41
+ </td>
42
+ </tr>
43
+ </tbody>
44
+ </table>
45
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-8" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
46
+ <tbody>
47
+ <tr>
48
+ <td>
49
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
50
+ <tbody>
51
+ <tr>
52
+ <td class="column column-1" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; padding-top: 5px; padding-bottom: 5px; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="100%">
53
+ <table border="0" cellpadding="10" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
54
+ <tr>
55
+ <td>
56
+ <div style="font-family: sans-serif">
57
+ <div style="font-size: 14px; mso-line-height-alt: 16.8px; color: #393d47; line-height: 1.2; font-family: Arial, Helvetica Neue, Helvetica, sans-serif;">
58
+ <p style="margin: 0; text-align: center;">
59
+ <?php
60
+ echo esc_html__(
61
+ 'Our postal address: Brainstorm Force, Vasant Utsav, Hinjewadi, Pune, India 411057',
62
+ 'cartflows'
63
+ )
64
+ ?>
65
+ </p>
66
+ <p style="margin: 0; text-align: center; mso-line-height-alt: 16.8px;">
67
+  </p>
68
+ <p style="margin: 0; text-align: center;"><a href="<?php echo esc_url( $unsubscribe_link ); ?>" rel="noopener" style="color: #8a3b8f;" target="_blank"><?php echo esc_html__( 'Unsubscribe', 'cartflows' ); ?></a></p>
69
+ </div>
70
+ </div>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </td>
75
+ </tr>
76
+ </tbody>
77
+ </table>
78
+ </td>
79
+ </tr>
80
+ </tbody>
81
+ </table>
82
+
83
+ <?php
modules/weekly-email-report/templates/email-header.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Template Name: Email Header
4
+ *
5
+ * @package Cart Abandonment Recovery
6
+ */
7
+
8
+ // Exit if accessed directly.
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+ ?>
13
+
14
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-1" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #f06434;" width="100%">
15
+ <tbody>
16
+ <tr>
17
+ <td>
18
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
19
+ <tbody>
20
+ <tr>
21
+ <td class="column column-1" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; padding-top: 5px; padding-bottom: 5px; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="100%">
22
+ <table border="0" cellpadding="10" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
23
+ <tr>
24
+ <td>
25
+ <div style="font-family: sans-serif">
26
+ <div style="font-size: 14px; mso-line-height-alt: 16.8px; color: #ffffff; line-height: 1.2; font-family: Arial, Helvetica Neue, Helvetica, sans-serif;">
27
+ <p style="margin: 0; font-size: 14px; text-align: center;">
28
+ <strong>
29
+ <?php
30
+ echo esc_html__(
31
+ 'Your weekly cart abandonment summary from CartFlows.',
32
+ 'cartflows'
33
+ )
34
+ ?>
35
+ </strong>
36
+ </p>
37
+ </div>
38
+ </div>
39
+ </td>
40
+ </tr>
41
+ </table>
42
+ </td>
43
+ </tr>
44
+ </tbody>
45
+ </table>
46
+ </td>
47
+ </tr>
48
+ </tbody>
49
+ </table>
50
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-2" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
51
+ <tbody>
52
+ <tr>
53
+ <td>
54
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
55
+ <tbody>
56
+ <tr>
57
+ <td class="column column-1" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; padding-left: 15px; padding-right: 15px; padding-top: 15px; padding-bottom: 15px; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="100%">
58
+ <table border="0" cellpadding="5" cellspacing="0" class="image_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
59
+ <tr>
60
+ <td>
61
+ <div align="center" style="line-height:10px"><img src="<?php echo esc_url( $cf_logo ); ?>" style="display: block; height: auto; border: 0; width: 190px; max-width: 100%;" width="190" /></div>
62
+ </td>
63
+ </tr>
64
+ </table>
65
+ </td>
66
+ </tr>
67
+ </tbody>
68
+ </table>
69
+ </td>
70
+ </tr>
71
+ </tbody>
72
+ </table>
73
+
74
+
75
+ <?php
modules/weekly-email-report/templates/email-recovery-stat.php ADDED
@@ -0,0 +1,152 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Template Name: Email Header
4
+ *
5
+ * @package Cart Abandonment Recovery
6
+ */
7
+
8
+ // Exit if accessed directly.
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+ ?>
13
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-4" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
14
+ <tbody>
15
+ <tr>
16
+ <td>
17
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
18
+ <tbody>
19
+ <tr>
20
+ <td class="column column-1" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; padding-top: 50px; padding-bottom: 20px; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="100%">
21
+ <table border="0" cellpadding="0" cellspacing="0" class="heading_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
22
+ <tr>
23
+ <td style="text-align:center;width:100%;">
24
+ <h1 style="margin: 0; color: #1f2937; direction: ltr; font-family: Arial, Helvetica Neue, Helvetica, sans-serif; font-size: 28px; font-weight: 400; letter-spacing: normal; line-height: 120%; text-align: center; margin-top: 0; margin-bottom: 0;">
25
+ <?php echo esc_html__( 'Some More Numbers', 'cartflows' ); ?></h1>
26
+ </td>
27
+ </tr>
28
+ </table>
29
+ <table border="0" cellpadding="5" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
30
+ <tr>
31
+ <td>
32
+ <div style="font-family: sans-serif">
33
+ <div style="font-size: 14px; mso-line-height-alt: 16.8px; color: #393d47; line-height: 1.2; font-family: Arial, Helvetica Neue, Helvetica, sans-serif;">
34
+ <p style="margin: 0; font-size: 14px; text-align: center;">
35
+ <span style="font-size:16px;"><?php echo esc_attr( $from_date ) . ' - ' . esc_attr( $to_date ); ?></span>
36
+ </p>
37
+ </div>
38
+ </div>
39
+ </td>
40
+ </tr>
41
+ </table>
42
+ </td>
43
+ </tr>
44
+ </tbody>
45
+ </table>
46
+ </td>
47
+ </tr>
48
+ </tbody>
49
+ </table>
50
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-5" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
51
+ <tbody>
52
+ <tr>
53
+ <td>
54
+ <table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
55
+ <tbody>
56
+ <tr>
57
+ <td class="column column-1" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="33.333333333333336%">
58
+ <table border="0" cellpadding="0" cellspacing="0" class="heading_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
59
+ <tr>
60
+ <td style="text-align:center;width:100%;padding-top:5px;">
61
+ <h1 style="margin: 0; color: #1f2937; direction: ltr; font-family: Arial, Helvetica Neue, Helvetica, sans-serif; font-size: 30px; font-weight: 400; letter-spacing: normal; line-height: 120%; text-align: center; margin-top: 0; margin-bottom: 0;">
62
+ <?php echo esc_attr( $report_details['abandonded_orders'] ); ?></h1>
63
+ </td>
64
+ </tr>
65
+ </table>
66
+ <table border="0" cellpadding="0" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
67
+ <tr>
68
+ <td style="padding-bottom:60px;padding-left:10px;padding-right:10px;padding-top:10px;">
69
+ <div style="font-family: sans-serif">
70
+ <div style="font-size: 14px; mso-line-height-alt: 16.8px; color: #393d47; line-height: 1.2; font-family: Arial, Helvetica Neue, Helvetica, sans-serif;">
71
+ <p style="margin: 0; text-align: center;"><span style="font-size:16px;">
72
+ <?php
73
+ echo esc_html__(
74
+ 'Carts
75
+ abandoned',
76
+ 'cartflows'
77
+ )
78
+ ?>
79
+ </span></p>
80
+ </div>
81
+ </div>
82
+ </td>
83
+ </tr>
84
+ </table>
85
+ </td>
86
+ <td class="column column-2" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="33.333333333333336%">
87
+ <table border="0" cellpadding="0" cellspacing="0" class="heading_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
88
+ <tr>
89
+ <td style="text-align:center;width:100%;padding-top:5px;">
90
+ <h1 style="margin: 0; color: #1f2937; direction: ltr; font-family: Arial, Helvetica Neue, Helvetica, sans-serif; font-size: 30px; font-weight: 400; letter-spacing: normal; line-height: 120%; text-align: center; margin-top: 0; margin-bottom: 0;">
91
+ <?php echo esc_attr( $report_details['recovered_orders'] ); ?></h1>
92
+ </td>
93
+ </tr>
94
+ </table>
95
+ <table border="0" cellpadding="0" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
96
+ <tr>
97
+ <td style="padding-bottom:15px;padding-left:10px;padding-right:10px;padding-top:10px;">
98
+ <div style="font-family: sans-serif">
99
+ <div style="font-size: 14px; mso-line-height-alt: 16.8px; color: #393d47; line-height: 1.2; font-family: Arial, Helvetica Neue, Helvetica, sans-serif;">
100
+ <p style="margin: 0; text-align: center;"><span style="font-size:16px;">
101
+ <?php
102
+ echo esc_html__(
103
+ 'Carts
104
+ recovered',
105
+ 'cartflows'
106
+ )
107
+ ?>
108
+ </span></p>
109
+ </div>
110
+ </div>
111
+ </td>
112
+ </tr>
113
+ </table>
114
+ </td>
115
+ <td class="column column-3" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="33.333333333333336%">
116
+ <table border="0" cellpadding="0" cellspacing="0" class="heading_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
117
+ <tr>
118
+ <td style="text-align:center;width:100%;padding-top:5px;">
119
+ <h1 style="margin: 0; color: #1f2937; direction: ltr; font-family: Arial, Helvetica Neue, Helvetica, sans-serif; font-size: 30px; font-weight: 400; letter-spacing: normal; line-height: 120%; text-align: center; margin-top: 0; margin-bottom: 0;">
120
+ <?php echo esc_attr( $report_details['conversion_rate'] ) . '%'; ?></h1>
121
+ </td>
122
+ </tr>
123
+ </table>
124
+ <table border="0" cellpadding="0" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
125
+ <tr>
126
+ <td style="padding-bottom:15px;padding-left:10px;padding-right:10px;padding-top:10px;">
127
+ <div style="font-family: sans-serif">
128
+ <div style="font-size: 14px; mso-line-height-alt: 16.8px; color: #393d47; line-height: 1.2; font-family: Arial, Helvetica Neue, Helvetica, sans-serif;">
129
+ <p style="margin: 0; text-align: center;"><span style="font-size:16px;">
130
+ <?php
131
+ echo esc_html__(
132
+ 'Recovery
133
+ rate',
134
+ 'cartflows'
135
+ )
136
+ ?>
137
+ </span></p>
138
+ </div>
139
+ </div>
140
+ </td>
141
+ </tr>
142
+ </table>
143
+ </td>
144
+ </tr>
145
+ </tbody>
146
+ </table>
147
+ </td>
148
+ </tr>
149
+ </tbody>
150
+ </table>
151
+
152
+ <?php
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: sujaypawar, wpcrafter
3
  Tags: woocommerce, cart abandonment, cart recovery
4
  Requires at least: 5.4
5
  Tested up to: 5.9.3
6
- Stable tag: 1.2.15
7
  Requires PHP: 5.6
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -128,6 +128,11 @@ Here are few thoughts behind making it available for free:
128
 
129
  == Changelog ==
130
 
 
 
 
 
 
131
  = Version 1.2.15 - Thursday, 21st April 2022 =
132
  * Improvement: Handled WordPress database error while creating tables on plugin activation.
133
 
3
  Tags: woocommerce, cart abandonment, cart recovery
4
  Requires at least: 5.4
5
  Tested up to: 5.9.3
6
+ Stable tag: 1.2.16
7
  Requires PHP: 5.6
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
128
 
129
  == Changelog ==
130
 
131
+ = Version 1.2.16 - Tuesday, 17th May 2022 =
132
+ * New: Introduced weekly order recovery reports via email.
133
+ * New: Added an option to send the recovery emails in WooCommerce email format.
134
+ * Improvement: Updated the default unsubscribe text from "Unsubscribe" to "Don't remind me again".
135
+
136
  = Version 1.2.15 - Thursday, 21st April 2022 =
137
  * Improvement: Handled WordPress database error while creating tables on plugin activation.
138
 
uninstall.php CHANGED
@@ -36,6 +36,8 @@ if ( 'on' === $delete_data ) {
36
  'wcf_ca_excludes_orders',
37
  'wcf_ca_delete_plugin_data',
38
  'wcf_ca_version',
 
 
39
  );
40
 
41
  // Delete all options data.
36
  'wcf_ca_excludes_orders',
37
  'wcf_ca_delete_plugin_data',
38
  'wcf_ca_version',
39
+ 'wcf_ca_send_recovery_report_emails_to_admin',
40
+ 'wcf_ca_admin_email',
41
  );
42
 
43
  // Delete all options data.
woo-cart-abandonment-recovery.php CHANGED
@@ -3,12 +3,12 @@
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.2.15
7
  * Author: CartFlows Inc
8
  * Author URI: https://cartflows.com/
9
  * Text Domain: woo-cart-abandonment-recovery
10
  * WC requires at least: 3.0
11
- * WC tested up to: 6.4.1
12
  *
13
  * @package Woocommerce-Cart-Abandonment-Recovery
14
  */
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.2.16
7
  * Author: CartFlows Inc
8
  * Author URI: https://cartflows.com/
9
  * Text Domain: woo-cart-abandonment-recovery
10
  * WC requires at least: 3.0
11
+ * WC tested up to: 6.5.0
12
  *
13
  * @package Woocommerce-Cart-Abandonment-Recovery
14
  */