Easy Digital Downloads - Version 2.8.16

Version Description

Download this release

Release Info

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

Code changes from version 2.8.15 to 2.8.16

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: 2.8.15
9
  * Text Domain: easy-digital-downloads
10
  * Domain Path: languages
11
  *
@@ -25,7 +25,7 @@
25
  * @package EDD
26
  * @category Core
27
  * @author Pippin Williamson
28
- * @version 2.8.15
29
  */
30
 
31
  // Exit if accessed directly.
@@ -206,7 +206,7 @@ final class Easy_Digital_Downloads {
206
 
207
  // Plugin version.
208
  if ( ! defined( 'EDD_VERSION' ) ) {
209
- define( 'EDD_VERSION', '2.8.15' );
210
  }
211
 
212
  // Plugin Folder Path.
5
  * Description: The easiest way to sell digital products with WordPress.
6
  * Author: Easy Digital Downloads
7
  * Author URI: https://easydigitaldownloads.com
8
+ * Version: 2.8.16
9
  * Text Domain: easy-digital-downloads
10
  * Domain Path: languages
11
  *
25
  * @package EDD
26
  * @category Core
27
  * @author Pippin Williamson
28
+ * @version 2.8.16
29
  */
30
 
31
  // Exit if accessed directly.
206
 
207
  // Plugin version.
208
  if ( ! defined( 'EDD_VERSION' ) ) {
209
+ define( 'EDD_VERSION', '2.8.16' );
210
  }
211
 
212
  // Plugin Folder Path.
includes/actions.php CHANGED
@@ -21,8 +21,9 @@ if ( ! defined( 'ABSPATH' ) ) exit;
21
  * @return void
22
  */
23
  function edd_get_actions() {
24
- if ( isset( $_GET['edd_action'] ) ) {
25
- do_action( 'edd_' . $_GET['edd_action'], $_GET );
 
26
  }
27
  }
28
  add_action( 'init', 'edd_get_actions' );
@@ -36,8 +37,9 @@ add_action( 'init', 'edd_get_actions' );
36
  * @return void
37
  */
38
  function edd_post_actions() {
39
- if ( isset( $_POST['edd_action'] ) ) {
40
- do_action( 'edd_' . $_POST['edd_action'], $_POST );
 
41
  }
42
  }
43
- add_action( 'init', 'edd_post_actions' );
21
  * @return void
22
  */
23
  function edd_get_actions() {
24
+ $key = ! empty( $_GET['edd_action'] ) ? sanitize_key( $_GET['edd_action'] ) : false;
25
+ if ( ! empty( $key ) ) {
26
+ do_action( "edd_{$key}" , $_GET );
27
  }
28
  }
29
  add_action( 'init', 'edd_get_actions' );
37
  * @return void
38
  */
39
  function edd_post_actions() {
40
+ $key = ! empty( $_POST['edd_action'] ) ? sanitize_key( $_POST['edd_action'] ) : false;
41
+ if ( ! empty( $key ) ) {
42
+ do_action( "edd_{$key}", $_POST );
43
  }
44
  }
45
+ add_action( 'init', 'edd_post_actions' );
includes/admin/tracking.php CHANGED
@@ -38,9 +38,9 @@ class EDD_Tracking {
38
 
39
  add_action( 'init', array( $this, 'schedule_send' ) );
40
  add_action( 'edd_settings_general_sanitize', array( $this, 'check_for_settings_optin' ) );
41
- add_action( 'edd_opt_into_tracking', array( $this, 'check_for_optin' ) );
42
  add_action( 'edd_opt_out_of_tracking', array( $this, 'check_for_optout' ) );
43
- add_action( 'admin_notices', array( $this, 'admin_notice' ) );
44
 
45
  }
46
 
@@ -177,6 +177,9 @@ class EDD_Tracking {
177
  * @return void
178
  */
179
  public function check_for_optin( $data ) {
 
 
 
180
 
181
  edd_update_option( 'allow_tracking', 1 );
182
 
@@ -193,6 +196,10 @@ class EDD_Tracking {
193
  * @return void
194
  */
195
  public function check_for_optout( $data ) {
 
 
 
 
196
  edd_delete_option( 'allow_tracking' );
197
  update_option( 'edd_tracking_notice', '1' );
198
  wp_redirect( remove_query_arg( 'edd_action' ) ); exit;
@@ -211,12 +218,16 @@ class EDD_Tracking {
211
  /**
212
  * Schedule a weekly checkin
213
  *
 
 
 
214
  * @access public
215
  * @return void
216
  */
217
  public function schedule_send() {
218
- // We send once a week (while tracking is allowed) to check in, which can be used to determine active sites
219
- add_action( 'edd_weekly_scheduled_events', array( $this, 'send_checkin' ) );
 
220
  }
221
 
222
  /**
38
 
39
  add_action( 'init', array( $this, 'schedule_send' ) );
40
  add_action( 'edd_settings_general_sanitize', array( $this, 'check_for_settings_optin' ) );
41
+ add_action( 'edd_opt_into_tracking', array( $this, 'check_for_optin' ) );
42
  add_action( 'edd_opt_out_of_tracking', array( $this, 'check_for_optout' ) );
43
+ add_action( 'admin_notices', array( $this, 'admin_notice' ) );
44
 
45
  }
46
 
177
  * @return void
178
  */
179
  public function check_for_optin( $data ) {
180
+ if ( ! current_user_can( 'manage_options' ) ) {
181
+ return;
182
+ }
183
 
184
  edd_update_option( 'allow_tracking', 1 );
185
 
196
  * @return void
197
  */
198
  public function check_for_optout( $data ) {
199
+ if ( ! current_user_can( 'manage_options' ) ) {
200
+ return;
201
+ }
202
+
203
  edd_delete_option( 'allow_tracking' );
204
  update_option( 'edd_tracking_notice', '1' );
205
  wp_redirect( remove_query_arg( 'edd_action' ) ); exit;
218
  /**
219
  * Schedule a weekly checkin
220
  *
221
+ * We send once a week (while tracking is allowed) to check in, which can be
222
+ * used to determine active sites.
223
+ *
224
  * @access public
225
  * @return void
226
  */
227
  public function schedule_send() {
228
+ if ( edd_doing_cron() ) {
229
+ add_action( 'edd_weekly_scheduled_events', array( $this, 'send_checkin' ) );
230
+ }
231
  }
232
 
233
  /**
includes/cart/functions.php CHANGED
@@ -603,6 +603,8 @@ function edd_get_cart_token() {
603
  /**
604
  * Delete Saved Carts after one week
605
  *
 
 
606
  * @since 1.8
607
  * @global $wpdb
608
  * @return void
@@ -610,6 +612,11 @@ function edd_get_cart_token() {
610
  function edd_delete_saved_carts() {
611
  global $wpdb;
612
 
 
 
 
 
 
613
  $start = date( 'Y-m-d', strtotime( '-7 days' ) );
614
  $carts = $wpdb->get_results(
615
  "
603
  /**
604
  * Delete Saved Carts after one week
605
  *
606
+ * This function is only intended to be used by WordPress cron.
607
+ *
608
  * @since 1.8
609
  * @global $wpdb
610
  * @return void
612
  function edd_delete_saved_carts() {
613
  global $wpdb;
614
 
615
+ // Bail if not in WordPress cron
616
+ if ( ! edd_doing_cron() ) {
617
+ return;
618
+ }
619
+
620
  $start = date( 'Y-m-d', strtotime( '-7 days' ) );
621
  $carts = $wpdb->get_results(
622
  "
includes/class-edd-cli.php CHANGED
@@ -364,18 +364,18 @@ class EDD_CLI extends WP_CLI_Command {
364
  * ## OPTIONS
365
  *
366
  * --email=<customer_email>: The email address of the customer to retrieve
367
- *
368
  * ## EXAMPLES
369
- *
370
  * wp edd sales
371
  * wp edd sales --email=john@test.com
372
  */
373
  public function sales( $args, $assoc_args ) {
374
-
375
  $email = isset( $assoc_args ) && array_key_exists( 'email', $assoc_args ) ? $assoc_args['email'] : '';
376
-
377
- global $wp_query;
378
-
379
  $wp_query->query_vars['email'] = $email;
380
 
381
  $sales = $this->api->get_recent_sales();
@@ -528,12 +528,14 @@ class EDD_CLI extends WP_CLI_Command {
528
  $id = false;
529
  $price_id = false;
530
  $tax = 0;
531
- $email = 'guest@local.dev';
532
  $fname = 'Pippin';
533
  $lname = 'Williamson';
534
  $date = false;
535
  $range = 30;
536
 
 
 
537
  if( count( $assoc_args ) > 0 ) {
538
  $number = ( array_key_exists( 'number', $assoc_args ) ) ? absint( $assoc_args['number'] ) : $number;
539
  $id = ( array_key_exists( 'id', $assoc_args ) ) ? absint( $assoc_args['id'] ) : $id;
@@ -545,6 +547,8 @@ class EDD_CLI extends WP_CLI_Command {
545
  $date = ( array_key_exists( 'date', $assoc_args ) ) ? sanitize_text_field( $assoc_args['date'] ) : $date;
546
  $range = ( array_key_exists( 'range', $assoc_args ) ) ? absint( $assoc_args['range'] ) : $range;
547
 
 
 
548
  // Status requires a bit more validation
549
  if( array_key_exists( 'status', $assoc_args ) ) {
550
  $stati = array(
@@ -683,6 +687,23 @@ class EDD_CLI extends WP_CLI_Command {
683
  }
684
  }
685
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
686
  $purchase_data = array(
687
  'price' => edd_sanitize_amount( $total ),
688
  'tax' => 0,
@@ -722,4 +743,38 @@ class EDD_CLI extends WP_CLI_Command {
722
  WP_CLI::success( sprintf( __( 'Created %s payments', 'easy-digital-downloads' ), $number ) );
723
  return;
724
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
725
  }
364
  * ## OPTIONS
365
  *
366
  * --email=<customer_email>: The email address of the customer to retrieve
367
+ *
368
  * ## EXAMPLES
369
+ *
370
  * wp edd sales
371
  * wp edd sales --email=john@test.com
372
  */
373
  public function sales( $args, $assoc_args ) {
374
+
375
  $email = isset( $assoc_args ) && array_key_exists( 'email', $assoc_args ) ? $assoc_args['email'] : '';
376
+
377
+ global $wp_query;
378
+
379
  $wp_query->query_vars['email'] = $email;
380
 
381
  $sales = $this->api->get_recent_sales();
528
  $id = false;
529
  $price_id = false;
530
  $tax = 0;
531
+ $email = 'guest@edd.local';
532
  $fname = 'Pippin';
533
  $lname = 'Williamson';
534
  $date = false;
535
  $range = 30;
536
 
537
+ $generate_users = false;
538
+
539
  if( count( $assoc_args ) > 0 ) {
540
  $number = ( array_key_exists( 'number', $assoc_args ) ) ? absint( $assoc_args['number'] ) : $number;
541
  $id = ( array_key_exists( 'id', $assoc_args ) ) ? absint( $assoc_args['id'] ) : $id;
547
  $date = ( array_key_exists( 'date', $assoc_args ) ) ? sanitize_text_field( $assoc_args['date'] ) : $date;
548
  $range = ( array_key_exists( 'range', $assoc_args ) ) ? absint( $assoc_args['range'] ) : $range;
549
 
550
+ $generate_users = ( array_key_exists( 'generate_users', $assoc_args ) ) ? (bool) absint( $assoc_args['generate_users'] ) : $generate_users;
551
+
552
  // Status requires a bit more validation
553
  if( array_key_exists( 'status', $assoc_args ) ) {
554
  $stati = array(
687
  }
688
  }
689
 
690
+ if ( $generate_users ) {
691
+ $fname = $this->get_fname();
692
+ $lname = $this->get_lname();
693
+ $domain = $this->get_domain();
694
+ $tld = $this->get_tld();
695
+
696
+ $email = $fname . '.' . $lname . '@' . $domain . '.' . $tld;
697
+
698
+ $user_info = array(
699
+ 'id' => 0,
700
+ 'email' => $email,
701
+ 'first_name' => $fname,
702
+ 'last_name' => $lname,
703
+ 'discount' => 'none'
704
+ );
705
+ }
706
+
707
  $purchase_data = array(
708
  'price' => edd_sanitize_amount( $total ),
709
  'tax' => 0,
743
  WP_CLI::success( sprintf( __( 'Created %s payments', 'easy-digital-downloads' ), $number ) );
744
  return;
745
  }
746
+
747
+ private function get_fname() {
748
+ $names = array(
749
+ 'Ilse','Emelda','Aurelio','Chiquita','Cheryl','Norbert','Neville','Wendie','Clint','Synthia','Tobi','Nakita',
750
+ 'Marisa','Maybelle','Onie','Donnette','Henry','Sheryll','Leighann','Wilson',
751
+ );
752
+
753
+ return $names[ rand( 0, ( count( $names ) - 1 ) ) ];
754
+ }
755
+
756
+ private function get_lname() {
757
+ $names = array(
758
+ 'Warner','Roush','Lenahan','Theiss','Sack','Troutt','Vanderburg','Lisi','Lemons','Christon','Kogut',
759
+ 'Broad','Wernick','Horstmann','Schoenfeld','Dolloff','Murph','Shipp','Hursey','Jacobi',
760
+ );
761
+
762
+ return $names[ rand( 0, ( count( $names ) - 1 ) ) ];
763
+ }
764
+
765
+ private function get_domain() {
766
+ $domains = array(
767
+ 'example', 'edd', 'rcp', 'affwp',
768
+ );
769
+
770
+ return $domains[ rand( 0, ( count( $domains ) - 1 ) ) ];
771
+ }
772
+
773
+ private function get_tld() {
774
+ $tlds = array(
775
+ 'local', 'test', 'example', 'localhost', 'invalid',
776
+ );
777
+
778
+ return $tlds[ rand( 0, ( count( $tlds ) - 1 ) ) ];
779
+ }
780
  }
includes/class-edd-license-handler.php CHANGED
@@ -104,7 +104,9 @@ class EDD_License {
104
  add_action( 'admin_init', array( $this, 'deactivate_license' ) );
105
 
106
  // Check that license is valid once per week
107
- add_action( 'edd_weekly_scheduled_events', array( $this, 'weekly_license_check' ) );
 
 
108
 
109
  // For testing license notices, uncomment this line to force checks on every page load
110
  //add_action( 'admin_init', array( $this, 'weekly_license_check' ) );
104
  add_action( 'admin_init', array( $this, 'deactivate_license' ) );
105
 
106
  // Check that license is valid once per week
107
+ if ( edd_doing_cron() ) {
108
+ add_action( 'edd_weekly_scheduled_events', array( $this, 'weekly_license_check' ) );
109
+ }
110
 
111
  // For testing license notices, uncomment this line to force checks on every page load
112
  //add_action( 'admin_init', array( $this, 'weekly_license_check' ) );
includes/misc-functions.php CHANGED
@@ -676,11 +676,19 @@ function edd_get_upload_dir() {
676
  /**
677
  * Delete symbolic links after they have been used
678
  *
 
 
679
  * @access public
680
  * @since 1.5
681
  * @return void
682
  */
683
  function edd_cleanup_file_symlinks() {
 
 
 
 
 
 
684
  $path = edd_get_symlink_dir();
685
  $dir = opendir( $path );
686
 
@@ -950,3 +958,28 @@ function edd_can_view_receipt( $payment_key = '' ) {
950
 
951
  return (bool) apply_filters( 'edd_can_view_receipt', $return, $payment_key );
952
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
676
  /**
677
  * Delete symbolic links after they have been used
678
  *
679
+ * This function is only intended to be used by WordPress cron.
680
+ *
681
  * @access public
682
  * @since 1.5
683
  * @return void
684
  */
685
  function edd_cleanup_file_symlinks() {
686
+
687
+ // Bail if not in WordPress cron
688
+ if ( ! edd_doing_cron() ) {
689
+ return;
690
+ }
691
+
692
  $path = edd_get_symlink_dir();
693
  $dir = opendir( $path );
694
 
958
 
959
  return (bool) apply_filters( 'edd_can_view_receipt', $return, $payment_key );
960
  }
961
+
962
+ /**
963
+ * Abstraction for WordPress cron checking, to avoid code duplication.
964
+ *
965
+ * In future versions of EDD, this function will be changed to only refer to
966
+ * EDD specific cron related jobs. You probably won't want to use it until then.
967
+ *
968
+ * @since 2.8.16
969
+ *
970
+ * @return boolean
971
+ */
972
+ function edd_doing_cron() {
973
+
974
+ // Bail if not doing WordPress cron (>4.8.0)
975
+ if ( function_exists( 'wp_doing_cron' ) && wp_doing_cron() ) {
976
+ return true;
977
+
978
+ // Bail if not doing WordPress cron (<4.8.0)
979
+ } elseif ( defined( 'DOING_CRON' ) && ( true === DOING_CRON ) ) {
980
+ return true;
981
+ }
982
+
983
+ // Default to false
984
+ return false;
985
+ }
includes/payments/actions.php CHANGED
@@ -284,10 +284,18 @@ add_action( 'edd_upgrade_payments', 'edd_update_old_payments_with_totals' );
284
  /**
285
  * Updates week-old+ 'pending' orders to 'abandoned'
286
  *
 
 
287
  * @since 1.6
288
  * @return void
289
  */
290
  function edd_mark_abandoned_orders() {
 
 
 
 
 
 
291
  $args = array(
292
  'status' => 'pending',
293
  'number' => -1,
@@ -438,7 +446,16 @@ function edd_recover_payment() {
438
  return;
439
  }
440
 
441
- if ( is_user_logged_in() && $payment->user_id != get_current_user_id() ) {
 
 
 
 
 
 
 
 
 
442
  $redirect = get_permalink( edd_get_option( 'purchase_history_page' ) );
443
  edd_set_error( 'edd-payment-recovery-user-mismatch', __( 'Error resuming payment.', 'easy-digital-downloads' ) );
444
  wp_redirect( $redirect );
284
  /**
285
  * Updates week-old+ 'pending' orders to 'abandoned'
286
  *
287
+ * This function is only intended to be used by WordPress cron.
288
+ *
289
  * @since 1.6
290
  * @return void
291
  */
292
  function edd_mark_abandoned_orders() {
293
+
294
+ // Bail if not in WordPress cron
295
+ if ( ! edd_doing_cron() ) {
296
+ return;
297
+ }
298
+
299
  $args = array(
300
  'status' => 'pending',
301
  'number' => -1,
446
  return;
447
  }
448
 
449
+ if (
450
+ // Logged in, but wrong user ID
451
+ ( is_user_logged_in() && $payment->user_id != get_current_user_id() )
452
+
453
+ // ...OR...
454
+ ||
455
+
456
+ // Logged out, but payment is for a user
457
+ ( ! is_user_logged_in() && ! empty( $payment->user_id ) )
458
+ ) {
459
  $redirect = get_permalink( edd_get_option( 'purchase_history_page' ) );
460
  edd_set_error( 'edd-payment-recovery-user-mismatch', __( 'Error resuming payment.', 'easy-digital-downloads' ) );
461
  wp_redirect( $redirect );
includes/process-purchase.php CHANGED
@@ -621,7 +621,7 @@ function edd_purchase_form_validate_user_login() {
621
 
622
  // Username
623
  if ( empty( $_POST['edd_user_login'] ) && edd_no_guest_checkout() ) {
624
- edd_set_error( 'must_log_in', __( 'You must login or register to complete your purchase', 'easy-digital-downloads' ) );
625
  return $valid_user_data;
626
  }
627
 
621
 
622
  // Username
623
  if ( empty( $_POST['edd_user_login'] ) && edd_no_guest_checkout() ) {
624
+ edd_set_error( 'must_log_in', __( 'You must log in or register to complete your purchase', 'easy-digital-downloads' ) );
625
  return $valid_user_data;
626
  }
627
 
includes/template-functions.php CHANGED
@@ -831,7 +831,7 @@ function edd_microdata_wrapper_open( $query ) {
831
 
832
  if ( $query && ! empty( $query->query['post_type'] ) && $query->query['post_type'] == 'download' && is_singular( 'download' ) && $query->is_main_query() ) {
833
  $microdata_open = true;
834
- echo '<span itemscope itemtype="http://schema.org/Product">';
835
  }
836
 
837
  }
@@ -856,7 +856,7 @@ function edd_microdata_wrapper_close() {
856
 
857
  if ( $post && $post->post_type == 'download' && is_singular( 'download' ) && is_main_query() ) {
858
  $microdata_close = true;
859
- echo '</span>';
860
  }
861
  }
862
  add_action( 'loop_end', 'edd_microdata_wrapper_close', 10 );
831
 
832
  if ( $query && ! empty( $query->query['post_type'] ) && $query->query['post_type'] == 'download' && is_singular( 'download' ) && $query->is_main_query() ) {
833
  $microdata_open = true;
834
+ echo '<div itemscope itemtype="http://schema.org/Product">';
835
  }
836
 
837
  }
856
 
857
  if ( $post && $post->post_type == 'download' && is_singular( 'download' ) && is_main_query() ) {
858
  $microdata_close = true;
859
+ echo '</div>';
860
  }
861
  }
862
  add_action( 'loop_end', 'edd_microdata_wrapper_close', 10 );
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 2.8.15\n"
6
  "Report-Msgid-Bugs-To: https://easydigitaldownloads.com/\n"
7
- "POT-Creation-Date: 2017-12-13 20:39:35+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -90,7 +90,7 @@ msgstr ""
90
  #: includes/api/class-edd-api.php:1990 includes/api/class-edd-api.php:1995
91
  #: includes/api/class-edd-api.php:2007 includes/api/class-edd-api.php:2009
92
  #: includes/cart/class-edd-cart.php:1470 includes/cart/class-edd-cart.php:1484
93
- #: includes/class-edd-license-handler.php:307
94
  #: includes/deprecated-functions.php:517 includes/deprecated-functions.php:532
95
  #: includes/deprecated-functions.php:542 includes/download-functions.php:1248
96
  #: includes/emails/actions.php:53 includes/emails/template.php:243
@@ -546,7 +546,7 @@ msgstr ""
546
  #: includes/admin/import/import-functions.php:113
547
  #: includes/admin/reporting/export/export-actions.php:23
548
  #: includes/api/class-edd-api.php:1990
549
- #: includes/class-edd-license-handler.php:307
550
  msgid "Nonce verification failed"
551
  msgstr ""
552
 
@@ -4728,7 +4728,7 @@ msgstr ""
4728
  msgid "Copy Entire Log"
4729
  msgstr ""
4730
 
4731
- #: includes/admin/tracking.php:256
4732
  msgid ""
4733
  "Allow Easy Digital Downloads to track plugin usage? Opt-in to tracking and "
4734
  "our newsletter and immediately be emailed a discount to the EDD shop, valid "
@@ -4736,11 +4736,11 @@ msgid ""
4736
  "sensitive data is tracked."
4737
  msgstr ""
4738
 
4739
- #: includes/admin/tracking.php:257
4740
  msgid "Allow"
4741
  msgstr ""
4742
 
4743
- #: includes/admin/tracking.php:258
4744
  msgid "Do not allow"
4745
  msgstr ""
4746
 
@@ -5549,15 +5549,15 @@ msgstr ""
5549
  msgid "Invalid action specified, did you mean"
5550
  msgstr ""
5551
 
5552
- #: includes/class-edd-cli.php:566
5553
  msgid "Invalid status '%s', defaulting to 'complete'"
5554
  msgstr ""
5555
 
5556
- #: includes/class-edd-cli.php:604
5557
  msgid "Specified ID is not a product"
5558
  msgstr ""
5559
 
5560
- #: includes/class-edd-cli.php:722
5561
  msgid "Created %s payments"
5562
  msgstr ""
5563
 
@@ -5634,24 +5634,24 @@ msgstr ""
5634
  msgid "Enter username"
5635
  msgstr ""
5636
 
5637
- #: includes/class-edd-license-handler.php:166
5638
  msgid "%1$s"
5639
  msgstr ""
5640
 
5641
- #: includes/class-edd-license-handler.php:199
5642
  msgid ""
5643
  "Enter your extension license keys here to receive updates for purchased "
5644
  "extensions. If your license key has expired, please <a href=\"%s\" "
5645
  "target=\"_blank\">renew your license</a>."
5646
  msgstr ""
5647
 
5648
- #: includes/class-edd-license-handler.php:424
5649
  msgid ""
5650
  "You have invalid or expired license keys for Easy Digital Downloads. Please "
5651
  "go to the <a href=\"%s\">Licenses page</a> to correct this issue."
5652
  msgstr ""
5653
 
5654
- #: includes/class-edd-license-handler.php:463
5655
  msgid "Enter valid license key for automatic updates."
5656
  msgstr ""
5657
 
@@ -6783,23 +6783,23 @@ msgstr ""
6783
  msgid "Status changed from %s to %s"
6784
  msgstr ""
6785
 
6786
- #: includes/payments/actions.php:443 includes/payments/actions.php:503
6787
  msgid "Error resuming payment."
6788
  msgstr ""
6789
 
6790
- #: includes/payments/actions.php:447
6791
  msgid "Payment recovery triggered URL"
6792
  msgstr ""
6793
 
6794
- #: includes/payments/actions.php:525 includes/payments/actions.php:559
6795
  msgid "To complete this payment, please login to your account."
6796
  msgstr ""
6797
 
6798
- #: includes/payments/actions.php:527
6799
  msgid "Lost Password"
6800
  msgstr ""
6801
 
6802
- #: includes/payments/actions.php:528 templates/shortcode-login.php:33
6803
  msgid "Lost Password?"
6804
  msgstr ""
6805
 
@@ -7220,7 +7220,7 @@ msgid "Enter the password confirmation"
7220
  msgstr ""
7221
 
7222
  #: includes/process-purchase.php:624
7223
- msgid "You must login or register to complete your purchase"
7224
  msgstr ""
7225
 
7226
  #: includes/process-purchase.php:651
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 2.8.16\n"
6
  "Report-Msgid-Bugs-To: https://easydigitaldownloads.com/\n"
7
+ "POT-Creation-Date: 2017-12-21 21:34:32+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
90
  #: includes/api/class-edd-api.php:1990 includes/api/class-edd-api.php:1995
91
  #: includes/api/class-edd-api.php:2007 includes/api/class-edd-api.php:2009
92
  #: includes/cart/class-edd-cart.php:1470 includes/cart/class-edd-cart.php:1484
93
+ #: includes/class-edd-license-handler.php:309
94
  #: includes/deprecated-functions.php:517 includes/deprecated-functions.php:532
95
  #: includes/deprecated-functions.php:542 includes/download-functions.php:1248
96
  #: includes/emails/actions.php:53 includes/emails/template.php:243
546
  #: includes/admin/import/import-functions.php:113
547
  #: includes/admin/reporting/export/export-actions.php:23
548
  #: includes/api/class-edd-api.php:1990
549
+ #: includes/class-edd-license-handler.php:309
550
  msgid "Nonce verification failed"
551
  msgstr ""
552
 
4728
  msgid "Copy Entire Log"
4729
  msgstr ""
4730
 
4731
+ #: includes/admin/tracking.php:267
4732
  msgid ""
4733
  "Allow Easy Digital Downloads to track plugin usage? Opt-in to tracking and "
4734
  "our newsletter and immediately be emailed a discount to the EDD shop, valid "
4736
  "sensitive data is tracked."
4737
  msgstr ""
4738
 
4739
+ #: includes/admin/tracking.php:268
4740
  msgid "Allow"
4741
  msgstr ""
4742
 
4743
+ #: includes/admin/tracking.php:269
4744
  msgid "Do not allow"
4745
  msgstr ""
4746
 
5549
  msgid "Invalid action specified, did you mean"
5550
  msgstr ""
5551
 
5552
+ #: includes/class-edd-cli.php:570
5553
  msgid "Invalid status '%s', defaulting to 'complete'"
5554
  msgstr ""
5555
 
5556
+ #: includes/class-edd-cli.php:608
5557
  msgid "Specified ID is not a product"
5558
  msgstr ""
5559
 
5560
+ #: includes/class-edd-cli.php:743
5561
  msgid "Created %s payments"
5562
  msgstr ""
5563
 
5634
  msgid "Enter username"
5635
  msgstr ""
5636
 
5637
+ #: includes/class-edd-license-handler.php:168
5638
  msgid "%1$s"
5639
  msgstr ""
5640
 
5641
+ #: includes/class-edd-license-handler.php:201
5642
  msgid ""
5643
  "Enter your extension license keys here to receive updates for purchased "
5644
  "extensions. If your license key has expired, please <a href=\"%s\" "
5645
  "target=\"_blank\">renew your license</a>."
5646
  msgstr ""
5647
 
5648
+ #: includes/class-edd-license-handler.php:426
5649
  msgid ""
5650
  "You have invalid or expired license keys for Easy Digital Downloads. Please "
5651
  "go to the <a href=\"%s\">Licenses page</a> to correct this issue."
5652
  msgstr ""
5653
 
5654
+ #: includes/class-edd-license-handler.php:465
5655
  msgid "Enter valid license key for automatic updates."
5656
  msgstr ""
5657
 
6783
  msgid "Status changed from %s to %s"
6784
  msgstr ""
6785
 
6786
+ #: includes/payments/actions.php:460 includes/payments/actions.php:520
6787
  msgid "Error resuming payment."
6788
  msgstr ""
6789
 
6790
+ #: includes/payments/actions.php:464
6791
  msgid "Payment recovery triggered URL"
6792
  msgstr ""
6793
 
6794
+ #: includes/payments/actions.php:542 includes/payments/actions.php:576
6795
  msgid "To complete this payment, please login to your account."
6796
  msgstr ""
6797
 
6798
+ #: includes/payments/actions.php:544
6799
  msgid "Lost Password"
6800
  msgstr ""
6801
 
6802
+ #: includes/payments/actions.php:545 templates/shortcode-login.php:33
6803
  msgid "Lost Password?"
6804
  msgstr ""
6805
 
7220
  msgstr ""
7221
 
7222
  #: includes/process-purchase.php:624
7223
+ msgid "You must log in or register to complete your purchase"
7224
  msgstr ""
7225
 
7226
  #: includes/process-purchase.php:651
readme.txt CHANGED
@@ -6,7 +6,7 @@ Donate link: https://easydigitaldownloads.com/donate/
6
  Tags: download, downloads, e-store, eshop, digital downloads, e-commerce, wp-ecommerce, wp ecommerce, ecommerce, ebook
7
  Requires at least: 4.4
8
  Tested up to: 4.9.1
9
- Stable Tag: 2.8.15
10
  License: GNU Version 2 or Any Later Version
11
 
12
  The easiest way to sell digital products with WordPress.
@@ -190,6 +190,11 @@ Yes. Easy Digital Downloads also includes default support for Amazon Payments an
190
 
191
  == Changelog ==
192
 
 
 
 
 
 
193
  = 2.8.15, December 13, 2017 =
194
  * Fix: Getting files of variable priced bundles products did not always respect variable price ID.
195
  * Tweak: Added found payments to the hooks before and after the purchase history shortcode.
6
  Tags: download, downloads, e-store, eshop, digital downloads, e-commerce, wp-ecommerce, wp ecommerce, ecommerce, ebook
7
  Requires at least: 4.4
8
  Tested up to: 4.9.1
9
+ Stable Tag: 2.8.16
10
  License: GNU Version 2 or Any Later Version
11
 
12
  The easiest way to sell digital products with WordPress.
190
 
191
  == Changelog ==
192
 
193
+ = 2.8.16, December 21, 2017 =
194
+ * Fix: Hardened EDD actions for use with WP Cron.
195
+ * Fix: Changed span elements to div elements for the schema markup.
196
+ * Dev: Added the ability to randomly generate customer data when creating payments with WP-CLI.
197
+
198
  = 2.8.15, December 13, 2017 =
199
  * Fix: Getting files of variable priced bundles products did not always respect variable price ID.
200
  * Tweak: Added found payments to the hooks before and after the purchase history shortcode.