Easy Digital Downloads - Version 2.11.5

Version Description

Download this release

Release Info

Developer NoseGraze
Plugin Icon 128x128 Easy Digital Downloads
Version 2.11.5
Comparing to
See all releases

Code changes from version 2.11.4.1 to 2.11.5

Files changed (30) hide show
  1. assets/js/admin-scripts.js +25 -0
  2. assets/js/admin-scripts.min.js +1 -1
  3. easy-digital-downloads.php +3 -3
  4. includes/admin/class-edd-notices.php +59 -0
  5. includes/admin/downloads/metabox.php +11 -6
  6. includes/admin/extensions/abstract-extension.php +10 -3
  7. includes/admin/extensions/product-education/class-email-marketing.php +9 -1
  8. includes/admin/extensions/product-education/class-invoices.php +9 -1
  9. includes/admin/extensions/product-education/class-recurring.php +9 -1
  10. includes/admin/extensions/product-education/class-reviews.php +9 -1
  11. includes/admin/import/class-batch-import-downloads.php +2 -2
  12. includes/admin/import/class-batch-import-payments.php +13 -6
  13. includes/admin/import/class-batch-import.php +42 -11
  14. includes/class-edd-discount.php +19 -0
  15. includes/class-edd-logging.php +3 -5
  16. includes/gateways/stripe/edd-stripe.php +2 -2
  17. includes/gateways/stripe/includes/admin/admin-actions.php +1 -1
  18. includes/gateways/stripe/includes/compat.php +8 -0
  19. includes/gateways/stripe/vendor/composer/ClassLoader.php +142 -15
  20. includes/gateways/stripe/vendor/composer/InstalledVersions.php +19 -6
  21. includes/gateways/stripe/vendor/composer/LICENSE +2 -0
  22. includes/gateways/stripe/vendor/composer/autoload_classmap.php +1 -0
  23. includes/gateways/stripe/vendor/composer/autoload_real.php +4 -2
  24. includes/gateways/stripe/vendor/composer/autoload_static.php +5 -0
  25. includes/gateways/stripe/vendor/composer/installed.json +219 -213
  26. includes/gateways/stripe/vendor/composer/installed.php +2 -2
  27. includes/payments/class-edd-payment.php +37 -0
  28. includes/payments/functions.php +1 -1
  29. languages/easy-digital-downloads.pot +180 -161
  30. readme.txt +49 -42
assets/js/admin-scripts.js CHANGED
@@ -2138,6 +2138,31 @@ jQuery(document).ready(function ($) {
2138
  }
2139
  });
2140
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2141
  });
2142
 
2143
  // Graphing Helper Functions
2138
  }
2139
  });
2140
 
2141
+ /**
2142
+ * Deletes the debug log file and disables logging.
2143
+ */
2144
+ $( document.body ).on( 'click', '#edd-disable-debug-log', function ( e ) {
2145
+ e.preventDefault();
2146
+ $( this ).attr( 'disabled', true );
2147
+ var notice = $( '#edd-debug-log-notice' );
2148
+ $.ajax( {
2149
+ type: "GET",
2150
+ data: {
2151
+ action: 'edd_disable_debugging',
2152
+ nonce: $( '#edd_debug_log_delete' ).val(),
2153
+ },
2154
+ url: ajaxurl,
2155
+ success: function ( response ) {
2156
+ notice.empty().append( response.data );
2157
+ setTimeout( function () {
2158
+ notice.slideUp();
2159
+ }, 3000 );
2160
+ }
2161
+ } ).fail( function ( response ) {
2162
+ notice.empty().append( response.responseJSON.data );
2163
+ } );
2164
+ } );
2165
+
2166
  });
2167
 
2168
  // Graphing Helper Functions
assets/js/admin-scripts.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function($){edd_attach_tooltips($(".edd-help-tip"));var EDD_Download_Configuration={init:function(){this.add(),this.move(),this.remove(),this.type(),this.prices(),this.files(),this.updatePrices()},clone_repeatable:function(row){var key;highest=1;return row.parent().find(".edd_repeatable_row").each(function(){var current=$(this).data("key");parseInt(current)>highest&&(highest=current)}),key=highest+=1,clone=row.clone(),clone.removeClass("edd_add_blank"),clone.attr("data-key",key),clone.find("input, select, textarea").val("").each(function(){var name=$(this).attr("name"),id=$(this).attr("id");name&&(name=name.replace(/\[(\d+)\]/,"["+parseInt(key)+"]"),$(this).attr("name",name)),$(this).attr("data-key",key),void 0!==id&&(id=id.replace(/(\d+)/,parseInt(key)),$(this).attr("id",id))}),clone.find("select").each(function(){$(this).val(row.find('select[name="'+$(this).attr("name")+'"]').val())}),clone.find('input[type="checkbox"]').each(function(){$(this).is(":checked")&&$(this).prop("checked",!1),$(this).val(1)}),clone.find("span.edd_price_id").each(function(){$(this).text(parseInt(key))}),clone.find("span.edd_file_id").each(function(){$(this).text(parseInt(key))}),clone.find(".edd_repeatable_default_input").each(function(){$(this).val(parseInt(key)).removeAttr("checked")}),clone.find(".edd_repeatable_index").each(function(){$(this).val(parseInt(key))}),clone.find(".edd_repeatable_condition_field").each(function(){$(this).find("option:eq(0)").prop("selected","selected")}),clone.find(".search-choice").remove(),clone.find(".chosen-container").remove(),edd_attach_tooltips(clone.find(".edd-help-tip")),clone},add:function(){$(document.body).on("click",".submit .edd_add_repeatable",function(clone){clone.preventDefault();var row=$(this).parent().parent().prev(".edd_repeatable_row"),clone=EDD_Download_Configuration.clone_repeatable(row);clone.insertAfter(row).find("input, textarea, select").filter(":visible").eq(0).focus(),clone.find(".edd-select-chosen").chosen({inherit_select_classes:!0,placeholder_text_single:edd_vars.one_option,placeholder_text_multiple:edd_vars.one_or_more_option}),clone.find(".edd-select-chosen").css("width","100%"),clone.find(".edd-select-chosen .chosen-search input").attr("placeholder",edd_vars.search_placeholder)})},move:function(){$(".edd_repeatable_table .edd-repeatables-wrap").sortable({handle:".edd-draghandle-anchor",items:".edd_repeatable_row",opacity:.6,cursor:"move",axis:"y",update:function(){var count=0;$(this).find(".edd_repeatable_row").each(function(){$(this).find("input.edd_repeatable_index").each(function(){$(this).val(count)}),count++})}})},remove:function(){$(document.body).on("click",".edd-remove-row, .edd_remove_repeatable",function(firstFocusable){firstFocusable.preventDefault();var row=$(this).parents(".edd_repeatable_row"),count=row.parent().find(".edd_repeatable_row").length,type=$(this).data("type"),repeatable="div.edd_repeatable_"+type+"s",price_row_id=$(this).is(".ui-sortable .edd_repeatable_row:first-child .edd-remove-row, .ui-sortable .edd_repeatable_row:first-child .edd_remove_repeatable")?row.next(".edd_repeatable_row"):row.prev(".edd_repeatable_row"),firstFocusable=price_row_id.find("select, input, textarea, button").filter(":visible").eq(0);if("price"===type&&(price_row_id=row.data("key"),$('.edd_repeatable_condition_field option[value="'+price_row_id+'"]').remove()),1<count)$("input, select",row).val(""),row.fadeOut("fast").remove(),firstFocusable.focus();else switch(type){case"price":alert(edd_vars.one_price_min);break;case"file":$("input, select",row).val("");break;default:alert(edd_vars.one_field_min)}$(repeatable).each(function(rowIndex){$(this).find("input, select").each(function(){var name=(name=$(this).attr("name")).replace(/\[(\d+)\]/,"["+rowIndex+"]");$(this).attr("name",name).attr("id",name)})})})},type:function(){$(document.body).on("change","#_edd_product_type",function(e){var edd_products=$("#edd_products"),edd_download_files=$("#edd_download_files"),edd_download_limit_wrap=$("#edd_download_limit_wrap");"bundle"===$(this).val()?(edd_products.show(),edd_download_files.hide(),edd_download_limit_wrap.hide()):(edd_products.hide(),edd_download_files.show(),edd_download_limit_wrap.show())})},prices:function(){$(document.body).on("change","#edd_variable_pricing",function(e){var checked=$(this).is(":checked"),single=$("#edd_regular_price_field"),variable=$("#edd_variable_price_fields, .edd_repeatable_table .pricing"),bundleRow=$(".edd-bundled-product-row, .edd-repeatable-row-standard-fields");checked?(single.hide(),variable.show(),bundleRow.addClass("has-variable-pricing")):(single.show(),variable.hide(),bundleRow.removeClass("has-variable-pricing"))})},files:function(){var file_frame;window.formfield="",$(document.body).on("click",".edd_upload_file_button",function(button){button.preventDefault();button=$(this);window.formfield=$(this).closest(".edd_repeatable_upload_wrapper"),file_frame||((file_frame=wp.media.frames.file_frame=wp.media({frame:"post",state:"insert",title:button.data("uploader-title"),button:{text:button.data("uploader-button-text")},multiple:"0"!=$(this).data("multiple")})).on("menu:render:default",function(view){view.unset("library-separator"),view.unset("gallery"),view.unset("featured-image"),view.unset("embed"),view.set({})}),file_frame.on("insert",function(){file_frame.state().get("selection").each(function(attachment,clone){var row,selectedSize="image"===(attachment=attachment.toJSON()).type&&$(".attachment-display-settings .size option:selected").val(),selectedURL=attachment.url,selectedName=0<attachment.title.length?attachment.title:attachment.filename;selectedSize&&void 0!==attachment.sizes[selectedSize]&&(selectedURL=attachment.sizes[selectedSize].url),"image"===attachment.type&&(selectedName=selectedSize&&void 0!==attachment.sizes[selectedSize]?selectedName+"-"+attachment.sizes[selectedSize].width+"x"+attachment.sizes[selectedSize].height:selectedName+"-"+attachment.width+"x"+attachment.height),0===clone?(window.formfield.find(".edd_repeatable_attachment_id_field").val(attachment.id),window.formfield.find(".edd_repeatable_thumbnail_size_field").val(selectedSize),window.formfield.find(".edd_repeatable_upload_field").val(selectedURL),window.formfield.find(".edd_repeatable_name_field").val(selectedName)):(row=window.formfield,(clone=EDD_Download_Configuration.clone_repeatable(row)).find(".edd_repeatable_attachment_id_field").val(attachment.id),clone.find(".edd_repeatable_thumbnail_size_field").val(selectedSize),clone.find(".edd_repeatable_upload_field").val(selectedURL),clone.find(".edd_repeatable_name_field").val(selectedName),clone.insertAfter(row))})})),file_frame.open()}),window.formfield=""},updatePrices:function(){$("#edd_price_fields").on("keyup",".edd_variable_prices_name",function(){var key=$(this).parents(".edd_repeatable_row").data("key"),name=$(this).val(),field_option=$(".edd_repeatable_condition_field option[value="+key+"]");0<field_option.length?field_option.text(name):$(".edd_repeatable_condition_field").append($("<option></option>").attr("value",key).text(name))})}};$(document.body).on("click",".toggle-custom-price-option-section",function(header){header.preventDefault();var show=$(this).html()==edd_vars.show_advanced_settings;show?$(this).html(edd_vars.hide_advanced_settings):$(this).html(edd_vars.show_advanced_settings);header=$(this).parents(".edd-repeatable-row-header");header.siblings(".edd-custom-price-option-sections-wrap").slideToggle(),$(":input:not(input[type=button],input[type=submit],button):visible:first",show?header.siblings(".edd-custom-price-option-sections-wrap"):header.siblings(".edd-repeatable-row-standard-fields")).focus()}),EDD_Download_Configuration.init();var typingTimer,edd_datepicker=$(".edd_datepicker");0<edd_datepicker.length&&edd_datepicker.datepicker({dateFormat:"mm/dd/yy"}),{init:function(){this.edit_address(),this.remove_download(),this.add_download(),this.change_customer(),this.new_customer(),this.edit_price(),this.recalculate_total(),this.variable_prices_check(),this.add_note(),this.remove_note(),this.resend_receipt(),this.copy_download_link()},edit_address:function(){$('select[name="edd-payment-address[0][country]"]').change(function(){var data=$(this),data={action:"edd_get_shop_states",country:data.val(),nonce:data.data("nonce"),field_name:"edd-payment-address[0][state]"};return $.post(ajaxurl,data,function(response){var state_wrapper=$("#edd-order-address-state-wrap select, #edd-order-address-state-wrap input");$("#edd-order-address-state-wrap .chosen-container").remove(),"nostates"==response?state_wrapper.replaceWith('<input type="text" name="edd-payment-address[0][state]" value="" class="edd-edit-toggles medium-text"/>'):state_wrapper.replaceWith(response)}),!1})},remove_download:function(){$("#edd-purchased-files").on("click",".edd-order-remove-download",function(){var key,download_id,price_id,quantity,amount,fees,currently_removed;return 1===$(document.body).find("#edd-purchased-files > .row:not(.header)").length?alert(edd_vars.one_download_min):confirm(edd_vars.delete_payment_download)&&(key=$(this).data("key"),$(".edd-payment-id").val(),download_id=$('input[name="edd-payment-details-downloads['+key+'][id]"]').val(),price_id=$('input[name="edd-payment-details-downloads['+key+'][price_id]"]').val(),quantity=$('input[name="edd-payment-details-downloads['+key+'][quantity]"]').val(),amount=$('input[name="edd-payment-details-downloads['+key+'][amount]"]').val(),$('input[name="edd-payment-details-downloads['+key+'][tax]"]').length&&(fees=$('input[name="edd-payment-details-downloads['+key+'][tax]"]').val()),$('input[name="edd-payment-details-downloads['+key+'][fees]"]').length&&(fees=$.parseJSON($('input[name="edd-payment-details-downloads['+key+'][fees]"]').val())),currently_removed=$('input[name="edd-payment-removed"]').val(),(currently_removed=(currently_removed=$.parseJSON(currently_removed)).length<1?{}:currently_removed)[key]=[{id:download_id,price_id:price_id,quantity:quantity,amount:amount,cart_index:key}],$('input[name="edd-payment-removed"]').val(JSON.stringify(currently_removed)),$(this).parent().parent().remove(),fees&&fees.length&&$.each(fees,function(key,value){$('*li[data-fee-id="'+value+'"]').remove()}),$("#edd-payment-downloads-changed").val(1),$(".edd-order-payment-recalc-totals").show()),!1})},change_customer:function(){$("#edd-customer-details").on("click",".edd-payment-change-customer, .edd-payment-change-customer-cancel",function(cancel){cancel.preventDefault();var change_customer=$(this).hasClass("edd-payment-change-customer"),cancel=$(this).hasClass("edd-payment-change-customer-cancel");change_customer?($(".customer-info").hide(),$(".change-customer").show(),$(".edd-payment-change-customer-input").css("width","auto")):cancel&&($(".customer-info").show(),$(".change-customer").hide())})},new_customer:function(){$("#edd-customer-details").on("click",".edd-payment-new-customer, .edd-payment-new-customer-cancel",function(cancel){cancel.preventDefault();var new_customer=$(this).hasClass("edd-payment-new-customer"),cancel=$(this).hasClass("edd-payment-new-customer-cancel");new_customer?($(".customer-info").hide(),$(".new-customer").show()):cancel&&($(".customer-info").show(),$(".new-customer").hide());new_customer=$("#edd-new-customer");$(".new-customer").is(":visible")?new_customer.val(1):new_customer.val(0)})},add_download:function(){$(".edd-edit-purchase-element").on("click","#edd-order-add-download",function(download_title){download_title.preventDefault();var quantity=$("#edd_order_download_select"),item_price=$("#edd-order-download-quantity"),item_total=$("#edd-order-download-price"),price_id=$("#edd-order-download-tax"),clone=$(".edd_price_options_select option:selected"),download_id=quantity.val(),download_title=quantity.find(":selected").text(),quantity=item_price.val(),item_price=item_total.val(),item_total=price_id.val(),price_id=clone.val(),clone=clone.text();if(download_id<1)return!1;if(item_price=item_price||0,item_price=parseFloat(item_price),isNaN(item_price))return alert(edd_vars.numeric_item_price),!1;if(item_total=parseFloat(item_total),isNaN(item_total))return alert(edd_vars.numeric_item_tax),!1;if(isNaN(parseInt(quantity)))return alert(edd_vars.numeric_quantity),!1;clone&&(download_title=download_title+" - "+clone);var count=$("#edd-purchased-files div.row:not(.edd-purchased-files-header)").length;0==count&&alert(edd_vars.no_downloads_error);clone=$("#edd-purchased-files div.row:not(.edd-purchased-files-header):last").clone();clone.find(".download span").html('<a href="post.php?post='+download_id+'&action=edit"></a>'),clone.find(".download span a").text(download_title),clone.find(".edd-payment-details-download-item-price").val(item_price.toFixed(edd_vars.currency_decimals)),clone.find(".edd-payment-details-download-item-tax").val(item_total.toFixed(edd_vars.currency_decimals)),clone.find("input.edd-payment-details-download-id").val(download_id),clone.find("input.edd-payment-details-download-price-id").val(price_id);item_total=(item_total=item_price*quantity+item_total).toFixed(edd_vars.currency_decimals);clone.find("span.edd-payment-details-download-amount").text(item_total),clone.find("input.edd-payment-details-download-amount").val(item_total),clone.find("input.edd-payment-details-download-quantity").val(quantity),clone.find("input.edd-payment-details-download-has-log").val(0),clone.find(".edd-copy-download-link-wrapper").remove(),clone.find("input").each(function(){var name=(name=$(this).attr("name")).replace(/\[(\d+)\]/,"["+parseInt(count)+"]");$(this).attr("name",name).attr("id",name)}),clone.find("a.edd-order-remove-download").attr("data-key",parseInt(count)),$("#edd-payment-downloads-changed").val(1),$("#edd-purchased-files div.row .edd-purchased-download-title .deleted").length&&$("#edd-purchased-files div.row:last").remove(),$(clone).insertAfter("#edd-purchased-files div.row:last"),$(".edd-order-payment-recalc-totals").show(),$(".edd-add-download-field").val("")})},edit_price:function(){$(document.body).on("change keyup",".edd-payment-item-input",function(){var row=$(this).parents("ul.edd-purchased-files-list-wrapper");$(".edd-order-payment-recalc-totals").show();var quantity=row.find("input.edd-payment-details-download-quantity").val().replace(edd_vars.thousands_separator,""),item_price=row.find("input.edd-payment-details-download-item-price").val().replace(edd_vars.thousands_separator,""),item_total=row.find("input.edd-payment-details-download-item-tax").val().replace(edd_vars.thousands_separator,""),item_price=parseFloat(item_price);if(isNaN(item_price))return alert(edd_vars.numeric_item_price),!1;item_total=parseFloat(item_total),isNaN(item_total)&&(item_total=0);item_total=(item_total=item_price*(quantity=isNaN(parseInt(quantity))?1:quantity)+item_total).toFixed(edd_vars.currency_decimals);row.find("input.edd-payment-details-download-amount").val(item_total),row.find("span.edd-payment-details-download-amount").text(item_total)})},recalculate_total:function(){$("#edd-order-recalc-total").on("click",function(taxes){taxes.preventDefault();var total=0,tax=0,totals=$("#edd-purchased-files .row input.edd-payment-details-download-amount"),taxes=$("#edd-purchased-files .row input.edd-payment-details-download-item-tax");totals.length&&totals.each(function(){total+=parseFloat($(this).val())}),taxes.length&&taxes.each(function(){tax+=parseFloat($(this).val())}),$(".edd-payment-fees").length&&$(".edd-payment-fees span.fee-amount").each(function(){total+=parseFloat($(this).data("fee"))}),$("input[name=edd-payment-total]").val(total.toFixed(edd_vars.currency_decimals)),$("input[name=edd-payment-tax]").val(tax.toFixed(edd_vars.currency_decimals))})},variable_prices_check:function(){$(".edd-edit-purchase-element").on("change","select#edd_order_download_select",function(){var $this=$(this),download_id=$this.val();0<parseInt(download_id)&&$.ajax({type:"POST",data:{action:"edd_check_for_download_price_variations",download_id:download_id},url:ajaxurl,success:function(response){$(".edd_price_options_select").remove(),$(response).insertAfter($this.next())}}).fail(function(data){window.console&&window.console.log&&console.log(data)})})},add_note:function(){$("#edd-add-payment-note").on("click",function(postData){postData.preventDefault();var border_color,postData={action:"edd_insert_payment_note",payment_id:$(this).data("payment-id"),note:$("#edd-payment-note").val()};postData.note?$.ajax({type:"POST",data:postData,url:ajaxurl,success:function(response){$("#edd-payment-notes-inner").append(response),$(".edd-no-payment-notes").hide(),$("#edd-payment-note").val("")}}).fail(function(data){window.console&&window.console.log&&console.log(data)}):(border_color=$("#edd-payment-note").css("border-color"),$("#edd-payment-note").css("border-color","red"),setTimeout(function(){$("#edd-payment-note").css("border-color",border_color)},500))})},remove_note:function(){$(document.body).on("click",".edd-delete-payment-note",function(e){if(e.preventDefault(),confirm(edd_vars.delete_payment_note)){var postData={action:"edd_delete_payment_note",payment_id:$(this).data("payment-id"),note_id:$(this).data("note-id")};return $.ajax({type:"POST",data:postData,url:ajaxurl,success:function(response){return $("#edd-payment-note-"+postData.note_id).remove(),$(".edd-payment-note").length||$(".edd-no-payment-notes").show(),!1}}).fail(function(data){window.console&&window.console.log&&console.log(data)}),!0}})},resend_receipt:function(){var emails_wrap=$(".edd-order-resend-receipt-addresses");$(document.body).on("click","#edd-select-receipt-email",function(e){e.preventDefault(),emails_wrap.slideDown()}),$(document.body).on("change",".edd-order-resend-receipt-email",function(){var href=$("#edd-select-receipt-email").prop("href")+"&email="+$(this).val();confirm(edd_vars.resend_receipt)&&(window.location=href)}),$(document.body).on("click","#edd-resend-receipt",function(e){return confirm(edd_vars.resend_receipt)})},copy_download_link:function(){$(document.body).on("click",".edd-copy-download-link",function(postData){postData.preventDefault();postData=$(this),postData={action:"edd_get_file_download_link",payment_id:$('input[name="edd_payment_id"]').val(),download_id:postData.data("download-id"),price_id:postData.data("price-id")};$.ajax({type:"POST",data:postData,url:ajaxurl,success:function(link){return $("#edd-download-link").dialog({width:400}).html('<textarea rows="10" cols="40" id="edd-download-link-textarea">'+link+"</textarea>"),$("#edd-download-link-textarea").focus().select(),!1}}).fail(function(data){window.console&&window.console.log&&console.log(data)})})}}.init(),{init:function(){this.type_select(),this.product_requirements()},type_select:function(){$("#edd-edit-discount #edd-type, #edd-add-discount #edd-type").change(function(){var val=$(this).val();$(".edd-amount-description").hide(),$(".edd-amount-description."+val+"-discount").show()})},product_requirements:function(){$("#products").change(function(){var product_conditions=$("#edd-discount-product-conditions");$(this).val()?product_conditions.show():product_conditions.hide()})}}.init(),{init:function(){this.date_options(),this.customers_export()},date_options:function(){$("#edd-graphs-date-options").change(function(){var $this=$(this),date_range_options=$("#edd-date-range-options");"other"===$this.val()?date_range_options.show():date_range_options.hide()})},customers_export:function(){$("#edd_customer_export_download").change(function(){var price_options_select,$this=$(this),data=$("option:selected",$this).val(),customer_export_option=$("#edd_customer_export_option");"0"===$this.val()?customer_export_option.show():customer_export_option.hide(),0!=parseInt(data)?(data={action:"edd_check_for_download_price_variations",download_id:data,all_prices:!0},price_options_select=$(".edd_price_options_select"),$.post(ajaxurl,data,function(response){price_options_select.remove(),$("#edd_customer_export_download_chosen").after(response)})):price_options_select.remove()})}}.init(),{init:function(){this.general(),this.taxes(),this.emails(),this.misc()},general:function(){var file_frame,edd_settings_upload_button=$(".edd-color-picker");edd_settings_upload_button.length&&edd_settings_upload_button.wpColorPicker(),"undefined"==typeof wp||"1"!==edd_vars.new_media_ui?0<(edd_settings_upload_button=$(".edd_settings_upload_button")).length&&(window.formfield="",$(document.body).on("click",edd_settings_upload_button,function(e){e.preventDefault(),window.formfield=$(this).parent().prev(),window.tbframe_interval=setInterval(function(){jQuery("#TB_iframeContent").contents().find(".savesend .button").val(edd_vars.use_this_file).end().find("#insert-gallery, .wp-post-thumbnail").hide()},2e3),tb_show(edd_vars.add_new_download,"media-upload.php?TB_iframe=true")}),window.edd_send_to_editor=window.send_to_editor,window.send_to_editor=function(html){window.formfield?(imgurl=$("a","<div>"+html+"</div>").attr("href"),window.formfield.val(imgurl),window.clearInterval(window.tbframe_interval),tb_remove()):window.edd_send_to_editor(html),window.send_to_editor=window.edd_send_to_editor,window.formfield="",window.imagefield=!1}):(window.formfield="",$(document.body).on("click",".edd_settings_upload_button",function(button){button.preventDefault();button=$(this);window.formfield=$(this).parent().prev(),file_frame||((file_frame=wp.media.frames.file_frame=wp.media({frame:"post",state:"insert",title:button.data("uploader_title"),button:{text:button.data("uploader_button_text")},multiple:!1})).on("menu:render:default",function(view){view.unset("library-separator"),view.unset("gallery"),view.unset("featured-image"),view.unset("embed"),view.set({})}),file_frame.on("insert",function(){file_frame.state().get("selection").each(function(attachment,index){attachment=attachment.toJSON(),window.formfield.val(attachment.url)})})),file_frame.open()}),window.formfield="")},taxes:function(){var no_states=$("select.edd-no-states");no_states.length&&no_states.closest("tr").addClass("hidden"),$('select[name="edd_settings[base_country]"]').change(function(){var data=$(this),$tr=data.closest("tr"),data={action:"edd_get_shop_states",country:data.val(),nonce:data.data("nonce"),field_name:"edd_settings[base_state]"};return $.post(ajaxurl,data,function(response){"nostates"==response?$tr.next().addClass("hidden"):($tr.next().removeClass("hidden"),$tr.next().find("select").replaceWith(response))}),!1}),$(document.body).on("change","#edd_tax_rates select.edd-tax-country",function(){var $this=$(this),data={action:"edd_get_shop_states",country:$this.val(),nonce:$this.data("nonce"),field_name:$this.attr("name").replace("country","state")};return $.post(ajaxurl,data,function(response){var text_field;"nostates"==response?(text_field='<input type="text" name="'+data.field_name+'" value=""/>',$this.parent().next().find("select").replaceWith(text_field)):($this.parent().next().find("input,select").show(),$this.parent().next().find("input,select").replaceWith(response))}),!1}),$("#edd_add_tax_rate").on("click",function(){var row=$("#edd_tax_rates tr:last"),clone=row.clone(),count=row.parent().find("tr").length;return clone.find("td input").not(":input[type=checkbox]").val(""),clone.find('td [type="checkbox"]').attr("checked",!1),clone.find("input, select").each(function(){var name=(name=$(this).attr("name")).replace(/\[(\d+)\]/,"["+parseInt(count)+"]");$(this).attr("name",name).attr("id",name)}),clone.find("label").each(function(){var name=(name=$(this).attr("for")).replace(/\[(\d+)\]/,"["+parseInt(count)+"]");$(this).attr("for",name)}),clone.insertAfter(row),!1}),$(document.body).on("click","#edd_tax_rates .edd_remove_tax_rate",function(){return confirm(edd_vars.delete_tax_rate)&&(2===$("#edd_tax_rates tr:visible").length?($("#edd_tax_rates select").val(""),$('#edd_tax_rates input[type="text"]').val(""),$('#edd_tax_rates input[type="number"]').val(""),$('#edd_tax_rates input[type="checkbox"]').attr("checked",!1)):$(this).closest("tr").remove(),$("#edd_tax_rates tr").each(function(rowIndex){$(this).children().find("input, select").each(function(){var name=(name=$(this).attr("name")).replace(/\[(\d+)\]/,"["+(rowIndex-1)+"]");$(this).attr("name",name).attr("id",name)})})),!1})},emails:function(){$("#edd-recapture-connect").on("click",function(e){e.preventDefault(),$(this).html(edd_vars.wait+' <span class="edd-loading"></span>'),document.body.style.cursor="wait",easy_digital_downloads_recapture_remote_install()})},misc:function(){var downloadMethod=$('select[name="edd_settings[download_method]"]'),symlink=downloadMethod.parent().parent().next();"direct"==downloadMethod.val()&&(symlink.hide(),symlink.find("input").prop("checked",!1)),downloadMethod.on("change",function(){"direct"==$(this).val()?(symlink.hide(),symlink.find("input").prop("checked",!1)):symlink.show()})}}.init(),$(".download_page_edd-payment-history .row-actions .delete a, a.edd-delete-payment").on("click",function(){return!!confirm(edd_vars.delete_payment)}),$("body").on("click","#the-list .editinline",function(){var post_id=(post_id=$(this).closest("tr").attr("id")).replace("post-",""),regprice=$("#post-"+post_id).find(".column-price .downloadprice-"+post_id).val();regprice!=$("#post-"+post_id+".column-price .downloadprice-"+post_id).val()?$(".regprice","#edd-download-data").val(regprice).attr("disabled",!1):$(".regprice","#edd-download-data").val(edd_vars.quick_edit_warning).attr("disabled","disabled")}),$(document.body).on("click","#bulk_edit",function(){var $price=$("#bulk-edit"),$post_ids=new Array;$price.find("#bulk-titles").children().each(function(){$post_ids.push($(this).attr("id").replace(/^(ttle)/i,""))});$price=$('#edd-download-data input[name="_edd_regprice"]').val();$.post(ajaxurl,{action:"edd_save_bulk_edit",edd_bulk_nonce:$post_ids,post_ids:$post_ids,price:$price})}),$(".edd-select-chosen").chosen({inherit_select_classes:!0,placeholder_text_single:edd_vars.one_option,placeholder_text_multiple:edd_vars.one_or_more_option}),$(".edd-select-chosen .chosen-search input").each(function(){var placeholder=$(this).parent().parent().parent().prev("select.edd-select-chosen"),placeholder=(placeholder.data("search-type"),placeholder.data("search-placeholder"));$(this).attr("placeholder",placeholder)}),$(".chosen-choices").on("click",function(){var placeholder=$(this).parent().prev().data("search-placeholder");void 0===placeholder&&(placeholder=edd_vars.type_to_search),$(this).children("li").children("input").attr("placeholder",placeholder)});$(document.body).on("keyup",".edd-select.chosen-container .chosen-search input, .edd-select.chosen-container .search-field input",function(lastKey){var val=$(this).val(),container=$(this).closest(".edd-select-chosen"),select=(container.attr("id").replace("_chosen",""),container.prev()),no_bundles=container.hasClass("no-bundles"),variations=container.hasClass("variations"),lastKey=lastKey.which,search_type="edd_download_search";if(container.prev().data("search-type")){if("no_ajax"==select.data("search-type"))return;search_type="edd_"+select.data("search-type")+"_search"}val.length<=3&&"edd_download_search"==search_type||16==lastKey||13==lastKey||91==lastKey||17==lastKey||37==lastKey||38==lastKey||39==lastKey||40==lastKey||(clearTimeout(typingTimer),typingTimer=setTimeout(function(){$.ajax({type:"GET",url:ajaxurl,data:{action:search_type,s:val,no_bundles:no_bundles,variations:variations},dataType:"json",beforeSend:function(){select.closest("ul.chosen-results").empty()},success:function(data){$("option:not(:selected)",select).remove(),$.each(data,function(key,item){$('option[value="'+item.id+'"]',select).length||select.prepend('<option value="'+item.id+'">'+item.name+"</option>")}),$(".edd-select-chosen").trigger("chosen:updated"),select.next().find("input").val(val)}}).fail(function(response){window.console&&window.console.log&&console.log(response)}).done(function(response){})},342))}),$("#post").on("click",".edd-thickbox",function(){$(".edd-select-chosen","#choose-download").css("width","100%")}),{init:function(){this.revoke_api_key(),this.regenerate_api_key(),this.create_api_key(),this.recount_stats()},revoke_api_key:function(){$(document.body).on("click",".edd-revoke-api-key",function(e){return confirm(edd_vars.revoke_api_key)})},regenerate_api_key:function(){$(document.body).on("click",".edd-regenerate-api-key",function(e){return confirm(edd_vars.regenerate_api_key)})},create_api_key:function(){$(document.body).on("submit","#api-key-generate-form",function(e){var input=$('input[type="text"][name="user_id"]');input.css("border-color","#ddd");var user_id=input.val();if(user_id.length<1||0==user_id)return input.css("border-color","#ff0000"),!1})},recount_stats:function(){$(document.body).on("change","#recount-stats-type",function(){var export_form=$("#edd-tools-recount-form"),selected_type=$("option:selected",this).data("type"),submit_button=$("#recount-stats-submit"),products=$("#tools-product-dropdown");export_form.find(".notice-wrap").remove(),submit_button.removeClass("button-disabled").attr("disabled",!1),products.hide(),$(".edd-recount-stats-descriptions span").hide(),"recount-download"===selected_type?(products.show(),products.find(".edd-select-chosen").css("width","auto")):"reset-stats"===selected_type?(export_form.append('<div class="notice-wrap"></div>'),export_form.find(".notice-wrap").html('<div class="notice notice-warning"><p><input type="checkbox" id="confirm-reset" name="confirm_reset_store" value="1" /> <label for="confirm-reset">'+edd_vars.reset_stats_warn+"</label></p></div>"),$("#recount-stats-submit").addClass("button-disabled").attr("disabled","disabled")):(products.hide(),products.val(0)),$("#"+selected_type).show()}),$(document.body).on("change","#confirm-reset",function(){$(this).is(":checked")?$("#recount-stats-submit").removeClass("button-disabled").removeAttr("disabled"):$("#recount-stats-submit").addClass("button-disabled").attr("disabled","disabled")}),$("#edd-tools-recount-form").submit(function(e){var selection=$("#recount-stats-type").val(),export_form=$(this),selected_type=$("option:selected",this).data("type");if("reset-stats"===selected_type){if($("#confirm-reset").is(":checked"))return!0;has_errors=!0}export_form.find(".notice-wrap").remove(),export_form.append('<div class="notice-wrap"></div>');var notice_wrap=export_form.find(".notice-wrap"),has_errors=!1;if(null!==selection&&0!==selection||(notice_wrap.html('<div class="updated error"><p>'+edd_vars.batch_export_no_class+"</p></div>"),has_errors=!0),"recount-download"===selected_type&&0==$('select[name="download_id"]').val()&&(notice_wrap.html('<div class="updated error"><p>'+edd_vars.batch_export_no_reqs+"</p></div>"),has_errors=!0),has_errors)return export_form.find(".button-disabled").removeClass("button-disabled"),!1})}}.init(),{init:function(){this.submit(),this.dismiss_message()},submit:function(){var self=this;$(document.body).on("submit",".edd-export-form",function(data){data.preventDefault();var submitButton=$(this).find('input[type="submit"]');submitButton.hasClass("button-disabled")||(data=$(this).serialize(),submitButton.addClass("button-disabled"),$(this).find(".notice-wrap").remove(),$(this).append('<div class="notice-wrap"><span class="spinner is-active"></span><div class="edd-progress"><div></div></div></div>'),self.process_step(1,data,self))})},process_step:function(step,data,self){$.ajax({type:"POST",url:ajaxurl,data:{form:data,action:"edd_do_ajax_export",step:step},dataType:"json",success:function(response){var export_form,notice_wrap,success_message;"done"==response.step||response.error||response.success?(notice_wrap=(export_form=$(".edd-export-form").find(".edd-progress").parent().parent()).find(".notice-wrap"),export_form.find(".button-disabled").removeClass("button-disabled"),response.error?(success_message=response.message,notice_wrap.html('<div class="updated error"><p>'+success_message+"</p></div>")):response.success?(success_message=response.message,notice_wrap.html('<div id="edd-batch-success" class="updated notice is-dismissible"><p>'+success_message+'<span class="notice-dismiss"></span></p></div>')):(notice_wrap.remove(),window.location=response.url)):($(".edd-progress div").animate({width:response.percentage+"%"},50,function(){}),self.process_step(parseInt(response.step),data,self))}}).fail(function(response){window.console&&window.console.log&&console.log(response)})},dismiss_message:function(){$(document.body).on("click","#edd-batch-success .notice-dismiss",function(){$("#edd-batch-success").parent().slideUp("fast")})}}.init();var EDD_Import={init:function(){this.submit()},submit:function(){$(".edd-import-form").ajaxForm({beforeSubmit:this.before_submit,success:this.success,complete:this.complete,dataType:"json",error:this.error})},before_submit:function(arr,notice_wrap,options){if(notice_wrap.find(".notice-wrap").remove(),notice_wrap.append('<div class="notice-wrap"><span class="spinner is-active"></span><div class="edd-progress"><div></div></div></div>'),!(window.File&&window.FileReader&&window.FileList&&window.Blob)){var import_form=$(".edd-import-form").find(".edd-progress").parent().parent(),notice_wrap=import_form.find(".notice-wrap");return import_form.find(".button-disabled").removeClass("button-disabled"),notice_wrap.html('<div class="update error"><p>'+edd_vars.unsupported_browser+"</p></div>"),!1}},success:function(responseText,statusText,xhr,$form){},complete:function(xhr){var $form,select,options,columns,response=jQuery.parseJSON(xhr.responseText);response.success?(($form=$(".edd-import-form .notice-wrap").parent()).find(".edd-import-file-wrap,.notice-wrap").remove(),$form.find(".edd-import-options").slideDown(),(select=$form.find("select.edd-import-csv-column")).parents("tr").first(),options="",columns=response.data.columns.sort(function(a,b){return a<b?-1:b<a?1:0}),$.each(columns,function(key,value){options+='<option value="'+value+'">'+value+"</option>"}),select.append(options),select.on("change",function(){var $key=$(this).val();$key&&0!=response.data.first_row[$key]?$(this).parent().next().html(response.data.first_row[$key]):$(this).parent().next().html("")}),$.each(select,function(){$(this).val($(this).attr("data-field")).change()}),$(document.body).on("click",".edd-import-proceed",function(e){e.preventDefault(),$form.append('<div class="notice-wrap"><span class="spinner is-active"></span><div class="edd-progress"><div></div></div></div>'),response.data.mapping=$form.serialize(),EDD_Import.process_step(1,response.data,self)})):EDD_Import.error(xhr)},error:function(notice_wrap){var response=jQuery.parseJSON(notice_wrap.responseText),import_form=$(".edd-import-form").find(".edd-progress").parent().parent(),notice_wrap=import_form.find(".notice-wrap");import_form.find(".button-disabled").removeClass("button-disabled"),response.data.error?notice_wrap.html('<div class="update error"><p>'+response.data.error+"</p></div>"):notice_wrap.remove()},process_step:function(step,import_data,self){$.ajax({type:"POST",url:ajaxurl,data:{form:import_data.form,nonce:import_data.nonce,class:import_data.class,upload:import_data.upload,mapping:import_data.mapping,action:"edd_do_ajax_import",step:step},dataType:"json",success:function(response){var import_form,notice_wrap;"done"==response.data.step||response.data.error?(notice_wrap=(import_form=$(".edd-import-form").find(".edd-progress").parent().parent()).find(".notice-wrap"),import_form.find(".button-disabled").removeClass("button-disabled"),response.data.error?notice_wrap.html('<div class="update error"><p>'+response.data.error+"</p></div>"):(import_form.find(".edd-import-options").hide(),$("html, body").animate({scrollTop:import_form.parent().offset().top},500),notice_wrap.html('<div class="updated"><p>'+response.data.message+"</p></div>"))):($(".edd-progress div").animate({width:response.data.percentage+"%"},50,function(){}),EDD_Import.process_step(parseInt(response.data.step),import_data,self))}}).fail(function(response){window.console&&window.console.log&&console.log(response)})}};EDD_Import.init();var EDD_Customer={vars:{customer_card_wrap_editable:$(".edd-customer-card-wrapper .editable"),customer_card_wrap_edit_item:$(".edd-customer-card-wrapper .edit-item"),user_id:$('input[name="customerinfo[user_id]"]'),state_input:$(':input[name="customerinfo[state]"]'),note:$("#customer-note")},init:function(){this.edit_customer(),this.add_email(),this.user_search(),this.remove_user(),this.cancel_edit(),this.change_country(),this.add_note(),this.delete_checked()},edit_customer:function(){$(document.body).on("click","#edit-customer",function(e){e.preventDefault(),EDD_Customer.vars.customer_card_wrap_editable.hide(),EDD_Customer.vars.customer_card_wrap_edit_item.fadeIn().css("display","block")})},add_email:function(){$(document.body).on("click","#add-customer-email",function(nonce){nonce.preventDefault();var button=$(this),wrapper=button.parent();wrapper.parent().find(".notice-container").remove(),wrapper.find(".spinner").css("visibility","visible"),button.attr("disabled",!0);var customer_id=wrapper.find('input[name="customer-id"]').val(),email=wrapper.find('input[name="additional-email"]').val(),primary=wrapper.find('input[name="make-additional-primary"]').is(":checked"),nonce=wrapper.find('input[name="add_email_nonce"]').val();$.post(ajaxurl,{edd_action:"customer-add-email",customer_id:customer_id,email:email,primary:primary,_wpnonce:nonce},function(response){!0===response.success?window.location.href=response.redirect:(button.attr("disabled",!1),wrapper.after('<div class="notice-container"><div class="notice notice-error inline"><p>'+response.message+"</p></div></div>"),wrapper.find(".spinner").css("visibility","hidden"))},"json")})},user_search:function(){$(document.body).on("click.eddSelectUser",".edd_user_search_results a",function(user_id){user_id.preventDefault();user_id=$(this).data("userid");EDD_Customer.vars.user_id.val(user_id)})},remove_user:function(){$(document.body).on("click","#disconnect-customer",function(postData){postData.preventDefault(),confirm(edd_vars.disconnect_customer)&&(postData={edd_action:"disconnect-userid",customer_id:$('input[name="customerinfo[id]"]').val(),_wpnonce:$("#edit-customer-info #_wpnonce").val()},$.post(ajaxurl,postData,function(response){window.location.href=window.location.href},"json"))})},cancel_edit:function(){$(document.body).on("click","#edd-edit-customer-cancel",function(e){e.preventDefault(),EDD_Customer.vars.customer_card_wrap_edit_item.hide(),EDD_Customer.vars.customer_card_wrap_editable.show(),$(".edd_user_search_results").html("")})},change_country:function(){$('select[name="customerinfo[country]"]').change(function(){var $this=$(this),data={action:"edd_get_shop_states",country:$this.val(),nonce:$this.data("nonce"),field_name:"customerinfo[state]"};return $.post(ajaxurl,data,function(response){"nostates"==response?EDD_Customer.vars.state_input.replaceWith('<input type="text" name="'+data.field_name+'" value="" class="edd-edit-toggles medium-text"/>'):EDD_Customer.vars.state_input.replaceWith(response)}),!1})},add_note:function(){$(document.body).on("click","#add-customer-note",function(postData){postData.preventDefault();var border_color,postData={edd_action:"add-customer-note",customer_id:$("#customer-id").val(),customer_note:EDD_Customer.vars.note.val(),add_customer_note_nonce:$("#add_customer_note_nonce").val()};postData.customer_note?$.ajax({type:"POST",data:postData,url:ajaxurl,success:function(response){$("#edd-customer-notes").prepend(response),$(".edd-no-customer-notes").hide(),EDD_Customer.vars.note.val("")}}).fail(function(data){window.console&&window.console.log&&console.log(data)}):(border_color=EDD_Customer.vars.note.css("border-color"),EDD_Customer.vars.note.css("border-color","red"),setTimeout(function(){EDD_Customer.vars.note.css("border-color",border_color)},500))})},delete_checked:function(){$("#edd-customer-delete-confirm").change(function(){var records_input=$("#edd-customer-delete-records"),submit_button=$("#edd-delete-customer");$(this).prop("checked")?(records_input.attr("disabled",!1),submit_button.attr("disabled",!1)):(records_input.attr("disabled",!0),records_input.prop("checked",!1),submit_button.attr("disabled",!0))})}};EDD_Customer.init();var EDD_Promo_Notices={init:function(){EDD_Promo_Notices.displayNotices(),EDD_Promo_Notices.dismissNotices()},displayNotices:function(){var topOfPageNoticeEl,topOfPageNotice=$(".edd-admin-notice-top-of-page");topOfPageNotice&&(topOfPageNoticeEl=topOfPageNotice.detach(),$("#wpbody-content").prepend(topOfPageNoticeEl),topOfPageNotice.delay(1e3).slideDown())},dismissNotices:function(){$(".edd-promo-notice").each(function(){var notice=$(this);notice.on("click",".edd-promo-notice-dismiss",function(e){$(this).attr("href")||e.preventDefault(),$.ajax({type:"POST",data:{action:"edd_dismiss_promo_notice",notice_id:notice.data("id"),nonce:notice.data("nonce"),lifespan:notice.data("lifespan")},url:ajaxurl,success:function(response){notice.slideUp()}})})})}};EDD_Promo_Notices.init(),$(".edd-ajax-user-search").keyup(function(){var user_search=$(this).val(),data="";$(this).data("exclude")&&(data=$(this).data("exclude")),$(".edd-ajax").show();data={action:"edd_search_users",user_name:user_search,exclude:data};document.body.style.cursor="wait",$.ajax({type:"POST",data:data,dataType:"json",url:ajaxurl,success:function(search_response){$(".edd-ajax").hide(),$(".edd_user_search_results").removeClass("hidden"),$(".edd_user_search_results span").html(""),$(search_response.results).appendTo(".edd_user_search_results span"),document.body.style.cursor="default"}})}),$(document.body).on("click.eddSelectUser",".edd_user_search_results span a",function(login){login.preventDefault();login=$(this).data("login");$(".edd-ajax-user-search").val(login),$(".edd_user_search_results").addClass("hidden"),$(".edd_user_search_results span").html("")}),$(document.body).on("click.eddCancelUserSearch",".edd_user_search_results a.edd-ajax-user-cancel",function(e){e.preventDefault(),$(".edd-ajax-user-search").val(""),$(".edd_user_search_results").addClass("hidden"),$(".edd_user_search_results span").html("")}),$("#edd_dashboard_sales").length&&$.ajax({type:"GET",data:{action:"edd_load_dashboard_widget"},url:ajaxurl,success:function(response){$("#edd_dashboard_sales .edd-loading").html(response)}}),$(document.body).on("keydown",".customer-note-input",function(e){13==e.keyCode&&(e.metaKey||e.ctrlKey)&&$("#add-customer-note").click()})});var eddFormatCurrency=function(decimalPlaces){var numeric=parseFloat(decimalPlaces),storeCurrency=edd_vars.currency,decimalPlaces=edd_vars.currency_decimals;return numeric.toLocaleString(storeCurrency,{style:"currency",currency:storeCurrency,minimumFractionDigits:decimalPlaces,maximumFractionDigits:decimalPlaces})},eddFormatNumber=function(storeCurrency){var numeric=parseFloat(storeCurrency),storeCurrency=edd_vars.currency;edd_vars.currency_decimals;return numeric.toLocaleString(storeCurrency,{style:"decimal",minimumFractionDigits:0,maximumFractionDigits:0})},eddLabelFormatter=function(label,series){return'<div style="font-size:12px; text-align:center; padding:2px">'+label+"</div>"},eddLegendFormatterSales=function(item,series){var slug=item.toLowerCase().replace(/\s/g,"-"),color='<div class="edd-legend-color" style="background-color: '+series.color+'"></div>',item='<div class="edd-pie-legend-item">'+item+": "+Math.round(series.percent)+"% ("+eddFormatNumber(series.data[0][1])+")</div>",item='<div id="'+series.edd_vars.id+slug+'" class="edd-legend-item-wrapper">'+color+item+"</div>";return jQuery("#edd-pie-legend-"+series.edd_vars.id).append(item),item},eddLegendFormatterEarnings=function(item,series){var slug=item.toLowerCase().replace(/\s/g,"-"),color='<div class="edd-legend-color" style="background-color: '+series.color+'"></div>',item='<div class="edd-pie-legend-item">'+item+": "+Math.round(series.percent)+"% ("+eddFormatCurrency(series.data[0][1])+")</div>",item='<div id="'+series.edd_vars.id+slug+'" class="edd-legend-item-wrapper">'+color+item+"</div>";return jQuery("#edd-pie-legend-"+series.edd_vars.id).append(item),item};function edd_attach_tooltips(selector){selector.tooltip({content:function(){return jQuery(this).prop("title")},tooltipClass:"edd-ui-tooltip",position:{my:"center top",at:"center bottom+10",collision:"flipfit"},hide:{duration:200},show:{duration:200}})}function easy_digital_downloads_recapture_remote_install(){jQuery.post(ajaxurl,{action:"edd_recapture_remote_install"},function(response){0==response.success&&confirm(response.data.error)?location.reload():window.location.href="https://recapture.io/register"})}
1
+ jQuery(document).ready(function($){edd_attach_tooltips($(".edd-help-tip"));var EDD_Download_Configuration={init:function(){this.add(),this.move(),this.remove(),this.type(),this.prices(),this.files(),this.updatePrices()},clone_repeatable:function(row){var key;highest=1;return row.parent().find(".edd_repeatable_row").each(function(){var current=$(this).data("key");parseInt(current)>highest&&(highest=current)}),key=highest+=1,clone=row.clone(),clone.removeClass("edd_add_blank"),clone.attr("data-key",key),clone.find("input, select, textarea").val("").each(function(){var name=$(this).attr("name"),id=$(this).attr("id");name&&(name=name.replace(/\[(\d+)\]/,"["+parseInt(key)+"]"),$(this).attr("name",name)),$(this).attr("data-key",key),void 0!==id&&(id=id.replace(/(\d+)/,parseInt(key)),$(this).attr("id",id))}),clone.find("select").each(function(){$(this).val(row.find('select[name="'+$(this).attr("name")+'"]').val())}),clone.find('input[type="checkbox"]').each(function(){$(this).is(":checked")&&$(this).prop("checked",!1),$(this).val(1)}),clone.find("span.edd_price_id").each(function(){$(this).text(parseInt(key))}),clone.find("span.edd_file_id").each(function(){$(this).text(parseInt(key))}),clone.find(".edd_repeatable_default_input").each(function(){$(this).val(parseInt(key)).removeAttr("checked")}),clone.find(".edd_repeatable_index").each(function(){$(this).val(parseInt(key))}),clone.find(".edd_repeatable_condition_field").each(function(){$(this).find("option:eq(0)").prop("selected","selected")}),clone.find(".search-choice").remove(),clone.find(".chosen-container").remove(),edd_attach_tooltips(clone.find(".edd-help-tip")),clone},add:function(){$(document.body).on("click",".submit .edd_add_repeatable",function(clone){clone.preventDefault();var row=$(this).parent().parent().prev(".edd_repeatable_row"),clone=EDD_Download_Configuration.clone_repeatable(row);clone.insertAfter(row).find("input, textarea, select").filter(":visible").eq(0).focus(),clone.find(".edd-select-chosen").chosen({inherit_select_classes:!0,placeholder_text_single:edd_vars.one_option,placeholder_text_multiple:edd_vars.one_or_more_option}),clone.find(".edd-select-chosen").css("width","100%"),clone.find(".edd-select-chosen .chosen-search input").attr("placeholder",edd_vars.search_placeholder)})},move:function(){$(".edd_repeatable_table .edd-repeatables-wrap").sortable({handle:".edd-draghandle-anchor",items:".edd_repeatable_row",opacity:.6,cursor:"move",axis:"y",update:function(){var count=0;$(this).find(".edd_repeatable_row").each(function(){$(this).find("input.edd_repeatable_index").each(function(){$(this).val(count)}),count++})}})},remove:function(){$(document.body).on("click",".edd-remove-row, .edd_remove_repeatable",function(firstFocusable){firstFocusable.preventDefault();var row=$(this).parents(".edd_repeatable_row"),count=row.parent().find(".edd_repeatable_row").length,type=$(this).data("type"),repeatable="div.edd_repeatable_"+type+"s",price_row_id=$(this).is(".ui-sortable .edd_repeatable_row:first-child .edd-remove-row, .ui-sortable .edd_repeatable_row:first-child .edd_remove_repeatable")?row.next(".edd_repeatable_row"):row.prev(".edd_repeatable_row"),firstFocusable=price_row_id.find("select, input, textarea, button").filter(":visible").eq(0);if("price"===type&&(price_row_id=row.data("key"),$('.edd_repeatable_condition_field option[value="'+price_row_id+'"]').remove()),1<count)$("input, select",row).val(""),row.fadeOut("fast").remove(),firstFocusable.focus();else switch(type){case"price":alert(edd_vars.one_price_min);break;case"file":$("input, select",row).val("");break;default:alert(edd_vars.one_field_min)}$(repeatable).each(function(rowIndex){$(this).find("input, select").each(function(){var name=(name=$(this).attr("name")).replace(/\[(\d+)\]/,"["+rowIndex+"]");$(this).attr("name",name).attr("id",name)})})})},type:function(){$(document.body).on("change","#_edd_product_type",function(e){var edd_products=$("#edd_products"),edd_download_files=$("#edd_download_files"),edd_download_limit_wrap=$("#edd_download_limit_wrap");"bundle"===$(this).val()?(edd_products.show(),edd_download_files.hide(),edd_download_limit_wrap.hide()):(edd_products.hide(),edd_download_files.show(),edd_download_limit_wrap.show())})},prices:function(){$(document.body).on("change","#edd_variable_pricing",function(e){var checked=$(this).is(":checked"),single=$("#edd_regular_price_field"),variable=$("#edd_variable_price_fields, .edd_repeatable_table .pricing"),bundleRow=$(".edd-bundled-product-row, .edd-repeatable-row-standard-fields");checked?(single.hide(),variable.show(),bundleRow.addClass("has-variable-pricing")):(single.show(),variable.hide(),bundleRow.removeClass("has-variable-pricing"))})},files:function(){var file_frame;window.formfield="",$(document.body).on("click",".edd_upload_file_button",function(button){button.preventDefault();button=$(this);window.formfield=$(this).closest(".edd_repeatable_upload_wrapper"),file_frame||((file_frame=wp.media.frames.file_frame=wp.media({frame:"post",state:"insert",title:button.data("uploader-title"),button:{text:button.data("uploader-button-text")},multiple:"0"!=$(this).data("multiple")})).on("menu:render:default",function(view){view.unset("library-separator"),view.unset("gallery"),view.unset("featured-image"),view.unset("embed"),view.set({})}),file_frame.on("insert",function(){file_frame.state().get("selection").each(function(attachment,clone){var row,selectedSize="image"===(attachment=attachment.toJSON()).type&&$(".attachment-display-settings .size option:selected").val(),selectedURL=attachment.url,selectedName=0<attachment.title.length?attachment.title:attachment.filename;selectedSize&&void 0!==attachment.sizes[selectedSize]&&(selectedURL=attachment.sizes[selectedSize].url),"image"===attachment.type&&(selectedName=selectedSize&&void 0!==attachment.sizes[selectedSize]?selectedName+"-"+attachment.sizes[selectedSize].width+"x"+attachment.sizes[selectedSize].height:selectedName+"-"+attachment.width+"x"+attachment.height),0===clone?(window.formfield.find(".edd_repeatable_attachment_id_field").val(attachment.id),window.formfield.find(".edd_repeatable_thumbnail_size_field").val(selectedSize),window.formfield.find(".edd_repeatable_upload_field").val(selectedURL),window.formfield.find(".edd_repeatable_name_field").val(selectedName)):(row=window.formfield,(clone=EDD_Download_Configuration.clone_repeatable(row)).find(".edd_repeatable_attachment_id_field").val(attachment.id),clone.find(".edd_repeatable_thumbnail_size_field").val(selectedSize),clone.find(".edd_repeatable_upload_field").val(selectedURL),clone.find(".edd_repeatable_name_field").val(selectedName),clone.insertAfter(row))})})),file_frame.open()}),window.formfield=""},updatePrices:function(){$("#edd_price_fields").on("keyup",".edd_variable_prices_name",function(){var key=$(this).parents(".edd_repeatable_row").data("key"),name=$(this).val(),field_option=$(".edd_repeatable_condition_field option[value="+key+"]");0<field_option.length?field_option.text(name):$(".edd_repeatable_condition_field").append($("<option></option>").attr("value",key).text(name))})}};$(document.body).on("click",".toggle-custom-price-option-section",function(header){header.preventDefault();var show=$(this).html()==edd_vars.show_advanced_settings;show?$(this).html(edd_vars.hide_advanced_settings):$(this).html(edd_vars.show_advanced_settings);header=$(this).parents(".edd-repeatable-row-header");header.siblings(".edd-custom-price-option-sections-wrap").slideToggle(),$(":input:not(input[type=button],input[type=submit],button):visible:first",show?header.siblings(".edd-custom-price-option-sections-wrap"):header.siblings(".edd-repeatable-row-standard-fields")).focus()}),EDD_Download_Configuration.init();var typingTimer,edd_datepicker=$(".edd_datepicker");0<edd_datepicker.length&&edd_datepicker.datepicker({dateFormat:"mm/dd/yy"}),{init:function(){this.edit_address(),this.remove_download(),this.add_download(),this.change_customer(),this.new_customer(),this.edit_price(),this.recalculate_total(),this.variable_prices_check(),this.add_note(),this.remove_note(),this.resend_receipt(),this.copy_download_link()},edit_address:function(){$('select[name="edd-payment-address[0][country]"]').change(function(){var data=$(this),data={action:"edd_get_shop_states",country:data.val(),nonce:data.data("nonce"),field_name:"edd-payment-address[0][state]"};return $.post(ajaxurl,data,function(response){var state_wrapper=$("#edd-order-address-state-wrap select, #edd-order-address-state-wrap input");$("#edd-order-address-state-wrap .chosen-container").remove(),"nostates"==response?state_wrapper.replaceWith('<input type="text" name="edd-payment-address[0][state]" value="" class="edd-edit-toggles medium-text"/>'):state_wrapper.replaceWith(response)}),!1})},remove_download:function(){$("#edd-purchased-files").on("click",".edd-order-remove-download",function(){var key,download_id,price_id,quantity,amount,fees,currently_removed;return 1===$(document.body).find("#edd-purchased-files > .row:not(.header)").length?alert(edd_vars.one_download_min):confirm(edd_vars.delete_payment_download)&&(key=$(this).data("key"),$(".edd-payment-id").val(),download_id=$('input[name="edd-payment-details-downloads['+key+'][id]"]').val(),price_id=$('input[name="edd-payment-details-downloads['+key+'][price_id]"]').val(),quantity=$('input[name="edd-payment-details-downloads['+key+'][quantity]"]').val(),amount=$('input[name="edd-payment-details-downloads['+key+'][amount]"]').val(),$('input[name="edd-payment-details-downloads['+key+'][tax]"]').length&&(fees=$('input[name="edd-payment-details-downloads['+key+'][tax]"]').val()),$('input[name="edd-payment-details-downloads['+key+'][fees]"]').length&&(fees=$.parseJSON($('input[name="edd-payment-details-downloads['+key+'][fees]"]').val())),currently_removed=$('input[name="edd-payment-removed"]').val(),(currently_removed=(currently_removed=$.parseJSON(currently_removed)).length<1?{}:currently_removed)[key]=[{id:download_id,price_id:price_id,quantity:quantity,amount:amount,cart_index:key}],$('input[name="edd-payment-removed"]').val(JSON.stringify(currently_removed)),$(this).parent().parent().remove(),fees&&fees.length&&$.each(fees,function(key,value){$('*li[data-fee-id="'+value+'"]').remove()}),$("#edd-payment-downloads-changed").val(1),$(".edd-order-payment-recalc-totals").show()),!1})},change_customer:function(){$("#edd-customer-details").on("click",".edd-payment-change-customer, .edd-payment-change-customer-cancel",function(cancel){cancel.preventDefault();var change_customer=$(this).hasClass("edd-payment-change-customer"),cancel=$(this).hasClass("edd-payment-change-customer-cancel");change_customer?($(".customer-info").hide(),$(".change-customer").show(),$(".edd-payment-change-customer-input").css("width","auto")):cancel&&($(".customer-info").show(),$(".change-customer").hide())})},new_customer:function(){$("#edd-customer-details").on("click",".edd-payment-new-customer, .edd-payment-new-customer-cancel",function(cancel){cancel.preventDefault();var new_customer=$(this).hasClass("edd-payment-new-customer"),cancel=$(this).hasClass("edd-payment-new-customer-cancel");new_customer?($(".customer-info").hide(),$(".new-customer").show()):cancel&&($(".customer-info").show(),$(".new-customer").hide());new_customer=$("#edd-new-customer");$(".new-customer").is(":visible")?new_customer.val(1):new_customer.val(0)})},add_download:function(){$(".edd-edit-purchase-element").on("click","#edd-order-add-download",function(download_title){download_title.preventDefault();var quantity=$("#edd_order_download_select"),item_price=$("#edd-order-download-quantity"),item_total=$("#edd-order-download-price"),price_id=$("#edd-order-download-tax"),clone=$(".edd_price_options_select option:selected"),download_id=quantity.val(),download_title=quantity.find(":selected").text(),quantity=item_price.val(),item_price=item_total.val(),item_total=price_id.val(),price_id=clone.val(),clone=clone.text();if(download_id<1)return!1;if(item_price=item_price||0,item_price=parseFloat(item_price),isNaN(item_price))return alert(edd_vars.numeric_item_price),!1;if(item_total=parseFloat(item_total),isNaN(item_total))return alert(edd_vars.numeric_item_tax),!1;if(isNaN(parseInt(quantity)))return alert(edd_vars.numeric_quantity),!1;clone&&(download_title=download_title+" - "+clone);var count=$("#edd-purchased-files div.row:not(.edd-purchased-files-header)").length;0==count&&alert(edd_vars.no_downloads_error);clone=$("#edd-purchased-files div.row:not(.edd-purchased-files-header):last").clone();clone.find(".download span").html('<a href="post.php?post='+download_id+'&action=edit"></a>'),clone.find(".download span a").text(download_title),clone.find(".edd-payment-details-download-item-price").val(item_price.toFixed(edd_vars.currency_decimals)),clone.find(".edd-payment-details-download-item-tax").val(item_total.toFixed(edd_vars.currency_decimals)),clone.find("input.edd-payment-details-download-id").val(download_id),clone.find("input.edd-payment-details-download-price-id").val(price_id);item_total=(item_total=item_price*quantity+item_total).toFixed(edd_vars.currency_decimals);clone.find("span.edd-payment-details-download-amount").text(item_total),clone.find("input.edd-payment-details-download-amount").val(item_total),clone.find("input.edd-payment-details-download-quantity").val(quantity),clone.find("input.edd-payment-details-download-has-log").val(0),clone.find(".edd-copy-download-link-wrapper").remove(),clone.find("input").each(function(){var name=(name=$(this).attr("name")).replace(/\[(\d+)\]/,"["+parseInt(count)+"]");$(this).attr("name",name).attr("id",name)}),clone.find("a.edd-order-remove-download").attr("data-key",parseInt(count)),$("#edd-payment-downloads-changed").val(1),$("#edd-purchased-files div.row .edd-purchased-download-title .deleted").length&&$("#edd-purchased-files div.row:last").remove(),$(clone).insertAfter("#edd-purchased-files div.row:last"),$(".edd-order-payment-recalc-totals").show(),$(".edd-add-download-field").val("")})},edit_price:function(){$(document.body).on("change keyup",".edd-payment-item-input",function(){var row=$(this).parents("ul.edd-purchased-files-list-wrapper");$(".edd-order-payment-recalc-totals").show();var quantity=row.find("input.edd-payment-details-download-quantity").val().replace(edd_vars.thousands_separator,""),item_price=row.find("input.edd-payment-details-download-item-price").val().replace(edd_vars.thousands_separator,""),item_total=row.find("input.edd-payment-details-download-item-tax").val().replace(edd_vars.thousands_separator,""),item_price=parseFloat(item_price);if(isNaN(item_price))return alert(edd_vars.numeric_item_price),!1;item_total=parseFloat(item_total),isNaN(item_total)&&(item_total=0);item_total=(item_total=item_price*(quantity=isNaN(parseInt(quantity))?1:quantity)+item_total).toFixed(edd_vars.currency_decimals);row.find("input.edd-payment-details-download-amount").val(item_total),row.find("span.edd-payment-details-download-amount").text(item_total)})},recalculate_total:function(){$("#edd-order-recalc-total").on("click",function(taxes){taxes.preventDefault();var total=0,tax=0,totals=$("#edd-purchased-files .row input.edd-payment-details-download-amount"),taxes=$("#edd-purchased-files .row input.edd-payment-details-download-item-tax");totals.length&&totals.each(function(){total+=parseFloat($(this).val())}),taxes.length&&taxes.each(function(){tax+=parseFloat($(this).val())}),$(".edd-payment-fees").length&&$(".edd-payment-fees span.fee-amount").each(function(){total+=parseFloat($(this).data("fee"))}),$("input[name=edd-payment-total]").val(total.toFixed(edd_vars.currency_decimals)),$("input[name=edd-payment-tax]").val(tax.toFixed(edd_vars.currency_decimals))})},variable_prices_check:function(){$(".edd-edit-purchase-element").on("change","select#edd_order_download_select",function(){var $this=$(this),download_id=$this.val();0<parseInt(download_id)&&$.ajax({type:"POST",data:{action:"edd_check_for_download_price_variations",download_id:download_id},url:ajaxurl,success:function(response){$(".edd_price_options_select").remove(),$(response).insertAfter($this.next())}}).fail(function(data){window.console&&window.console.log&&console.log(data)})})},add_note:function(){$("#edd-add-payment-note").on("click",function(postData){postData.preventDefault();var border_color,postData={action:"edd_insert_payment_note",payment_id:$(this).data("payment-id"),note:$("#edd-payment-note").val()};postData.note?$.ajax({type:"POST",data:postData,url:ajaxurl,success:function(response){$("#edd-payment-notes-inner").append(response),$(".edd-no-payment-notes").hide(),$("#edd-payment-note").val("")}}).fail(function(data){window.console&&window.console.log&&console.log(data)}):(border_color=$("#edd-payment-note").css("border-color"),$("#edd-payment-note").css("border-color","red"),setTimeout(function(){$("#edd-payment-note").css("border-color",border_color)},500))})},remove_note:function(){$(document.body).on("click",".edd-delete-payment-note",function(e){if(e.preventDefault(),confirm(edd_vars.delete_payment_note)){var postData={action:"edd_delete_payment_note",payment_id:$(this).data("payment-id"),note_id:$(this).data("note-id")};return $.ajax({type:"POST",data:postData,url:ajaxurl,success:function(response){return $("#edd-payment-note-"+postData.note_id).remove(),$(".edd-payment-note").length||$(".edd-no-payment-notes").show(),!1}}).fail(function(data){window.console&&window.console.log&&console.log(data)}),!0}})},resend_receipt:function(){var emails_wrap=$(".edd-order-resend-receipt-addresses");$(document.body).on("click","#edd-select-receipt-email",function(e){e.preventDefault(),emails_wrap.slideDown()}),$(document.body).on("change",".edd-order-resend-receipt-email",function(){var href=$("#edd-select-receipt-email").prop("href")+"&email="+$(this).val();confirm(edd_vars.resend_receipt)&&(window.location=href)}),$(document.body).on("click","#edd-resend-receipt",function(e){return confirm(edd_vars.resend_receipt)})},copy_download_link:function(){$(document.body).on("click",".edd-copy-download-link",function(postData){postData.preventDefault();postData=$(this),postData={action:"edd_get_file_download_link",payment_id:$('input[name="edd_payment_id"]').val(),download_id:postData.data("download-id"),price_id:postData.data("price-id")};$.ajax({type:"POST",data:postData,url:ajaxurl,success:function(link){return $("#edd-download-link").dialog({width:400}).html('<textarea rows="10" cols="40" id="edd-download-link-textarea">'+link+"</textarea>"),$("#edd-download-link-textarea").focus().select(),!1}}).fail(function(data){window.console&&window.console.log&&console.log(data)})})}}.init(),{init:function(){this.type_select(),this.product_requirements()},type_select:function(){$("#edd-edit-discount #edd-type, #edd-add-discount #edd-type").change(function(){var val=$(this).val();$(".edd-amount-description").hide(),$(".edd-amount-description."+val+"-discount").show()})},product_requirements:function(){$("#products").change(function(){var product_conditions=$("#edd-discount-product-conditions");$(this).val()?product_conditions.show():product_conditions.hide()})}}.init(),{init:function(){this.date_options(),this.customers_export()},date_options:function(){$("#edd-graphs-date-options").change(function(){var $this=$(this),date_range_options=$("#edd-date-range-options");"other"===$this.val()?date_range_options.show():date_range_options.hide()})},customers_export:function(){$("#edd_customer_export_download").change(function(){var price_options_select,$this=$(this),data=$("option:selected",$this).val(),customer_export_option=$("#edd_customer_export_option");"0"===$this.val()?customer_export_option.show():customer_export_option.hide(),0!=parseInt(data)?(data={action:"edd_check_for_download_price_variations",download_id:data,all_prices:!0},price_options_select=$(".edd_price_options_select"),$.post(ajaxurl,data,function(response){price_options_select.remove(),$("#edd_customer_export_download_chosen").after(response)})):price_options_select.remove()})}}.init(),{init:function(){this.general(),this.taxes(),this.emails(),this.misc()},general:function(){var file_frame,edd_settings_upload_button=$(".edd-color-picker");edd_settings_upload_button.length&&edd_settings_upload_button.wpColorPicker(),"undefined"==typeof wp||"1"!==edd_vars.new_media_ui?0<(edd_settings_upload_button=$(".edd_settings_upload_button")).length&&(window.formfield="",$(document.body).on("click",edd_settings_upload_button,function(e){e.preventDefault(),window.formfield=$(this).parent().prev(),window.tbframe_interval=setInterval(function(){jQuery("#TB_iframeContent").contents().find(".savesend .button").val(edd_vars.use_this_file).end().find("#insert-gallery, .wp-post-thumbnail").hide()},2e3),tb_show(edd_vars.add_new_download,"media-upload.php?TB_iframe=true")}),window.edd_send_to_editor=window.send_to_editor,window.send_to_editor=function(html){window.formfield?(imgurl=$("a","<div>"+html+"</div>").attr("href"),window.formfield.val(imgurl),window.clearInterval(window.tbframe_interval),tb_remove()):window.edd_send_to_editor(html),window.send_to_editor=window.edd_send_to_editor,window.formfield="",window.imagefield=!1}):(window.formfield="",$(document.body).on("click",".edd_settings_upload_button",function(button){button.preventDefault();button=$(this);window.formfield=$(this).parent().prev(),file_frame||((file_frame=wp.media.frames.file_frame=wp.media({frame:"post",state:"insert",title:button.data("uploader_title"),button:{text:button.data("uploader_button_text")},multiple:!1})).on("menu:render:default",function(view){view.unset("library-separator"),view.unset("gallery"),view.unset("featured-image"),view.unset("embed"),view.set({})}),file_frame.on("insert",function(){file_frame.state().get("selection").each(function(attachment,index){attachment=attachment.toJSON(),window.formfield.val(attachment.url)})})),file_frame.open()}),window.formfield="")},taxes:function(){var no_states=$("select.edd-no-states");no_states.length&&no_states.closest("tr").addClass("hidden"),$('select[name="edd_settings[base_country]"]').change(function(){var data=$(this),$tr=data.closest("tr"),data={action:"edd_get_shop_states",country:data.val(),nonce:data.data("nonce"),field_name:"edd_settings[base_state]"};return $.post(ajaxurl,data,function(response){"nostates"==response?$tr.next().addClass("hidden"):($tr.next().removeClass("hidden"),$tr.next().find("select").replaceWith(response))}),!1}),$(document.body).on("change","#edd_tax_rates select.edd-tax-country",function(){var $this=$(this),data={action:"edd_get_shop_states",country:$this.val(),nonce:$this.data("nonce"),field_name:$this.attr("name").replace("country","state")};return $.post(ajaxurl,data,function(response){var text_field;"nostates"==response?(text_field='<input type="text" name="'+data.field_name+'" value=""/>',$this.parent().next().find("select").replaceWith(text_field)):($this.parent().next().find("input,select").show(),$this.parent().next().find("input,select").replaceWith(response))}),!1}),$("#edd_add_tax_rate").on("click",function(){var row=$("#edd_tax_rates tr:last"),clone=row.clone(),count=row.parent().find("tr").length;return clone.find("td input").not(":input[type=checkbox]").val(""),clone.find('td [type="checkbox"]').attr("checked",!1),clone.find("input, select").each(function(){var name=(name=$(this).attr("name")).replace(/\[(\d+)\]/,"["+parseInt(count)+"]");$(this).attr("name",name).attr("id",name)}),clone.find("label").each(function(){var name=(name=$(this).attr("for")).replace(/\[(\d+)\]/,"["+parseInt(count)+"]");$(this).attr("for",name)}),clone.insertAfter(row),!1}),$(document.body).on("click","#edd_tax_rates .edd_remove_tax_rate",function(){return confirm(edd_vars.delete_tax_rate)&&(2===$("#edd_tax_rates tr:visible").length?($("#edd_tax_rates select").val(""),$('#edd_tax_rates input[type="text"]').val(""),$('#edd_tax_rates input[type="number"]').val(""),$('#edd_tax_rates input[type="checkbox"]').attr("checked",!1)):$(this).closest("tr").remove(),$("#edd_tax_rates tr").each(function(rowIndex){$(this).children().find("input, select").each(function(){var name=(name=$(this).attr("name")).replace(/\[(\d+)\]/,"["+(rowIndex-1)+"]");$(this).attr("name",name).attr("id",name)})})),!1})},emails:function(){$("#edd-recapture-connect").on("click",function(e){e.preventDefault(),$(this).html(edd_vars.wait+' <span class="edd-loading"></span>'),document.body.style.cursor="wait",easy_digital_downloads_recapture_remote_install()})},misc:function(){var downloadMethod=$('select[name="edd_settings[download_method]"]'),symlink=downloadMethod.parent().parent().next();"direct"==downloadMethod.val()&&(symlink.hide(),symlink.find("input").prop("checked",!1)),downloadMethod.on("change",function(){"direct"==$(this).val()?(symlink.hide(),symlink.find("input").prop("checked",!1)):symlink.show()})}}.init(),$(".download_page_edd-payment-history .row-actions .delete a, a.edd-delete-payment").on("click",function(){return!!confirm(edd_vars.delete_payment)}),$("body").on("click","#the-list .editinline",function(){var post_id=(post_id=$(this).closest("tr").attr("id")).replace("post-",""),regprice=$("#post-"+post_id).find(".column-price .downloadprice-"+post_id).val();regprice!=$("#post-"+post_id+".column-price .downloadprice-"+post_id).val()?$(".regprice","#edd-download-data").val(regprice).attr("disabled",!1):$(".regprice","#edd-download-data").val(edd_vars.quick_edit_warning).attr("disabled","disabled")}),$(document.body).on("click","#bulk_edit",function(){var $price=$("#bulk-edit"),$post_ids=new Array;$price.find("#bulk-titles").children().each(function(){$post_ids.push($(this).attr("id").replace(/^(ttle)/i,""))});$price=$('#edd-download-data input[name="_edd_regprice"]').val();$.post(ajaxurl,{action:"edd_save_bulk_edit",edd_bulk_nonce:$post_ids,post_ids:$post_ids,price:$price})}),$(".edd-select-chosen").chosen({inherit_select_classes:!0,placeholder_text_single:edd_vars.one_option,placeholder_text_multiple:edd_vars.one_or_more_option}),$(".edd-select-chosen .chosen-search input").each(function(){var placeholder=$(this).parent().parent().parent().prev("select.edd-select-chosen"),placeholder=(placeholder.data("search-type"),placeholder.data("search-placeholder"));$(this).attr("placeholder",placeholder)}),$(".chosen-choices").on("click",function(){var placeholder=$(this).parent().prev().data("search-placeholder");void 0===placeholder&&(placeholder=edd_vars.type_to_search),$(this).children("li").children("input").attr("placeholder",placeholder)});$(document.body).on("keyup",".edd-select.chosen-container .chosen-search input, .edd-select.chosen-container .search-field input",function(lastKey){var val=$(this).val(),container=$(this).closest(".edd-select-chosen"),select=(container.attr("id").replace("_chosen",""),container.prev()),no_bundles=container.hasClass("no-bundles"),variations=container.hasClass("variations"),lastKey=lastKey.which,search_type="edd_download_search";if(container.prev().data("search-type")){if("no_ajax"==select.data("search-type"))return;search_type="edd_"+select.data("search-type")+"_search"}val.length<=3&&"edd_download_search"==search_type||16==lastKey||13==lastKey||91==lastKey||17==lastKey||37==lastKey||38==lastKey||39==lastKey||40==lastKey||(clearTimeout(typingTimer),typingTimer=setTimeout(function(){$.ajax({type:"GET",url:ajaxurl,data:{action:search_type,s:val,no_bundles:no_bundles,variations:variations},dataType:"json",beforeSend:function(){select.closest("ul.chosen-results").empty()},success:function(data){$("option:not(:selected)",select).remove(),$.each(data,function(key,item){$('option[value="'+item.id+'"]',select).length||select.prepend('<option value="'+item.id+'">'+item.name+"</option>")}),$(".edd-select-chosen").trigger("chosen:updated"),select.next().find("input").val(val)}}).fail(function(response){window.console&&window.console.log&&console.log(response)}).done(function(response){})},342))}),$("#post").on("click",".edd-thickbox",function(){$(".edd-select-chosen","#choose-download").css("width","100%")}),{init:function(){this.revoke_api_key(),this.regenerate_api_key(),this.create_api_key(),this.recount_stats()},revoke_api_key:function(){$(document.body).on("click",".edd-revoke-api-key",function(e){return confirm(edd_vars.revoke_api_key)})},regenerate_api_key:function(){$(document.body).on("click",".edd-regenerate-api-key",function(e){return confirm(edd_vars.regenerate_api_key)})},create_api_key:function(){$(document.body).on("submit","#api-key-generate-form",function(e){var input=$('input[type="text"][name="user_id"]');input.css("border-color","#ddd");var user_id=input.val();if(user_id.length<1||0==user_id)return input.css("border-color","#ff0000"),!1})},recount_stats:function(){$(document.body).on("change","#recount-stats-type",function(){var export_form=$("#edd-tools-recount-form"),selected_type=$("option:selected",this).data("type"),submit_button=$("#recount-stats-submit"),products=$("#tools-product-dropdown");export_form.find(".notice-wrap").remove(),submit_button.removeClass("button-disabled").attr("disabled",!1),products.hide(),$(".edd-recount-stats-descriptions span").hide(),"recount-download"===selected_type?(products.show(),products.find(".edd-select-chosen").css("width","auto")):"reset-stats"===selected_type?(export_form.append('<div class="notice-wrap"></div>'),export_form.find(".notice-wrap").html('<div class="notice notice-warning"><p><input type="checkbox" id="confirm-reset" name="confirm_reset_store" value="1" /> <label for="confirm-reset">'+edd_vars.reset_stats_warn+"</label></p></div>"),$("#recount-stats-submit").addClass("button-disabled").attr("disabled","disabled")):(products.hide(),products.val(0)),$("#"+selected_type).show()}),$(document.body).on("change","#confirm-reset",function(){$(this).is(":checked")?$("#recount-stats-submit").removeClass("button-disabled").removeAttr("disabled"):$("#recount-stats-submit").addClass("button-disabled").attr("disabled","disabled")}),$("#edd-tools-recount-form").submit(function(e){var selection=$("#recount-stats-type").val(),export_form=$(this),selected_type=$("option:selected",this).data("type");if("reset-stats"===selected_type){if($("#confirm-reset").is(":checked"))return!0;has_errors=!0}export_form.find(".notice-wrap").remove(),export_form.append('<div class="notice-wrap"></div>');var notice_wrap=export_form.find(".notice-wrap"),has_errors=!1;if(null!==selection&&0!==selection||(notice_wrap.html('<div class="updated error"><p>'+edd_vars.batch_export_no_class+"</p></div>"),has_errors=!0),"recount-download"===selected_type&&0==$('select[name="download_id"]').val()&&(notice_wrap.html('<div class="updated error"><p>'+edd_vars.batch_export_no_reqs+"</p></div>"),has_errors=!0),has_errors)return export_form.find(".button-disabled").removeClass("button-disabled"),!1})}}.init(),{init:function(){this.submit(),this.dismiss_message()},submit:function(){var self=this;$(document.body).on("submit",".edd-export-form",function(data){data.preventDefault();var submitButton=$(this).find('input[type="submit"]');submitButton.hasClass("button-disabled")||(data=$(this).serialize(),submitButton.addClass("button-disabled"),$(this).find(".notice-wrap").remove(),$(this).append('<div class="notice-wrap"><span class="spinner is-active"></span><div class="edd-progress"><div></div></div></div>'),self.process_step(1,data,self))})},process_step:function(step,data,self){$.ajax({type:"POST",url:ajaxurl,data:{form:data,action:"edd_do_ajax_export",step:step},dataType:"json",success:function(response){var export_form,notice_wrap,success_message;"done"==response.step||response.error||response.success?(notice_wrap=(export_form=$(".edd-export-form").find(".edd-progress").parent().parent()).find(".notice-wrap"),export_form.find(".button-disabled").removeClass("button-disabled"),response.error?(success_message=response.message,notice_wrap.html('<div class="updated error"><p>'+success_message+"</p></div>")):response.success?(success_message=response.message,notice_wrap.html('<div id="edd-batch-success" class="updated notice is-dismissible"><p>'+success_message+'<span class="notice-dismiss"></span></p></div>')):(notice_wrap.remove(),window.location=response.url)):($(".edd-progress div").animate({width:response.percentage+"%"},50,function(){}),self.process_step(parseInt(response.step),data,self))}}).fail(function(response){window.console&&window.console.log&&console.log(response)})},dismiss_message:function(){$(document.body).on("click","#edd-batch-success .notice-dismiss",function(){$("#edd-batch-success").parent().slideUp("fast")})}}.init();var EDD_Import={init:function(){this.submit()},submit:function(){$(".edd-import-form").ajaxForm({beforeSubmit:this.before_submit,success:this.success,complete:this.complete,dataType:"json",error:this.error})},before_submit:function(arr,notice_wrap,options){if(notice_wrap.find(".notice-wrap").remove(),notice_wrap.append('<div class="notice-wrap"><span class="spinner is-active"></span><div class="edd-progress"><div></div></div></div>'),!(window.File&&window.FileReader&&window.FileList&&window.Blob)){var import_form=$(".edd-import-form").find(".edd-progress").parent().parent(),notice_wrap=import_form.find(".notice-wrap");return import_form.find(".button-disabled").removeClass("button-disabled"),notice_wrap.html('<div class="update error"><p>'+edd_vars.unsupported_browser+"</p></div>"),!1}},success:function(responseText,statusText,xhr,$form){},complete:function(xhr){var $form,select,options,columns,response=jQuery.parseJSON(xhr.responseText);response.success?(($form=$(".edd-import-form .notice-wrap").parent()).find(".edd-import-file-wrap,.notice-wrap").remove(),$form.find(".edd-import-options").slideDown(),(select=$form.find("select.edd-import-csv-column")).parents("tr").first(),options="",columns=response.data.columns.sort(function(a,b){return a<b?-1:b<a?1:0}),$.each(columns,function(key,value){options+='<option value="'+value+'">'+value+"</option>"}),select.append(options),select.on("change",function(){var $key=$(this).val();$key&&0!=response.data.first_row[$key]?$(this).parent().next().html(response.data.first_row[$key]):$(this).parent().next().html("")}),$.each(select,function(){$(this).val($(this).attr("data-field")).change()}),$(document.body).on("click",".edd-import-proceed",function(e){e.preventDefault(),$form.append('<div class="notice-wrap"><span class="spinner is-active"></span><div class="edd-progress"><div></div></div></div>'),response.data.mapping=$form.serialize(),EDD_Import.process_step(1,response.data,self)})):EDD_Import.error(xhr)},error:function(notice_wrap){var response=jQuery.parseJSON(notice_wrap.responseText),import_form=$(".edd-import-form").find(".edd-progress").parent().parent(),notice_wrap=import_form.find(".notice-wrap");import_form.find(".button-disabled").removeClass("button-disabled"),response.data.error?notice_wrap.html('<div class="update error"><p>'+response.data.error+"</p></div>"):notice_wrap.remove()},process_step:function(step,import_data,self){$.ajax({type:"POST",url:ajaxurl,data:{form:import_data.form,nonce:import_data.nonce,class:import_data.class,upload:import_data.upload,mapping:import_data.mapping,action:"edd_do_ajax_import",step:step},dataType:"json",success:function(response){var import_form,notice_wrap;"done"==response.data.step||response.data.error?(notice_wrap=(import_form=$(".edd-import-form").find(".edd-progress").parent().parent()).find(".notice-wrap"),import_form.find(".button-disabled").removeClass("button-disabled"),response.data.error?notice_wrap.html('<div class="update error"><p>'+response.data.error+"</p></div>"):(import_form.find(".edd-import-options").hide(),$("html, body").animate({scrollTop:import_form.parent().offset().top},500),notice_wrap.html('<div class="updated"><p>'+response.data.message+"</p></div>"))):($(".edd-progress div").animate({width:response.data.percentage+"%"},50,function(){}),EDD_Import.process_step(parseInt(response.data.step),import_data,self))}}).fail(function(response){window.console&&window.console.log&&console.log(response)})}};EDD_Import.init();var EDD_Customer={vars:{customer_card_wrap_editable:$(".edd-customer-card-wrapper .editable"),customer_card_wrap_edit_item:$(".edd-customer-card-wrapper .edit-item"),user_id:$('input[name="customerinfo[user_id]"]'),state_input:$(':input[name="customerinfo[state]"]'),note:$("#customer-note")},init:function(){this.edit_customer(),this.add_email(),this.user_search(),this.remove_user(),this.cancel_edit(),this.change_country(),this.add_note(),this.delete_checked()},edit_customer:function(){$(document.body).on("click","#edit-customer",function(e){e.preventDefault(),EDD_Customer.vars.customer_card_wrap_editable.hide(),EDD_Customer.vars.customer_card_wrap_edit_item.fadeIn().css("display","block")})},add_email:function(){$(document.body).on("click","#add-customer-email",function(nonce){nonce.preventDefault();var button=$(this),wrapper=button.parent();wrapper.parent().find(".notice-container").remove(),wrapper.find(".spinner").css("visibility","visible"),button.attr("disabled",!0);var customer_id=wrapper.find('input[name="customer-id"]').val(),email=wrapper.find('input[name="additional-email"]').val(),primary=wrapper.find('input[name="make-additional-primary"]').is(":checked"),nonce=wrapper.find('input[name="add_email_nonce"]').val();$.post(ajaxurl,{edd_action:"customer-add-email",customer_id:customer_id,email:email,primary:primary,_wpnonce:nonce},function(response){!0===response.success?window.location.href=response.redirect:(button.attr("disabled",!1),wrapper.after('<div class="notice-container"><div class="notice notice-error inline"><p>'+response.message+"</p></div></div>"),wrapper.find(".spinner").css("visibility","hidden"))},"json")})},user_search:function(){$(document.body).on("click.eddSelectUser",".edd_user_search_results a",function(user_id){user_id.preventDefault();user_id=$(this).data("userid");EDD_Customer.vars.user_id.val(user_id)})},remove_user:function(){$(document.body).on("click","#disconnect-customer",function(postData){postData.preventDefault(),confirm(edd_vars.disconnect_customer)&&(postData={edd_action:"disconnect-userid",customer_id:$('input[name="customerinfo[id]"]').val(),_wpnonce:$("#edit-customer-info #_wpnonce").val()},$.post(ajaxurl,postData,function(response){window.location.href=window.location.href},"json"))})},cancel_edit:function(){$(document.body).on("click","#edd-edit-customer-cancel",function(e){e.preventDefault(),EDD_Customer.vars.customer_card_wrap_edit_item.hide(),EDD_Customer.vars.customer_card_wrap_editable.show(),$(".edd_user_search_results").html("")})},change_country:function(){$('select[name="customerinfo[country]"]').change(function(){var $this=$(this),data={action:"edd_get_shop_states",country:$this.val(),nonce:$this.data("nonce"),field_name:"customerinfo[state]"};return $.post(ajaxurl,data,function(response){"nostates"==response?EDD_Customer.vars.state_input.replaceWith('<input type="text" name="'+data.field_name+'" value="" class="edd-edit-toggles medium-text"/>'):EDD_Customer.vars.state_input.replaceWith(response)}),!1})},add_note:function(){$(document.body).on("click","#add-customer-note",function(postData){postData.preventDefault();var border_color,postData={edd_action:"add-customer-note",customer_id:$("#customer-id").val(),customer_note:EDD_Customer.vars.note.val(),add_customer_note_nonce:$("#add_customer_note_nonce").val()};postData.customer_note?$.ajax({type:"POST",data:postData,url:ajaxurl,success:function(response){$("#edd-customer-notes").prepend(response),$(".edd-no-customer-notes").hide(),EDD_Customer.vars.note.val("")}}).fail(function(data){window.console&&window.console.log&&console.log(data)}):(border_color=EDD_Customer.vars.note.css("border-color"),EDD_Customer.vars.note.css("border-color","red"),setTimeout(function(){EDD_Customer.vars.note.css("border-color",border_color)},500))})},delete_checked:function(){$("#edd-customer-delete-confirm").change(function(){var records_input=$("#edd-customer-delete-records"),submit_button=$("#edd-delete-customer");$(this).prop("checked")?(records_input.attr("disabled",!1),submit_button.attr("disabled",!1)):(records_input.attr("disabled",!0),records_input.prop("checked",!1),submit_button.attr("disabled",!0))})}};EDD_Customer.init();var EDD_Promo_Notices={init:function(){EDD_Promo_Notices.displayNotices(),EDD_Promo_Notices.dismissNotices()},displayNotices:function(){var topOfPageNoticeEl,topOfPageNotice=$(".edd-admin-notice-top-of-page");topOfPageNotice&&(topOfPageNoticeEl=topOfPageNotice.detach(),$("#wpbody-content").prepend(topOfPageNoticeEl),topOfPageNotice.delay(1e3).slideDown())},dismissNotices:function(){$(".edd-promo-notice").each(function(){var notice=$(this);notice.on("click",".edd-promo-notice-dismiss",function(e){$(this).attr("href")||e.preventDefault(),$.ajax({type:"POST",data:{action:"edd_dismiss_promo_notice",notice_id:notice.data("id"),nonce:notice.data("nonce"),lifespan:notice.data("lifespan")},url:ajaxurl,success:function(response){notice.slideUp()}})})})}};EDD_Promo_Notices.init(),$(".edd-ajax-user-search").keyup(function(){var user_search=$(this).val(),data="";$(this).data("exclude")&&(data=$(this).data("exclude")),$(".edd-ajax").show();data={action:"edd_search_users",user_name:user_search,exclude:data};document.body.style.cursor="wait",$.ajax({type:"POST",data:data,dataType:"json",url:ajaxurl,success:function(search_response){$(".edd-ajax").hide(),$(".edd_user_search_results").removeClass("hidden"),$(".edd_user_search_results span").html(""),$(search_response.results).appendTo(".edd_user_search_results span"),document.body.style.cursor="default"}})}),$(document.body).on("click.eddSelectUser",".edd_user_search_results span a",function(login){login.preventDefault();login=$(this).data("login");$(".edd-ajax-user-search").val(login),$(".edd_user_search_results").addClass("hidden"),$(".edd_user_search_results span").html("")}),$(document.body).on("click.eddCancelUserSearch",".edd_user_search_results a.edd-ajax-user-cancel",function(e){e.preventDefault(),$(".edd-ajax-user-search").val(""),$(".edd_user_search_results").addClass("hidden"),$(".edd_user_search_results span").html("")}),$("#edd_dashboard_sales").length&&$.ajax({type:"GET",data:{action:"edd_load_dashboard_widget"},url:ajaxurl,success:function(response){$("#edd_dashboard_sales .edd-loading").html(response)}}),$(document.body).on("keydown",".customer-note-input",function(e){13==e.keyCode&&(e.metaKey||e.ctrlKey)&&$("#add-customer-note").click()}),$(document.body).on("click","#edd-disable-debug-log",function(e){e.preventDefault(),$(this).attr("disabled",!0);var notice=$("#edd-debug-log-notice");$.ajax({type:"GET",data:{action:"edd_disable_debugging",nonce:$("#edd_debug_log_delete").val()},url:ajaxurl,success:function(response){notice.empty().append(response.data),setTimeout(function(){notice.slideUp()},3e3)}}).fail(function(response){notice.empty().append(response.responseJSON.data)})})});var eddFormatCurrency=function(decimalPlaces){var numeric=parseFloat(decimalPlaces),storeCurrency=edd_vars.currency,decimalPlaces=edd_vars.currency_decimals;return numeric.toLocaleString(storeCurrency,{style:"currency",currency:storeCurrency,minimumFractionDigits:decimalPlaces,maximumFractionDigits:decimalPlaces})},eddFormatNumber=function(storeCurrency){var numeric=parseFloat(storeCurrency),storeCurrency=edd_vars.currency;edd_vars.currency_decimals;return numeric.toLocaleString(storeCurrency,{style:"decimal",minimumFractionDigits:0,maximumFractionDigits:0})},eddLabelFormatter=function(label,series){return'<div style="font-size:12px; text-align:center; padding:2px">'+label+"</div>"},eddLegendFormatterSales=function(item,series){var slug=item.toLowerCase().replace(/\s/g,"-"),color='<div class="edd-legend-color" style="background-color: '+series.color+'"></div>',item='<div class="edd-pie-legend-item">'+item+": "+Math.round(series.percent)+"% ("+eddFormatNumber(series.data[0][1])+")</div>",item='<div id="'+series.edd_vars.id+slug+'" class="edd-legend-item-wrapper">'+color+item+"</div>";return jQuery("#edd-pie-legend-"+series.edd_vars.id).append(item),item},eddLegendFormatterEarnings=function(item,series){var slug=item.toLowerCase().replace(/\s/g,"-"),color='<div class="edd-legend-color" style="background-color: '+series.color+'"></div>',item='<div class="edd-pie-legend-item">'+item+": "+Math.round(series.percent)+"% ("+eddFormatCurrency(series.data[0][1])+")</div>",item='<div id="'+series.edd_vars.id+slug+'" class="edd-legend-item-wrapper">'+color+item+"</div>";return jQuery("#edd-pie-legend-"+series.edd_vars.id).append(item),item};function edd_attach_tooltips(selector){selector.tooltip({content:function(){return jQuery(this).prop("title")},tooltipClass:"edd-ui-tooltip",position:{my:"center top",at:"center bottom+10",collision:"flipfit"},hide:{duration:200},show:{duration:200}})}function easy_digital_downloads_recapture_remote_install(){jQuery.post(ajaxurl,{action:"edd_recapture_remote_install"},function(response){0==response.success&&confirm(response.data.error)?location.reload():window.location.href="https://recapture.io/register"})}
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.11.4.1
9
  * Text Domain: easy-digital-downloads
10
  * Domain Path: languages
11
  *
@@ -25,7 +25,7 @@
25
  * @package EDD
26
  * @category Core
27
  * @author Easy Digital Downloads
28
- * @version 2.11.4.1
29
  */
30
 
31
  // Exit if accessed directly.
@@ -231,7 +231,7 @@ final class Easy_Digital_Downloads {
231
 
232
  // Plugin version.
233
  if ( ! defined( 'EDD_VERSION' ) ) {
234
- define( 'EDD_VERSION', '2.11.4.1' );
235
  }
236
 
237
  // 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.11.5
9
  * Text Domain: easy-digital-downloads
10
  * Domain Path: languages
11
  *
25
  * @package EDD
26
  * @category Core
27
  * @author Easy Digital Downloads
28
+ * @version 2.11.5
29
  */
30
 
31
  // Exit if accessed directly.
231
 
232
  // Plugin version.
233
  if ( ! defined( 'EDD_VERSION' ) ) {
234
+ define( 'EDD_VERSION', '2.11.5' );
235
  }
236
 
237
  // Plugin Folder Path.
includes/admin/class-edd-notices.php CHANGED
@@ -27,6 +27,7 @@ class EDD_Notices {
27
  public function __construct() {
28
  add_action( 'admin_notices', array( $this, 'show_notices' ) );
29
  add_action( 'edd_dismiss_notices', array( $this, 'dismiss_notices' ) );
 
30
  }
31
 
32
  /**
@@ -171,6 +172,8 @@ class EDD_Notices {
171
  echo '</div>';
172
  }
173
 
 
 
174
  /* Commented out per https://github.com/easydigitaldownloads/Easy-Digital-Downloads/issues/3475
175
  if( ! edd_test_ajax_works() && ! get_user_meta( get_current_user_id(), '_edd_admin_ajax_inaccessible_dismissed', true ) && current_user_can( 'manage_shop_settings' ) ) {
176
  echo '<div class="error">';
@@ -310,6 +313,62 @@ class EDD_Notices {
310
  settings_errors( 'edd-notices' );
311
  }
312
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  /**
314
  * Dismiss admin notices when Dismiss links are clicked
315
  *
27
  public function __construct() {
28
  add_action( 'admin_notices', array( $this, 'show_notices' ) );
29
  add_action( 'edd_dismiss_notices', array( $this, 'dismiss_notices' ) );
30
+ add_action( 'wp_ajax_edd_disable_debugging', array( $this, 'edd_disable_debugging' ) );
31
  }
32
 
33
  /**
172
  echo '</div>';
173
  }
174
 
175
+ $this->show_debugging_notice();
176
+
177
  /* Commented out per https://github.com/easydigitaldownloads/Easy-Digital-Downloads/issues/3475
178
  if( ! edd_test_ajax_works() && ! get_user_meta( get_current_user_id(), '_edd_admin_ajax_inaccessible_dismissed', true ) && current_user_can( 'manage_shop_settings' ) ) {
179
  echo '<div class="error">';
313
  settings_errors( 'edd-notices' );
314
  }
315
 
316
+ /**
317
+ * Show a notice if debugging is enabled in the EDD settings.
318
+ * Does not show if only the `EDD_DEBUG_MODE` constant is defined.
319
+ *
320
+ * @since 2.11.5
321
+ * @return void
322
+ */
323
+ private function show_debugging_notice() {
324
+ if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
325
+ return;
326
+ }
327
+ if ( ! current_user_can( 'manage_shop_settings' ) ) {
328
+ return;
329
+ }
330
+ if ( ! edd_get_option( 'debug_mode', false ) ) {
331
+ return;
332
+ }
333
+ $view_url = add_query_arg(
334
+ array(
335
+ 'post_type' => 'download',
336
+ 'page' => 'edd-tools',
337
+ 'tab' => 'debug_log',
338
+ ),
339
+ admin_url( 'edit.php' )
340
+ );
341
+ ?>
342
+ <div id="edd-debug-log-notice" class="notice notice-warning">
343
+ <p>
344
+ <?php esc_html_e( 'Easy Digital Downloads debug logging is enabled. Please only leave it enabled for as long as it is needed for troubleshooting.', 'easy-digital-downloads' ); ?>
345
+ </p>
346
+ <p>
347
+ <a class="button button-secondary" href="<?php echo esc_url( $view_url ); ?>"><?php esc_html_e( 'View Debug Log', 'easy-digital-downloads' ); ?></a>
348
+ <button class="button button-primary" id="edd-disable-debug-log"><?php esc_html_e( 'Delete Log File and Disable Logging', 'easy-digital-downloads' ); ?></button>
349
+ <?php wp_nonce_field( 'edd_debug_log_delete', 'edd_debug_log_delete' ); ?>
350
+ </p>
351
+ </div>
352
+ <?php
353
+ }
354
+
355
+ /**
356
+ * Disables the debug log setting and deletes the existing log file.
357
+ *
358
+ * @since 2.11.5
359
+ * @return void
360
+ */
361
+ public function edd_disable_debugging() {
362
+ $validate_nonce = ! empty( $_GET['nonce'] ) && wp_verify_nonce( $_GET['nonce'], 'edd_debug_log_delete' );
363
+ if ( ! current_user_can( 'manage_shop_settings' ) || ! $validate_nonce ) {
364
+ wp_send_json_error( wpautop( __( 'You do not have permission to perform this action.', 'easy-digital-downloads' ) ), 403 );
365
+ }
366
+ edd_update_option( 'debug_mode', false );
367
+ global $edd_logs;
368
+ $edd_logs->clear_log_file();
369
+ wp_send_json_success( wpautop( __( 'The debug log has been cleared and logging has been disabled.', 'easy-digital-downloads' ) ) );
370
+ }
371
+
372
  /**
373
  * Dismiss admin notices when Dismiss links are clicked
374
  *
includes/admin/downloads/metabox.php CHANGED
@@ -146,14 +146,16 @@ function edd_download_meta_box_save( $post_id, $post ) {
146
 
147
  } else {
148
 
 
149
  if ( ! empty( $_POST[ $field ] ) ) {
150
  $new = apply_filters( 'edd_metabox_save_' . $field, $_POST[ $field ] );
 
 
151
  update_post_meta( $post_id, $field, $new );
152
  } else {
153
  delete_post_meta( $post_id, $field );
154
  }
155
  }
156
-
157
  }
158
 
159
  if ( edd_has_variable_prices( $post_id ) ) {
@@ -180,10 +182,11 @@ function edd_sanitize_bundled_products_save( $products = array() ) {
180
 
181
  global $post;
182
 
183
- $self = array_search( $post->ID, $products );
184
-
185
- if( $self !== false )
186
- unset( $products[ $self ] );
 
187
 
188
  return array_values( array_unique( $products ) );
189
  }
@@ -628,7 +631,9 @@ function edd_render_products_field( $post_id ) {
628
  }
629
 
630
  $price_assignments = edd_get_bundle_pricing_variations( $post_id );
631
- $price_assignments = $price_assignments[0];
 
 
632
 
633
  $selected = isset( $price_assignments[ $index ] ) ? $price_assignments[ $index ] : null;
634
 
146
 
147
  } else {
148
 
149
+ $new = false;
150
  if ( ! empty( $_POST[ $field ] ) ) {
151
  $new = apply_filters( 'edd_metabox_save_' . $field, $_POST[ $field ] );
152
+ }
153
+ if ( ! empty( $new ) ) {
154
  update_post_meta( $post_id, $field, $new );
155
  } else {
156
  delete_post_meta( $post_id, $field );
157
  }
158
  }
 
159
  }
160
 
161
  if ( edd_has_variable_prices( $post_id ) ) {
182
 
183
  global $post;
184
 
185
+ foreach ( $products as $key => $product_id ) {
186
+ if ( in_array( $product_id, array( 0, $post->ID ) ) ) {
187
+ unset( $products[ $key ] );
188
+ }
189
+ }
190
 
191
  return array_values( array_unique( $products ) );
192
  }
631
  }
632
 
633
  $price_assignments = edd_get_bundle_pricing_variations( $post_id );
634
+ if ( ! empty( $price_assignments[0] ) ) {
635
+ $price_assignments = $price_assignments[0];
636
+ }
637
 
638
  $selected = isset( $price_assignments[ $index ] ) ? $price_assignments[ $index ] : null;
639
 
includes/admin/extensions/abstract-extension.php CHANGED
@@ -35,6 +35,14 @@ abstract class Extension {
35
  */
36
  protected $manager;
37
 
 
 
 
 
 
 
 
 
38
  public function __construct() {
39
  $this->manager = new \EDD\Admin\Extensions\Extension_Manager( static::PASS_LEVEL );
40
  }
@@ -267,12 +275,11 @@ abstract class Extension {
267
  * @return string
268
  */
269
  private function get_upgrade_url( ProductData $product_data, $item_id, $has_access = false ) {
270
- $url = 'https://easydigitaldownloads.com';
271
- $tab = ! empty( $_GET['tab'] ) ? sanitize_text_field( $_GET['tab'] ) : '';
272
  $utm_parameters = array(
273
  'p' => urlencode( $item_id ),
274
  'utm_source' => 'settings',
275
- 'utm_medium' => urlencode( $tab ),
276
  'utm_campaign' => 'admin',
277
  'utm_term' => urlencode( $product_data->slug ),
278
  );
35
  */
36
  protected $manager;
37
 
38
+ /**
39
+ * The settings section for this item.
40
+ *
41
+ * @since 2.11.5
42
+ * @var string
43
+ */
44
+ protected $settings_section = 'general';
45
+
46
  public function __construct() {
47
  $this->manager = new \EDD\Admin\Extensions\Extension_Manager( static::PASS_LEVEL );
48
  }
275
  * @return string
276
  */
277
  private function get_upgrade_url( ProductData $product_data, $item_id, $has_access = false ) {
278
+ $url = 'https://easydigitaldownloads.com/pricing';
 
279
  $utm_parameters = array(
280
  'p' => urlencode( $item_id ),
281
  'utm_source' => 'settings',
282
+ 'utm_medium' => urlencode( $this->settings_section ),
283
  'utm_campaign' => 'admin',
284
  'utm_term' => urlencode( $product_data->slug ),
285
  );
includes/admin/extensions/product-education/class-email-marketing.php CHANGED
@@ -24,6 +24,14 @@ class EmailMarketing extends Extension {
24
  */
25
  protected $settings_tab = 'marketing';
26
 
 
 
 
 
 
 
 
 
27
  public function __construct() {
28
  add_filter( 'edd_settings_sections_marketing', array( $this, 'add_section' ) );
29
  add_action( 'edd_settings_tab_top_marketing_email_marketing', array( $this, 'field' ) );
@@ -46,7 +54,7 @@ class EmailMarketing extends Extension {
46
  if ( ! $product_data || ! is_array( $product_data ) ) {
47
  return $sections;
48
  }
49
- $sections['email_marketing'] = __( 'Email Marketing', 'easy-digital-downloads' );
50
 
51
  return $sections;
52
  }
24
  */
25
  protected $settings_tab = 'marketing';
26
 
27
+ /**
28
+ * The settings section for this item.
29
+ *
30
+ * @since 2.11.5
31
+ * @var string
32
+ */
33
+ protected $settings_section = 'email_marketing';
34
+
35
  public function __construct() {
36
  add_filter( 'edd_settings_sections_marketing', array( $this, 'add_section' ) );
37
  add_action( 'edd_settings_tab_top_marketing_email_marketing', array( $this, 'field' ) );
54
  if ( ! $product_data || ! is_array( $product_data ) ) {
55
  return $sections;
56
  }
57
+ $sections[ $this->settings_section ] = __( 'Email Marketing', 'easy-digital-downloads' );
58
 
59
  return $sections;
60
  }
includes/admin/extensions/product-education/class-invoices.php CHANGED
@@ -31,6 +31,14 @@ class Invoices extends Extension {
31
  */
32
  protected $settings_tab = 'gateways';
33
 
 
 
 
 
 
 
 
 
34
  /**
35
  * The pass level required to access this extension.
36
  */
@@ -92,7 +100,7 @@ class Invoices extends Extension {
92
  return $sections;
93
  }
94
 
95
- $sections['invoices'] = __( 'Invoices', 'easy-digital-downloads' );
96
 
97
  return $sections;
98
  }
31
  */
32
  protected $settings_tab = 'gateways';
33
 
34
+ /**
35
+ * The settings section for this item.
36
+ *
37
+ * @since 2.11.5
38
+ * @var string
39
+ */
40
+ protected $settings_section = 'invoices';
41
+
42
  /**
43
  * The pass level required to access this extension.
44
  */
100
  return $sections;
101
  }
102
 
103
+ $sections[ $this->settings_section ] = __( 'Invoices', 'easy-digital-downloads' );
104
 
105
  return $sections;
106
  }
includes/admin/extensions/product-education/class-recurring.php CHANGED
@@ -36,6 +36,14 @@ class Recurring extends Extension {
36
  */
37
  const PASS_LEVEL = \EDD\Admin\Pass_Manager::EXTENDED_PASS_ID;
38
 
 
 
 
 
 
 
 
 
39
  public function __construct() {
40
  add_filter( 'edd_settings_sections_gateways', array( $this, 'add_section' ) );
41
  add_action( 'edd_settings_tab_top_gateways_recurring', array( $this, 'settings_field' ) );
@@ -92,7 +100,7 @@ class Recurring extends Extension {
92
  return $sections;
93
  }
94
 
95
- $sections['recurring'] = __( 'Recurring Payments', 'easy-digital-downloads' );
96
 
97
  return $sections;
98
  }
36
  */
37
  const PASS_LEVEL = \EDD\Admin\Pass_Manager::EXTENDED_PASS_ID;
38
 
39
+ /**
40
+ * The settings section for this item.
41
+ *
42
+ * @since 2.11.5
43
+ * @var string
44
+ */
45
+ protected $settings_section = 'recurring';
46
+
47
  public function __construct() {
48
  add_filter( 'edd_settings_sections_gateways', array( $this, 'add_section' ) );
49
  add_action( 'edd_settings_tab_top_gateways_recurring', array( $this, 'settings_field' ) );
100
  return $sections;
101
  }
102
 
103
+ $sections[ $this->settings_section ] = __( 'Recurring Payments', 'easy-digital-downloads' );
104
 
105
  return $sections;
106
  }
includes/admin/extensions/product-education/class-reviews.php CHANGED
@@ -31,6 +31,14 @@ class Reviews extends Extension {
31
  */
32
  protected $settings_tab = 'marketing';
33
 
 
 
 
 
 
 
 
 
34
  /**
35
  * The pass level required to access this extension.
36
  */
@@ -97,7 +105,7 @@ class Reviews extends Extension {
97
  return $sections;
98
  }
99
 
100
- $sections['reviews'] = __( 'Reviews', 'easy-digital-downloads' );
101
 
102
  return $sections;
103
  }
31
  */
32
  protected $settings_tab = 'marketing';
33
 
34
+ /**
35
+ * The settings section for this item.
36
+ *
37
+ * @since 2.11.5
38
+ * @var string
39
+ */
40
+ protected $settings_section = 'reviews';
41
+
42
  /**
43
  * The pass level required to access this extension.
44
  */
105
  return $sections;
106
  }
107
 
108
+ $sections[ $this->settings_section ] = __( 'Reviews', 'easy-digital-downloads' );
109
 
110
  return $sections;
111
  }
includes/admin/import/class-batch-import-downloads.php CHANGED
@@ -75,11 +75,11 @@ class EDD_Batch_Downloads_Import extends EDD_Batch_Import {
75
  unlink( $this->file );
76
  }
77
 
78
- if( ! $this->done && $this->csv->data ) {
79
 
80
  $more = true;
81
 
82
- foreach( $this->csv->data as $key => $row ) {
83
 
84
  // Skip all rows until we pass our offset
85
  if( $key + 1 <= $offset ) {
75
  unlink( $this->file );
76
  }
77
 
78
+ if( ! $this->done && $this->csv ) {
79
 
80
  $more = true;
81
 
82
+ foreach( $this->csv as $key => $row ) {
83
 
84
  // Skip all rows until we pass our offset
85
  if( $key + 1 <= $offset ) {
includes/admin/import/class-batch-import-payments.php CHANGED
@@ -95,11 +95,11 @@ class EDD_Batch_Payments_Import extends EDD_Batch_Import {
95
  unlink( $this->file );
96
  }
97
 
98
- if( ! $this->done && $this->csv->data ) {
99
 
100
  $more = true;
101
 
102
- foreach( $this->csv->data as $key => $row ) {
103
 
104
  // Skip all rows until we pass our offset
105
  if( $key + 1 <= $offset ) {
@@ -393,6 +393,9 @@ class EDD_Batch_Payments_Import extends EDD_Batch_Import {
393
 
394
  global $wpdb;
395
 
 
 
 
396
  if( ! empty( $this->field_mapping['email'] ) && ! empty( $row[ $this->field_mapping['email'] ] ) ) {
397
 
398
  $email = sanitize_text_field( $row[ $this->field_mapping['email'] ] );
@@ -435,7 +438,7 @@ class EDD_Batch_Payments_Import extends EDD_Batch_Import {
435
 
436
  // Now compare customer records. If they don't match, customer_id will be stored in meta and we will use the customer that matches the email
437
 
438
- if( ( empty( $customer_by_id ) || $customer_by_id->id !== $customer_by_email->id ) && ! empty( $customer_by_email ) ) {
439
 
440
  $customer = $customer_by_email;
441
 
@@ -543,7 +546,10 @@ class EDD_Batch_Payments_Import extends EDD_Batch_Import {
543
 
544
  foreach( $downloads as $key => $download ) {
545
 
546
- $d = (array) explode( '|', $download );
 
 
 
547
  preg_match_all( '/\{(\d|(\d+(\.\d+|\d+)))\}/', $d[1], $matches );
548
 
549
  if( false !== strpos( $d[1], '{' ) ) {
@@ -555,7 +561,8 @@ class EDD_Batch_Payments_Import extends EDD_Batch_Import {
555
  $price = trim( $d[1] );
556
  }
557
 
558
- $tax = isset( $matches[1][0] ) ? trim( $matches[1][0] ) : 0;
 
559
  $price_id = isset( $matches[1][1] ) ? trim( $matches[1][1] ) : false;
560
 
561
  $d_array[] = array(
@@ -581,7 +588,7 @@ class EDD_Batch_Payments_Import extends EDD_Batch_Import {
581
  */
582
  public function get_percentage_complete() {
583
 
584
- $total = count( $this->csv->data );
585
 
586
  if( $total > 0 ) {
587
  $percentage = ( $this->step * $this->per_step / $total ) * 100;
95
  unlink( $this->file );
96
  }
97
 
98
+ if( ! $this->done && $this->csv ) {
99
 
100
  $more = true;
101
 
102
+ foreach( $this->csv as $key => $row ) {
103
 
104
  // Skip all rows until we pass our offset
105
  if( $key + 1 <= $offset ) {
393
 
394
  global $wpdb;
395
 
396
+ $customer = false;
397
+ $email = '';
398
+
399
  if( ! empty( $this->field_mapping['email'] ) && ! empty( $row[ $this->field_mapping['email'] ] ) ) {
400
 
401
  $email = sanitize_text_field( $row[ $this->field_mapping['email'] ] );
438
 
439
  // Now compare customer records. If they don't match, customer_id will be stored in meta and we will use the customer that matches the email
440
 
441
+ if ( ! empty( $customer_by_email ) && ( empty( $customer_by_id ) || $customer_by_id->id !== $customer_by_email->id ) ) {
442
 
443
  $customer = $customer_by_email;
444
 
546
 
547
  foreach( $downloads as $key => $download ) {
548
 
549
+ $d = (array) explode( '|', $download );
550
+ if ( ! array_key_exists( 1, $d ) ) {
551
+ continue;
552
+ }
553
  preg_match_all( '/\{(\d|(\d+(\.\d+|\d+)))\}/', $d[1], $matches );
554
 
555
  if( false !== strpos( $d[1], '{' ) ) {
561
  $price = trim( $d[1] );
562
  }
563
 
564
+ $price = floatval( $price );
565
+ $tax = isset( $matches[1][0] ) ? floatval( trim( $matches[1][0] ) ) : 0;
566
  $price_id = isset( $matches[1][1] ) ? trim( $matches[1][1] ) : false;
567
 
568
  $d_array[] = array(
588
  */
589
  public function get_percentage_complete() {
590
 
591
+ $total = count( $this->csv );
592
 
593
  if( $total > 0 ) {
594
  $percentage = ( $this->step * $this->per_step / $total ) * 100;
includes/admin/import/class-batch-import.php CHANGED
@@ -85,16 +85,11 @@ class EDD_Batch_Import {
85
  */
86
  public function __construct( $_file = '', $_step = 1 ) {
87
 
88
- if( ! class_exists( 'parseCSV' ) ) {
89
- require_once EDD_PLUGIN_DIR . 'includes/libraries/parsecsv.lib.php';
90
- }
91
-
92
  $this->step = $_step;
93
  $this->file = $_file;
94
  $this->done = false;
95
- $this->csv = new parseCSV();
96
- $this->csv->auto( $this->file );
97
- $this->total = count( $this->csv->data );
98
  $this->init();
99
 
100
  }
@@ -117,6 +112,34 @@ class EDD_Batch_Import {
117
  return (bool) apply_filters( 'edd_import_capability', current_user_can( $this->capability_type ) );
118
  }
119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  /**
121
  * Get the CSV columns
122
  *
@@ -125,7 +148,13 @@ class EDD_Batch_Import {
125
  */
126
  public function get_columns() {
127
 
128
- return $this->csv->titles;
 
 
 
 
 
 
129
  }
130
 
131
  /**
@@ -138,8 +167,11 @@ class EDD_Batch_Import {
138
  */
139
  public function get_first_row() {
140
 
141
- return array_map( array( $this, 'trim_preview' ), current( $this->csv->data ) );
 
 
142
 
 
143
  }
144
 
145
  /**
@@ -177,9 +209,8 @@ class EDD_Batch_Import {
177
  */
178
  public function map_fields( $import_fields = array() ) {
179
 
180
- // Probably add some sanitization here later
181
 
182
- $this->field_mapping = $import_fields;
183
  }
184
 
185
  /**
85
  */
86
  public function __construct( $_file = '', $_step = 1 ) {
87
 
 
 
 
 
88
  $this->step = $_step;
89
  $this->file = $_file;
90
  $this->done = false;
91
+ $this->csv = $this->get_csv_file( $this->file );
92
+ $this->total = count( $this->csv );
 
93
  $this->init();
94
 
95
  }
112
  return (bool) apply_filters( 'edd_import_capability', current_user_can( $this->capability_type ) );
113
  }
114
 
115
+ /**
116
+ * Parses the CSV from the file and returns the data as an array.
117
+ *
118
+ * @since 2.11.5
119
+ * @param string $file
120
+ *
121
+ * @return array
122
+ */
123
+ public function get_csv_file( $file ) {
124
+ $csv = array_map( 'str_getcsv', file( $this->file ) );
125
+ array_walk(
126
+ $csv,
127
+ function ( &$a ) use ( $csv ) {
128
+ /*
129
+ * Make sure the two arrays have the same lengths.
130
+ * If not, we trim the larger array to match the smaller one.
131
+ */
132
+ $min = min( count( $csv[0] ), count( $a ) );
133
+ $headers = array_slice( $csv[0], 0, $min );
134
+ $values = array_slice( $a, 0, $min );
135
+ $a = array_combine( $headers, $values );
136
+ }
137
+ );
138
+ array_shift( $csv );
139
+
140
+ return $csv;
141
+ }
142
+
143
  /**
144
  * Get the CSV columns
145
  *
148
  */
149
  public function get_columns() {
150
 
151
+ $columns = array();
152
+
153
+ if ( isset( $this->csv[0] ) && is_array( $this->csv[0] ) ) {
154
+ $columns = array_keys( $this->csv[0] );
155
+ }
156
+
157
+ return $columns;
158
  }
159
 
160
  /**
167
  */
168
  public function get_first_row() {
169
 
170
+ if ( ! is_array( $this->csv ) ) {
171
+ return array();
172
+ }
173
 
174
+ return array_map( array( $this, 'trim_preview' ), current( $this->csv ) );
175
  }
176
 
177
  /**
209
  */
210
  public function map_fields( $import_fields = array() ) {
211
 
212
+ $this->field_mapping = array_map( 'sanitize_text_field', $import_fields );
213
 
 
214
  }
215
 
216
  /**
includes/class-edd-discount.php CHANGED
@@ -16,6 +16,25 @@ if ( ! defined( 'ABSPATH' ) ) exit;
16
  * EDD_Discount Class
17
  *
18
  * @since 2.7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  */
20
  class EDD_Discount {
21
  /**
16
  * EDD_Discount Class
17
  *
18
  * @since 2.7
19
+ *
20
+ * @property int $ID
21
+ * @property string $name
22
+ * @property string $code
23
+ * @property string $status
24
+ * @property string $type
25
+ * @property float $amount
26
+ * @property array $product_reqs
27
+ * @property array $excluded_products
28
+ * @property string $product_condition
29
+ * @property string $start
30
+ * @property string $expiration
31
+ * @property int $uses
32
+ * @property int $max_uses
33
+ * @property float $min_price
34
+ * @property bool $is_single_use
35
+ * @property bool $is_not_global
36
+ * @property string $post_date
37
+ * @property string $post_modified
38
  */
39
  class EDD_Discount {
40
  /**
includes/class-edd-logging.php CHANGED
@@ -422,9 +422,7 @@ class EDD_Logging {
422
  * @return void
423
  */
424
  protected function write_to_log( $message = '' ) {
425
- $file = $this->get_file();
426
- $file .= $message;
427
- @file_put_contents( $this->file, $file );
428
  }
429
 
430
  /**
@@ -528,9 +526,9 @@ function edd_debug_log( $message = '', $force = false ) {
528
  if( function_exists( 'mb_convert_encoding' ) ) {
529
 
530
  $message = mb_convert_encoding( $message, 'UTF-8' );
531
-
532
  }
533
-
534
  $edd_logs->log_to_file( $message );
535
 
536
  }
422
  * @return void
423
  */
424
  protected function write_to_log( $message = '' ) {
425
+ file_put_contents( $this->file, $message, FILE_APPEND );
 
 
426
  }
427
 
428
  /**
526
  if( function_exists( 'mb_convert_encoding' ) ) {
527
 
528
  $message = mb_convert_encoding( $message, 'UTF-8' );
529
+
530
  }
531
+
532
  $edd_logs->log_to_file( $message );
533
 
534
  }
includes/gateways/stripe/edd-stripe.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Easy Digital Downloads - Stripe Pro Payment Gateway
4
  * Plugin URI: https://easydigitaldownloads.com/downloads/stripe-gateway/
5
  * Description: Adds a payment gateway for Stripe.com
6
- * Version: 2.8.10
7
  * Author: Easy Digital Downloads
8
  * Author URI: https://easydigitaldownloads.com
9
  * Text Domain: edds
@@ -42,7 +42,7 @@ function edd_stripe_core_bootstrap() {
42
  }
43
 
44
  if ( ! defined( 'EDD_STRIPE_VERSION' ) ) {
45
- define( 'EDD_STRIPE_VERSION', '2.8.10' );
46
  }
47
 
48
  if ( ! defined( 'EDD_STRIPE_API_VERSION' ) ) {
3
  * Plugin Name: Easy Digital Downloads - Stripe Pro Payment Gateway
4
  * Plugin URI: https://easydigitaldownloads.com/downloads/stripe-gateway/
5
  * Description: Adds a payment gateway for Stripe.com
6
+ * Version: 2.8.11
7
  * Author: Easy Digital Downloads
8
  * Author URI: https://easydigitaldownloads.com
9
  * Text Domain: edds
42
  }
43
 
44
  if ( ! defined( 'EDD_STRIPE_VERSION' ) ) {
45
+ define( 'EDD_STRIPE_VERSION', '2.8.11' );
46
  }
47
 
48
  if ( ! defined( 'EDD_STRIPE_API_VERSION' ) ) {
includes/gateways/stripe/includes/admin/admin-actions.php CHANGED
@@ -83,7 +83,7 @@ add_action( 'admin_print_footer_scripts-download_page_edd-payment-history', func
83
  link.addEventListener( 'click', function( e ) {
84
  if ( ! confirm( '<?php esc_attr_e( 'Are you sure you want to cancel this order?', 'easy-digital-downloads' ); ?>' ) ) {
85
  e.preventDefault();
86
- });
87
  } );
88
  } );
89
  } );
83
  link.addEventListener( 'click', function( e ) {
84
  if ( ! confirm( '<?php esc_attr_e( 'Are you sure you want to cancel this order?', 'easy-digital-downloads' ); ?>' ) ) {
85
  e.preventDefault();
86
+ }
87
  } );
88
  } );
89
  } );
includes/gateways/stripe/includes/compat.php CHANGED
@@ -205,6 +205,14 @@ function _edds_process_purchase_form() {
205
  $_POST = array_merge( $_POST, $form_data );
206
  $_REQUEST = array_merge( $_REQUEST, $_POST );
207
 
 
 
 
 
 
 
 
 
208
  /**
209
  * @since unknown
210
  * @todo document
205
  $_POST = array_merge( $_POST, $form_data );
206
  $_REQUEST = array_merge( $_REQUEST, $_POST );
207
 
208
+ /*
209
+ * Reset the tax rate so that it will be recalculated correctly.
210
+ * This is only needed on EDD 3.0+.
211
+ */
212
+ if ( method_exists( EDD()->cart, 'set_tax_rate' ) ) {
213
+ EDD()->cart->set_tax_rate( null );
214
+ }
215
+
216
  /**
217
  * @since unknown
218
  * @todo document
includes/gateways/stripe/vendor/composer/ClassLoader.php CHANGED
@@ -37,57 +37,130 @@ namespace Composer\Autoload;
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
- * @see http://www.php-fig.org/psr/psr-0/
41
- * @see http://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
 
 
 
45
  // PSR-4
 
 
 
 
46
  private $prefixLengthsPsr4 = array();
 
 
 
 
47
  private $prefixDirsPsr4 = array();
 
 
 
 
48
  private $fallbackDirsPsr4 = array();
49
 
50
  // PSR-0
 
 
 
 
51
  private $prefixesPsr0 = array();
 
 
 
 
52
  private $fallbackDirsPsr0 = array();
53
 
 
54
  private $useIncludePath = false;
 
 
 
 
 
55
  private $classMap = array();
 
 
56
  private $classMapAuthoritative = false;
 
 
 
 
 
57
  private $missingClasses = array();
 
 
58
  private $apcuPrefix;
59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
- return call_user_func_array('array_merge', $this->prefixesPsr0);
64
  }
65
 
66
  return array();
67
  }
68
 
 
 
 
 
69
  public function getPrefixesPsr4()
70
  {
71
  return $this->prefixDirsPsr4;
72
  }
73
 
 
 
 
 
74
  public function getFallbackDirs()
75
  {
76
  return $this->fallbackDirsPsr0;
77
  }
78
 
 
 
 
 
79
  public function getFallbackDirsPsr4()
80
  {
81
  return $this->fallbackDirsPsr4;
82
  }
83
 
 
 
 
 
84
  public function getClassMap()
85
  {
86
  return $this->classMap;
87
  }
88
 
89
  /**
90
- * @param array $classMap Class to filename map
 
 
 
91
  */
92
  public function addClassMap(array $classMap)
93
  {
@@ -102,9 +175,11 @@ class ClassLoader
102
  * Registers a set of PSR-0 directories for a given prefix, either
103
  * appending or prepending to the ones previously set for this prefix.
104
  *
105
- * @param string $prefix The prefix
106
- * @param array|string $paths The PSR-0 root directories
107
- * @param bool $prepend Whether to prepend the directories
 
 
108
  */
109
  public function add($prefix, $paths, $prepend = false)
110
  {
@@ -147,11 +222,13 @@ class ClassLoader
147
  * Registers a set of PSR-4 directories for a given namespace, either
148
  * appending or prepending to the ones previously set for this namespace.
149
  *
150
- * @param string $prefix The prefix/namespace, with trailing '\\'
151
- * @param array|string $paths The PSR-4 base directories
152
- * @param bool $prepend Whether to prepend the directories
153
  *
154
  * @throws \InvalidArgumentException
 
 
155
  */
156
  public function addPsr4($prefix, $paths, $prepend = false)
157
  {
@@ -195,8 +272,10 @@ class ClassLoader
195
  * Registers a set of PSR-0 directories for a given prefix,
196
  * replacing any others previously set for this prefix.
197
  *
198
- * @param string $prefix The prefix
199
- * @param array|string $paths The PSR-0 base directories
 
 
200
  */
201
  public function set($prefix, $paths)
202
  {
@@ -211,10 +290,12 @@ class ClassLoader
211
  * Registers a set of PSR-4 directories for a given namespace,
212
  * replacing any others previously set for this namespace.
213
  *
214
- * @param string $prefix The prefix/namespace, with trailing '\\'
215
- * @param array|string $paths The PSR-4 base directories
216
  *
217
  * @throws \InvalidArgumentException
 
 
218
  */
219
  public function setPsr4($prefix, $paths)
220
  {
@@ -234,6 +315,8 @@ class ClassLoader
234
  * Turns on searching the include path for class files.
235
  *
236
  * @param bool $useIncludePath
 
 
237
  */
238
  public function setUseIncludePath($useIncludePath)
239
  {
@@ -256,6 +339,8 @@ class ClassLoader
256
  * that have not been registered with the class map.
257
  *
258
  * @param bool $classMapAuthoritative
 
 
259
  */
260
  public function setClassMapAuthoritative($classMapAuthoritative)
261
  {
@@ -276,6 +361,8 @@ class ClassLoader
276
  * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
277
  *
278
  * @param string|null $apcuPrefix
 
 
279
  */
280
  public function setApcuPrefix($apcuPrefix)
281
  {
@@ -296,25 +383,44 @@ class ClassLoader
296
  * Registers this instance as an autoloader.
297
  *
298
  * @param bool $prepend Whether to prepend the autoloader or not
 
 
299
  */
300
  public function register($prepend = false)
301
  {
302
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
 
 
 
 
 
 
 
 
 
 
 
303
  }
304
 
305
  /**
306
  * Unregisters this instance as an autoloader.
 
 
307
  */
308
  public function unregister()
309
  {
310
  spl_autoload_unregister(array($this, 'loadClass'));
 
 
 
 
311
  }
312
 
313
  /**
314
  * Loads the given class or interface.
315
  *
316
  * @param string $class The name of the class
317
- * @return bool|null True if loaded, null otherwise
318
  */
319
  public function loadClass($class)
320
  {
@@ -323,6 +429,8 @@ class ClassLoader
323
 
324
  return true;
325
  }
 
 
326
  }
327
 
328
  /**
@@ -367,6 +475,21 @@ class ClassLoader
367
  return $file;
368
  }
369
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
370
  private function findFileWithExtension($class, $ext)
371
  {
372
  // PSR-4 lookup
@@ -438,6 +561,10 @@ class ClassLoader
438
  * Scope isolated include.
439
  *
440
  * Prevents access to $this/self from included files.
 
 
 
 
441
  */
442
  function includeFile($file)
443
  {
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see https://www.php-fig.org/psr/psr-0/
41
+ * @see https://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
45
+ /** @var ?string */
46
+ private $vendorDir;
47
+
48
  // PSR-4
49
+ /**
50
+ * @var array[]
51
+ * @psalm-var array<string, array<string, int>>
52
+ */
53
  private $prefixLengthsPsr4 = array();
54
+ /**
55
+ * @var array[]
56
+ * @psalm-var array<string, array<int, string>>
57
+ */
58
  private $prefixDirsPsr4 = array();
59
+ /**
60
+ * @var array[]
61
+ * @psalm-var array<string, string>
62
+ */
63
  private $fallbackDirsPsr4 = array();
64
 
65
  // PSR-0
66
+ /**
67
+ * @var array[]
68
+ * @psalm-var array<string, array<string, string[]>>
69
+ */
70
  private $prefixesPsr0 = array();
71
+ /**
72
+ * @var array[]
73
+ * @psalm-var array<string, string>
74
+ */
75
  private $fallbackDirsPsr0 = array();
76
 
77
+ /** @var bool */
78
  private $useIncludePath = false;
79
+
80
+ /**
81
+ * @var string[]
82
+ * @psalm-var array<string, string>
83
+ */
84
  private $classMap = array();
85
+
86
+ /** @var bool */
87
  private $classMapAuthoritative = false;
88
+
89
+ /**
90
+ * @var bool[]
91
+ * @psalm-var array<string, bool>
92
+ */
93
  private $missingClasses = array();
94
+
95
+ /** @var ?string */
96
  private $apcuPrefix;
97
 
98
+ /**
99
+ * @var self[]
100
+ */
101
+ private static $registeredLoaders = array();
102
+
103
+ /**
104
+ * @param ?string $vendorDir
105
+ */
106
+ public function __construct($vendorDir = null)
107
+ {
108
+ $this->vendorDir = $vendorDir;
109
+ }
110
+
111
+ /**
112
+ * @return string[]
113
+ */
114
  public function getPrefixes()
115
  {
116
  if (!empty($this->prefixesPsr0)) {
117
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
118
  }
119
 
120
  return array();
121
  }
122
 
123
+ /**
124
+ * @return array[]
125
+ * @psalm-return array<string, array<int, string>>
126
+ */
127
  public function getPrefixesPsr4()
128
  {
129
  return $this->prefixDirsPsr4;
130
  }
131
 
132
+ /**
133
+ * @return array[]
134
+ * @psalm-return array<string, string>
135
+ */
136
  public function getFallbackDirs()
137
  {
138
  return $this->fallbackDirsPsr0;
139
  }
140
 
141
+ /**
142
+ * @return array[]
143
+ * @psalm-return array<string, string>
144
+ */
145
  public function getFallbackDirsPsr4()
146
  {
147
  return $this->fallbackDirsPsr4;
148
  }
149
 
150
+ /**
151
+ * @return string[] Array of classname => path
152
+ * @psalm-var array<string, string>
153
+ */
154
  public function getClassMap()
155
  {
156
  return $this->classMap;
157
  }
158
 
159
  /**
160
+ * @param string[] $classMap Class to filename map
161
+ * @psalm-param array<string, string> $classMap
162
+ *
163
+ * @return void
164
  */
165
  public function addClassMap(array $classMap)
166
  {
175
  * Registers a set of PSR-0 directories for a given prefix, either
176
  * appending or prepending to the ones previously set for this prefix.
177
  *
178
+ * @param string $prefix The prefix
179
+ * @param string[]|string $paths The PSR-0 root directories
180
+ * @param bool $prepend Whether to prepend the directories
181
+ *
182
+ * @return void
183
  */
184
  public function add($prefix, $paths, $prepend = false)
185
  {
222
  * Registers a set of PSR-4 directories for a given namespace, either
223
  * appending or prepending to the ones previously set for this namespace.
224
  *
225
+ * @param string $prefix The prefix/namespace, with trailing '\\'
226
+ * @param string[]|string $paths The PSR-4 base directories
227
+ * @param bool $prepend Whether to prepend the directories
228
  *
229
  * @throws \InvalidArgumentException
230
+ *
231
+ * @return void
232
  */
233
  public function addPsr4($prefix, $paths, $prepend = false)
234
  {
272
  * Registers a set of PSR-0 directories for a given prefix,
273
  * replacing any others previously set for this prefix.
274
  *
275
+ * @param string $prefix The prefix
276
+ * @param string[]|string $paths The PSR-0 base directories
277
+ *
278
+ * @return void
279
  */
280
  public function set($prefix, $paths)
281
  {
290
  * Registers a set of PSR-4 directories for a given namespace,
291
  * replacing any others previously set for this namespace.
292
  *
293
+ * @param string $prefix The prefix/namespace, with trailing '\\'
294
+ * @param string[]|string $paths The PSR-4 base directories
295
  *
296
  * @throws \InvalidArgumentException
297
+ *
298
+ * @return void
299
  */
300
  public function setPsr4($prefix, $paths)
301
  {
315
  * Turns on searching the include path for class files.
316
  *
317
  * @param bool $useIncludePath
318
+ *
319
+ * @return void
320
  */
321
  public function setUseIncludePath($useIncludePath)
322
  {
339
  * that have not been registered with the class map.
340
  *
341
  * @param bool $classMapAuthoritative
342
+ *
343
+ * @return void
344
  */
345
  public function setClassMapAuthoritative($classMapAuthoritative)
346
  {
361
  * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
362
  *
363
  * @param string|null $apcuPrefix
364
+ *
365
+ * @return void
366
  */
367
  public function setApcuPrefix($apcuPrefix)
368
  {
383
  * Registers this instance as an autoloader.
384
  *
385
  * @param bool $prepend Whether to prepend the autoloader or not
386
+ *
387
+ * @return void
388
  */
389
  public function register($prepend = false)
390
  {
391
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
392
+
393
+ if (null === $this->vendorDir) {
394
+ return;
395
+ }
396
+
397
+ if ($prepend) {
398
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
399
+ } else {
400
+ unset(self::$registeredLoaders[$this->vendorDir]);
401
+ self::$registeredLoaders[$this->vendorDir] = $this;
402
+ }
403
  }
404
 
405
  /**
406
  * Unregisters this instance as an autoloader.
407
+ *
408
+ * @return void
409
  */
410
  public function unregister()
411
  {
412
  spl_autoload_unregister(array($this, 'loadClass'));
413
+
414
+ if (null !== $this->vendorDir) {
415
+ unset(self::$registeredLoaders[$this->vendorDir]);
416
+ }
417
  }
418
 
419
  /**
420
  * Loads the given class or interface.
421
  *
422
  * @param string $class The name of the class
423
+ * @return true|null True if loaded, null otherwise
424
  */
425
  public function loadClass($class)
426
  {
429
 
430
  return true;
431
  }
432
+
433
+ return null;
434
  }
435
 
436
  /**
475
  return $file;
476
  }
477
 
478
+ /**
479
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
480
+ *
481
+ * @return self[]
482
+ */
483
+ public static function getRegisteredLoaders()
484
+ {
485
+ return self::$registeredLoaders;
486
+ }
487
+
488
+ /**
489
+ * @param string $class
490
+ * @param string $ext
491
+ * @return string|false
492
+ */
493
  private function findFileWithExtension($class, $ext)
494
  {
495
  // PSR-4 lookup
561
  * Scope isolated include.
562
  *
563
  * Prevents access to $this/self from included files.
564
+ *
565
+ * @param string $file
566
+ * @return void
567
+ * @private
568
  */
569
  function includeFile($file)
570
  {
includes/gateways/stripe/vendor/composer/InstalledVersions.php CHANGED
@@ -20,12 +20,25 @@ use Composer\Semver\VersionParser;
20
  *
21
  * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
  *
23
- * To require it's presence, you can require `composer-runtime-api ^2.0`
24
  */
25
  class InstalledVersions
26
  {
 
 
 
 
27
  private static $installed;
 
 
 
 
28
  private static $canGetVendors;
 
 
 
 
 
29
  private static $installedByVendor = array();
30
 
31
  /**
@@ -228,7 +241,7 @@ class InstalledVersions
228
 
229
  /**
230
  * @return array
231
- * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}
232
  */
233
  public static function getRootPackage()
234
  {
@@ -242,7 +255,7 @@ class InstalledVersions
242
  *
243
  * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
244
  * @return array[]
245
- * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}
246
  */
247
  public static function getRawData()
248
  {
@@ -265,7 +278,7 @@ class InstalledVersions
265
  * Returns the raw data of all installed.php which are currently loaded for custom implementations
266
  *
267
  * @return array[]
268
- * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
269
  */
270
  public static function getAllRawData()
271
  {
@@ -288,7 +301,7 @@ class InstalledVersions
288
  * @param array[] $data A vendor/composer/installed.php data set
289
  * @return void
290
  *
291
- * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>} $data
292
  */
293
  public static function reload($data)
294
  {
@@ -298,7 +311,7 @@ class InstalledVersions
298
 
299
  /**
300
  * @return array[]
301
- * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
302
  */
303
  private static function getInstalled()
304
  {
20
  *
21
  * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
  *
23
+ * To require its presence, you can require `composer-runtime-api ^2.0`
24
  */
25
  class InstalledVersions
26
  {
27
+ /**
28
+ * @var mixed[]|null
29
+ * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
30
+ */
31
  private static $installed;
32
+
33
+ /**
34
+ * @var bool|null
35
+ */
36
  private static $canGetVendors;
37
+
38
+ /**
39
+ * @var array[]
40
+ * @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
41
+ */
42
  private static $installedByVendor = array();
43
 
44
  /**
241
 
242
  /**
243
  * @return array
244
+ * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
245
  */
246
  public static function getRootPackage()
247
  {
255
  *
256
  * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
257
  * @return array[]
258
+ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
259
  */
260
  public static function getRawData()
261
  {
278
  * Returns the raw data of all installed.php which are currently loaded for custom implementations
279
  *
280
  * @return array[]
281
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
282
  */
283
  public static function getAllRawData()
284
  {
301
  * @param array[] $data A vendor/composer/installed.php data set
302
  * @return void
303
  *
304
+ * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
305
  */
306
  public static function reload($data)
307
  {
311
 
312
  /**
313
  * @return array[]
314
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
315
  */
316
  private static function getInstalled()
317
  {
includes/gateways/stripe/vendor/composer/LICENSE CHANGED
@@ -1,3 +1,4 @@
 
1
  Copyright (c) Nils Adermann, Jordi Boggiano
2
 
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -17,3 +18,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
  THE SOFTWARE.
 
1
+
2
  Copyright (c) Nils Adermann, Jordi Boggiano
3
 
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
18
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
  THE SOFTWARE.
21
+
includes/gateways/stripe/vendor/composer/autoload_classmap.php CHANGED
@@ -6,4 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
9
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
  );
includes/gateways/stripe/vendor/composer/autoload_real.php CHANGED
@@ -22,13 +22,15 @@ class ComposerAutoloaderInitce2073d68aa3da842e5b37a3b60e999a
22
  return self::$loader;
23
  }
24
 
 
 
25
  spl_autoload_register(array('ComposerAutoloaderInitce2073d68aa3da842e5b37a3b60e999a', 'loadClassLoader'), true, true);
26
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
  spl_autoload_unregister(array('ComposerAutoloaderInitce2073d68aa3da842e5b37a3b60e999a', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
- require_once __DIR__ . '/autoload_static.php';
32
 
33
  call_user_func(\Composer\Autoload\ComposerStaticInitce2073d68aa3da842e5b37a3b60e999a::getInitializer($loader));
34
  } else {
22
  return self::$loader;
23
  }
24
 
25
+ require __DIR__ . '/platform_check.php';
26
+
27
  spl_autoload_register(array('ComposerAutoloaderInitce2073d68aa3da842e5b37a3b60e999a', 'loadClassLoader'), true, true);
28
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
  spl_autoload_unregister(array('ComposerAutoloaderInitce2073d68aa3da842e5b37a3b60e999a', 'loadClassLoader'));
30
 
31
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
  if ($useStaticLoader) {
33
+ require __DIR__ . '/autoload_static.php';
34
 
35
  call_user_func(\Composer\Autoload\ComposerStaticInitce2073d68aa3da842e5b37a3b60e999a::getInitializer($loader));
36
  } else {
includes/gateways/stripe/vendor/composer/autoload_static.php CHANGED
@@ -28,11 +28,16 @@ class ComposerStaticInitce2073d68aa3da842e5b37a3b60e999a
28
  ),
29
  );
30
 
 
 
 
 
31
  public static function getInitializer(ClassLoader $loader)
32
  {
33
  return \Closure::bind(function () use ($loader) {
34
  $loader->prefixLengthsPsr4 = ComposerStaticInitce2073d68aa3da842e5b37a3b60e999a::$prefixLengthsPsr4;
35
  $loader->prefixDirsPsr4 = ComposerStaticInitce2073d68aa3da842e5b37a3b60e999a::$prefixDirsPsr4;
 
36
 
37
  }, null, ClassLoader::class);
38
  }
28
  ),
29
  );
30
 
31
+ public static $classMap = array (
32
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
33
+ );
34
+
35
  public static function getInitializer(ClassLoader $loader)
36
  {
37
  return \Closure::bind(function () use ($loader) {
38
  $loader->prefixLengthsPsr4 = ComposerStaticInitce2073d68aa3da842e5b37a3b60e999a::$prefixLengthsPsr4;
39
  $loader->prefixDirsPsr4 = ComposerStaticInitce2073d68aa3da842e5b37a3b60e999a::$prefixDirsPsr4;
40
+ $loader->classMap = ComposerStaticInitce2073d68aa3da842e5b37a3b60e999a::$classMap;
41
 
42
  }, null, ClassLoader::class);
43
  }
includes/gateways/stripe/vendor/composer/installed.json CHANGED
@@ -1,217 +1,223 @@
1
- [
2
- {
3
- "name": "composer/installers",
4
- "version": "v1.11.0",
5
- "version_normalized": "1.11.0.0",
6
- "source": {
7
- "type": "git",
8
- "url": "https://github.com/composer/installers.git",
9
- "reference": "ae03311f45dfe194412081526be2e003960df74b"
10
- },
11
- "dist": {
12
- "type": "zip",
13
- "url": "https://api.github.com/repos/composer/installers/zipball/ae03311f45dfe194412081526be2e003960df74b",
14
- "reference": "ae03311f45dfe194412081526be2e003960df74b",
15
- "shasum": ""
16
- },
17
- "require": {
18
- "composer-plugin-api": "^1.0 || ^2.0"
19
- },
20
- "replace": {
21
- "roundcube/plugin-installer": "*",
22
- "shama/baton": "*"
23
- },
24
- "require-dev": {
25
- "composer/composer": "1.6.* || ^2.0",
26
- "composer/semver": "^1 || ^3",
27
- "phpstan/phpstan": "^0.12.55",
28
- "phpstan/phpstan-phpunit": "^0.12.16",
29
- "symfony/phpunit-bridge": "^4.2 || ^5",
30
- "symfony/process": "^2.3"
31
- },
32
- "time": "2021-04-28T06:42:17+00:00",
33
- "type": "composer-plugin",
34
- "extra": {
35
- "class": "Composer\\Installers\\Plugin",
36
- "branch-alias": {
37
- "dev-main": "1.x-dev"
38
- }
39
- },
40
- "installation-source": "dist",
41
- "autoload": {
42
- "psr-4": {
43
- "Composer\\Installers\\": "src/Composer/Installers"
44
- }
45
- },
46
- "notification-url": "https://packagist.org/downloads/",
47
- "license": [
48
- "MIT"
49
- ],
50
- "authors": [
51
- {
52
- "name": "Kyle Robinson Young",
53
- "email": "kyle@dontkry.com",
54
- "homepage": "https://github.com/shama"
55
- }
56
- ],
57
- "description": "A multi-framework Composer library installer",
58
- "homepage": "https://composer.github.io/installers/",
59
- "keywords": [
60
- "Craft",
61
- "Dolibarr",
62
- "Eliasis",
63
- "Hurad",
64
- "ImageCMS",
65
- "Kanboard",
66
- "Lan Management System",
67
- "MODX Evo",
68
- "MantisBT",
69
- "Mautic",
70
- "Maya",
71
- "OXID",
72
- "Plentymarkets",
73
- "Porto",
74
- "RadPHP",
75
- "SMF",
76
- "Starbug",
77
- "Thelia",
78
- "Whmcs",
79
- "WolfCMS",
80
- "agl",
81
- "aimeos",
82
- "annotatecms",
83
- "attogram",
84
- "bitrix",
85
- "cakephp",
86
- "chef",
87
- "cockpit",
88
- "codeigniter",
89
- "concrete5",
90
- "croogo",
91
- "dokuwiki",
92
- "drupal",
93
- "eZ Platform",
94
- "elgg",
95
- "expressionengine",
96
- "fuelphp",
97
- "grav",
98
- "installer",
99
- "itop",
100
- "joomla",
101
- "known",
102
- "kohana",
103
- "laravel",
104
- "lavalite",
105
- "lithium",
106
- "magento",
107
- "majima",
108
- "mako",
109
- "mediawiki",
110
- "miaoxing",
111
- "modulework",
112
- "modx",
113
- "moodle",
114
- "osclass",
115
- "phpbb",
116
- "piwik",
117
- "ppi",
118
- "processwire",
119
- "puppet",
120
- "pxcms",
121
- "reindex",
122
- "roundcube",
123
- "shopware",
124
- "silverstripe",
125
- "sydes",
126
- "sylius",
127
- "symfony",
128
- "tastyigniter",
129
- "typo3",
130
- "wordpress",
131
- "yawik",
132
- "zend",
133
- "zikula"
134
- ],
135
- "support": {
136
- "issues": "https://github.com/composer/installers/issues",
137
- "source": "https://github.com/composer/installers/tree/v1.11.0"
138
- },
139
- "funding": [
140
- {
141
- "url": "https://packagist.com",
142
- "type": "custom"
143
  },
144
- {
145
- "url": "https://github.com/composer",
146
- "type": "github"
 
 
147
  },
148
- {
149
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
150
- "type": "tidelift"
151
- }
152
- ]
153
- },
154
- {
155
- "name": "stripe/stripe-php",
156
- "version": "v7.47.0",
157
- "version_normalized": "7.47.0.0",
158
- "source": {
159
- "type": "git",
160
- "url": "https://github.com/stripe/stripe-php.git",
161
- "reference": "b51656cb398d081fcee53a76f6edb8fd5c1a5306"
162
- },
163
- "dist": {
164
- "type": "zip",
165
- "url": "https://api.github.com/repos/stripe/stripe-php/zipball/b51656cb398d081fcee53a76f6edb8fd5c1a5306",
166
- "reference": "b51656cb398d081fcee53a76f6edb8fd5c1a5306",
167
- "shasum": ""
168
- },
169
- "require": {
170
- "ext-curl": "*",
171
- "ext-json": "*",
172
- "ext-mbstring": "*",
173
- "php": ">=5.6.0"
174
- },
175
- "require-dev": {
176
- "friendsofphp/php-cs-fixer": "2.16.1",
177
- "php-coveralls/php-coveralls": "^2.1",
178
- "phpunit/phpunit": "^5.7",
179
- "squizlabs/php_codesniffer": "^3.3",
180
- "symfony/process": "~3.4"
181
- },
182
- "time": "2020-08-13T22:35:56+00:00",
183
- "type": "library",
184
- "extra": {
185
- "branch-alias": {
186
- "dev-master": "2.0-dev"
187
- }
188
- },
189
- "installation-source": "dist",
190
- "autoload": {
191
- "psr-4": {
192
- "Stripe\\": "lib/"
193
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194
  },
195
- "notification-url": "https://packagist.org/downloads/",
196
- "license": [
197
- "MIT"
198
- ],
199
- "authors": [
200
- {
201
- "name": "Stripe and contributors",
202
- "homepage": "https://github.com/stripe/stripe-php/contributors"
203
- }
204
- ],
205
- "description": "Stripe PHP Library",
206
- "homepage": "https://stripe.com/",
207
- "keywords": [
208
- "api",
209
- "payment processing",
210
- "stripe"
211
- ],
212
- "support": {
213
- "issues": "https://github.com/stripe/stripe-php/issues",
214
- "source": "https://github.com/stripe/stripe-php/tree/v7.47.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
215
  }
216
- }
217
- ]
 
 
1
+ {
2
+ "packages": [
3
+ {
4
+ "name": "composer/installers",
5
+ "version": "v1.11.0",
6
+ "version_normalized": "1.11.0.0",
7
+ "source": {
8
+ "type": "git",
9
+ "url": "https://github.com/composer/installers.git",
10
+ "reference": "ae03311f45dfe194412081526be2e003960df74b"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  },
12
+ "dist": {
13
+ "type": "zip",
14
+ "url": "https://api.github.com/repos/composer/installers/zipball/ae03311f45dfe194412081526be2e003960df74b",
15
+ "reference": "ae03311f45dfe194412081526be2e003960df74b",
16
+ "shasum": ""
17
  },
18
+ "require": {
19
+ "composer-plugin-api": "^1.0 || ^2.0"
20
+ },
21
+ "replace": {
22
+ "roundcube/plugin-installer": "*",
23
+ "shama/baton": "*"
24
+ },
25
+ "require-dev": {
26
+ "composer/composer": "1.6.* || ^2.0",
27
+ "composer/semver": "^1 || ^3",
28
+ "phpstan/phpstan": "^0.12.55",
29
+ "phpstan/phpstan-phpunit": "^0.12.16",
30
+ "symfony/phpunit-bridge": "^4.2 || ^5",
31
+ "symfony/process": "^2.3"
32
+ },
33
+ "time": "2021-04-28T06:42:17+00:00",
34
+ "type": "composer-plugin",
35
+ "extra": {
36
+ "class": "Composer\\Installers\\Plugin",
37
+ "branch-alias": {
38
+ "dev-main": "1.x-dev"
39
+ }
40
+ },
41
+ "installation-source": "dist",
42
+ "autoload": {
43
+ "psr-4": {
44
+ "Composer\\Installers\\": "src/Composer/Installers"
45
+ }
46
+ },
47
+ "notification-url": "https://packagist.org/downloads/",
48
+ "license": [
49
+ "MIT"
50
+ ],
51
+ "authors": [
52
+ {
53
+ "name": "Kyle Robinson Young",
54
+ "email": "kyle@dontkry.com",
55
+ "homepage": "https://github.com/shama"
56
+ }
57
+ ],
58
+ "description": "A multi-framework Composer library installer",
59
+ "homepage": "https://composer.github.io/installers/",
60
+ "keywords": [
61
+ "Craft",
62
+ "Dolibarr",
63
+ "Eliasis",
64
+ "Hurad",
65
+ "ImageCMS",
66
+ "Kanboard",
67
+ "Lan Management System",
68
+ "MODX Evo",
69
+ "MantisBT",
70
+ "Mautic",
71
+ "Maya",
72
+ "OXID",
73
+ "Plentymarkets",
74
+ "Porto",
75
+ "RadPHP",
76
+ "SMF",
77
+ "Starbug",
78
+ "Thelia",
79
+ "Whmcs",
80
+ "WolfCMS",
81
+ "agl",
82
+ "aimeos",
83
+ "annotatecms",
84
+ "attogram",
85
+ "bitrix",
86
+ "cakephp",
87
+ "chef",
88
+ "cockpit",
89
+ "codeigniter",
90
+ "concrete5",
91
+ "croogo",
92
+ "dokuwiki",
93
+ "drupal",
94
+ "eZ Platform",
95
+ "elgg",
96
+ "expressionengine",
97
+ "fuelphp",
98
+ "grav",
99
+ "installer",
100
+ "itop",
101
+ "joomla",
102
+ "known",
103
+ "kohana",
104
+ "laravel",
105
+ "lavalite",
106
+ "lithium",
107
+ "magento",
108
+ "majima",
109
+ "mako",
110
+ "mediawiki",
111
+ "miaoxing",
112
+ "modulework",
113
+ "modx",
114
+ "moodle",
115
+ "osclass",
116
+ "phpbb",
117
+ "piwik",
118
+ "ppi",
119
+ "processwire",
120
+ "puppet",
121
+ "pxcms",
122
+ "reindex",
123
+ "roundcube",
124
+ "shopware",
125
+ "silverstripe",
126
+ "sydes",
127
+ "sylius",
128
+ "symfony",
129
+ "tastyigniter",
130
+ "typo3",
131
+ "wordpress",
132
+ "yawik",
133
+ "zend",
134
+ "zikula"
135
+ ],
136
+ "support": {
137
+ "issues": "https://github.com/composer/installers/issues",
138
+ "source": "https://github.com/composer/installers/tree/v1.11.0"
139
+ },
140
+ "funding": [
141
+ {
142
+ "url": "https://packagist.com",
143
+ "type": "custom"
144
+ },
145
+ {
146
+ "url": "https://github.com/composer",
147
+ "type": "github"
148
+ },
149
+ {
150
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
151
+ "type": "tidelift"
152
+ }
153
+ ],
154
+ "install-path": "./installers"
155
  },
156
+ {
157
+ "name": "stripe/stripe-php",
158
+ "version": "v7.47.0",
159
+ "version_normalized": "7.47.0.0",
160
+ "source": {
161
+ "type": "git",
162
+ "url": "https://github.com/stripe/stripe-php.git",
163
+ "reference": "b51656cb398d081fcee53a76f6edb8fd5c1a5306"
164
+ },
165
+ "dist": {
166
+ "type": "zip",
167
+ "url": "https://api.github.com/repos/stripe/stripe-php/zipball/b51656cb398d081fcee53a76f6edb8fd5c1a5306",
168
+ "reference": "b51656cb398d081fcee53a76f6edb8fd5c1a5306",
169
+ "shasum": ""
170
+ },
171
+ "require": {
172
+ "ext-curl": "*",
173
+ "ext-json": "*",
174
+ "ext-mbstring": "*",
175
+ "php": ">=5.6.0"
176
+ },
177
+ "require-dev": {
178
+ "friendsofphp/php-cs-fixer": "2.16.1",
179
+ "php-coveralls/php-coveralls": "^2.1",
180
+ "phpunit/phpunit": "^5.7",
181
+ "squizlabs/php_codesniffer": "^3.3",
182
+ "symfony/process": "~3.4"
183
+ },
184
+ "time": "2020-08-13T22:35:56+00:00",
185
+ "type": "library",
186
+ "extra": {
187
+ "branch-alias": {
188
+ "dev-master": "2.0-dev"
189
+ }
190
+ },
191
+ "installation-source": "dist",
192
+ "autoload": {
193
+ "psr-4": {
194
+ "Stripe\\": "lib/"
195
+ }
196
+ },
197
+ "notification-url": "https://packagist.org/downloads/",
198
+ "license": [
199
+ "MIT"
200
+ ],
201
+ "authors": [
202
+ {
203
+ "name": "Stripe and contributors",
204
+ "homepage": "https://github.com/stripe/stripe-php/contributors"
205
+ }
206
+ ],
207
+ "description": "Stripe PHP Library",
208
+ "homepage": "https://stripe.com/",
209
+ "keywords": [
210
+ "api",
211
+ "payment processing",
212
+ "stripe"
213
+ ],
214
+ "support": {
215
+ "issues": "https://github.com/stripe/stripe-php/issues",
216
+ "source": "https://github.com/stripe/stripe-php/tree/v7.47.0"
217
+ },
218
+ "install-path": "../stripe/stripe-php"
219
  }
220
+ ],
221
+ "dev": false,
222
+ "dev-package-names": []
223
+ }
includes/gateways/stripe/vendor/composer/installed.php CHANGED
@@ -5,7 +5,7 @@
5
  'type' => 'wordpress-plugin',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
- 'reference' => 'e7f98d164d4da798f7126fec7d294fce16299e5d',
9
  'name' => 'easy-digital-downloads/edd-stripe',
10
  'dev' => false,
11
  ),
@@ -25,7 +25,7 @@
25
  'type' => 'wordpress-plugin',
26
  'install_path' => __DIR__ . '/../../',
27
  'aliases' => array(),
28
- 'reference' => 'e7f98d164d4da798f7126fec7d294fce16299e5d',
29
  'dev_requirement' => false,
30
  ),
31
  'roundcube/plugin-installer' => array(
5
  'type' => 'wordpress-plugin',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
+ 'reference' => 'a624654f272e48561b9fb698336f1e55c230df51',
9
  'name' => 'easy-digital-downloads/edd-stripe',
10
  'dev' => false,
11
  ),
25
  'type' => 'wordpress-plugin',
26
  'install_path' => __DIR__ . '/../../',
27
  'aliases' => array(),
28
+ 'reference' => 'a624654f272e48561b9fb698336f1e55c230df51',
29
  'dev_requirement' => false,
30
  ),
31
  'roundcube/plugin-installer' => array(
includes/payments/class-edd-payment.php CHANGED
@@ -20,6 +20,43 @@ if( ! defined( 'ABSPATH' ) ) exit;
20
  * EDD_Payment Class
21
  *
22
  * @since 2.5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  */
24
  class EDD_Payment {
25
 
20
  * EDD_Payment Class
21
  *
22
  * @since 2.5
23
+ *
24
+ * @property int $ID
25
+ * @property int $_ID
26
+ * @property bool $new
27
+ * @property string $number
28
+ * @property string $mode
29
+ * @property string $key
30
+ * @property float $total
31
+ * @property float $subtotal
32
+ * @property float $tax
33
+ * @property float $discounted_amount
34
+ * @property float $tax_rate
35
+ * @property array $fees
36
+ * @property float $fees_total
37
+ * @property string $discounts
38
+ * @property string $date
39
+ * @property string $completed_date
40
+ * @property string $status
41
+ * @property string $post_status
42
+ * @property string $old_status
43
+ * @property string $status_nicename
44
+ * @property int $customer_id
45
+ * @property int $user_id
46
+ * @property string $first_name
47
+ * @property string $last_name
48
+ * @property string $email
49
+ * @property array $user_info
50
+ * @property array $payment_meta
51
+ * @property array $address
52
+ * @property string $transaction_id
53
+ * @property array $downloads
54
+ * @property string $ip
55
+ * @property string $gateway
56
+ * @property string $currency
57
+ * @property array $cart_details
58
+ * @property bool $has_unlimited_downloads
59
+ * @property int $parent_payment
60
  */
61
  class EDD_Payment {
62
 
includes/payments/functions.php CHANGED
@@ -714,7 +714,7 @@ function edd_get_payment_status( $payment, $return_label = false ) {
714
  } else {
715
  $keys = edd_get_payment_status_keys();
716
  $found_key = array_search( strtolower( $payment->status ), $keys );
717
- $status = array_key_exists( $found_key, $keys ) ? $keys[ $found_key ] : false;
718
  }
719
 
720
  return ! empty( $status ) ? $status : false;
714
  } else {
715
  $keys = edd_get_payment_status_keys();
716
  $found_key = array_search( strtolower( $payment->status ), $keys );
717
+ $status = $found_key && array_key_exists( $found_key, $keys ) ? $keys[ $found_key ] : false;
718
  }
719
 
720
  return ! empty( $status ) ? $status : false;
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.11.4.1\n"
6
  "Report-Msgid-Bugs-To: https://easydigitaldownloads.com/\n"
7
- "POT-Creation-Date: 2022-01-07 14:28:31+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -70,7 +70,7 @@ msgstr ""
70
  #: includes/admin/downloads/dashboard-columns.php:171
71
  #: includes/admin/import/class-batch-import-downloads.php:65
72
  #: includes/admin/import/class-batch-import-payments.php:76
73
- #: includes/admin/import/class-batch-import.php:156
74
  #: includes/admin/payments/actions.php:25
75
  #: includes/admin/payments/actions.php:295
76
  #: includes/admin/payments/actions.php:318
@@ -287,67 +287,67 @@ msgstr ""
287
  msgid "Generate New API Keys"
288
  msgstr ""
289
 
290
- #: includes/admin/class-edd-notices.php:48 includes/template-functions.php:61
291
  msgid ""
292
  "No checkout page has been configured. Visit <a href=\"%s\">Settings</a> to "
293
  "set one."
294
  msgstr ""
295
 
296
- #: includes/admin/class-edd-notices.php:49
297
- #: includes/admin/class-edd-notices.php:70
298
- #: includes/admin/class-edd-notices.php:87
299
  #: includes/gateways/paypal/admin/notices.php:58
300
  msgid "Dismiss Notice"
301
  msgstr ""
302
 
303
- #: includes/admin/class-edd-notices.php:56
304
  msgid ""
305
  "Note: Test Mode is enabled. While in test mode no live transactions are "
306
  "processed. <a href=\"%s\">Settings</a>."
307
  msgstr ""
308
 
309
- #: includes/admin/class-edd-notices.php:67
310
  msgid ""
311
  "The download files in %s are not currently protected due to your site "
312
  "running on NGINX."
313
  msgstr ""
314
 
315
- #: includes/admin/class-edd-notices.php:68
316
  msgid ""
317
  "To protect them, you must add a redirect rule as explained in <a "
318
  "href=\"http://docs.easydigitaldownloads.com/article/682-protected-download-"
319
  "files-on-nginx\">this guide</a>."
320
  msgstr ""
321
 
322
- #: includes/admin/class-edd-notices.php:69
323
  msgid ""
324
  "If you have already added the redirect rule, you may safely dismiss this "
325
  "notice"
326
  msgstr ""
327
 
328
- #: includes/admin/class-edd-notices.php:84
329
  msgid "The Easy Digital Downloads .htaccess file is missing from %s!"
330
  msgstr ""
331
 
332
- #: includes/admin/class-edd-notices.php:85
333
  msgid ""
334
  "First, please resave the Misc settings tab a few times. If this warning "
335
  "continues to appear, create a file called \".htaccess\" in the %s "
336
  "directory, and copy the following into it:"
337
  msgstr ""
338
 
339
- #: includes/admin/class-edd-notices.php:99
340
  msgid ""
341
  "Easy Digital Downloads 2.5 contains a <a href=\"%s\">built in recount "
342
  "tool</a>. Please <a href=\"%s\">deactivate the Easy Digital Downloads - "
343
  "Recount Earnings plugin</a>"
344
  msgstr ""
345
 
346
- #: includes/admin/class-edd-notices.php:114
347
  msgid "Upgrade PHP to Prepare for Easy Digital Downloads 3.0"
348
  msgstr ""
349
 
350
- #: includes/admin/class-edd-notices.php:127
351
  #. translators: %1$s Opening paragraph tag, do not translate. %2$s
352
  #. Current PHP version %3$s Opening strong tag, do not translate.
353
  #. %4$s Closing strong tag, do not translate. %5$s Opening anchor
@@ -362,7 +362,7 @@ msgid ""
362
  "more about updating PHP.%6$s%7$s"
363
  msgstr ""
364
 
365
- #: includes/admin/class-edd-notices.php:145
366
  #. translators: %1$s Opening paragraph tag, do not translate. %2$s
367
  #. Opening anchor tag, do not translate. %3$s Closing anchor tag, do not
368
  #. translate. %4$s Closing paragraph tag, do not translate.
@@ -373,128 +373,162 @@ msgid ""
373
  "recommendations%3$s."
374
  msgstr ""
375
 
376
- #: includes/admin/class-edd-notices.php:155
377
  #. Translators: %1$s - Opening anchor tag, %2$s - The url to dismiss the ajax
378
  #. notice, %3$s - Complete the opening of the anchor tag, %4$s - Open span tag,
379
  #. %4$s - Close span tag
380
  msgid "%1$s%2$s%3$s %4$s Dismiss this notice. %5$s"
381
  msgstr ""
382
 
383
- #: includes/admin/class-edd-notices.php:189
384
  msgid "Discount code added."
385
  msgstr ""
386
 
387
- #: includes/admin/class-edd-notices.php:192
388
  msgid "There was a problem adding your discount code, please try again."
389
  msgstr ""
390
 
391
- #: includes/admin/class-edd-notices.php:195
392
  msgid "A discount with that code already exists, please use a different code."
393
  msgstr ""
394
 
395
- #: includes/admin/class-edd-notices.php:198
396
  #: includes/admin/discounts/edit-discount.php:33
397
  msgid "Discount code updated."
398
  msgstr ""
399
 
400
- #: includes/admin/class-edd-notices.php:201
401
  msgid "There was a problem updating your discount code, please try again."
402
  msgstr ""
403
 
404
- #: includes/admin/class-edd-notices.php:204
405
  msgid ""
406
  "The discount code could not be added because one or more of the required "
407
  "fields was empty, please try again."
408
  msgstr ""
409
 
410
- #: includes/admin/class-edd-notices.php:207
411
  msgid ""
412
  "The discount code entered is invalid; only alphanumeric characters are "
413
  "allowed, please try again."
414
  msgstr ""
415
 
416
- #: includes/admin/class-edd-notices.php:210
417
  msgid ""
418
  "The discount amount must be a valid percentage or numeric flat amount. "
419
  "Please try again."
420
  msgstr ""
421
 
422
- #: includes/admin/class-edd-notices.php:219
423
  msgid "The payment has been deleted."
424
  msgstr ""
425
 
426
- #: includes/admin/class-edd-notices.php:222
427
  msgid "The purchase receipt has been resent."
428
  msgstr ""
429
 
430
- #: includes/admin/class-edd-notices.php:225
431
  msgid "Failed to send purchase receipt."
432
  msgstr ""
433
 
434
- #: includes/admin/class-edd-notices.php:228
435
  msgid "The reports have been refreshed."
436
  msgstr ""
437
 
438
- #: includes/admin/class-edd-notices.php:231
439
  msgid "The payment note has been deleted."
440
  msgstr ""
441
 
442
- #: includes/admin/class-edd-notices.php:240
443
  msgid "The settings have been imported."
444
  msgstr ""
445
 
446
- #: includes/admin/class-edd-notices.php:243
447
  msgid "API keys successfully generated."
448
  msgstr ""
449
 
450
- #: includes/admin/class-edd-notices.php:246
451
  msgid "The specified user already has API keys."
452
  msgstr ""
453
 
454
- #: includes/admin/class-edd-notices.php:249
455
  msgid "API keys successfully regenerated."
456
  msgstr ""
457
 
458
- #: includes/admin/class-edd-notices.php:252
459
  msgid "API keys successfully revoked."
460
  msgstr ""
461
 
462
- #: includes/admin/class-edd-notices.php:261
463
  msgid "The payment note has been added successfully."
464
  msgstr ""
465
 
466
- #: includes/admin/class-edd-notices.php:264
467
  msgid "The payment has been successfully updated."
468
  msgstr ""
469
 
470
- #: includes/admin/class-edd-notices.php:273
471
  msgid "Customer successfully deleted"
472
  msgstr ""
473
 
474
- #: includes/admin/class-edd-notices.php:276
475
  msgid "User successfully verified"
476
  msgstr ""
477
 
478
- #: includes/admin/class-edd-notices.php:279
479
  msgid "Customer email added"
480
  msgstr ""
481
 
482
- #: includes/admin/class-edd-notices.php:282
483
  msgid "Customer email removed"
484
  msgstr ""
485
 
486
- #: includes/admin/class-edd-notices.php:285
487
  msgid "Failed to remove customer email"
488
  msgstr ""
489
 
490
- #: includes/admin/class-edd-notices.php:288
491
  msgid "Primary email updated for customer"
492
  msgstr ""
493
 
494
- #: includes/admin/class-edd-notices.php:291
495
  msgid "Failed to set primary email"
496
  msgstr ""
497
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
498
  #: includes/admin/customers/class-customer-table.php:72
499
  #: includes/admin/payments/class-payments-table.php:274
500
  #: includes/admin/reporting/class-file-downloads-logs-list-table.php:153
@@ -834,10 +868,10 @@ msgid "Make Primary"
834
  msgstr ""
835
 
836
  #: includes/admin/customers/customers.php:406
837
- #: includes/admin/downloads/metabox.php:439
838
- #: includes/admin/downloads/metabox.php:645
839
- #: includes/admin/downloads/metabox.php:701
840
- #: includes/admin/downloads/metabox.php:826
841
  #: includes/admin/payments/view-order-details.php:523
842
  #: includes/admin/settings/register-settings.php:2231 includes/scripts.php:227
843
  #: templates/checkout_cart.php:57 templates/checkout_cart.php:75
@@ -929,7 +963,7 @@ msgid "Purchased %s"
929
  msgstr ""
930
 
931
  #: includes/admin/customers/customers.php:486
932
- #: includes/admin/extensions/abstract-extension.php:308
933
  #. translators: the plural Downloads label.
934
  msgid "View %s"
935
  msgstr ""
@@ -1274,13 +1308,13 @@ msgstr ""
1274
 
1275
  #: includes/admin/discounts/class-discount-codes-table.php:126
1276
  #: includes/admin/discounts/edit-discount.php:188
1277
- #: includes/class-edd-discount.php:777
1278
  msgid "Active"
1279
  msgstr ""
1280
 
1281
  #: includes/admin/discounts/class-discount-codes-table.php:127
1282
  #: includes/admin/discounts/edit-discount.php:189
1283
- #: includes/class-edd-discount.php:773
1284
  msgid "Inactive"
1285
  msgstr ""
1286
 
@@ -1632,7 +1666,7 @@ msgstr ""
1632
 
1633
  #: includes/admin/downloads/dashboard-columns.php:34
1634
  #: includes/admin/downloads/dashboard-columns.php:286
1635
- #: includes/admin/downloads/metabox.php:459
1636
  #: includes/admin/payments/view-order-details.php:543
1637
  #: includes/admin/reporting/export/class-batch-export-downloads.php:51
1638
  #: templates/shortcode-receipt.php:130
@@ -1672,193 +1706,193 @@ msgstr ""
1672
  msgid "%1$s Stats"
1673
  msgstr ""
1674
 
1675
- #: includes/admin/downloads/metabox.php:301
1676
  msgid "Pricing Options:"
1677
  msgstr ""
1678
 
1679
- #: includes/admin/downloads/metabox.php:307
1680
  msgid "Enable variable pricing"
1681
  msgstr ""
1682
 
1683
- #: includes/admin/downloads/metabox.php:337
1684
  msgid ""
1685
  "Enable multi-option purchase mode. Allows multiple price options to be "
1686
  "added to your cart at once"
1687
  msgstr ""
1688
 
1689
- #: includes/admin/downloads/metabox.php:366
1690
  msgid "Add New Price"
1691
  msgstr ""
1692
 
1693
- #: includes/admin/downloads/metabox.php:429
1694
  msgid "Click and drag to re-order price options"
1695
  msgstr ""
1696
 
1697
- #: includes/admin/downloads/metabox.php:430
1698
  msgid "Price ID: %s"
1699
  msgstr ""
1700
 
1701
- #: includes/admin/downloads/metabox.php:436 includes/scripts.php:234
1702
  msgid "Show advanced settings"
1703
  msgstr ""
1704
 
1705
- #: includes/admin/downloads/metabox.php:439
1706
  msgid "Remove price option %s"
1707
  msgstr ""
1708
 
1709
- #: includes/admin/downloads/metabox.php:449
1710
- #: includes/admin/downloads/metabox.php:453
1711
  msgid "Option Name"
1712
  msgstr ""
1713
 
1714
- #: includes/admin/downloads/metabox.php:481 includes/download-functions.php:523
1715
  #: includes/gateways/stripe/includes/template-functions.php:404
1716
  msgid "Default"
1717
  msgstr ""
1718
 
1719
- #: includes/admin/downloads/metabox.php:484
1720
  msgid "Set ID %s as default price"
1721
  msgstr ""
1722
 
1723
- #: includes/admin/downloads/metabox.php:549
1724
  msgid "Product Type Options:"
1725
  msgstr ""
1726
 
1727
- #: includes/admin/downloads/metabox.php:560
1728
  msgid "Select a product type"
1729
  msgstr ""
1730
 
1731
- #: includes/admin/downloads/metabox.php:561
1732
  msgid ""
1733
  "<strong>Product Type</strong>: Sell this item as a single product, or use "
1734
  "the Bundle type to sell a collection of products."
1735
  msgstr ""
1736
 
1737
- #: includes/admin/downloads/metabox.php:594
1738
  msgid "Bundled %s"
1739
  msgstr ""
1740
 
1741
- #: includes/admin/downloads/metabox.php:602
1742
- #: includes/admin/downloads/metabox.php:662
1743
  msgid "Click and drag to re-order bundled %s"
1744
  msgstr ""
1745
 
1746
- #: includes/admin/downloads/metabox.php:606
1747
- #: includes/admin/downloads/metabox.php:666
1748
  msgid "Select %s:"
1749
  msgstr ""
1750
 
1751
- #: includes/admin/downloads/metabox.php:620
1752
- #: includes/admin/downloads/metabox.php:679
1753
  msgid "Price assignment:"
1754
  msgstr ""
1755
 
1756
- #: includes/admin/downloads/metabox.php:645
1757
  msgid "Remove bundle option %s"
1758
  msgstr ""
1759
 
1760
- #: includes/admin/downloads/metabox.php:656
1761
  msgid "Bundled %s:"
1762
  msgstr ""
1763
 
1764
- #: includes/admin/downloads/metabox.php:701
1765
  msgid "Remove bundle option 1"
1766
  msgstr ""
1767
 
1768
- #: includes/admin/downloads/metabox.php:711
1769
- #: includes/admin/downloads/metabox.php:779
1770
  msgid "Add New File"
1771
  msgstr ""
1772
 
1773
- #: includes/admin/downloads/metabox.php:821
1774
  msgid "Click and drag to re-order files"
1775
  msgstr ""
1776
 
1777
- #: includes/admin/downloads/metabox.php:822
1778
  msgid "%1$s file ID: %2$s"
1779
  msgstr ""
1780
 
1781
- #: includes/admin/downloads/metabox.php:826
1782
  msgid "Remove file %s"
1783
  msgstr ""
1784
 
1785
- #: includes/admin/downloads/metabox.php:834
1786
- #: includes/admin/downloads/metabox.php:840
1787
  msgid "File Name"
1788
  msgstr ""
1789
 
1790
- #: includes/admin/downloads/metabox.php:846
1791
  msgid "File URL"
1792
  msgstr ""
1793
 
1794
- #: includes/admin/downloads/metabox.php:851
1795
  msgid "Upload or enter the file URL"
1796
  msgstr ""
1797
 
1798
- #: includes/admin/downloads/metabox.php:856
1799
  msgid "Insert File"
1800
  msgstr ""
1801
 
1802
- #: includes/admin/downloads/metabox.php:856
1803
  msgid "Insert"
1804
  msgstr ""
1805
 
1806
- #: includes/admin/downloads/metabox.php:856
1807
  msgid "Upload a File"
1808
  msgstr ""
1809
 
1810
- #: includes/admin/downloads/metabox.php:863
1811
  msgid "Price Assignment"
1812
  msgstr ""
1813
 
1814
- #: includes/admin/downloads/metabox.php:863
1815
  msgid ""
1816
  "<strong>Price Assignment</strong>: With variable pricing enabled, you can "
1817
  "choose to allow certain price variations access to specific files, or allow "
1818
  "all price variations to access a file."
1819
  msgstr ""
1820
 
1821
- #: includes/admin/downloads/metabox.php:908
1822
  msgid "Insert into %s"
1823
  msgstr ""
1824
 
1825
- #: includes/admin/downloads/metabox.php:934
1826
  msgid "File Download Limit:"
1827
  msgstr ""
1828
 
1829
- #: includes/admin/downloads/metabox.php:941
1830
  msgid "Leave blank for global setting or 0 for unlimited"
1831
  msgstr ""
1832
 
1833
- #: includes/admin/downloads/metabox.php:943
1834
  msgid ""
1835
  "<strong>File Download Limit</strong>: Limit the number of times a customer "
1836
  "who purchased this product can access their download links."
1837
  msgstr ""
1838
 
1839
- #: includes/admin/downloads/metabox.php:979
1840
  msgid "Ignore Tax:"
1841
  msgstr ""
1842
 
1843
- #: includes/admin/downloads/metabox.php:985
1844
  msgid "Mark this product as exclusive of tax"
1845
  msgstr ""
1846
 
1847
- #: includes/admin/downloads/metabox.php:1007
1848
  msgid "Item Quantities:"
1849
  msgstr ""
1850
 
1851
- #: includes/admin/downloads/metabox.php:1013
1852
  msgid "Disable quantity input for this product"
1853
  msgstr ""
1854
 
1855
- #: includes/admin/downloads/metabox.php:1015
1856
  msgid ""
1857
  "<strong>Item Quantities</strong>: if disabled, customers will not be "
1858
  "provided an option to change the number they wish to purchase."
1859
  msgstr ""
1860
 
1861
- #: includes/admin/downloads/metabox.php:1034
1862
  #: includes/admin/settings/register-settings.php:799
1863
  #: includes/admin/thickbox.php:59 includes/checkout/template.php:1005
1864
  #: includes/gateways/stripe/includes/payment-methods/buy-now/template.php:214
@@ -1866,33 +1900,33 @@ msgstr ""
1866
  msgid "Purchase"
1867
  msgstr ""
1868
 
1869
- #: includes/admin/downloads/metabox.php:1041
1870
  msgid "Purchase Shortcode:"
1871
  msgstr ""
1872
 
1873
- #: includes/admin/downloads/metabox.php:1042
1874
  msgid ""
1875
  "<strong>Purchase Shortcode</strong>: Use this shortcode to output a "
1876
  "purchase link for this product in the location of your choosing."
1877
  msgstr ""
1878
 
1879
- #: includes/admin/downloads/metabox.php:1063
1880
  msgid "Accounting Options:"
1881
  msgstr ""
1882
 
1883
- #: includes/admin/downloads/metabox.php:1071
1884
  msgid "Enter an SKU for this %s."
1885
  msgstr ""
1886
 
1887
- #: includes/admin/downloads/metabox.php:1090
1888
  msgid "Button Options:"
1889
  msgstr ""
1890
 
1891
- #: includes/admin/downloads/metabox.php:1097
1892
  msgid "Disable the automatic output of the purchase button"
1893
  msgstr ""
1894
 
1895
- #: includes/admin/downloads/metabox.php:1098
1896
  msgid ""
1897
  "<strong>Automatic Output</strong>: By default, the purchase buttons will be "
1898
  "displayed at the bottom of the download, when disabled you will need to use "
@@ -1900,24 +1934,24 @@ msgid ""
1900
  "where you prefer."
1901
  msgstr ""
1902
 
1903
- #: includes/admin/downloads/metabox.php:1108
1904
  #: includes/admin/settings/register-settings.php:813
1905
  #: includes/admin/thickbox.php:101
1906
  msgid "Add to Cart"
1907
  msgstr ""
1908
 
1909
- #: includes/admin/downloads/metabox.php:1109
1910
  #: includes/admin/settings/register-settings.php:827
1911
  #: includes/gateways/stripe/includes/payment-methods/buy-now/template.php:47
1912
  #: includes/shortcodes.php:47 includes/template-functions.php:78
1913
  msgid "Buy Now"
1914
  msgstr ""
1915
 
1916
- #: includes/admin/downloads/metabox.php:1122
1917
  msgid "Purchase button behavior"
1918
  msgstr ""
1919
 
1920
- #: includes/admin/downloads/metabox.php:1124
1921
  msgid ""
1922
  "<strong>Button Behavior</strong>: Add to Cart buttons follow a traditional "
1923
  "eCommerce flow. A Buy Now button bypasses most of the process, taking the "
@@ -1925,32 +1959,32 @@ msgid ""
1925
  "process of buying the product."
1926
  msgstr ""
1927
 
1928
- #: includes/admin/downloads/metabox.php:1126
1929
  msgid ""
1930
  "<strong>Button Behavior</strong>: Add to Cart buttons follow a traditional "
1931
  "eCommerce flow. Buy Now buttons are only available for stores that have a "
1932
  "single supported gateway active and that do not use taxes."
1933
  msgstr ""
1934
 
1935
- #: includes/admin/downloads/metabox.php:1164
1936
  msgid ""
1937
  "Special notes or instructions for this product. These notes will be added "
1938
  "to the purchase receipt."
1939
  msgstr ""
1940
 
1941
- #: includes/admin/downloads/metabox.php:1191
1942
  msgid "Sales:"
1943
  msgstr ""
1944
 
1945
- #: includes/admin/downloads/metabox.php:1196
1946
  msgid "Earnings:"
1947
  msgstr ""
1948
 
1949
- #: includes/admin/downloads/metabox.php:1203
1950
  msgid "View File Download Log"
1951
  msgstr ""
1952
 
1953
- #: includes/admin/downloads/metabox.php:1230
1954
  #. Translators: The %s represents the link to the pricing page on the Easy
1955
  #. Digital Downloads website.
1956
  msgid ""
@@ -1959,22 +1993,22 @@ msgid ""
1959
  "6th CST. <a target=\"_blank\" href=\"%s\">Don't miss out</a>!"
1960
  msgstr ""
1961
 
1962
- #: includes/admin/extensions/abstract-extension.php:235
1963
  #. translators: The extension name.
1964
  msgid "Log In to Your Account to Download %s"
1965
  msgstr ""
1966
 
1967
- #: includes/admin/extensions/abstract-extension.php:243
1968
  #. translators: The extension name.
1969
  msgid "Upgrade Today to Access %s!"
1970
  msgstr ""
1971
 
1972
- #: includes/admin/extensions/abstract-extension.php:254
1973
  #. translators: The extension name.
1974
  msgid "Activate %s"
1975
  msgstr ""
1976
 
1977
- #: includes/admin/extensions/abstract-extension.php:320
1978
  #. translators: The extension name.
1979
  msgid "Configure %s"
1980
  msgstr ""
@@ -2041,34 +2075,34 @@ msgstr ""
2041
  msgid "Extension installed & activated."
2042
  msgstr ""
2043
 
2044
- #: includes/admin/extensions/product-education/class-email-marketing.php:49
2045
  msgid "Email Marketing"
2046
  msgstr ""
2047
 
2048
- #: includes/admin/extensions/product-education/class-email-marketing.php:65
2049
  #. translators: the product name
2050
  msgid "Get %s Today!"
2051
  msgstr ""
2052
 
2053
- #: includes/admin/extensions/product-education/class-email-marketing.php:83
2054
  msgid ""
2055
  "Looks like you have an email marketing extension installed, but we support "
2056
  "more providers!"
2057
  msgstr ""
2058
 
2059
- #: includes/admin/extensions/product-education/class-invoices.php:95
2060
  msgid "Invoices"
2061
  msgstr ""
2062
 
2063
- #: includes/admin/extensions/product-education/class-recurring.php:95
2064
  msgid "Recurring Payments"
2065
  msgstr ""
2066
 
2067
- #: includes/admin/extensions/product-education/class-reviews.php:100
2068
  msgid "Reviews"
2069
  msgstr ""
2070
 
2071
- #: includes/admin/extensions/product-education/class-reviews.php:120
2072
  msgid "Product Reviews"
2073
  msgstr ""
2074
 
@@ -2100,7 +2134,7 @@ msgstr ""
2100
 
2101
  #: includes/admin/import/class-batch-import-downloads.php:65
2102
  #: includes/admin/import/class-batch-import-payments.php:76
2103
- #: includes/admin/import/class-batch-import.php:156
2104
  msgid "You do not have permission to import data."
2105
  msgstr ""
2106
 
@@ -2109,7 +2143,7 @@ msgstr ""
2109
  msgid "Products (Raw)"
2110
  msgstr ""
2111
 
2112
- #: includes/admin/import/class-batch-import-payments.php:614
2113
  msgid "payments"
2114
  msgstr ""
2115
 
@@ -2688,21 +2722,6 @@ msgstr ""
2688
  msgid "Missing notice ID."
2689
  msgstr ""
2690
 
2691
- #: includes/admin/promos/class-promo-handler.php:116
2692
- #: includes/admin/promos/class-promo-handler.php:123
2693
- #: includes/admin/promos/class-promo-handler.php:128
2694
- #: includes/gateways/paypal/admin/connect.php:106
2695
- #: includes/gateways/paypal/admin/connect.php:182
2696
- #: includes/gateways/paypal/admin/connect.php:292
2697
- #: includes/gateways/paypal/admin/connect.php:455
2698
- #: includes/gateways/paypal/admin/connect.php:459
2699
- #: includes/gateways/paypal/admin/connect.php:511
2700
- #: includes/gateways/paypal/admin/connect.php:545
2701
- #: includes/gateways/paypal/admin/connect.php:568
2702
- #: includes/gateways/paypal/admin/connect.php:597
2703
- msgid "You do not have permission to perform this action."
2704
- msgstr ""
2705
-
2706
  #: includes/admin/promos/notices/abstract-notice.php:113
2707
  msgid "Dismiss notice"
2708
  msgstr ""
@@ -5698,7 +5717,7 @@ msgid "Cart restored successfully."
5698
  msgstr ""
5699
 
5700
  #: includes/cart/template.php:120
5701
- #: includes/gateways/stripe/includes/compat.php:216
5702
  msgid "Your cart is empty."
5703
  msgstr ""
5704
 
@@ -6313,41 +6332,41 @@ msgstr ""
6313
  msgid "Once Weekly"
6314
  msgstr ""
6315
 
6316
- #: includes/class-edd-customer.php:201 includes/class-edd-discount.php:253
6317
  #: includes/class-edd-download.php:196
6318
  msgid "Can't get property %s"
6319
  msgstr ""
6320
 
6321
- #: includes/class-edd-discount.php:770
6322
  #: includes/gateways/stripe/includes/template-functions.php:326
6323
  msgid "Expired"
6324
  msgstr ""
6325
 
6326
- #: includes/class-edd-discount.php:1516
6327
  msgid "This discount has reached its maximum usage."
6328
  msgstr ""
6329
 
6330
- #: includes/class-edd-discount.php:1549
6331
  msgid "Minimum order of %s not met."
6332
  msgstr ""
6333
 
6334
- #: includes/class-edd-discount.php:1635 includes/class-edd-discount.php:1664
6335
  msgid "The product requirements for this discount are not met."
6336
  msgstr ""
6337
 
6338
- #: includes/class-edd-discount.php:1682
6339
  msgid "This discount is not valid for the cart contents."
6340
  msgstr ""
6341
 
6342
- #: includes/class-edd-discount.php:1771
6343
  msgid "This discount has already been redeemed."
6344
  msgstr ""
6345
 
6346
- #: includes/class-edd-discount.php:1850
6347
  msgid "This discount is expired."
6348
  msgstr ""
6349
 
6350
- #: includes/class-edd-discount.php:1855
6351
  msgid "This discount is not active."
6352
  msgstr ""
6353
 
@@ -8462,7 +8481,7 @@ msgstr ""
8462
  msgid "The user information is invalid"
8463
  msgstr ""
8464
 
8465
- #: includes/gateways/stripe/includes/compat.php:220
8466
  #: includes/process-purchase.php:44
8467
  msgid ""
8468
  "Missing nonce when processing checkout. Please read the following for more "
@@ -8471,7 +8490,7 @@ msgid ""
8471
  "ajax-requests-in-easy-digital-downloads-2-9-4"
8472
  msgstr ""
8473
 
8474
- #: includes/gateways/stripe/includes/compat.php:227
8475
  #: includes/process-purchase.php:51
8476
  msgid "Error processing purchase. Please reload the page and try again."
8477
  msgstr ""
@@ -10505,12 +10524,12 @@ msgctxt "Apply discount at checkout"
10505
  msgid "Apply"
10506
  msgstr ""
10507
 
10508
- #: includes/class-edd-discount.php:1449
10509
  msgctxt "error shown when attempting to use a discount before its start date"
10510
  msgid "This discount is invalid."
10511
  msgstr ""
10512
 
10513
- #: includes/class-edd-discount.php:1819
10514
  msgctxt "error for when a discount is invalid based on its configuration"
10515
  msgid "This discount is invalid."
10516
  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 2.11.5\n"
6
  "Report-Msgid-Bugs-To: https://easydigitaldownloads.com/\n"
7
+ "POT-Creation-Date: 2022-01-27 12:49:30+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
70
  #: includes/admin/downloads/dashboard-columns.php:171
71
  #: includes/admin/import/class-batch-import-downloads.php:65
72
  #: includes/admin/import/class-batch-import-payments.php:76
73
+ #: includes/admin/import/class-batch-import.php:188
74
  #: includes/admin/payments/actions.php:25
75
  #: includes/admin/payments/actions.php:295
76
  #: includes/admin/payments/actions.php:318
287
  msgid "Generate New API Keys"
288
  msgstr ""
289
 
290
+ #: includes/admin/class-edd-notices.php:49 includes/template-functions.php:61
291
  msgid ""
292
  "No checkout page has been configured. Visit <a href=\"%s\">Settings</a> to "
293
  "set one."
294
  msgstr ""
295
 
296
+ #: includes/admin/class-edd-notices.php:50
297
+ #: includes/admin/class-edd-notices.php:71
298
+ #: includes/admin/class-edd-notices.php:88
299
  #: includes/gateways/paypal/admin/notices.php:58
300
  msgid "Dismiss Notice"
301
  msgstr ""
302
 
303
+ #: includes/admin/class-edd-notices.php:57
304
  msgid ""
305
  "Note: Test Mode is enabled. While in test mode no live transactions are "
306
  "processed. <a href=\"%s\">Settings</a>."
307
  msgstr ""
308
 
309
+ #: includes/admin/class-edd-notices.php:68
310
  msgid ""
311
  "The download files in %s are not currently protected due to your site "
312
  "running on NGINX."
313
  msgstr ""
314
 
315
+ #: includes/admin/class-edd-notices.php:69
316
  msgid ""
317
  "To protect them, you must add a redirect rule as explained in <a "
318
  "href=\"http://docs.easydigitaldownloads.com/article/682-protected-download-"
319
  "files-on-nginx\">this guide</a>."
320
  msgstr ""
321
 
322
+ #: includes/admin/class-edd-notices.php:70
323
  msgid ""
324
  "If you have already added the redirect rule, you may safely dismiss this "
325
  "notice"
326
  msgstr ""
327
 
328
+ #: includes/admin/class-edd-notices.php:85
329
  msgid "The Easy Digital Downloads .htaccess file is missing from %s!"
330
  msgstr ""
331
 
332
+ #: includes/admin/class-edd-notices.php:86
333
  msgid ""
334
  "First, please resave the Misc settings tab a few times. If this warning "
335
  "continues to appear, create a file called \".htaccess\" in the %s "
336
  "directory, and copy the following into it:"
337
  msgstr ""
338
 
339
+ #: includes/admin/class-edd-notices.php:100
340
  msgid ""
341
  "Easy Digital Downloads 2.5 contains a <a href=\"%s\">built in recount "
342
  "tool</a>. Please <a href=\"%s\">deactivate the Easy Digital Downloads - "
343
  "Recount Earnings plugin</a>"
344
  msgstr ""
345
 
346
+ #: includes/admin/class-edd-notices.php:115
347
  msgid "Upgrade PHP to Prepare for Easy Digital Downloads 3.0"
348
  msgstr ""
349
 
350
+ #: includes/admin/class-edd-notices.php:128
351
  #. translators: %1$s Opening paragraph tag, do not translate. %2$s
352
  #. Current PHP version %3$s Opening strong tag, do not translate.
353
  #. %4$s Closing strong tag, do not translate. %5$s Opening anchor
362
  "more about updating PHP.%6$s%7$s"
363
  msgstr ""
364
 
365
+ #: includes/admin/class-edd-notices.php:146
366
  #. translators: %1$s Opening paragraph tag, do not translate. %2$s
367
  #. Opening anchor tag, do not translate. %3$s Closing anchor tag, do not
368
  #. translate. %4$s Closing paragraph tag, do not translate.
373
  "recommendations%3$s."
374
  msgstr ""
375
 
376
+ #: includes/admin/class-edd-notices.php:156
377
  #. Translators: %1$s - Opening anchor tag, %2$s - The url to dismiss the ajax
378
  #. notice, %3$s - Complete the opening of the anchor tag, %4$s - Open span tag,
379
  #. %4$s - Close span tag
380
  msgid "%1$s%2$s%3$s %4$s Dismiss this notice. %5$s"
381
  msgstr ""
382
 
383
+ #: includes/admin/class-edd-notices.php:192
384
  msgid "Discount code added."
385
  msgstr ""
386
 
387
+ #: includes/admin/class-edd-notices.php:195
388
  msgid "There was a problem adding your discount code, please try again."
389
  msgstr ""
390
 
391
+ #: includes/admin/class-edd-notices.php:198
392
  msgid "A discount with that code already exists, please use a different code."
393
  msgstr ""
394
 
395
+ #: includes/admin/class-edd-notices.php:201
396
  #: includes/admin/discounts/edit-discount.php:33
397
  msgid "Discount code updated."
398
  msgstr ""
399
 
400
+ #: includes/admin/class-edd-notices.php:204
401
  msgid "There was a problem updating your discount code, please try again."
402
  msgstr ""
403
 
404
+ #: includes/admin/class-edd-notices.php:207
405
  msgid ""
406
  "The discount code could not be added because one or more of the required "
407
  "fields was empty, please try again."
408
  msgstr ""
409
 
410
+ #: includes/admin/class-edd-notices.php:210
411
  msgid ""
412
  "The discount code entered is invalid; only alphanumeric characters are "
413
  "allowed, please try again."
414
  msgstr ""
415
 
416
+ #: includes/admin/class-edd-notices.php:213
417
  msgid ""
418
  "The discount amount must be a valid percentage or numeric flat amount. "
419
  "Please try again."
420
  msgstr ""
421
 
422
+ #: includes/admin/class-edd-notices.php:222
423
  msgid "The payment has been deleted."
424
  msgstr ""
425
 
426
+ #: includes/admin/class-edd-notices.php:225
427
  msgid "The purchase receipt has been resent."
428
  msgstr ""
429
 
430
+ #: includes/admin/class-edd-notices.php:228
431
  msgid "Failed to send purchase receipt."
432
  msgstr ""
433
 
434
+ #: includes/admin/class-edd-notices.php:231
435
  msgid "The reports have been refreshed."
436
  msgstr ""
437
 
438
+ #: includes/admin/class-edd-notices.php:234
439
  msgid "The payment note has been deleted."
440
  msgstr ""
441
 
442
+ #: includes/admin/class-edd-notices.php:243
443
  msgid "The settings have been imported."
444
  msgstr ""
445
 
446
+ #: includes/admin/class-edd-notices.php:246
447
  msgid "API keys successfully generated."
448
  msgstr ""
449
 
450
+ #: includes/admin/class-edd-notices.php:249
451
  msgid "The specified user already has API keys."
452
  msgstr ""
453
 
454
+ #: includes/admin/class-edd-notices.php:252
455
  msgid "API keys successfully regenerated."
456
  msgstr ""
457
 
458
+ #: includes/admin/class-edd-notices.php:255
459
  msgid "API keys successfully revoked."
460
  msgstr ""
461
 
462
+ #: includes/admin/class-edd-notices.php:264
463
  msgid "The payment note has been added successfully."
464
  msgstr ""
465
 
466
+ #: includes/admin/class-edd-notices.php:267
467
  msgid "The payment has been successfully updated."
468
  msgstr ""
469
 
470
+ #: includes/admin/class-edd-notices.php:276
471
  msgid "Customer successfully deleted"
472
  msgstr ""
473
 
474
+ #: includes/admin/class-edd-notices.php:279
475
  msgid "User successfully verified"
476
  msgstr ""
477
 
478
+ #: includes/admin/class-edd-notices.php:282
479
  msgid "Customer email added"
480
  msgstr ""
481
 
482
+ #: includes/admin/class-edd-notices.php:285
483
  msgid "Customer email removed"
484
  msgstr ""
485
 
486
+ #: includes/admin/class-edd-notices.php:288
487
  msgid "Failed to remove customer email"
488
  msgstr ""
489
 
490
+ #: includes/admin/class-edd-notices.php:291
491
  msgid "Primary email updated for customer"
492
  msgstr ""
493
 
494
+ #: includes/admin/class-edd-notices.php:294
495
  msgid "Failed to set primary email"
496
  msgstr ""
497
 
498
+ #: includes/admin/class-edd-notices.php:344
499
+ msgid ""
500
+ "Easy Digital Downloads debug logging is enabled. Please only leave it "
501
+ "enabled for as long as it is needed for troubleshooting."
502
+ msgstr ""
503
+
504
+ #: includes/admin/class-edd-notices.php:347
505
+ msgid "View Debug Log"
506
+ msgstr ""
507
+
508
+ #: includes/admin/class-edd-notices.php:348
509
+ msgid "Delete Log File and Disable Logging"
510
+ msgstr ""
511
+
512
+ #: includes/admin/class-edd-notices.php:364
513
+ #: includes/admin/promos/class-promo-handler.php:116
514
+ #: includes/admin/promos/class-promo-handler.php:123
515
+ #: includes/admin/promos/class-promo-handler.php:128
516
+ #: includes/gateways/paypal/admin/connect.php:106
517
+ #: includes/gateways/paypal/admin/connect.php:182
518
+ #: includes/gateways/paypal/admin/connect.php:292
519
+ #: includes/gateways/paypal/admin/connect.php:455
520
+ #: includes/gateways/paypal/admin/connect.php:459
521
+ #: includes/gateways/paypal/admin/connect.php:511
522
+ #: includes/gateways/paypal/admin/connect.php:545
523
+ #: includes/gateways/paypal/admin/connect.php:568
524
+ #: includes/gateways/paypal/admin/connect.php:597
525
+ msgid "You do not have permission to perform this action."
526
+ msgstr ""
527
+
528
+ #: includes/admin/class-edd-notices.php:369
529
+ msgid "The debug log has been cleared and logging has been disabled."
530
+ msgstr ""
531
+
532
  #: includes/admin/customers/class-customer-table.php:72
533
  #: includes/admin/payments/class-payments-table.php:274
534
  #: includes/admin/reporting/class-file-downloads-logs-list-table.php:153
868
  msgstr ""
869
 
870
  #: includes/admin/customers/customers.php:406
871
+ #: includes/admin/downloads/metabox.php:442
872
+ #: includes/admin/downloads/metabox.php:650
873
+ #: includes/admin/downloads/metabox.php:706
874
+ #: includes/admin/downloads/metabox.php:831
875
  #: includes/admin/payments/view-order-details.php:523
876
  #: includes/admin/settings/register-settings.php:2231 includes/scripts.php:227
877
  #: templates/checkout_cart.php:57 templates/checkout_cart.php:75
963
  msgstr ""
964
 
965
  #: includes/admin/customers/customers.php:486
966
+ #: includes/admin/extensions/abstract-extension.php:315
967
  #. translators: the plural Downloads label.
968
  msgid "View %s"
969
  msgstr ""
1308
 
1309
  #: includes/admin/discounts/class-discount-codes-table.php:126
1310
  #: includes/admin/discounts/edit-discount.php:188
1311
+ #: includes/class-edd-discount.php:796
1312
  msgid "Active"
1313
  msgstr ""
1314
 
1315
  #: includes/admin/discounts/class-discount-codes-table.php:127
1316
  #: includes/admin/discounts/edit-discount.php:189
1317
+ #: includes/class-edd-discount.php:792
1318
  msgid "Inactive"
1319
  msgstr ""
1320
 
1666
 
1667
  #: includes/admin/downloads/dashboard-columns.php:34
1668
  #: includes/admin/downloads/dashboard-columns.php:286
1669
+ #: includes/admin/downloads/metabox.php:462
1670
  #: includes/admin/payments/view-order-details.php:543
1671
  #: includes/admin/reporting/export/class-batch-export-downloads.php:51
1672
  #: templates/shortcode-receipt.php:130
1706
  msgid "%1$s Stats"
1707
  msgstr ""
1708
 
1709
+ #: includes/admin/downloads/metabox.php:304
1710
  msgid "Pricing Options:"
1711
  msgstr ""
1712
 
1713
+ #: includes/admin/downloads/metabox.php:310
1714
  msgid "Enable variable pricing"
1715
  msgstr ""
1716
 
1717
+ #: includes/admin/downloads/metabox.php:340
1718
  msgid ""
1719
  "Enable multi-option purchase mode. Allows multiple price options to be "
1720
  "added to your cart at once"
1721
  msgstr ""
1722
 
1723
+ #: includes/admin/downloads/metabox.php:369
1724
  msgid "Add New Price"
1725
  msgstr ""
1726
 
1727
+ #: includes/admin/downloads/metabox.php:432
1728
  msgid "Click and drag to re-order price options"
1729
  msgstr ""
1730
 
1731
+ #: includes/admin/downloads/metabox.php:433
1732
  msgid "Price ID: %s"
1733
  msgstr ""
1734
 
1735
+ #: includes/admin/downloads/metabox.php:439 includes/scripts.php:234
1736
  msgid "Show advanced settings"
1737
  msgstr ""
1738
 
1739
+ #: includes/admin/downloads/metabox.php:442
1740
  msgid "Remove price option %s"
1741
  msgstr ""
1742
 
1743
+ #: includes/admin/downloads/metabox.php:452
1744
+ #: includes/admin/downloads/metabox.php:456
1745
  msgid "Option Name"
1746
  msgstr ""
1747
 
1748
+ #: includes/admin/downloads/metabox.php:484 includes/download-functions.php:523
1749
  #: includes/gateways/stripe/includes/template-functions.php:404
1750
  msgid "Default"
1751
  msgstr ""
1752
 
1753
+ #: includes/admin/downloads/metabox.php:487
1754
  msgid "Set ID %s as default price"
1755
  msgstr ""
1756
 
1757
+ #: includes/admin/downloads/metabox.php:552
1758
  msgid "Product Type Options:"
1759
  msgstr ""
1760
 
1761
+ #: includes/admin/downloads/metabox.php:563
1762
  msgid "Select a product type"
1763
  msgstr ""
1764
 
1765
+ #: includes/admin/downloads/metabox.php:564
1766
  msgid ""
1767
  "<strong>Product Type</strong>: Sell this item as a single product, or use "
1768
  "the Bundle type to sell a collection of products."
1769
  msgstr ""
1770
 
1771
+ #: includes/admin/downloads/metabox.php:597
1772
  msgid "Bundled %s"
1773
  msgstr ""
1774
 
1775
+ #: includes/admin/downloads/metabox.php:605
1776
+ #: includes/admin/downloads/metabox.php:667
1777
  msgid "Click and drag to re-order bundled %s"
1778
  msgstr ""
1779
 
1780
+ #: includes/admin/downloads/metabox.php:609
1781
+ #: includes/admin/downloads/metabox.php:671
1782
  msgid "Select %s:"
1783
  msgstr ""
1784
 
1785
+ #: includes/admin/downloads/metabox.php:623
1786
+ #: includes/admin/downloads/metabox.php:684
1787
  msgid "Price assignment:"
1788
  msgstr ""
1789
 
1790
+ #: includes/admin/downloads/metabox.php:650
1791
  msgid "Remove bundle option %s"
1792
  msgstr ""
1793
 
1794
+ #: includes/admin/downloads/metabox.php:661
1795
  msgid "Bundled %s:"
1796
  msgstr ""
1797
 
1798
+ #: includes/admin/downloads/metabox.php:706
1799
  msgid "Remove bundle option 1"
1800
  msgstr ""
1801
 
1802
+ #: includes/admin/downloads/metabox.php:716
1803
+ #: includes/admin/downloads/metabox.php:784
1804
  msgid "Add New File"
1805
  msgstr ""
1806
 
1807
+ #: includes/admin/downloads/metabox.php:826
1808
  msgid "Click and drag to re-order files"
1809
  msgstr ""
1810
 
1811
+ #: includes/admin/downloads/metabox.php:827
1812
  msgid "%1$s file ID: %2$s"
1813
  msgstr ""
1814
 
1815
+ #: includes/admin/downloads/metabox.php:831
1816
  msgid "Remove file %s"
1817
  msgstr ""
1818
 
1819
+ #: includes/admin/downloads/metabox.php:839
1820
+ #: includes/admin/downloads/metabox.php:845
1821
  msgid "File Name"
1822
  msgstr ""
1823
 
1824
+ #: includes/admin/downloads/metabox.php:851
1825
  msgid "File URL"
1826
  msgstr ""
1827
 
1828
+ #: includes/admin/downloads/metabox.php:856
1829
  msgid "Upload or enter the file URL"
1830
  msgstr ""
1831
 
1832
+ #: includes/admin/downloads/metabox.php:861
1833
  msgid "Insert File"
1834
  msgstr ""
1835
 
1836
+ #: includes/admin/downloads/metabox.php:861
1837
  msgid "Insert"
1838
  msgstr ""
1839
 
1840
+ #: includes/admin/downloads/metabox.php:861
1841
  msgid "Upload a File"
1842
  msgstr ""
1843
 
1844
+ #: includes/admin/downloads/metabox.php:868
1845
  msgid "Price Assignment"
1846
  msgstr ""
1847
 
1848
+ #: includes/admin/downloads/metabox.php:868
1849
  msgid ""
1850
  "<strong>Price Assignment</strong>: With variable pricing enabled, you can "
1851
  "choose to allow certain price variations access to specific files, or allow "
1852
  "all price variations to access a file."
1853
  msgstr ""
1854
 
1855
+ #: includes/admin/downloads/metabox.php:913
1856
  msgid "Insert into %s"
1857
  msgstr ""
1858
 
1859
+ #: includes/admin/downloads/metabox.php:939
1860
  msgid "File Download Limit:"
1861
  msgstr ""
1862
 
1863
+ #: includes/admin/downloads/metabox.php:946
1864
  msgid "Leave blank for global setting or 0 for unlimited"
1865
  msgstr ""
1866
 
1867
+ #: includes/admin/downloads/metabox.php:948
1868
  msgid ""
1869
  "<strong>File Download Limit</strong>: Limit the number of times a customer "
1870
  "who purchased this product can access their download links."
1871
  msgstr ""
1872
 
1873
+ #: includes/admin/downloads/metabox.php:984
1874
  msgid "Ignore Tax:"
1875
  msgstr ""
1876
 
1877
+ #: includes/admin/downloads/metabox.php:990
1878
  msgid "Mark this product as exclusive of tax"
1879
  msgstr ""
1880
 
1881
+ #: includes/admin/downloads/metabox.php:1012
1882
  msgid "Item Quantities:"
1883
  msgstr ""
1884
 
1885
+ #: includes/admin/downloads/metabox.php:1018
1886
  msgid "Disable quantity input for this product"
1887
  msgstr ""
1888
 
1889
+ #: includes/admin/downloads/metabox.php:1020
1890
  msgid ""
1891
  "<strong>Item Quantities</strong>: if disabled, customers will not be "
1892
  "provided an option to change the number they wish to purchase."
1893
  msgstr ""
1894
 
1895
+ #: includes/admin/downloads/metabox.php:1039
1896
  #: includes/admin/settings/register-settings.php:799
1897
  #: includes/admin/thickbox.php:59 includes/checkout/template.php:1005
1898
  #: includes/gateways/stripe/includes/payment-methods/buy-now/template.php:214
1900
  msgid "Purchase"
1901
  msgstr ""
1902
 
1903
+ #: includes/admin/downloads/metabox.php:1046
1904
  msgid "Purchase Shortcode:"
1905
  msgstr ""
1906
 
1907
+ #: includes/admin/downloads/metabox.php:1047
1908
  msgid ""
1909
  "<strong>Purchase Shortcode</strong>: Use this shortcode to output a "
1910
  "purchase link for this product in the location of your choosing."
1911
  msgstr ""
1912
 
1913
+ #: includes/admin/downloads/metabox.php:1068
1914
  msgid "Accounting Options:"
1915
  msgstr ""
1916
 
1917
+ #: includes/admin/downloads/metabox.php:1076
1918
  msgid "Enter an SKU for this %s."
1919
  msgstr ""
1920
 
1921
+ #: includes/admin/downloads/metabox.php:1095
1922
  msgid "Button Options:"
1923
  msgstr ""
1924
 
1925
+ #: includes/admin/downloads/metabox.php:1102
1926
  msgid "Disable the automatic output of the purchase button"
1927
  msgstr ""
1928
 
1929
+ #: includes/admin/downloads/metabox.php:1103
1930
  msgid ""
1931
  "<strong>Automatic Output</strong>: By default, the purchase buttons will be "
1932
  "displayed at the bottom of the download, when disabled you will need to use "
1934
  "where you prefer."
1935
  msgstr ""
1936
 
1937
+ #: includes/admin/downloads/metabox.php:1113
1938
  #: includes/admin/settings/register-settings.php:813
1939
  #: includes/admin/thickbox.php:101
1940
  msgid "Add to Cart"
1941
  msgstr ""
1942
 
1943
+ #: includes/admin/downloads/metabox.php:1114
1944
  #: includes/admin/settings/register-settings.php:827
1945
  #: includes/gateways/stripe/includes/payment-methods/buy-now/template.php:47
1946
  #: includes/shortcodes.php:47 includes/template-functions.php:78
1947
  msgid "Buy Now"
1948
  msgstr ""
1949
 
1950
+ #: includes/admin/downloads/metabox.php:1127
1951
  msgid "Purchase button behavior"
1952
  msgstr ""
1953
 
1954
+ #: includes/admin/downloads/metabox.php:1129
1955
  msgid ""
1956
  "<strong>Button Behavior</strong>: Add to Cart buttons follow a traditional "
1957
  "eCommerce flow. A Buy Now button bypasses most of the process, taking the "
1959
  "process of buying the product."
1960
  msgstr ""
1961
 
1962
+ #: includes/admin/downloads/metabox.php:1131
1963
  msgid ""
1964
  "<strong>Button Behavior</strong>: Add to Cart buttons follow a traditional "
1965
  "eCommerce flow. Buy Now buttons are only available for stores that have a "
1966
  "single supported gateway active and that do not use taxes."
1967
  msgstr ""
1968
 
1969
+ #: includes/admin/downloads/metabox.php:1169
1970
  msgid ""
1971
  "Special notes or instructions for this product. These notes will be added "
1972
  "to the purchase receipt."
1973
  msgstr ""
1974
 
1975
+ #: includes/admin/downloads/metabox.php:1196
1976
  msgid "Sales:"
1977
  msgstr ""
1978
 
1979
+ #: includes/admin/downloads/metabox.php:1201
1980
  msgid "Earnings:"
1981
  msgstr ""
1982
 
1983
+ #: includes/admin/downloads/metabox.php:1208
1984
  msgid "View File Download Log"
1985
  msgstr ""
1986
 
1987
+ #: includes/admin/downloads/metabox.php:1235
1988
  #. Translators: The %s represents the link to the pricing page on the Easy
1989
  #. Digital Downloads website.
1990
  msgid ""
1993
  "6th CST. <a target=\"_blank\" href=\"%s\">Don't miss out</a>!"
1994
  msgstr ""
1995
 
1996
+ #: includes/admin/extensions/abstract-extension.php:243
1997
  #. translators: The extension name.
1998
  msgid "Log In to Your Account to Download %s"
1999
  msgstr ""
2000
 
2001
+ #: includes/admin/extensions/abstract-extension.php:251
2002
  #. translators: The extension name.
2003
  msgid "Upgrade Today to Access %s!"
2004
  msgstr ""
2005
 
2006
+ #: includes/admin/extensions/abstract-extension.php:262
2007
  #. translators: The extension name.
2008
  msgid "Activate %s"
2009
  msgstr ""
2010
 
2011
+ #: includes/admin/extensions/abstract-extension.php:327
2012
  #. translators: The extension name.
2013
  msgid "Configure %s"
2014
  msgstr ""
2075
  msgid "Extension installed & activated."
2076
  msgstr ""
2077
 
2078
+ #: includes/admin/extensions/product-education/class-email-marketing.php:57
2079
  msgid "Email Marketing"
2080
  msgstr ""
2081
 
2082
+ #: includes/admin/extensions/product-education/class-email-marketing.php:73
2083
  #. translators: the product name
2084
  msgid "Get %s Today!"
2085
  msgstr ""
2086
 
2087
+ #: includes/admin/extensions/product-education/class-email-marketing.php:91
2088
  msgid ""
2089
  "Looks like you have an email marketing extension installed, but we support "
2090
  "more providers!"
2091
  msgstr ""
2092
 
2093
+ #: includes/admin/extensions/product-education/class-invoices.php:103
2094
  msgid "Invoices"
2095
  msgstr ""
2096
 
2097
+ #: includes/admin/extensions/product-education/class-recurring.php:103
2098
  msgid "Recurring Payments"
2099
  msgstr ""
2100
 
2101
+ #: includes/admin/extensions/product-education/class-reviews.php:108
2102
  msgid "Reviews"
2103
  msgstr ""
2104
 
2105
+ #: includes/admin/extensions/product-education/class-reviews.php:128
2106
  msgid "Product Reviews"
2107
  msgstr ""
2108
 
2134
 
2135
  #: includes/admin/import/class-batch-import-downloads.php:65
2136
  #: includes/admin/import/class-batch-import-payments.php:76
2137
+ #: includes/admin/import/class-batch-import.php:188
2138
  msgid "You do not have permission to import data."
2139
  msgstr ""
2140
 
2143
  msgid "Products (Raw)"
2144
  msgstr ""
2145
 
2146
+ #: includes/admin/import/class-batch-import-payments.php:621
2147
  msgid "payments"
2148
  msgstr ""
2149
 
2722
  msgid "Missing notice ID."
2723
  msgstr ""
2724
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2725
  #: includes/admin/promos/notices/abstract-notice.php:113
2726
  msgid "Dismiss notice"
2727
  msgstr ""
5717
  msgstr ""
5718
 
5719
  #: includes/cart/template.php:120
5720
+ #: includes/gateways/stripe/includes/compat.php:224
5721
  msgid "Your cart is empty."
5722
  msgstr ""
5723
 
6332
  msgid "Once Weekly"
6333
  msgstr ""
6334
 
6335
+ #: includes/class-edd-customer.php:201 includes/class-edd-discount.php:272
6336
  #: includes/class-edd-download.php:196
6337
  msgid "Can't get property %s"
6338
  msgstr ""
6339
 
6340
+ #: includes/class-edd-discount.php:789
6341
  #: includes/gateways/stripe/includes/template-functions.php:326
6342
  msgid "Expired"
6343
  msgstr ""
6344
 
6345
+ #: includes/class-edd-discount.php:1535
6346
  msgid "This discount has reached its maximum usage."
6347
  msgstr ""
6348
 
6349
+ #: includes/class-edd-discount.php:1568
6350
  msgid "Minimum order of %s not met."
6351
  msgstr ""
6352
 
6353
+ #: includes/class-edd-discount.php:1654 includes/class-edd-discount.php:1683
6354
  msgid "The product requirements for this discount are not met."
6355
  msgstr ""
6356
 
6357
+ #: includes/class-edd-discount.php:1701
6358
  msgid "This discount is not valid for the cart contents."
6359
  msgstr ""
6360
 
6361
+ #: includes/class-edd-discount.php:1790
6362
  msgid "This discount has already been redeemed."
6363
  msgstr ""
6364
 
6365
+ #: includes/class-edd-discount.php:1869
6366
  msgid "This discount is expired."
6367
  msgstr ""
6368
 
6369
+ #: includes/class-edd-discount.php:1874
6370
  msgid "This discount is not active."
6371
  msgstr ""
6372
 
8481
  msgid "The user information is invalid"
8482
  msgstr ""
8483
 
8484
+ #: includes/gateways/stripe/includes/compat.php:228
8485
  #: includes/process-purchase.php:44
8486
  msgid ""
8487
  "Missing nonce when processing checkout. Please read the following for more "
8490
  "ajax-requests-in-easy-digital-downloads-2-9-4"
8491
  msgstr ""
8492
 
8493
+ #: includes/gateways/stripe/includes/compat.php:235
8494
  #: includes/process-purchase.php:51
8495
  msgid "Error processing purchase. Please reload the page and try again."
8496
  msgstr ""
10524
  msgid "Apply"
10525
  msgstr ""
10526
 
10527
+ #: includes/class-edd-discount.php:1468
10528
  msgctxt "error shown when attempting to use a discount before its start date"
10529
  msgid "This discount is invalid."
10530
  msgstr ""
10531
 
10532
+ #: includes/class-edd-discount.php:1838
10533
  msgctxt "error for when a discount is invalid based on its configuration"
10534
  msgid "This discount is invalid."
10535
  msgstr ""
readme.txt CHANGED
@@ -5,12 +5,12 @@ Contributors: easydigitaldownloads, mordauk, sunnyratilal, chriscct7, section214
5
  Donate link: https://easydigitaldownloads.com/donate/
6
  Tags: ecommerce, e-commerce, sell, digital store, stripe
7
  Requires at least: 4.4
8
- Tested up to: 5.8
9
  Requires PHP: 5.4
10
- Stable Tag: 2.11.4.1
11
  License: GNU Version 2 or Any Later Version
12
 
13
- Sell your digital products the simple way. Easily build an online store complete with a cart system, checkout forms, reports, coupons, and more!
14
 
15
  == Description ==
16
 
@@ -18,15 +18,15 @@ Easy Digital Downloads is a complete eCommerce solution for selling digital prod
18
 
19
  = Sell effortlessly =
20
 
21
- Whether it is [software](https://easydigitaldownloads.com/blog/selling-software/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [documents](https://easydigitaldownloads.com/blog/selling-documents/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [photos](https://easydigitaldownloads.com/blog/selling-photographs/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [ebooks](https://easydigitaldownloads.com/blog/selling-ebooks/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [songs](https://easydigitaldownloads.com/blog/selling-audio-and-music/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [graphics](https://easydigitaldownloads.com/blog/selling-graphics-and-digital-artwork/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [videos](https://easydigitaldownloads.com/blog/selling-videos/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), or any other type of media file, Easy Digital Downloads provides a complete system for effortlessly selling your digital products.
22
 
23
  > Easy Digital Downloads is an invaluable tool that I use throughout my business and for my clients. I love its simplicity yet powerful features and library of useful extensions. EDD stands out as one of the only affordable options for scaling a business centered around providing digital ecommerce sites to its clients.
24
 
25
  > Mark Hunter - Mark of Approval
26
 
27
- = All the eCommerce features you need =
28
 
29
- Do you prefer an eCommerce solution which is simple and intuitive or one which is rich in features? Too often that tradeoff is one online sellers need to make. Fortunately, Easy Digital Downloads manages to be easy enough for eCommerce beginners to configure without sacrificing any important functionality.
30
 
31
  > EDD gives me a solid platform out of the box, with the flexibility of being able to customize anything I want or need to. The best of both worlds!
32
 
@@ -34,12 +34,12 @@ Do you prefer an eCommerce solution which is simple and intuitive or one which i
34
 
35
  Here are some of the features supported out-of-the-box:
36
 
37
- - **Frontend shopping cart** - Customers can browse your product catalogue, add items to their cart, and checkout when they are ready. Or they can bypass the cart using Buy Now buttons.
38
  - **Highly customizable and clean checkout** - Buyers can complete their purchase with ease, directly on your site's checkout page.
39
  - **Payment flexibility** - Accept credit card payments using [Stripe](https://stripe.com/) as well as PayPal payments. Apple Pay and Google Pay are also included via Stripe's Payment Request Buttons.
40
  - **Complete customer management** - View and manage detailed records of all customers and their purchase history.
41
  - **Detailed eCommerce reports** - Keep track of your earnings, refunds, sales, and more.
42
- - **Protect product files** - Prevent unauthorized visitors from accessing your product files without paying.
43
  - **Discount codes** - Boost sales by offering potential customers coupon or discount codes which can be applied at checkout.
44
  - **Works with any theme** - Let your chosen WordPress theme handle the design. Easy Digital Downloads will fit right in.
45
  - [And much more](https://easydigitaldownloads.com/edd-features/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=much-more&utm_term=description)!
@@ -58,7 +58,7 @@ Payment gateways supported in the free Easy Digital Downloads plugin:
58
  * PayPal
59
  * Amazon Payments
60
 
61
- Payment gateways supported through free or premium extensions:
62
 
63
  * Stripe Pro (reduced fees and preapproved payments functionality)
64
  * PayPal Commerce Pro (unbranded card payments and additional payment methods)
@@ -66,42 +66,40 @@ Payment gateways supported through free or premium extensions:
66
  * Authorize.net
67
  * 2Checkout
68
  * SOFORT Banking
69
- * BitPay
70
- * Coinbase
71
 
72
  > What can I say? Stripe is my go-to payment processor and without this [integration] I don't know what I would do. Connect EDD to your Stripe account in seconds and you're done! Having a simple test mode toggle is also a valuable development tool.
73
 
74
  > Matt Whiteley - Whiteley Designs
75
 
76
- See our [payment gateways category](https://easydigitaldownloads.com/downloads/category/gateways/?utm_source=extensions&utm_medium=description_tab&utm_content=gateways&utm_campaign=readme) in the extensions catalogue for a complete list of supported merchant processors. There are also a large number of additional payment gateways developed and supported by [3rd party developers](https://easydigitaldownloads.com/3rd-party-extensions/#gateways).
77
 
78
  Easy Digital Downloads is a verified member of the [Stripe partner program](https://stripe.com/accept-payments/easy-digital-downloads). This program recognizes software that meets Stripe's strict quality requirements and provides users of Easy Digital Downloads and Stripe with the confidence they need to trust us both with their payment integrations.
79
 
80
  = Take your store further with extensions =
81
 
82
- With add-on plugins from our [extensions catalogue](https://easydigitaldownloads.com/downloads/?utm_source=extensions&utm_medium=description_tab&utm_content=extensions&utm_campaign=readme) you can super-charge your digital store. Some of our extension highlights include:
83
-
84
- * [Stripe Pro](https://easydigitaldownloads.com/downloads/stripe-gateway/?utm_source=extension&utm_medium=description_tab&utm_content=stripe-pro&utm_campaign=readme) removes the additional 2% processing fee as well as adds the ability to accept pre-approved payments (extension must be installed and activated)
85
- * [PayPal Commerce Pro](https://easydigitaldownloads.com/downloads/paypal-commerce-pro/?utm_source=extension&utm_medium=description_tab&utm_content=paypal-commerce-pro&utm_campaign=readme) allows customers to pay by debit or credit card as well as alternative payments such as Sofort, iDEAL, Bancontact, and Giropay (extension must be installed and activated)
86
- * [Software Licensing](https://easydigitaldownloads.com/downloads/software-licensing/?utm_source=extension&utm_medium=description_tab&utm_content=software-licensing&utm_campaign=readme) provides a complete solution for selling software license keys and distributing software updates to customers
87
- * [Recurring Payments](https://easydigitaldownloads.com/downloads/recurring-payments/?utm_source=extension&utm_medium=description_tab&utm_content=recurring-payments&utm_campaign=readme) allows store owners to sell recurring subscriptions for digital products using payment gateways like Stripe and PayPal
88
- * [Frontend Submissions](https://easydigitaldownloads.com/downloads/frontend-submissions/?utm_source=extension&utm_medium=description_tab&utm_content=frontend-submissions&utm_campaign=readme) transforms your store into a full-featured multi-vendor marketplace
89
- * [Commissions](https://easydigitaldownloads.com/downloads/commissions/?utm_source=extension&utm_medium=description_tab&utm_content=commissions&utm_campaign=readme) enables store owners to easily track earnings for product vendors
90
- * [Free Downloads](https://easydigitaldownloads.com/downloads/free-downloads/?utm_source=extension&utm_medium=description_tab&utm_content=free-downloads&utm_campaign=readme) allows free products to be purchased more easily by bypassing the standard checkout form
91
- * [Zapier](https://easydigitaldownloads.com/downloads/zapier/?utm_source=extension&utm_medium=description_tab&utm_content=zapier&utm_campaign=readme) automates your store by connecting Easy Digital Downloads with more than 700 other web services and products
92
- * [Reviews](https://easydigitaldownloads.com/downloads/product-reviews/?utm_source=extension&utm_medium=description_tab&utm_content=reviews&utm_campaign=readme) allows customers to leave reviews and feedback on the products they have purchased
93
- * [Recommended Products](https://easydigitaldownloads.com/downloads/recommended-products/?utm_source=extension&utm_medium=description_tab&utm_content=recommended-products&utm_campaign=readme) increases revenue by showing customers recommendations on additional products to purchase based on real sales data
94
- * [Content Restriction](https://easydigitaldownloads.com/downloads/content-restriction/?utm_source=extension&utm_medium=description_tab&utm_content=content-restriction&utm_campaign=readme) allows site owners to restrict access to page content to paying customers
95
- * [Mailchimp](https://easydigitaldownloads.com/downloads/mailchimp/?utm_source=extension&utm_medium=description_tab&utm_content=mailchimp&utm_campaign=readme) connects your store to your Mailchimp account so you can easily subscribe customers to email lists based on which products they purchase
96
- * [AWeber](https://easydigitaldownloads.com/downloads/aweber/?utm_source=extension&utm_medium=description_tab&utm_content=aweber&utm_campaign=readme) connects your store to your AWeber account so you can easily subscribe customers to email lists based on what they purchase
97
- * [Amazon S3](https://easydigitaldownloads.com/downloads/amazon-s3/?utm_source=extension&utm_medium=description_tab&utm_content=amazon-s3&utm_campaign=readme) lets you securely host files on Amazon S3 for more reliable and secure file delivery
98
- * [Dropbox File Store](https://easydigitaldownloads.com/downloads/dropbox-file-store//?utm_source=extension&utm_medium=description_tab&utm_content=dropbox-file-store/&utm_campaign=readme) lets you securely host files in your Dropbox account for more reliable and secure file delivery
99
-
100
- These are just a few of the extensions we offer to help you optimize your store and sell more files. See our complete [extensions catalogue](https://easydigitaldownloads.com/downloads/?utm_source=extensions&utm_medium=description_tab&utm_content=extensions&utm_campaign=readme) for more. There are also hundreds of extensions created by Easy Digital Downloads community members, which can be found on our [3rd Party Extensions page](https://easydigitaldownloads.com/3rd-party-extensions/?utm_source=3rd-party-extensions&utm_medium=description_tab&utm_content=3rd-party-extensions&utm_campaign=readme).
101
 
102
  = Built with developers in mind =
103
 
104
- Extensible, adaptable, and open source -- Easy Digital Downloads is created with developers in mind. Consult our detailed [developer documentation](http://docs.easydigitaldownloads.com/collection/174-developer-docs?utm_source=wporg&utm_medium=readme&utm_content=documentation&utm_campaign=dev-docs) to learn how you can extend and customize your Easy Digital Downloads powered eCommerce store.
105
 
106
  The Easy Digital Downloads API makes it possible for developers to make customizations such as:
107
 
@@ -120,7 +118,7 @@ The Easy Digital Downloads API makes it possible for developers to make customiz
120
 
121
  = Get help =
122
 
123
- Easy Digital Downloads is backed by top-notch technical support from our globally distributed full-time support team. We also have an [extensive documentation site available](https://docs.easydigitaldownloads.com/?utm_medium=readme&utm_source=wporg&utm_campaign=lite-plugin&utm_content=docs&utm_term=description). If youre looking for faster support via email, we encourage you to [purchase an Easy Digital Downloads pass](https://easydigitaldownloads.com/pricing/?utm_medium=readme&utm_source=wporg&utm_campaign=lite-plugin&utm_content=upgrade&utm_term=description) or premium extension.
124
 
125
  > EDD has been a long standing, rock-solid e-commerce solution for WordPress. The team lives and breathes WordPress, understands the platform, and is embedded in the community.
126
 
@@ -133,10 +131,10 @@ Check out some of our popular posts for actionable advice for running your busin
133
  - [The 12 Most Popular Digital Products You Can Sell Online](https://easydigitaldownloads.com/blog/the-12-most-popular-digital-products-you-can-sell-online/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description)
134
  - [How to Add Lead Magnets in WordPress to Grow Your Email List](https://easydigitaldownloads.com/blog/how-to-add-lead-magnets-in-wordpress-to-grow-your-email-list/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=lead-magnets&utm_term=description)
135
  - [How to Successfully Launch Your Digital Product](https://easydigitaldownloads.com/blog/how-to-successfully-launch-your-digital-product/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=launch&utm_term=description)
136
- - [Protecting Your Digital Products](https://easydigitaldownloads.com/blog/protecting-your-digital-products/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=protecting&utm_term=description)
137
- - [The Top Ten Benefits of Selling Digital Products](https://easydigitaldownloads.com/blog/top-10-benefits-selling-digital-products/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=benefits&utm_term=description)
138
 
139
- **[Subscribe to our newsletter](https://easydigitaldownloads.com/subscribe/?utm_medium=readme&utm_source=wporg&utm_campaign=lite-plugin&utm_content=subscribe&utm_term=description)** to get posts like these in your inbox as soon as theyre published.
140
 
141
  = Contribute to Easy Digital Downloads =
142
 
@@ -144,7 +142,7 @@ Development for this plugin happens in a public GitHub repository to better faci
144
 
145
  = Looking for something else? =
146
 
147
- If Easy Digital Downloads doesnt quite fit your needs, take a look at some of our other projects.
148
 
149
  - [WP Simple Pay](https://wpsimplepay.com/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=something-else&utm_term=description) – A lightweight Stripe payments plugin
150
  - [AffiliateWP](https://affiliatewp.com/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=something-else&utm_term=description) – A full-featured affiliate marketing solution
@@ -164,7 +162,7 @@ If Easy Digital Downloads doesn’t quite fit your needs, take a look at some of
164
 
165
  Full searchable docs for Easy Digital Downloads and all our extensions can be found at [http://docs.easydigitaldownloads.com/](http://docs.easydigitaldownloads.com/?utm_source=docs&utm_medium=faq_tab&utm_content=documentation&utm_campaign=readme)
166
 
167
- = Where can I ask for help with my digital eCommerce store? =
168
 
169
  You can submit a support ticket or pre-sale question from our [support page](https://easydigitaldownloads.com/support/?utm_source=docs&utm_medium=faq_tab&utm_content=support&utm_campaign=readme) at anytime.
170
 
@@ -182,7 +180,7 @@ Any properly written theme will work with Easy Digital Downloads.
182
 
183
  That said, we have a nice collection of free themes that come with support for Easy Digital Downloads, requiring much less design work on the part of the store owner.
184
 
185
- [See the free themes here.](https://easydigitaldownloads.com/themes/?utm_source=docs&utm_medium=faq_tab&utm_term=free_themes&utm_content=faqs&utm_campaign=readme)
186
 
187
  = Is there a sample import file I can use to setup a demo store? =
188
 
@@ -200,7 +198,7 @@ There are several reasons this happens. Please follow the suggestions [here](htt
200
 
201
  To get rid of the 404 error when viewing a download, you need to resave your permalink structure. Go to Settings > Permalinks and click "Save Changes".
202
 
203
- = How do I show the users purchase history? =
204
 
205
  Place the [purchase_history] shortcode on any page.
206
 
@@ -221,7 +219,7 @@ Yes, with the Invoices extension, you can provide beautiful and downloadable inv
221
 
222
  [Invoices](https://easydigitaldownloads.com/downloads/edd-invoices/?utm_source=edd-invoices&utm_medium=faq_tab&utm_content=pdf-invoices&utm_campaign=readme)
223
 
224
- = Are recurring payments supported? =
225
 
226
  Yes, through the use of our commercial addon called [Recurring Payments](https://easydigitaldownloads.com/downloads/recurring-payments/?utm_source=docs&utm_medium=faq_tab&utm_term=recurring_addon&utm_content=faqs&utm_campaign=readme). [Full documentation here](http://docs.easydigitaldownloads.com/article/1142-recurring-payments---overview?utm_source=docs&utm_medium=faq_tab&utm_term=recurring_addon&utm_content=faqs&utm_campaign=readme). The Recurring Payments extension allows you to create subscriptions so that customers continue paying you over time. This is great for selling memberships, courses, all access passes, software licenses, and other products which require an ongoing payment.
227
 
@@ -243,7 +241,16 @@ Yes, through the use of our commercial addon called [Recurring Payments](https:/
243
 
244
  == Changelog ==
245
 
246
- = 2.11.4.1, January 11, 2021 =
 
 
 
 
 
 
 
 
 
247
  * Fix: "Submit" buttons missing from Reviews and Recurring Payments settings pages.
248
 
249
  = 2.11.4, December 27, 2021 =
5
  Donate link: https://easydigitaldownloads.com/donate/
6
  Tags: ecommerce, e-commerce, sell, digital store, stripe
7
  Requires at least: 4.4
8
+ Tested up to: 5.9
9
  Requires PHP: 5.4
10
+ Stable Tag: 2.11.5
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.
14
 
15
  == Description ==
16
 
18
 
19
  = Sell effortlessly =
20
 
21
+ Whether it is selling [software like WordPress plugins or themes](https://easydigitaldownloads.com/blog/selling-software/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [documents](https://easydigitaldownloads.com/blog/selling-documents/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description) and [spreadsheets](https://easydigitaldownloads.com/blog/sell-excel-or-google-spreadsheets/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [photography](https://easydigitaldownloads.com/blog/selling-photographs/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [ebooks](https://easydigitaldownloads.com/blog/selling-ebooks/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [music](https://easydigitaldownloads.com/blog/selling-audio-and-music/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [graphics or digital artwork](https://easydigitaldownloads.com/blog/selling-graphics-and-digital-artwork/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [videos](https://easydigitaldownloads.com/blog/selling-videos/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), or any other type of media file, Easy Digital Downloads provides a complete ecommerce platform that just works, so you can get back to creating.
22
 
23
  > Easy Digital Downloads is an invaluable tool that I use throughout my business and for my clients. I love its simplicity yet powerful features and library of useful extensions. EDD stands out as one of the only affordable options for scaling a business centered around providing digital ecommerce sites to its clients.
24
 
25
  > Mark Hunter - Mark of Approval
26
 
27
+ = Easy and free, meet robust and powerful =
28
 
29
+ Too often digital creators have to make the hard choice between affordable and powerful. Not with Easy Digital Downloads. It's free forever. It's easy to get started. Then, as you grow, there are hundreds of extensions to add functionality when you need it.
30
 
31
  > EDD gives me a solid platform out of the box, with the flexibility of being able to customize anything I want or need to. The best of both worlds!
32
 
34
 
35
  Here are some of the features supported out-of-the-box:
36
 
37
+ - **Complete shopping cart** - Customers can browse your product catalogue, add items to their cart, and checkout when they are ready. Or they can bypass the cart using Buy Now buttons.
38
  - **Highly customizable and clean checkout** - Buyers can complete their purchase with ease, directly on your site's checkout page.
39
  - **Payment flexibility** - Accept credit card payments using [Stripe](https://stripe.com/) as well as PayPal payments. Apple Pay and Google Pay are also included via Stripe's Payment Request Buttons.
40
  - **Complete customer management** - View and manage detailed records of all customers and their purchase history.
41
  - **Detailed eCommerce reports** - Keep track of your earnings, refunds, sales, and more.
42
+ - **Secure file protection** - Prevent unauthorized visitors from accessing your product files without paying.
43
  - **Discount codes** - Boost sales by offering potential customers coupon or discount codes which can be applied at checkout.
44
  - **Works with any theme** - Let your chosen WordPress theme handle the design. Easy Digital Downloads will fit right in.
45
  - [And much more](https://easydigitaldownloads.com/edd-features/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=much-more&utm_term=description)!
58
  * PayPal
59
  * Amazon Payments
60
 
61
+ Payment gateways supported through free or paid extensions:
62
 
63
  * Stripe Pro (reduced fees and preapproved payments functionality)
64
  * PayPal Commerce Pro (unbranded card payments and additional payment methods)
66
  * Authorize.net
67
  * 2Checkout
68
  * SOFORT Banking
 
 
69
 
70
  > What can I say? Stripe is my go-to payment processor and without this [integration] I don't know what I would do. Connect EDD to your Stripe account in seconds and you're done! Having a simple test mode toggle is also a valuable development tool.
71
 
72
  > Matt Whiteley - Whiteley Designs
73
 
74
+ See our [payment gateways](https://easydigitaldownloads.com/downloads/category/gateways/?utm_source=extensions&utm_medium=description_tab&utm_content=gateways&utm_campaign=readme) in the extensions catalog for a complete list of supported payment processors.
75
 
76
  Easy Digital Downloads is a verified member of the [Stripe partner program](https://stripe.com/accept-payments/easy-digital-downloads). This program recognizes software that meets Stripe's strict quality requirements and provides users of Easy Digital Downloads and Stripe with the confidence they need to trust us both with their payment integrations.
77
 
78
  = Take your store further with extensions =
79
 
80
+ With extensions from our [extensive catalog](https://easydigitaldownloads.com/downloads/?utm_source=extensions&utm_medium=description_tab&utm_content=extensions&utm_campaign=readme) you can super-charge your ecommerce business. Some of our most popular extensions are:
81
+
82
+ * [Stripe Pro](https://easydigitaldownloads.com/downloads/stripe-gateway/?utm_source=extension&utm_medium=description_tab&utm_content=stripe-pro&utm_campaign=readme) removes the additional 2% processing fee as well as adds the ability to accept pre-approved payments (extension must be installed and activated).
83
+ * [PayPal Commerce Pro](https://easydigitaldownloads.com/downloads/paypal-commerce-pro/?utm_source=extension&utm_medium=description_tab&utm_content=paypal-commerce-pro&utm_campaign=readme) allows customers to pay by debit or credit card as well as alternative payments such as Sofort, iDEAL, Bancontact, and Giropay (extension must be installed and activated).
84
+ * [Software Licensing](https://easydigitaldownloads.com/downloads/software-licensing/?utm_source=extension&utm_medium=description_tab&utm_content=software-licensing&utm_campaign=readme) provides a complete solution for selling software license keys and distributing software updates to customers. Trusted by some of the most successful WordPress Theme and Plugin developers.
85
+ * [Recurring Payments](https://easydigitaldownloads.com/downloads/recurring-payments/?utm_source=extension&utm_medium=description_tab&utm_content=recurring-payments&utm_campaign=readme) allows store owners to sell recurring subscriptions for digital products using payment gateways like Stripe and PayPal.
86
+ * [Frontend Submissions](https://easydigitaldownloads.com/downloads/frontend-submissions/?utm_source=extension&utm_medium=description_tab&utm_content=frontend-submissions&utm_campaign=readme) transforms your store into a full-featured multi-vendor marketplace.
87
+ * [Commissions](https://easydigitaldownloads.com/downloads/commissions/?utm_source=extension&utm_medium=description_tab&utm_content=commissions&utm_campaign=readme) enables store owners to easily track earnings for product vendors.
88
+ * [Free Downloads](https://easydigitaldownloads.com/downloads/free-downloads/?utm_source=extension&utm_medium=description_tab&utm_content=free-downloads&utm_campaign=readme) allows free products to be purchased more easily by bypassing the standard checkout form.
89
+ * [Zapier](https://easydigitaldownloads.com/downloads/zapier/?utm_source=extension&utm_medium=description_tab&utm_content=zapier&utm_campaign=readme) automates your store by connecting Easy Digital Downloads with more than 700 other web services and products.
90
+ * [Reviews](https://easydigitaldownloads.com/downloads/product-reviews/?utm_source=extension&utm_medium=description_tab&utm_content=reviews&utm_campaign=readme) allows customers to leave reviews and feedback on the products they have purchased.
91
+ * [Recommended Products](https://easydigitaldownloads.com/downloads/recommended-products/?utm_source=extension&utm_medium=description_tab&utm_content=recommended-products&utm_campaign=readme) increases revenue by showing customers recommendations on additional products to purchase based on real sales data.
92
+ * [Content Restriction](https://easydigitaldownloads.com/downloads/content-restriction/?utm_source=extension&utm_medium=description_tab&utm_content=content-restriction&utm_campaign=readme) allows site owners to restrict access to page content to paying customers.
93
+ * [Mailchimp](https://easydigitaldownloads.com/downloads/mailchimp/?utm_source=extension&utm_medium=description_tab&utm_content=mailchimp&utm_campaign=readme) connects your store to your Mailchimp account so you can easily subscribe customers to email lists based on which products they purchase.
94
+ * [AWeber](https://easydigitaldownloads.com/downloads/aweber/?utm_source=extension&utm_medium=description_tab&utm_content=aweber&utm_campaign=readme) connects your store to your AWeber account so you can easily subscribe customers to email lists based on what they purchase.
95
+ * [Amazon S3](https://easydigitaldownloads.com/downloads/amazon-s3/?utm_source=extension&utm_medium=description_tab&utm_content=amazon-s3&utm_campaign=readme) lets you securely host files on Amazon S3 for more reliable and secure file delivery.
96
+ * [Dropbox File Store](https://easydigitaldownloads.com/downloads/dropbox-file-store//?utm_source=extension&utm_medium=description_tab&utm_content=dropbox-file-store/&utm_campaign=readme) lets you securely host files in your Dropbox account for more reliable and secure file delivery.
97
+
98
+ These are just a few of the extensions we offer to help you optimize your digital store and increase revenue. See our complete [extensions catalogue](https://easydigitaldownloads.com/downloads/?utm_source=extensions&utm_medium=description_tab&utm_content=extensions&utm_campaign=readme) for more. There are also hundreds of extensions created by Easy Digital Downloads community members, which can be found on our [3rd Party Extensions page](https://easydigitaldownloads.com/3rd-party-extensions/?utm_source=3rd-party-extensions&utm_medium=description_tab&utm_content=3rd-party-extensions&utm_campaign=readme).
99
 
100
  = Built with developers in mind =
101
 
102
+ Extensible, adaptable, and open source -- Easy Digital Downloads is created with designers and developers in mind. Consult our detailed [developer documentation](http://docs.easydigitaldownloads.com/collection/174-developer-docs?utm_source=wporg&utm_medium=readme&utm_content=documentation&utm_campaign=dev-docs) to learn how you can extend and customize your Easy Digital Downloads powered eCommerce store.
103
 
104
  The Easy Digital Downloads API makes it possible for developers to make customizations such as:
105
 
118
 
119
  = Get help =
120
 
121
+ Easy Digital Downloads is backed by top-notch technical support from our globally distributed full-time support team. We also have an [extensive documentation site available](https://docs.easydigitaldownloads.com/?utm_medium=readme&utm_source=wporg&utm_campaign=lite-plugin&utm_content=docs&utm_term=description). If you're looking for faster support via email, we encourage you to [purchase an Easy Digital Downloads pass](https://easydigitaldownloads.com/pricing/?utm_medium=readme&utm_source=wporg&utm_campaign=lite-plugin&utm_content=upgrade&utm_term=description) or premium extension.
122
 
123
  > EDD has been a long standing, rock-solid e-commerce solution for WordPress. The team lives and breathes WordPress, understands the platform, and is embedded in the community.
124
 
131
  - [The 12 Most Popular Digital Products You Can Sell Online](https://easydigitaldownloads.com/blog/the-12-most-popular-digital-products-you-can-sell-online/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description)
132
  - [How to Add Lead Magnets in WordPress to Grow Your Email List](https://easydigitaldownloads.com/blog/how-to-add-lead-magnets-in-wordpress-to-grow-your-email-list/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=lead-magnets&utm_term=description)
133
  - [How to Successfully Launch Your Digital Product](https://easydigitaldownloads.com/blog/how-to-successfully-launch-your-digital-product/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=launch&utm_term=description)
134
+ - [How to Sell Canva Templates with WordPress](https://easydigitaldownloads.com/blog/how-to-sell-canva-templates-with-wordpress/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=canva&utm_term=description)
135
+ - [The Astonishing Benefits of Selling Digital Products](https://easydigitaldownloads.com/blog/top-10-benefits-selling-digital-products/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=benefits&utm_term=description)
136
 
137
+ **[Subscribe to our newsletter](https://easydigitaldownloads.com/subscribe/?utm_medium=readme&utm_source=wporg&utm_campaign=lite-plugin&utm_content=subscribe&utm_term=description)** to get posts like these in your inbox as soon as they're published.
138
 
139
  = Contribute to Easy Digital Downloads =
140
 
142
 
143
  = Looking for something else? =
144
 
145
+ If Easy Digital Downloads doesn't quite fit your needs, take a look at some of our other projects.
146
 
147
  - [WP Simple Pay](https://wpsimplepay.com/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=something-else&utm_term=description) – A lightweight Stripe payments plugin
148
  - [AffiliateWP](https://affiliatewp.com/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=something-else&utm_term=description) – A full-featured affiliate marketing solution
162
 
163
  Full searchable docs for Easy Digital Downloads and all our extensions can be found at [http://docs.easydigitaldownloads.com/](http://docs.easydigitaldownloads.com/?utm_source=docs&utm_medium=faq_tab&utm_content=documentation&utm_campaign=readme)
164
 
165
+ = Where can I ask for help with my digital e-Commerce store? =
166
 
167
  You can submit a support ticket or pre-sale question from our [support page](https://easydigitaldownloads.com/support/?utm_source=docs&utm_medium=faq_tab&utm_content=support&utm_campaign=readme) at anytime.
168
 
180
 
181
  That said, we have a nice collection of free themes that come with support for Easy Digital Downloads, requiring much less design work on the part of the store owner.
182
 
183
+ [See the themes here.](https://easydigitaldownloads.com/themes/?utm_source=docs&utm_medium=faq_tab&utm_term=free_themes&utm_content=faqs&utm_campaign=readme)
184
 
185
  = Is there a sample import file I can use to setup a demo store? =
186
 
198
 
199
  To get rid of the 404 error when viewing a download, you need to resave your permalink structure. Go to Settings > Permalinks and click "Save Changes".
200
 
201
+ = How do I show the user's purchase history? =
202
 
203
  Place the [purchase_history] shortcode on any page.
204
 
219
 
220
  [Invoices](https://easydigitaldownloads.com/downloads/edd-invoices/?utm_source=edd-invoices&utm_medium=faq_tab&utm_content=pdf-invoices&utm_campaign=readme)
221
 
222
+ = Are recurring payments (subscriptions) supported? =
223
 
224
  Yes, through the use of our commercial addon called [Recurring Payments](https://easydigitaldownloads.com/downloads/recurring-payments/?utm_source=docs&utm_medium=faq_tab&utm_term=recurring_addon&utm_content=faqs&utm_campaign=readme). [Full documentation here](http://docs.easydigitaldownloads.com/article/1142-recurring-payments---overview?utm_source=docs&utm_medium=faq_tab&utm_term=recurring_addon&utm_content=faqs&utm_campaign=readme). The Recurring Payments extension allows you to create subscriptions so that customers continue paying you over time. This is great for selling memberships, courses, all access passes, software licenses, and other products which require an ongoing payment.
225
 
241
 
242
  == Changelog ==
243
 
244
+ = 2.11.5, January 27, 2022 =
245
+ * New: Add an admin notice when the EDD Debug Log is enabled.
246
+ * Fix: Importer has been updated to work with PHP 8.
247
+ * Fix: Change how data is added to the debug log to prevent errors due to size.
248
+ * Fix: Bundled product metadata is no longer saved to the download for non-bundle products.
249
+ * Fix: A PHP notice was thrown when a payment had an unregistered status.
250
+ * Fix: Stripe - JavaScript error when viewing a preapproved payment record.
251
+ * Fix: Stripe - EDD 3.0: Incorrect tax amount being charged when customer uses a different country from the store's base country.
252
+
253
+ = 2.11.4.1, January 7, 2022 =
254
  * Fix: "Submit" buttons missing from Reviews and Recurring Payments settings pages.
255
 
256
  = 2.11.4, December 27, 2021 =