Easy Digital Downloads - Version 3.0.1

Version Description

Download this release

Release Info

Developer cklosows
Plugin Icon 128x128 Easy Digital Downloads
Version 3.0.1
Comparing to
See all releases

Code changes from version 3.0 to 3.0.1

Files changed (68) hide show
  1. assets/css/chosen.min.css +0 -0
  2. assets/css/edd-admin.min.css +0 -0
  3. assets/css/jquery-ui-fresh.min.css +0 -0
  4. assets/images/edd-cpt-2x.png +0 -0
  5. assets/images/edd-cpt.png +0 -0
  6. assets/images/edd-cross-hair.png +0 -0
  7. assets/images/edd-icon-2x.png +0 -0
  8. assets/images/edd-icon.png +0 -0
  9. assets/images/edd-logo.png +0 -0
  10. assets/images/edd-media.png +0 -0
  11. assets/images/icons/iphone.png +0 -0
  12. assets/images/loading.gif +0 -0
  13. assets/images/media-button.png +0 -0
  14. assets/images/screenshots/edit-download.png +0 -0
  15. assets/images/screenshots/grid.png +0 -0
  16. assets/images/screenshots/purchase-link.png +0 -0
  17. assets/images/ui-icons_21759b_256x240.png +0 -0
  18. assets/images/ui-icons_333333_256x240.png +0 -0
  19. assets/images/ui-icons_999999_256x240.png +0 -0
  20. assets/images/ui-icons_cc0000_256x240.png +0 -0
  21. assets/images/xit.gif +0 -0
  22. assets/js/edd-ajax.js +0 -0
  23. assets/js/edd-checkout-global.js +0 -0
  24. assets/js/jquery.validate.min.js +0 -0
  25. assets/sample-products-import.xml +0 -0
  26. easy-digital-downloads.php +2 -2
  27. includes/admin/add-ons.php +0 -0
  28. includes/admin/admin-actions.php +0 -0
  29. includes/admin/admin-footer.php +0 -0
  30. includes/admin/admin-pages.php +0 -0
  31. includes/admin/customers/class-customer-table.php +0 -0
  32. includes/admin/customers/customer-actions.php +11 -9
  33. includes/admin/discounts/add-discount.php +0 -0
  34. includes/admin/discounts/discount-codes.php +0 -0
  35. includes/admin/discounts/edit-discount.php +0 -0
  36. includes/admin/downloads/dashboard-columns.php +0 -0
  37. includes/admin/downloads/metabox.php +0 -0
  38. includes/admin/payments/payments-history.php +0 -0
  39. includes/admin/reporting/class-edd-graph.php +0 -0
  40. includes/admin/reporting/export/class-batch-export-file-downloads.php +2 -2
  41. includes/admin/reporting/export/class-batch-export-taxed-orders.php +2 -2
  42. includes/admin/reporting/export/export-functions.php +0 -0
  43. includes/admin/reporting/graphing.php +0 -0
  44. includes/admin/reporting/reports-callbacks.php +8 -8
  45. includes/admin/reporting/reports.php +25 -25
  46. includes/admin/settings/register-settings.php +1 -1
  47. includes/admin/thickbox.php +0 -0
  48. includes/api/class-edd-api.php +0 -0
  49. includes/class-easy-digital-downloads.php +1 -1
  50. includes/class-edd-customer.php +9 -6
  51. includes/class-edd-session.php +9 -4
  52. includes/class-structured-data.php +5 -0
  53. includes/gateways/libs/amazon/Client.php +0 -0
  54. includes/gateways/libs/amazon/HttpCurl.php +0 -0
  55. includes/gateways/libs/amazon/Interface.php +0 -0
  56. includes/gateways/libs/amazon/IpnHandler.php +0 -0
  57. includes/gateways/libs/amazon/ResponseParser.php +0 -0
  58. includes/reports/data/charts/v2/class-manifest.php +7 -7
  59. includes/reports/reports-functions.php +6 -0
  60. languages/README.md +0 -0
  61. languages/easy-digital-downloads.pot +35 -35
  62. languages/index.php +0 -0
  63. readme.txt +13 -2
  64. templates/checkout_cart.php +0 -0
  65. templates/images/icons/iphone.png +0 -0
  66. templates/images/loading.gif +0 -0
  67. templates/images/tick.png +0 -0
  68. templates/images/xit.gif +0 -0
assets/css/chosen.min.css CHANGED
File without changes
assets/css/edd-admin.min.css CHANGED
File without changes
assets/css/jquery-ui-fresh.min.css CHANGED
File without changes
assets/images/edd-cpt-2x.png CHANGED
File without changes
assets/images/edd-cpt.png CHANGED
File without changes
assets/images/edd-cross-hair.png CHANGED
File without changes
assets/images/edd-icon-2x.png CHANGED
File without changes
assets/images/edd-icon.png CHANGED
File without changes
assets/images/edd-logo.png CHANGED
File without changes
assets/images/edd-media.png CHANGED
File without changes
assets/images/icons/iphone.png CHANGED
File without changes
assets/images/loading.gif CHANGED
File without changes
assets/images/media-button.png CHANGED
File without changes
assets/images/screenshots/edit-download.png CHANGED
File without changes
assets/images/screenshots/grid.png CHANGED
File without changes
assets/images/screenshots/purchase-link.png CHANGED
File without changes
assets/images/ui-icons_21759b_256x240.png CHANGED
File without changes
assets/images/ui-icons_333333_256x240.png CHANGED
File without changes
assets/images/ui-icons_999999_256x240.png CHANGED
File without changes
assets/images/ui-icons_cc0000_256x240.png CHANGED
File without changes
assets/images/xit.gif CHANGED
File without changes
assets/js/edd-ajax.js CHANGED
File without changes
assets/js/edd-checkout-global.js CHANGED
File without changes
assets/js/jquery.validate.min.js CHANGED
File without changes
assets/sample-products-import.xml CHANGED
File without changes
easy-digital-downloads.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: The easiest way to sell digital products with WordPress.
6
  * Author: Easy Digital Downloads
7
  * Author URI: https://easydigitaldownloads.com
8
- * Version: 3.0
9
  * Text Domain: easy-digital-downloads
10
  * Domain Path: languages
11
  * Requires PHP: 5.6
@@ -26,7 +26,7 @@
26
  * @package EDD
27
  * @category Core
28
  * @author Easy Digital Downloads
29
- * @version 3.0
30
  */
31
 
32
  // Exit if accessed directly.
5
  * Description: The easiest way to sell digital products with WordPress.
6
  * Author: Easy Digital Downloads
7
  * Author URI: https://easydigitaldownloads.com
8
+ * Version: 3.0.1
9
  * Text Domain: easy-digital-downloads
10
  * Domain Path: languages
11
  * Requires PHP: 5.6
26
  * @package EDD
27
  * @category Core
28
  * @author Easy Digital Downloads
29
+ * @version 3.0.1
30
  */
31
 
32
  // Exit if accessed directly.
includes/admin/add-ons.php CHANGED
File without changes
includes/admin/admin-actions.php CHANGED
File without changes
includes/admin/admin-footer.php CHANGED
File without changes
includes/admin/admin-pages.php CHANGED
File without changes
includes/admin/customers/class-customer-table.php CHANGED
File without changes
includes/admin/customers/customer-actions.php CHANGED
@@ -222,12 +222,13 @@ function edd_add_customer_email( $args = array() ) {
222
  );
223
 
224
  } else {
225
- $email = sanitize_email( $args['email'] );
226
- $customer_id = (int) $args['customer_id'];
227
- $primary = 'true' === $args['primary'] ? true : false;
228
- $customer = new EDD_Customer( $customer_id );
 
229
 
230
- if ( false === $customer->add_email( $email, $primary ) ) {
231
 
232
  if ( in_array( $email, $customer->emails, true ) ) {
233
  $output = array(
@@ -245,10 +246,11 @@ function edd_add_customer_email( $args = array() ) {
245
  } else {
246
  $redirect = edd_get_admin_url(
247
  array(
248
- 'page' => 'edd-customers',
249
- 'view' => 'overview',
250
- 'id' => urlencode( $customer_id ),
251
- 'edd-message' => 'email-added',
 
252
  )
253
  );
254
  $output = array(
222
  );
223
 
224
  } else {
225
+ $email = sanitize_email( $args['email'] );
226
+ $customer_id = (int) $args['customer_id'];
227
+ $primary = 'true' === $args['primary'] ? true : false;
228
+ $customer = new EDD_Customer( $customer_id );
229
+ $customer_email_id = $customer->add_email( $email, $primary );
230
 
231
+ if ( false === $customer_email_id ) {
232
 
233
  if ( in_array( $email, $customer->emails, true ) ) {
234
  $output = array(
246
  } else {
247
  $redirect = edd_get_admin_url(
248
  array(
249
+ 'page' => 'edd-customers',
250
+ 'view' => 'overview',
251
+ 'id' => absint( $customer_id ),
252
+ 'edd-message' => 'email-added',
253
+ 'edd-email-id' => absint( $customer_email_id ),
254
  )
255
  );
256
  $output = array(
includes/admin/discounts/add-discount.php CHANGED
File without changes
includes/admin/discounts/discount-codes.php CHANGED
File without changes
includes/admin/discounts/edit-discount.php CHANGED
File without changes
includes/admin/downloads/dashboard-columns.php CHANGED
File without changes
includes/admin/downloads/metabox.php CHANGED
File without changes
includes/admin/payments/payments-history.php CHANGED
File without changes
includes/admin/reporting/class-edd-graph.php CHANGED
File without changes
includes/admin/reporting/export/class-batch-export-file-downloads.php CHANGED
@@ -68,7 +68,7 @@ class EDD_Batch_File_Downloads_Export extends EDD_Batch_Export {
68
  );
69
 
70
  if ( ! empty( $this->start ) || ! empty( $this->end ) ) {
71
- $args['date_query'] = $this->get_date_query();
72
  }
73
 
74
  if ( 0 !== $this->download_id ) {
@@ -129,7 +129,7 @@ class EDD_Batch_File_Downloads_Export extends EDD_Batch_Export {
129
  );
130
 
131
  if ( ! empty( $this->start ) || ! empty( $this->end ) ) {
132
- $args['date_query'] = $this->get_date_query();
133
  }
134
 
135
  if ( 0 !== $this->download_id ) {
68
  );
69
 
70
  if ( ! empty( $this->start ) || ! empty( $this->end ) ) {
71
+ $args['date_created_query'] = $this->get_date_query();
72
  }
73
 
74
  if ( 0 !== $this->download_id ) {
129
  );
130
 
131
  if ( ! empty( $this->start ) || ! empty( $this->end ) ) {
132
+ $args['date_created_query'] = $this->get_date_query();
133
  }
134
 
135
  if ( 0 !== $this->download_id ) {
includes/admin/reporting/export/class-batch-export-taxed-orders.php CHANGED
@@ -98,7 +98,7 @@ class EDD_Batch_Taxed_Orders_Export extends EDD_Batch_Export {
98
  );
99
 
100
  if ( ! empty( $this->start ) || ! empty( $this->end ) ) {
101
- $args['date_query'] = $this->get_date_query();
102
  }
103
 
104
  if ( 'any' === $args['status'] || 'all' === $args['status'] ) {
@@ -238,7 +238,7 @@ class EDD_Batch_Taxed_Orders_Export extends EDD_Batch_Export {
238
  );
239
 
240
  if ( ! empty( $this->start ) || ! empty( $this->end ) ) {
241
- $args['date_query'] = $this->get_date_query();
242
  }
243
 
244
  if ( 'any' !== $this->status ) {
98
  );
99
 
100
  if ( ! empty( $this->start ) || ! empty( $this->end ) ) {
101
+ $args['date_created_query'] = $this->get_date_query();
102
  }
103
 
104
  if ( 'any' === $args['status'] || 'all' === $args['status'] ) {
238
  );
239
 
240
  if ( ! empty( $this->start ) || ! empty( $this->end ) ) {
241
+ $args['date_created_query'] = $this->get_date_query();
242
  }
243
 
244
  if ( 'any' !== $this->status ) {
includes/admin/reporting/export/export-functions.php CHANGED
File without changes
includes/admin/reporting/graphing.php CHANGED
File without changes
includes/admin/reporting/reports-callbacks.php CHANGED
@@ -47,12 +47,12 @@ function edd_overview_sales_earnings_chart() {
47
  $sql_clauses['orderby'] = 'MONTH(date_created)';
48
 
49
  // Now drill down to the smallest unit.
50
- if ( $day_by_day ) {
51
- $sql_clauses['groupby'] = Reports\get_groupby_date_string( 'DATE', 'date_created' );
52
- $sql_clauses['orderby'] = 'DATE(date_created)';
53
- } elseif ( $hour_by_hour ) {
54
  $sql_clauses['groupby'] = Reports\get_groupby_date_string( 'HOUR', 'date_created' );
55
  $sql_clauses['orderby'] = 'HOUR(date_created)';
 
 
 
56
  }
57
 
58
  if ( ! empty( $currency ) && array_key_exists( strtoupper( $currency ), edd_get_currencies() ) ) {
@@ -219,12 +219,12 @@ function edd_overview_refunds_chart() {
219
  $sql_clauses['orderby'] = 'MONTH(date_created)';
220
 
221
  // Now drill down to the smallest unit.
222
- if ( $day_by_day ) {
223
- $sql_clauses['groupby'] = Reports\get_groupby_date_string( 'DATE', 'date_created' );
224
- $sql_clauses['orderby'] = 'DATE(date_created)';
225
- } elseif ( $hour_by_hour ) {
226
  $sql_clauses['groupby'] = Reports\get_groupby_date_string( 'HOUR', 'date_created' );
227
  $sql_clauses['orderby'] = 'HOUR(date_created)';
 
 
 
228
  }
229
 
230
  if ( empty( $currency ) || 'convert' === $currency ) {
47
  $sql_clauses['orderby'] = 'MONTH(date_created)';
48
 
49
  // Now drill down to the smallest unit.
50
+ if ( $hour_by_hour ) {
 
 
 
51
  $sql_clauses['groupby'] = Reports\get_groupby_date_string( 'HOUR', 'date_created' );
52
  $sql_clauses['orderby'] = 'HOUR(date_created)';
53
+ } elseif ( $day_by_day ) {
54
+ $sql_clauses['groupby'] = Reports\get_groupby_date_string( 'DATE', 'date_created' );
55
+ $sql_clauses['orderby'] = 'DATE(date_created)';
56
  }
57
 
58
  if ( ! empty( $currency ) && array_key_exists( strtoupper( $currency ), edd_get_currencies() ) ) {
219
  $sql_clauses['orderby'] = 'MONTH(date_created)';
220
 
221
  // Now drill down to the smallest unit.
222
+ if ( $hour_by_hour ) {
 
 
 
223
  $sql_clauses['groupby'] = Reports\get_groupby_date_string( 'HOUR', 'date_created' );
224
  $sql_clauses['orderby'] = 'HOUR(date_created)';
225
+ } elseif ( $day_by_day ) {
226
+ $sql_clauses['groupby'] = Reports\get_groupby_date_string( 'DATE', 'date_created' );
227
+ $sql_clauses['orderby'] = 'DATE(date_created)';
228
  }
229
 
230
  if ( empty( $currency ) || 'convert' === $currency ) {
includes/admin/reporting/reports.php CHANGED
@@ -701,18 +701,18 @@ function edd_register_downloads_report( $reports ) {
701
  'orderby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created)',
702
  );
703
 
704
- if ( ! $day_by_day ) {
705
- $sql_clauses = array(
706
- 'select' => 'YEAR(date_created) AS year, MONTH(date_created) AS month',
707
- 'groupby' => 'YEAR(date_created), MONTH(date_created)',
708
- 'orderby' => 'YEAR(date_created), MONTH(date_created)',
709
- );
710
- } elseif ( $hour_by_hour ) {
711
  $sql_clauses = array(
712
  'select' => 'YEAR(date_created) AS year, MONTH(date_created) AS month, DAY(date_created) AS day, HOUR(date_created) AS hour',
713
  'groupby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created), HOUR(date_created)',
714
  'orderby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created), HOUR(date_created)',
715
  );
 
 
 
 
 
 
716
  }
717
 
718
  $price_id = ! empty( $download_data['price_id'] )
@@ -1355,18 +1355,18 @@ function edd_register_payment_gateways_report( $reports ) {
1355
  'orderby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created)',
1356
  );
1357
 
1358
- if ( ! $day_by_day ) {
1359
- $sql_clauses = array(
1360
- 'select' => 'YEAR(date_created) AS year, MONTH(date_created) AS month',
1361
- 'groupby' => 'YEAR(date_created), MONTH(date_created)',
1362
- 'orderby' => 'YEAR(date_created), MONTH(date_created)',
1363
- );
1364
- } elseif ( $hour_by_hour ) {
1365
  $sql_clauses = array(
1366
  'select' => 'YEAR(date_created) AS year, MONTH(date_created) AS month, DAY(date_created) AS day, HOUR(date_created) AS hour',
1367
  'groupby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created), HOUR(date_created)',
1368
  'orderby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created), HOUR(date_created)',
1369
  );
 
 
 
 
 
 
1370
  }
1371
 
1372
  $gateway = Reports\get_filter_value( 'gateways' );
@@ -1818,12 +1818,12 @@ function edd_register_file_downloads_report( $reports ) {
1818
  $sql_clauses['orderby'] = 'MONTH(date_created)';
1819
 
1820
  // Now drill down to the smallest unit.
1821
- if ( $day_by_day ) {
1822
- $sql_clauses['groupby'] = 'DATE(date_created)';
1823
- $sql_clauses['orderby'] = 'DATE(date_created)';
1824
- } elseif ( $hour_by_hour ) {
1825
  $sql_clauses['groupby'] = 'HOUR(date_created)';
1826
  $sql_clauses['orderby'] = 'HOUR(date_created)';
 
 
 
1827
  }
1828
 
1829
  $product_id = '';
@@ -2371,18 +2371,18 @@ function edd_register_customer_report( $reports ) {
2371
  'orderby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created)',
2372
  );
2373
 
2374
- if ( ! $day_by_day ) {
2375
- $sql_clauses = array(
2376
- 'select' => 'YEAR(date_created) AS year, MONTH(date_created) AS month',
2377
- 'groupby' => 'YEAR(date_created), MONTH(date_created)',
2378
- 'orderby' => 'YEAR(date_created), MONTH(date_created)',
2379
- );
2380
- } elseif ( $hour_by_hour ) {
2381
  $sql_clauses = array(
2382
  'select' => 'YEAR(date_created) AS year, MONTH(date_created) AS month, DAY(date_created) AS day, HOUR(date_created) AS hour',
2383
  'groupby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created), HOUR(date_created)',
2384
  'orderby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created), HOUR(date_created)',
2385
  );
 
 
 
 
 
 
2386
  }
2387
 
2388
  $results = $wpdb->get_results( $wpdb->prepare(
701
  'orderby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created)',
702
  );
703
 
704
+ if ( $hour_by_hour ) {
 
 
 
 
 
 
705
  $sql_clauses = array(
706
  'select' => 'YEAR(date_created) AS year, MONTH(date_created) AS month, DAY(date_created) AS day, HOUR(date_created) AS hour',
707
  'groupby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created), HOUR(date_created)',
708
  'orderby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created), HOUR(date_created)',
709
  );
710
+ } elseif ( ! $day_by_day ) {
711
+ $sql_clauses = array(
712
+ 'select' => 'YEAR(date_created) AS year, MONTH(date_created) AS month',
713
+ 'groupby' => 'YEAR(date_created), MONTH(date_created)',
714
+ 'orderby' => 'YEAR(date_created), MONTH(date_created)',
715
+ );
716
  }
717
 
718
  $price_id = ! empty( $download_data['price_id'] )
1355
  'orderby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created)',
1356
  );
1357
 
1358
+ if ( $hour_by_hour ) {
 
 
 
 
 
 
1359
  $sql_clauses = array(
1360
  'select' => 'YEAR(date_created) AS year, MONTH(date_created) AS month, DAY(date_created) AS day, HOUR(date_created) AS hour',
1361
  'groupby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created), HOUR(date_created)',
1362
  'orderby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created), HOUR(date_created)',
1363
  );
1364
+ } elseif ( ! $day_by_day ) {
1365
+ $sql_clauses = array(
1366
+ 'select' => 'YEAR(date_created) AS year, MONTH(date_created) AS month',
1367
+ 'groupby' => 'YEAR(date_created), MONTH(date_created)',
1368
+ 'orderby' => 'YEAR(date_created), MONTH(date_created)',
1369
+ );
1370
  }
1371
 
1372
  $gateway = Reports\get_filter_value( 'gateways' );
1818
  $sql_clauses['orderby'] = 'MONTH(date_created)';
1819
 
1820
  // Now drill down to the smallest unit.
1821
+ if ( $hour_by_hour ) {
 
 
 
1822
  $sql_clauses['groupby'] = 'HOUR(date_created)';
1823
  $sql_clauses['orderby'] = 'HOUR(date_created)';
1824
+ } elseif ( $day_by_day ) {
1825
+ $sql_clauses['groupby'] = 'DATE(date_created)';
1826
+ $sql_clauses['orderby'] = 'DATE(date_created)';
1827
  }
1828
 
1829
  $product_id = '';
2371
  'orderby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created)',
2372
  );
2373
 
2374
+ if ( $hour_by_hour ) {
 
 
 
 
 
 
2375
  $sql_clauses = array(
2376
  'select' => 'YEAR(date_created) AS year, MONTH(date_created) AS month, DAY(date_created) AS day, HOUR(date_created) AS hour',
2377
  'groupby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created), HOUR(date_created)',
2378
  'orderby' => 'YEAR(date_created), MONTH(date_created), DAY(date_created), HOUR(date_created)',
2379
  );
2380
+ } elseif ( ! $day_by_day ) {
2381
+ $sql_clauses = array(
2382
+ 'select' => 'YEAR(date_created) AS year, MONTH(date_created) AS month',
2383
+ 'groupby' => 'YEAR(date_created), MONTH(date_created)',
2384
+ 'orderby' => 'YEAR(date_created), MONTH(date_created)',
2385
+ );
2386
  }
2387
 
2388
  $results = $wpdb->get_results( $wpdb->prepare(
includes/admin/settings/register-settings.php CHANGED
@@ -905,7 +905,7 @@ function edd_get_registered_settings() {
905
  'id' => 'debug_mode',
906
  'name' => __( 'Debug Mode', 'easy-digital-downloads' ),
907
  'check' => __( 'Enabled', 'easy-digital-downloads' ),
908
- 'desc' => sprintf( __( 'Check this to enable logging of certain behaviors to a file. %s', 'easy-digital-downloads' ), $debug_log_link ),
909
  'type' => 'checkbox_description',
910
  ),
911
  'disable_styles' => array(
905
  'id' => 'debug_mode',
906
  'name' => __( 'Debug Mode', 'easy-digital-downloads' ),
907
  'check' => __( 'Enabled', 'easy-digital-downloads' ),
908
+ 'desc' => __( 'Check this box to enable Debug Mode.', 'easy-digital-downloads' ) . ' ' . $debug_log_link,
909
  'type' => 'checkbox_description',
910
  ),
911
  'disable_styles' => array(
includes/admin/thickbox.php CHANGED
File without changes
includes/api/class-edd-api.php CHANGED
File without changes
includes/class-easy-digital-downloads.php CHANGED
@@ -315,7 +315,7 @@ final class Easy_Digital_Downloads {
315
 
316
  // Plugin version.
317
  if ( ! defined( 'EDD_VERSION' ) ) {
318
- define( 'EDD_VERSION', '3.0' );
319
  }
320
 
321
  // Plugin Root File.
315
 
316
  // Plugin version.
317
  if ( ! defined( 'EDD_VERSION' ) ) {
318
+ define( 'EDD_VERSION', '3.0.1' );
319
  }
320
 
321
  // Plugin Root File.
includes/class-edd-customer.php CHANGED
@@ -365,11 +365,12 @@ class EDD_Customer extends \EDD\Database\Rows\Customer {
365
  * Attach an email address to the customer.
366
  *
367
  * @since 2.6
 
368
  *
369
  * @param string $email The email address to remove from the customer.
370
  * @param bool $primary Allows setting the email added as the primary.
371
  *
372
- * @return bool True if the email was added successfully, false otherwise.
373
  */
374
  public function add_email( $email = '', $primary = false ) {
375
  if ( ! is_email( $email ) ) {
@@ -389,11 +390,13 @@ class EDD_Customer extends \EDD\Database\Rows\Customer {
389
  : 'secondary';
390
 
391
  // Update is used to ensure duplicate emails are not added.
392
- $ret = (bool) edd_add_customer_email_address( array(
393
- 'customer_id' => $this->id,
394
- 'email' => $email,
395
- 'type' => $type
396
- ) );
 
 
397
 
398
  do_action( 'edd_customer_post_add_email', $email, $this->id, $this );
399
 
365
  * Attach an email address to the customer.
366
  *
367
  * @since 2.6
368
+ * @since 3.0.1 This method will return customer email ID or false, instead of bool
369
  *
370
  * @param string $email The email address to remove from the customer.
371
  * @param bool $primary Allows setting the email added as the primary.
372
  *
373
+ * @return int|false ID of newly created customer email address, false on error.
374
  */
375
  public function add_email( $email = '', $primary = false ) {
376
  if ( ! is_email( $email ) ) {
390
  : 'secondary';
391
 
392
  // Update is used to ensure duplicate emails are not added.
393
+ $ret = edd_add_customer_email_address(
394
+ array(
395
+ 'customer_id' => $this->id,
396
+ 'email' => $email,
397
+ 'type' => $type,
398
+ )
399
+ );
400
 
401
  do_action( 'edd_customer_post_add_email', $email, $this->id, $this );
402
 
includes/class-edd-session.php CHANGED
@@ -89,11 +89,16 @@ class EDD_Session {
89
  add_filter( 'wp_session_expiration', array( $this, 'set_expiration_time' ), 99999 );
90
  }
91
 
92
- $hook = ( empty( $this->session ) && ! $this->use_php_sessions )
93
- ? 'plugins_loaded'
94
- : 'init';
 
 
 
 
 
95
 
96
- add_action( $hook, array( $this, 'init' ), -1 );
97
  }
98
 
99
  /**
89
  add_filter( 'wp_session_expiration', array( $this, 'set_expiration_time' ), 99999 );
90
  }
91
 
92
+ // Based off our session handling, we need to use different hooks and priorities.
93
+ if ( empty( $this->session ) && ! $this->use_php_sessions ) {
94
+ $hook = 'plugins_loaded';
95
+ $priority = 10;
96
+ } else {
97
+ $hook = 'init';
98
+ $priority = -1;
99
+ }
100
 
101
+ add_action( $hook, array( $this, 'init' ), $priority );
102
  }
103
 
104
  /**
includes/class-structured-data.php CHANGED
@@ -129,6 +129,11 @@ class Structured_Data {
129
  return false;
130
  }
131
 
 
 
 
 
 
132
  $data = array(
133
  '@type' => 'Product',
134
  'name' => $download->post_title,
129
  return false;
130
  }
131
 
132
+ // Return false if a download object could not be retrieved.
133
+ if ( ! $download instanceof \EDD_Download ) {
134
+ return false;
135
+ }
136
+
137
  $data = array(
138
  '@type' => 'Product',
139
  'name' => $download->post_title,
includes/gateways/libs/amazon/Client.php CHANGED
File without changes
includes/gateways/libs/amazon/HttpCurl.php CHANGED
File without changes
includes/gateways/libs/amazon/Interface.php CHANGED
File without changes
includes/gateways/libs/amazon/IpnHandler.php CHANGED
File without changes
includes/gateways/libs/amazon/ResponseParser.php CHANGED
File without changes
includes/reports/data/charts/v2/class-manifest.php CHANGED
@@ -356,10 +356,10 @@ class Manifest implements Error_Logger {
356
 
357
  $time_format = 'MMM YYYY';
358
 
359
- if ( $day_by_day ) {
360
- $time_format = 'MMM D';
361
- } else if ( $hour_by_hour ) {
362
  $time_format = 'hA';
 
 
363
  }
364
 
365
  $config->type = $this->get_type();
@@ -433,12 +433,12 @@ class Manifest implements Error_Logger {
433
  $time_unit = 'month';
434
  $time_format = 'MMM YYYY';
435
 
436
- if ( $day_by_day ) {
437
- $time_unit = 'day';
438
- $time_format = 'MMM D';
439
- } else if ( $hour_by_hour ) {
440
  $time_unit = 'hour';
441
  $time_format = 'hA';
 
 
 
442
  }
443
 
444
  $defaults = array(
356
 
357
  $time_format = 'MMM YYYY';
358
 
359
+ if ( $hour_by_hour ) {
 
 
360
  $time_format = 'hA';
361
+ } else if ( $day_by_day ) {
362
+ $time_format = 'MMM D';
363
  }
364
 
365
  $config->type = $this->get_type();
433
  $time_unit = 'month';
434
  $time_format = 'MMM YYYY';
435
 
436
+ if ( $hour_by_hour ) {
 
 
 
437
  $time_unit = 'hour';
438
  $time_format = 'hA';
439
+ } else if ( $day_by_day ) {
440
+ $time_unit = 'day';
441
+ $time_format = 'MMM D';
442
  }
443
 
444
  $defaults = array(
includes/reports/reports-functions.php CHANGED
@@ -739,6 +739,12 @@ function get_dates_filter_hour_by_hour() {
739
  case 'yesterday':
740
  $hour_by_hour = true;
741
  break;
 
 
 
 
 
 
742
  default:
743
  $hour_by_hour = false;
744
  break;
739
  case 'yesterday':
740
  $hour_by_hour = true;
741
  break;
742
+ case 'other':
743
+ $difference = ( $dates['end']->getTimestamp() - $dates['start']->getTimestamp() );
744
+ if ( $difference <= ( DAY_IN_SECONDS * 2 ) ) {
745
+ $hour_by_hour = true;
746
+ }
747
+ break;
748
  default:
749
  $hour_by_hour = false;
750
  break;
languages/README.md CHANGED
File without changes
languages/easy-digital-downloads.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the Easy Digital Downloads package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Easy Digital Downloads 3.0\n"
6
  "Report-Msgid-Bugs-To: https://easydigitaldownloads.com/\n"
7
- "POT-Creation-Date: 2022-07-13 17:31:57+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -73,10 +73,10 @@ msgstr ""
73
 
74
  #: includes/EDD_SL_Plugin_Updater.php:486
75
  #: includes/admin/admin-deprecated-functions.php:67
76
- #: includes/admin/customers/customer-actions.php:308
77
- #: includes/admin/customers/customer-actions.php:363
78
- #: includes/admin/customers/customer-actions.php:555
79
- #: includes/admin/customers/customer-actions.php:612
80
  #: includes/admin/discounts/discount-actions.php:32
81
  #: includes/admin/discounts/discount-actions.php:166
82
  #: includes/admin/discounts/discount-actions.php:171
@@ -642,7 +642,7 @@ msgid "Delete Log File and Disable Logging"
642
  msgstr ""
643
 
644
  #: includes/admin/class-edd-notices.php:766
645
- #: includes/admin/customers/customer-actions.php:604
646
  #: includes/admin/promos/class-promo-handler.php:116
647
  #: includes/admin/promos/class-promo-handler.php:123
648
  #: includes/admin/promos/class-promo-handler.php:128
@@ -897,13 +897,13 @@ msgstr ""
897
 
898
  #: includes/admin/customers/customer-actions.php:35
899
  #: includes/admin/customers/customer-actions.php:195
900
- #: includes/admin/customers/customer-actions.php:494
901
  msgid "You do not have permission to edit this customer."
902
  msgstr ""
903
 
904
  #: includes/admin/customers/customer-actions.php:44
905
- #: includes/admin/customers/customer-actions.php:420
906
- #: includes/admin/customers/customer-actions.php:505
907
  msgid "Cheatin' eh?!"
908
  msgstr ""
909
 
@@ -944,31 +944,31 @@ msgstr ""
944
  msgid "Invalid email address."
945
  msgstr ""
946
 
947
- #: includes/admin/customers/customer-actions.php:235
948
  msgid "Email already associated with this customer."
949
  msgstr ""
950
 
951
- #: includes/admin/customers/customer-actions.php:241
952
  msgid "Email address is already associated with another customer."
953
  msgstr ""
954
 
955
- #: includes/admin/customers/customer-actions.php:256
956
  msgid "Email successfully added to customer."
957
  msgstr ""
958
 
959
- #: includes/admin/customers/customer-actions.php:262
960
  msgid "Email address %s added by %s"
961
  msgstr ""
962
 
963
- #: includes/admin/customers/customer-actions.php:266
964
- #: includes/admin/customers/customer-actions.php:378
965
  msgid "Email address %s set as primary by %s"
966
  msgstr ""
967
 
968
- #: includes/admin/customers/customer-actions.php:308
969
- #: includes/admin/customers/customer-actions.php:363
970
- #: includes/admin/customers/customer-actions.php:555
971
- #: includes/admin/customers/customer-actions.php:612
972
  #: includes/admin/import/import-functions.php:31
973
  #: includes/admin/import/import-functions.php:98
974
  #: includes/admin/reporting/export/export-actions.php:24
@@ -977,28 +977,28 @@ msgstr ""
977
  msgid "Nonce verification failed"
978
  msgstr ""
979
 
980
- #: includes/admin/customers/customer-actions.php:323
981
  #: includes/shortcodes.php:975
982
  msgid "Email address %s removed by %s"
983
  msgstr ""
984
 
985
- #: includes/admin/customers/customer-actions.php:407
986
  msgid "You do not have permission to delete this customer."
987
  msgstr ""
988
 
989
- #: includes/admin/customers/customer-actions.php:424
990
  msgid "Please confirm you want to delete this customer"
991
  msgstr ""
992
 
993
- #: includes/admin/customers/customer-actions.php:470
994
  msgid "Error deleting customer"
995
  msgstr ""
996
 
997
- #: includes/admin/customers/customer-actions.php:475
998
  msgid "Invalid Customer ID"
999
  msgstr ""
1000
 
1001
- #: includes/admin/customers/customer-actions.php:524
1002
  msgid "Failed to disconnect user from customer"
1003
  msgstr ""
1004
 
@@ -2004,7 +2004,7 @@ msgstr ""
2004
  #: includes/admin/reporting/reports.php:2789
2005
  #: includes/admin/reporting/reports.php:2858
2006
  #: includes/admin/reporting/reports.php:2924
2007
- #: includes/reports/reports-functions.php:1078
2008
  #. translators: the plural post type label
2009
  msgid "All %s"
2010
  msgstr ""
@@ -2725,7 +2725,7 @@ msgstr ""
2725
  #: includes/admin/payments/class-payments-table.php:296
2726
  #: includes/admin/reporting/class-base-logs-list-table.php:506
2727
  #: includes/admin/tools/logs.php:258
2728
- #: includes/reports/reports-functions.php:1392
2729
  msgid "Filter"
2730
  msgstr ""
2731
 
@@ -5389,7 +5389,7 @@ msgid "Debug Mode"
5389
  msgstr ""
5390
 
5391
  #: includes/admin/settings/register-settings.php:908
5392
- msgid "Check this to enable logging of certain behaviors to a file. %s"
5393
  msgstr ""
5394
 
5395
  #: includes/admin/settings/register-settings.php:913
@@ -12009,7 +12009,7 @@ msgid "Global Rate"
12009
  msgstr ""
12010
 
12011
  #: includes/reports/reports-functions.php:328
12012
- #: includes/reports/reports-functions.php:1115
12013
  msgid "Exclude Taxes"
12014
  msgstr ""
12015
 
@@ -12039,15 +12039,15 @@ msgstr ""
12039
  msgid "Last 30 Days"
12040
  msgstr ""
12041
 
12042
- #: includes/reports/reports-functions.php:1007
12043
  msgid "Chart time zone: %s"
12044
  msgstr ""
12045
 
12046
- #: includes/reports/reports-functions.php:1284
12047
  msgid "%s - Converted"
12048
  msgstr ""
12049
 
12050
- #: includes/reports/reports-functions.php:1414
12051
  msgid "Try the Sales/Earnings iOS App!"
12052
  msgstr ""
12053
 
@@ -12713,7 +12713,7 @@ msgstr ""
12713
  #: includes/admin/reporting/reports.php:2816
12714
  #: includes/admin/reporting/reports.php:2885
12715
  #: includes/admin/reporting/reports.php:2939
12716
- #: includes/reports/reports-functions.php:1044
12717
  msgctxt "date filter"
12718
  msgid "From"
12719
  msgstr ""
@@ -12726,7 +12726,7 @@ msgstr ""
12726
  #: includes/admin/reporting/reports.php:2827
12727
  #: includes/admin/reporting/reports.php:2896
12728
  #: includes/admin/reporting/reports.php:2950
12729
- #: includes/reports/reports-functions.php:1052
12730
  msgctxt "date filter"
12731
  msgid "To"
12732
  msgstr ""
2
  # This file is distributed under the same license as the Easy Digital Downloads package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Easy Digital Downloads 3.0.1\n"
6
  "Report-Msgid-Bugs-To: https://easydigitaldownloads.com/\n"
7
+ "POT-Creation-Date: 2022-07-15 17:19:49+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
73
 
74
  #: includes/EDD_SL_Plugin_Updater.php:486
75
  #: includes/admin/admin-deprecated-functions.php:67
76
+ #: includes/admin/customers/customer-actions.php:310
77
+ #: includes/admin/customers/customer-actions.php:365
78
+ #: includes/admin/customers/customer-actions.php:557
79
+ #: includes/admin/customers/customer-actions.php:614
80
  #: includes/admin/discounts/discount-actions.php:32
81
  #: includes/admin/discounts/discount-actions.php:166
82
  #: includes/admin/discounts/discount-actions.php:171
642
  msgstr ""
643
 
644
  #: includes/admin/class-edd-notices.php:766
645
+ #: includes/admin/customers/customer-actions.php:606
646
  #: includes/admin/promos/class-promo-handler.php:116
647
  #: includes/admin/promos/class-promo-handler.php:123
648
  #: includes/admin/promos/class-promo-handler.php:128
897
 
898
  #: includes/admin/customers/customer-actions.php:35
899
  #: includes/admin/customers/customer-actions.php:195
900
+ #: includes/admin/customers/customer-actions.php:496
901
  msgid "You do not have permission to edit this customer."
902
  msgstr ""
903
 
904
  #: includes/admin/customers/customer-actions.php:44
905
+ #: includes/admin/customers/customer-actions.php:422
906
+ #: includes/admin/customers/customer-actions.php:507
907
  msgid "Cheatin' eh?!"
908
  msgstr ""
909
 
944
  msgid "Invalid email address."
945
  msgstr ""
946
 
947
+ #: includes/admin/customers/customer-actions.php:236
948
  msgid "Email already associated with this customer."
949
  msgstr ""
950
 
951
+ #: includes/admin/customers/customer-actions.php:242
952
  msgid "Email address is already associated with another customer."
953
  msgstr ""
954
 
955
+ #: includes/admin/customers/customer-actions.php:258
956
  msgid "Email successfully added to customer."
957
  msgstr ""
958
 
959
+ #: includes/admin/customers/customer-actions.php:264
960
  msgid "Email address %s added by %s"
961
  msgstr ""
962
 
963
+ #: includes/admin/customers/customer-actions.php:268
964
+ #: includes/admin/customers/customer-actions.php:380
965
  msgid "Email address %s set as primary by %s"
966
  msgstr ""
967
 
968
+ #: includes/admin/customers/customer-actions.php:310
969
+ #: includes/admin/customers/customer-actions.php:365
970
+ #: includes/admin/customers/customer-actions.php:557
971
+ #: includes/admin/customers/customer-actions.php:614
972
  #: includes/admin/import/import-functions.php:31
973
  #: includes/admin/import/import-functions.php:98
974
  #: includes/admin/reporting/export/export-actions.php:24
977
  msgid "Nonce verification failed"
978
  msgstr ""
979
 
980
+ #: includes/admin/customers/customer-actions.php:325
981
  #: includes/shortcodes.php:975
982
  msgid "Email address %s removed by %s"
983
  msgstr ""
984
 
985
+ #: includes/admin/customers/customer-actions.php:409
986
  msgid "You do not have permission to delete this customer."
987
  msgstr ""
988
 
989
+ #: includes/admin/customers/customer-actions.php:426
990
  msgid "Please confirm you want to delete this customer"
991
  msgstr ""
992
 
993
+ #: includes/admin/customers/customer-actions.php:472
994
  msgid "Error deleting customer"
995
  msgstr ""
996
 
997
+ #: includes/admin/customers/customer-actions.php:477
998
  msgid "Invalid Customer ID"
999
  msgstr ""
1000
 
1001
+ #: includes/admin/customers/customer-actions.php:526
1002
  msgid "Failed to disconnect user from customer"
1003
  msgstr ""
1004
 
2004
  #: includes/admin/reporting/reports.php:2789
2005
  #: includes/admin/reporting/reports.php:2858
2006
  #: includes/admin/reporting/reports.php:2924
2007
+ #: includes/reports/reports-functions.php:1084
2008
  #. translators: the plural post type label
2009
  msgid "All %s"
2010
  msgstr ""
2725
  #: includes/admin/payments/class-payments-table.php:296
2726
  #: includes/admin/reporting/class-base-logs-list-table.php:506
2727
  #: includes/admin/tools/logs.php:258
2728
+ #: includes/reports/reports-functions.php:1398
2729
  msgid "Filter"
2730
  msgstr ""
2731
 
5389
  msgstr ""
5390
 
5391
  #: includes/admin/settings/register-settings.php:908
5392
+ msgid "Check this box to enable Debug Mode."
5393
  msgstr ""
5394
 
5395
  #: includes/admin/settings/register-settings.php:913
12009
  msgstr ""
12010
 
12011
  #: includes/reports/reports-functions.php:328
12012
+ #: includes/reports/reports-functions.php:1121
12013
  msgid "Exclude Taxes"
12014
  msgstr ""
12015
 
12039
  msgid "Last 30 Days"
12040
  msgstr ""
12041
 
12042
+ #: includes/reports/reports-functions.php:1013
12043
  msgid "Chart time zone: %s"
12044
  msgstr ""
12045
 
12046
+ #: includes/reports/reports-functions.php:1290
12047
  msgid "%s - Converted"
12048
  msgstr ""
12049
 
12050
+ #: includes/reports/reports-functions.php:1420
12051
  msgid "Try the Sales/Earnings iOS App!"
12052
  msgstr ""
12053
 
12713
  #: includes/admin/reporting/reports.php:2816
12714
  #: includes/admin/reporting/reports.php:2885
12715
  #: includes/admin/reporting/reports.php:2939
12716
+ #: includes/reports/reports-functions.php:1050
12717
  msgctxt "date filter"
12718
  msgid "From"
12719
  msgstr ""
12726
  #: includes/admin/reporting/reports.php:2827
12727
  #: includes/admin/reporting/reports.php:2896
12728
  #: includes/admin/reporting/reports.php:2950
12729
+ #: includes/reports/reports-functions.php:1058
12730
  msgctxt "date filter"
12731
  msgid "To"
12732
  msgstr ""
languages/index.php CHANGED
File without changes
readme.txt CHANGED
@@ -1,13 +1,13 @@
1
  === Easy Digital Downloads - Simple eCommerce for Selling Digital Files ===
2
  Author URI: https://easydigitaldownloads.com
3
  Plugin URI: https://easydigitaldownloads.com
4
- Contributors: easydigitaldownloads, mordauk, sunnyratilal, chriscct7, section214, sumobi, sdavis2702, cklosows, mindctrl, sksmatt, SpencerFinnell, johnstonphilip, brashrebel, drewapicture, johnjamesjacoby, nosegraze, littlerchicken, lisacee
5
  Donate link: https://easydigitaldownloads.com/donate/
6
  Tags: ecommerce, e-commerce, sell, digital store, stripe
7
  Requires at least: 4.9
8
  Tested up to: 6.0
9
  Requires PHP: 5.6
10
- Stable Tag: 3.0
11
  License: GNU Version 2 or Any Later Version
12
 
13
  Sell your digital products with the ecommerce plugin written for digital creators, by digital creators.
@@ -239,6 +239,14 @@ Yes, through the use of our commercial addon called [Recurring Payments](https:/
239
 
240
  == Changelog ==
241
 
 
 
 
 
 
 
 
 
242
  = 3.0, July 13, 2022 =
243
  * IMPORTANT: This is a major release, and should be tested in your staging environments prior to running on your live site.
244
  * Upgrade: This update will ask you to perform database maintenance once installed. Your site should remain functional during this time, but access to historical store data will be limited until the migration is complete.
@@ -465,3 +473,6 @@ Yes, through the use of our commercial addon called [Recurring Payments](https:/
465
  * Fix: When no customer exists for a query, the total_spent returns an undefined index notice.
466
  * Dev: When checking if a file download limit is reached, the price_id of the purchased download is now passed to the edd_is_file_at_download_limit filter.
467
  * Dev: The edd_download_price_table_head and edd_download_price_table_row actions have been formally deprecated.
 
 
 
1
  === Easy Digital Downloads - Simple eCommerce for Selling Digital Files ===
2
  Author URI: https://easydigitaldownloads.com
3
  Plugin URI: https://easydigitaldownloads.com
4
+ Contributors: easydigitaldownloads, mordauk, sunnyratilal, chriscct7, section214, sumobi, sdavis2702, cklosows, mindctrl, sksmatt, SpencerFinnell, johnstonphilip, brashrebel, drewapicture, johnjamesjacoby, nosegraze, littlerchicken, lisacee, zkawesome
5
  Donate link: https://easydigitaldownloads.com/donate/
6
  Tags: ecommerce, e-commerce, sell, digital store, stripe
7
  Requires at least: 4.9
8
  Tested up to: 6.0
9
  Requires PHP: 5.6
10
+ Stable Tag: 3.0.1
11
  License: GNU Version 2 or Any Later Version
12
 
13
  Sell your digital products with the ecommerce plugin written for digital creators, by digital creators.
239
 
240
  == Changelog ==
241
 
242
+ = 3.0.1, July 15, 2022 =
243
+ * Fix: Setting the EDD_USE_PHP_SESSIONS constant to 'false' could result in empty carts.
244
+ * Fix: Exporting reports with 'All Statuses' and a country/region fails.
245
+ * Fix: Adding more than one additional customer email address in a row failed.
246
+ * Fix: A fatal error could be triggered when attempting to output the JSON-LD structured data.
247
+ * Fix: Adjust the debug mode setting to be more clearly stated.
248
+ * Fix: Report graphs did not support hour-by-hour for some custom date queries.
249
+
250
  = 3.0, July 13, 2022 =
251
  * IMPORTANT: This is a major release, and should be tested in your staging environments prior to running on your live site.
252
  * Upgrade: This update will ask you to perform database maintenance once installed. Your site should remain functional during this time, but access to historical store data will be limited until the migration is complete.
473
  * Fix: When no customer exists for a query, the total_spent returns an undefined index notice.
474
  * Dev: When checking if a file download limit is reached, the price_id of the purchased download is now passed to the edd_is_file_at_download_limit filter.
475
  * Dev: The edd_download_price_table_head and edd_download_price_table_row actions have been formally deprecated.
476
+
477
+ == Upgrade Notice ==
478
+ IMPORTANT: Easy Digital Downloads 3.0 is a major release that includes many improvements and changes. You will be asked to perform database maintenance once installed. Please ensure you make a backup of your site prior to upgrading. Your site should remain functional during this maintenance, but as with all updates, it is best to make a backup of your site prior to updating.
templates/checkout_cart.php CHANGED
File without changes
templates/images/icons/iphone.png CHANGED
File without changes
templates/images/loading.gif CHANGED
File without changes
templates/images/tick.png CHANGED
File without changes
templates/images/xit.gif CHANGED
File without changes