=== Easy Digital Downloads ===
Author URI: https://easydigitaldownloads.com
Plugin URI: https://easydigitaldownloads.com
Contributors: easydigitaldownloads, mordauk, sunnyratilal, chriscct7, section214, sumobi, sdavis2702, cklosows, mindctrl, sksmatt, SpencerFinnell, johnstonphilip, brashrebel, drewapicture, johnjamesjacoby, nosegraze
Donate link: https://easydigitaldownloads.com/donate/
Tags: ecommerce, e-commerce, sell, downloads, store, paypal, checkout, shop
Requires at least: 4.4
Tested up to: 5.2.3
Stable Tag: 2.9.17
License: GNU Version 2 or Any Later Version

The easiest way to sell digital products with WordPress.

== Description ==

Easy Digital Downloads is a complete eCommerce solution for selling digital products on WordPress. Learn more at [Easy Digital Downloads.com](https://easydigitaldownloads.com/?utm_source=home&utm_medium=description_tab&utm_content=home&utm_campaign=readme).

= Sell effortlessly =

Whether it is software, documents, photos, ebooks, songs, graphics, or any other type of media file, Easy Digital Downloads provides a complete system for effortlessly selling your digital products.

= Localized for your language =

Easy Digital Downloads has been translated into more than two dozen languages and new translation are being added all the time, letting you have a natural, native experience, regardless of where you live. If your language is not available, we welcome translation contributions! See our [FAQ](http://docs.easydigitaldownloads.com/article/1082-what-spoken-languages-does-easy-digital-downloads-support?utm_source=docs&utm_medium=description_tab&utm_content=languages&utm_campaign=readme).

= Payment gateways for everyone =

The internet has made it possible for anyone to sell their products to a world-wide audience. No matter where you live, Easy Digital Downloads can be your eCommerce solution. We offer integrations for the most common merchant processors and, through 3rd party extensions, support for many, many more as well.

Payment gateways supported in the core, free plugin:

* PayPal Standard
* Amazon Payments

Payment gateways supported through free or premium extension:

* Stripe
* PayPal Pro
* PayPal Express
* PayPal Payments Advanced
* PayPal Adaptive Payments
* Braintree
* Authorize.net
* 2Checkout
* SOFORT Banking
* BitPay
* Coinbase

See our [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 gateways. There are also a large number of additional gateways developed and supported by [3rd party developers](https://easydigitaldownloads.com/3rd-party-extensions/#gateways).

= Go further with extensions =

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:

* [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
* [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
* [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
* [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
* [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 process
* [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
* [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
* [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
* [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
* [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 what they purchase
* [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
* [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
* [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

These are just a few of the extensions we offer to help super-charge your digital store. 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).

= Built with developers in mind =

Extensible, adaptable, and open source -- Easy Digital Downloads is created with developers in mind. Contribute on [GitHub](https://github.com/easydigitaldownloads/easy-digital-downloads).

== Installation ==

1. Activate the plugin
2. Go to Downloads > Settings and configure the options
3. Create Downloadable products from the Downloads page
4. Insert purchase buttons for any download via the "Insert Download" button next the Upload Media buttons
5. For detailed setup instructions, vist the official [Documentation](http://docs.easydigitaldownloads.com/?utm_source=docs&utm_medium=installation_tab&utm_content=documentation&utm_campaign=readme) page.

== Frequently Asked Questions ==

= Where can I find complete documentation? =

Full searchable docs 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)

= Where can I ask for help? =

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.

= Is an SSL certificate required? =

Easy Digital Downloads can function without one just fine, making it easy to set up in a testing or development environment.  We still strongly recommend you have an SSL certificate for your production web site, both for security and for the peace of mind of your customers. [Documentation here](http://docs.easydigitaldownloads.com/article/994-how-to-set-up-ssl?utm_source=docs&utm_medium=faq_tab&utm_content=documentation&utm_campaign=readme)

= What themes work with Easy Digital Downloads? =

Any properly written theme will work with Easy Digital Downloads.

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.

[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)

= Is there a sample import file I can use to setup a demo store? =

Yes! Simply go to Tools > Import and install the WordPress Importer, then navigate to wp-content/plugins/easy-digital-downloads/assets/ and select the sample-products-import.xml file. This will create several sample products and plugin pages for you.

= Can I import all the products from my existing store into EDD? =

Yes! We do have a [basic import solution](http://docs.easydigitaldownloads.com/article/216-can-i-import-and-export-products?utm_source=docs&utm_medium=faq_tab&utm_term=import_addon&utm_content=faqs&utm_campaign=readme) that imports a CSV file, so if you can get your data into the appropriate format then we can import it.

= My payments are being marked as "pending" =

There are several reasons this happens. Please follow the suggestions [here](http://docs.easydigitaldownloads.com/article/190-payments-not-marked-as-complete?utm_source=docs&utm_medium=faq_tab&utm_content=faqs&utm_campaign=readme).

= Getting a 404 error? =

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".

= How do I show the user’s purchase history? =

Place the [purchase_history] shortcode on any page.

If you want to just show a list of the files the user has purchased, use the [download_history] shortcode instead.

= How do I display products? =

There are several different ways, each well [documented](http://docs.easydigitaldownloads.com/category/870-product-display?utm_source=edd_readme&utm_medium=faq_tab&utm_content=faqs&utm_campaign=readme).

= Can I set up an affiliate program? =

Yes! EDD integrates directly with several affiliate platforms that provide complete affiliate systems you can use to award commissions to your affiliate marketers.

[Check out AffiliateWP](https://affiliatewp.com?utm_source=edd_readme&utm_medium=faq_tab&utm_content=home&utm_campaign=readme)

= Can I give my customers downloadable PDF Invoices? =
Yes, EDD has an extension that allows for downloadable invoices to be generated for each payment.

[PDF Invoices](https://easydigitaldownloads.com/downloads/pdf-invoices/?utm_source=pdf-invoices&utm_medium=faq_tab&utm_content=pdf-invoices&utm_campaign=readme)

= Are recurring payments supported? =

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)

= Can customers purchase products without using PayPal? =

Yes. Easy Digital Downloads also includes default support for Amazon Payments and support for numerous other payment methods through add-on payment gateways. Here are some of the gateways [currently available](https://easydigitaldownloads.com/downloads/category/extensions/gateways/?utm_source=docs&utm_medium=faq_tab&utm_term=gateways&utm_content=faqs&utm_campaign=readme):

* [Stripe](https://easydigitaldownloads.com/downloads/stripe-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=stripe-payment-gateway&utm_campaign=readme)
* [PayPal Pro/Express](https://easydigitaldownloads.com/downloads/paypal-pro-express/?utm_source=gateway&utm_medium=faq_tab&utm_content=paypal-pro-express&utm_campaign=readme)
* [PayPal Adaptive Payments](https://easydigitaldownloads.com/downloads/paypal-adaptive-payments/?utm_source=gateway&utm_medium=faq_tab&utm_content=paypal-adaptive-payments&utm_campaign=readme)
* [Authorize.net](https://easydigitaldownloads.com/downloads/authorize-net-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=authorize-net-gateway&utm_campaign=readme)
* [2Checkout](https://easydigitaldownloads.com/downloads/2checkout-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=2checkout-gateway&utm_campaign=readme)
* [Check](https://easydigitaldownloads.com/downloads/check-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=check-payment-gateway&utm_campaign=readme)
* [Braintree](https://easydigitaldownloads.com/downloads/braintree-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=braintree-gateway&utm_campaign=readme)
* [PayPal Payments Advanced](https://easydigitaldownloads.com/downloads/paypal-payments-advanced/?utm_source=gateway&utm_medium=faq_tab&utm_content=paypal-payments-advanced&utm_campaign=readme)
* [ClickBank](https://easydigitaldownloads.com/downloads/edd-clickbank-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=clickbank&utm_campaign=readme)
* [Wallet](https://easydigitaldownloads.com/downloads/wallet/?utm_source=gateway&utm_medium=faq_tab&utm_content=wallet&utm_campaign=readme)
* [BitPay](https://easydigitaldownloads.com/downloads/bitpay-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=bitpay-payment-gateway&utm_campaign=readme)
* [Coinbase](https://easydigitaldownloads.com/downloads/coinbase-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=coinbase-payment-gateway&utm_campaign=readme)
* [SOFORT Banking](https://easydigitaldownloads.com/downloads/sofort-banking-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=sofort-banking-gateway&utm_campaign=readme)
* [PayU India](https://easydigitaldownloads.com/downloads/payu-india-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=payu-india-payment-gateway&utm_campaign=readme)
* [Payza](https://easydigitaldownloads.com/downloads/payza-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=payza-payment-gateway&utm_campaign=readme)
* [PayPlug](https://easydigitaldownloads.com/downloads/payplug-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=payplug-gateway&utm_campaign=readme)
* [GoCardless](https://easydigitaldownloads.com/downloads/gocardless-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=gocardless-payment-gateway&utm_campaign=readme)
* [Zombaio](https://easydigitaldownloads.com/downloads/zombaio-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=zombaio-payment-gateway&utm_campaign=readme)
* [Realex](https://easydigitaldownloads.com/downloads/realex-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=realex-gateway&utm_campaign=readme)
* [CyberSource](https://easydigitaldownloads.com/downloads/cybersource-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=cybersource-gateway&utm_campaign=readme)
* [Paylane](https://easydigitaldownloads.com/downloads/paylane-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=paylane-payment-gateway&utm_campaign=readme)
* [ePay](https://easydigitaldownloads.com/downloads/epay-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=epay-payment-gateway&utm_campaign=readme)
* [Netbanx](https://easydigitaldownloads.com/downloads/netbanx-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=netbanx-payment-gateway&utm_campaign=readme)
* [Realex](https://easydigitaldownloads.com/downloads/realex-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=realex-gateway&utm_campaign=readme)
* [PayTrace](https://easydigitaldownloads.com/downloads/paytrace/?utm_source=gateway&utm_medium=faq_tab&utm_content=paytrace&utm_campaign=readme)
* [iPay88](https://easydigitaldownloads.com/downloads/ipay88-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=ipay88-gateway&utm_campaign=readme)


== Screenshots ==

1. Download products overview
2. Download configuration
3. Download configuration details
4. Payment History
5. Payment details
6. Discount codes
7. Earnings and sales reports
8. Add to cart / purchase button
9. Checkout screen

== Changelog ==
= 2.9.17, October 2, 2019 =
* Security Fix: Prevent an authentication bypass to the EDD REST API when no API keys exist.

= 2.9.16, June 11, 2019 =
* Security Fix: Prevent a stored XSS (Cross Site Scripting) attempt on the IP addresses for logs.

= 2.9.15, May 31, 2019 =
* Fix: Prevent a fatal error during checkout when no gateways are returned as active.
* New: Added support for SendWP to help with email deliverability.

= 2.9.14, May 8, 2019 =
* Fix: Corrected an issue in local file location detection for Windows servers.

= 2.9.13, May 7, 2019 =
* Fix: An error was being logged when using API V2 to get products by category.
* Fix: Corrected an issue with multisite on versions of WordPress greater than 5.0.
* Fix: Multiple improvements with the EDD_License handler.
* Fix: Made it possible to add products to product-less payments.
* Fix: Fixed the link to filter file download logs by customer.
* Fix: Improved strength of file download link hashes.
* Fix: Improved local file location detection.

= 2.9.12, March 26, 2019 =
* Fix: Limit PayPal PDT verification to purchase sessions.
* Fix: Discount start times were not accounting for GMT offsets.
* Fix: Improved reliability of the State field when selecting different countries.
* Fix: GDPR Data Exporter now skips any requests for customer data when no customer is found for a user.
* Fix: WordPress 5.x : apiFetch call was resulting in invalid JSON response.
* Fix: Corrected a conditional check typo when determining if settings page is EDD related.

= 2.9.11, January 6, 2019 =
* Fix: PayPal PDT amount validation fails for some accounts due to missing payment_gross field.
* Tweak: PayPal email address now registered to EDD_Customer during IPN processing if the email is not already registered.

= 2.9.10, January 4, 2019 =
* Security Fix: Avoid a possible PayPal Standard price manipulation when using PDT (Payment Data Transfer)

= 2.9.9, December 3, 2018 =
* Fix: State/province cannot be updated on order details screen when country is changed.
* Fix: "Show Privacy Policy" text link is positioned incorrectly.
* Fix: "Agree to Terms?" text shows twice on checkout with some configurations.
* Fix: Nonce verification failure when state/province field is not visible.
* Fix: Fees / Discounts can be duplicated when payment recovery link is clicked.
* Fix: Incorrect DocBlock for edd_currency_filter.
* Fix: Slashes not removed when saving profile name field.
* Fix: Item amount set to 0.00 improperly during CSV import if the "Products (Raw)" column is used but does not include a {}.
* Fix: Privacy policy text not shown if terms of use checkbox is disabled.
* Fix: Log messages not saved to debug log file if they contain non UTF-8 characters.

= 2.9.8, October 1, 2018 =
* Fix: Updated Amazon Payments onboarding URL.
* Fix: Insert Download media button would not output expected plain text styles.
* Fix: Adding a discount code on a cart with free products caused a division by zero error.
* Fix: Removed unnecessary clearfix rule from CSS.
* New: Repositioned and refactored the pagination in the [downloads] shortcode to allow better customization.
* Dev: All available contextual arguments were added to the edd_requested_file filter.

= 2.9.7, September 10, 2018 =
* Fix: The edd_cart_amount data attributes were not updated when quantities were changed at checkout.
* Fix: Updated the zip/postal code validation for Mongolia.
* Fix: Updating a download meta to 0 using the EDD_Download class would not save correctly.
* Fix: Corrected an issue with mobile file downloads sometimes getting corrupted.
* Fix: Incorrect label "for" attributes were being used on the checkout login form.
* Fix: Prevent the vertical scrollbar in Firefox when hovering over tooltips.
* Fix: Corrected some issues with EDD Sessions and WP Admin.
* Fix: Test Purchase Email Subject ampersands were getting improperly HTML encoded.
* New: Updated the EDD_SL_Plugin_Updater to support icons and have a health check.
* New: Added the date generated to system info.
* New: EDD API now supports "order" and "orderby" parameters for the products endpoint.

= 2.9.6, July 16, 2018 =
* Fix: "Error: You must login to complete your purchase" shown incorrectly on checkout.
* Fix: WordPress database error in File Download Log updater.

= 2.9.5, July 12, 2018 =
* Fix: Changing the country field in the admin would not display the State fields.
* Fix: File Download Log Migration from version 2.9.2 would fail on some sites.

= 2.9.4, July 9, 2018 =
* Fix: Added nonce checks to multiple AJAX calls. If you have customized any of the following beyond CSS, please review this blog post:
* https://easydigitaldownloads.com/development/2018/07/05/important-update-to-ajax-requests-in-easy-digital-downloads-2-9-4
* templates/widget-cart-item.php
* templates/shortcode-profile-editor.php
* templates/checkout_cart.php
* The following functions includes/checkout/template.php:
* edd_default_cc_address_fields()
* edd_get_register_fields()
* edd_get_login_fields()
* edd_payment_mode_select()
* edd_checkout_hidden_fields()
* Fix: Important - Don't allow guest purchases for an email address that has an existing user.
* Fix: Unexpected behavior in 'redirect to checkout' when multiple checkout pages were used.
* Fix: Saving an order in the admin when prices were inclusive of tax could cause incorrect item price amounts to be saved.
* Fix: PHP 7.2 Compatibility - Some PHP notices were being thrown while activating Easy Digital Downloads.
* Fix: The EDD_Cart class now forces the cart contents to always be an array.
* Fix: The process of adding past purchases to a new user now verifies the user has an email address.
* Fix: The file download log export did not contain the name of the user who downloaded the file.
* Fix: Attempting to add a new customer to an order gave unexpected results when using the email address of an existing customer.
* Fix: Tax rate 'Apply to whole country' label could not be clicked when no tax rates have ever existed.
* Fix: The Shop Accountant role was not able to manage the tax exclusion at a product level.
* Fix: In some cases, PayPal IPN and PDT would cause double payment processing.
* Tweak: Easy Digital Downloads sessions can now be started when in the wp-admin path.
* New: When taxes are being recalculated at checkout, an AJAX indicator is now shown below the purchase button.
* Dev: Filters were added to the AJAX responses for adding and removing items from the cart.

= 2.9.3, May 25, 2018 =
* Fix: Corrected multiple inconsistencies in the Privacy Policy Checkbox at checkout.
* Fix: Corrected an issue causing "You must agree to the privacy policy" from showing when it wasn't required.
* Dev: Complete Checkout button is no longer required to be a `submit` input.

= 2.9.2, May 24, 2018 =
* GDPR: Support for WordPress Core Privacy Exporter and Eraser.
* GDPR: Added Privacy Policy template for WordPress Core Privacy Policy editor.
* GDPR: Added new "Privacy" tab to the Easy Digital Downloads Settings.
* Fix: The "button" CSS class was being applied twice to the "Apply Discount" button.
* Fix: The toggle link to view the Privacy Policy was not working when the Terms of Agreement were not visible.
* Fix: Email addresses that contained a + would not be removed via [edd_profile_editor].
* Fix: Searching payments by discount code was not working.
* New: Added action hook above shortcode download list.
* New: Improve File download Log accuracy and remove PII from log meta.
* New: Allow for target attribute of links in Terms of Service & Privacy Policy labels.

= 2.9.1, April 20, 2018 =
* Fix: Some text field settings were getting emptied when saving a subsection setting.
* Fix: Stats API Endpoint requests were failing when pseudo-date ranges were used other than yesterday and today.
* Fix: API key fields were appearing on bbPress forum Edit Profile screen.
* Fix: There was a typo in Italian provinces. Genova should have been Genoa.
* Fix: Corrected an issue with showing payment method icons when using EDD in a non-standard installation.
* Fix: Corrected a CSS conflict in the customer card view for the additional emails section.
* Fix: The edd_checkout_cart_columns function now properly counts the number of columns in the cart display.
* Fix: In some cases, the customer list table could throw PHP warnings when calculating the pagination.
* Fix: Improve the RTL-Compatibility of some translation strings.
* Fix: Improved PHP 7.2 compatibility with the settings display.
* Fix: Incorrect or missing textdomains were corrected or added.
* Fix: There was an unnecessary update of _edd_payment_user_id when constructing EDD_Payment objects.
* Fix: Corrected the setting title for completing free purchase button.
* New: Added a confirmation alert when clicking "Disconnect User" on customer card.
* New: Add support for a new Privacy Policy checkbox.
* New: Added a class parameter to [downloads] shortcode arguments.
* New: The debug log view now shows the path to the currently used EDD Debug log file.
* New: Fields are now auto-mapped during the CSV import.
* Tweak: Switched all `is_a` checks to use `instanceof` for performance.
* Dev: Many improvements to the @return and @access tags in DocBlocks.
* Dev: Updates to our Grunt configuration.

= 2.9, March 15, 2018 =

* New: A message is now displayed on the [edd_register] shortcode when the user is already logged in.
* New: Support was added for resume and ranged download links.
* New: The customer name, email, and price ID was added to sales log export.
* New: Added ability to sort by sales/earnings in the [downloads] shortcode.
* New: Any page containing the [download_checkout] shortcode returns true for edd_is_checkout().
* New: Upgraded to the latest version of the Chosen library.
* New: Added United Kingdom Counties to pre-populated "states" list.
* New: EDD_Payment::add_note now escapes the HTML provided.
* New: Added the variable price ID to the download log entries.
* New: Added a helper to retrieve and filter discount status labels.
* Fix: Prevent a possible PHP Warning when no tax rate is entered, when taxes are enabled.
* Fix: PayPal Standard: Totals with discounts could calculate differently between EDD and PayPal, preventing completion of the purchase.
* Fix: Links would break when using SendGrid's link tracking feature.
* Fix: Download widget would cause PHP warnings when no tags were attached to a product.
* Fix: Improved support for payment method icons when not using a standard WP Install directory format.
* Fix: Prevent a possible corrupted download file by verifying no output buffers exists.
* Fix: Opt-in telemetry data was sending the incorrect Locale.
* Fix: Prevent a possible PHP Notice when editing a discount code.
* Fix: Checkboxes on Advanced Settings of variable prices would not always save on the first try.
* Fix: Hardcoded 'Checkout' text was not using the 'Add to Cart text' variable.
* Fix: Prices were possibly incorrect when using the Quick Edit feature.
* Tweak: The edd_get_download method now returns an `EDD_Download` object instead of a `WP_Post`.
* Tweak: Corrected some URLs to the EDD site that were using an old URL.
* Tweak: The customer UI now shows the country and state name, instead of their codes.
* Tweak: Removed the hyphen and "Go Back" button from discount screens.
* Tweak: The cart contents method returned boolean false instead of an empty array when the cart was empty.
* Tweak: Reduced the blocking calls in the opt-in telemetry requests to help with performance.
* Dev: Added filters for new user notification email.
* Dev: Added filter and email heading to New Sale Notifications.
* Dev: Added hooks before and after downloads shortcode grid.

= 2.8.18, February 6, 2018 =

* Fix: Earnings report was incomplete and did not allow adding additional statuses.
* Fix: Incorrect HTML attribute on the upload modal.
* Fix: WordPress file editor was not working when Easy Digital Downloads was not active.
* Fix: Forced file data to be sanitized as an array.
* New: Added new filter to allow disabling X-Accel-Redirect when downloading files.
* New: Enabled gateways are now included in the opt-in telemetry data.

= 2.8.17, January 1, 2018 =

* Fix: Reverted Schema microdata change from SPAN to DIV tag as it broke some layouts
* Tweak: IP addresses on payment View Order Details screens now links to ipinfo

= 2.8.16, December 21, 2017 =
* Fix: Hardened EDD actions for use with WP Cron.
* Fix: Changed span elements to div elements for the schema markup.
* Dev: Added the ability to randomly generate customer data when creating payments with WP-CLI.

= 2.8.15, December 13, 2017 =
* Fix: Getting files of variable priced bundles products did not always respect variable price ID.
* Tweak: Added found payments to the hooks before and after the purchase history shortcode.

= 2.8.14, November 28, 2017 =
* Fix: Sales exports did not always include all payments from the last day of the range selected.
* Fix: Negative item fees can apply to same item multiple times if it's the same product.
* Fix: Campaign strings on Integrations were not consistent.
* Fix: Warning when converting dates to timestamps in EDD_Stats::convert_date()

= 2.8.13, November 20, 2017 =
* Fix: Cart details incorrectly reported item quantity as 0 in some cases.
* Fix: Prevent an edge case around adding past purchases to new users.
* Fix: Searching by custom order number only worked if a suffix or prefix is included.
* Fix: Corrected some translation issues.
* New: Allow filtering of the PayPal IPN data.
* New: Add support for Payment Data Transport (PDT) in PayPal Standard.
* Tweak: Removed MercadoPago from list of extensions in readme.
* Tweak: Added a colon that was missing on taxes & subtotal of the purchase confirmation.
* Tweak: Add debug logging to PayPal IPN capturing.


= 2.8.12, November 10, 2017 =
* Fix: Reverted some of the performance improvements due to edge case errors.
* Fix: Corrected a misspelled function edd_render_dowwn_tax_options.
* Fix: Invalid translation line while processing purchase.
* Fix: Improved the verbiage of the discount code amount description.

= 2.8.11, November 9, 2017 =
* Fix: Incorrect discount errors could be shown at checkout.
* Fix: Improved the performance of the EDD_Customer class.
* Fix: Improved the new Debug Log View usability.
* Fix: Corrected an issue with edd_user_pending_verification() when logged in as an admin.
* Fix: Custom date ranges for detailed product earnings break on multi-month views.
* Fix: Discount validation errors could occur when recovering pending payment.
* Fix: The product notes div was being rendered when no product notes added to download.
* New: Added a filter for edd_get_errors().
* New: Added link to ipinfo.io for the IP address on a file download log.
* Tweak: Removed an unused display_price argument in edd_get_purchase_link().
* Tweak: Update library for array2xml.php.
* Tweak: Added filters to allow modfiying the payment list table gateway filter selector.

= 2.8.10, October 20, 2017 =

* Fix: Incorrect URL for `Add New` button.
* Fix: Incorrectly called function on EDD_Payment::get_discounted_amount.

= 2.8.9, October 19, 2017 =

* Fix: Errors when trying to download some local files on Windows servers.
* Fix: "Recount" Progress Bar was invisible.
* Tweak: Added $price_id to the edd_purchase_receipt_after_files action.
* Tweak: Improve visibility of Apps & Integrations.
* Tweak: Corrected some spelling errors.

= 2.8.8, October 5, 2017 =

* Fix: A fatal error was triggered during the payment export.
* New: Added more parameters to the edd_requested_file_name filter.

= 2.8.7, October 2, 2017 =

* IMPORTANT: Product dropdown was losing selections when using variable pricing. Please verify any variable priced bundles you may have configured.
* Fix: File download errors could occur if the stream type was no longer registered.
* Fix: The 'No checkout page configured' error is now limited to once display per page.
* Fix: Calls to EDD_Customer->update_meta could throw a notice if called to early in the WordPress load process.
* Fix: The edd_get_users_purchased_products function did not respect the status argument passed in.
* Fix: The base state/province displayed empty when no pre-populated state or province data was available.
* Fix: Performance improvements to edd_get_discounts.
* Fix: Newly registered user's ID was not set on pre-existing payments.
* Fix: During purchase, the customer name was set to email if last name was empty.
* Fix: Corrected many non-numeric value and data handling issues in PHP 7.1.
* Fix: Corrected an issue with Chosen placeholders.
* New: Added the EDD_Logging class, to allow for easier debugging by developers.
* New: The country name has been added to the payment export.
* New: Added a discounts_total property to the EDD_Payment class.
* New: Hyphens are now allowed in discount codes.
* New: The Customer ID is now included in the sales report.
* Tweak: Added better responsiveness in WordPress admin.
* Tweak: Fixed a typo in the docs for the payments create CLI command.
* Tweak: Wrapped discount fields in <span> tags.
* Tweak: Fixed CSS targeting on edd_repeatable_thumbnail_size_field selector.

= 2.8.6, September 11, 2017 =

* Fix: Amazon Payments could cause Javascript error on checkout.
* Fix: edd_delete_option() helper function failed to fully remove option.
* Fix: It was possible to create a discount using edd_store_discount() without specifying a discount code.
* Fix: User Address information could be stored with boolean 'false' instead of an empty string.
* New: Made URLs included in payment notes clickable links.
* New: Added filter edd_load_scripts_in_footer to allow programmatic modifications of where frontend scripts are loaded.

= 2.8.5, September 7, 2017 =

* Fix: The Product Dropdown helper function included products in the trash.
* Fix: Deleted products could not be removed from payments.
* Fix: Incorrect cookie name was being used for the 'rememberme' option.
* Fix: Incorrect pagination was being used when viewing sales logs.
* Fix: Possible issue parsing headers when accessing via WP Rest API.
* Fix: Improved security of EDD_Session.
* New: Added a filter to the "Agree to Terms" markup.
* New: Added support for Angola (country, municipalities, and currency).
* New: Increased the width of the discount amount field when adding or editing discounts.
* New: Added ability to filter sales by email address in WP-CLI.
* Tweak: Updated form styling for login and register forms.
* Tweak: Removed clearing divs from the [downloads] shortcode.
* Tweak: Added inline docs for edd_payment_meta filter.
* Tweak: Ensure EDD_Cart:get_discounts() return type is consistent.

= 2.8.4, August 16, 2017 =

* Fix: Minor improvements to edd_get_customer_address() function.
* Fix: Negative product fees were not properly affecting subtotal used for tax calculations.
* Fix: Editing item price on a payment caused incorrect calculations when item price contained thousands separators.
* Fix: Download History shortcode was incorrectly using get_the_title instead of the supplied name.
* Fix: Resuming payment for guest payments while logged out could incorrectly prompt the user to login.
* Tweak: Download Details widget edit form used generic 'Show Title' instead of 'Show Download Title'.
* Tweak: Product Notes metabox field wasn't full width.

= 2.8.3, August 9, 2017 =

* Fix: Update HTML5 pattern on card field to account for whitespace.
* Fix: Don't enqueue jQuery.payment by default, allow gateways to enqueue when supported.

= 2.8.2, August 8, 2017 =

* New: Spaces are now auto-formatted into credit card number fields.
* Tweak: Decoupled API Authentication with $wp_query.
* Tweak: Quantities no longer show on the cart widget when they are disabled.
* Tweak: Renamed 'Item Quantities' setting to 'Cart Item Quantities' to remove confusion of its purpose.
* Tweak: Improvements to the consistency of settings descriptions.
* Tweak: Added search_columns argument to the EDD_Customer_Query class.
* Fix: Discounts with multiple exclusions could be applied to excluded products.
* Fix: Customer query pagination did not work correctly.
* Fix: Removed custom widths on the primary column of list table.
* Fix: 'Processing' status in Payments list table shows empty brackets when no processing payments.
* Fix: Billing fields were unnecessarily validated when cart total was $0.
* Fix: WPLANG is deprecated, use get_locale() instead.
* Fix: Prevent duplicate queries when edd_get_purchase_id_by_key() is called more than once for the same payment key.
* Fix: Prevent plain text purchase links from looking like buttons still.

= 2.8.1, July 27, 2017 =

* New: Include "processing" as payment status in the list table.
* Fix: Revert adjusting purchase amount when quantity changes.
* Fix: Variable pricing bundle purchases gave access to incorrect product files.
* Tweak: Update to 1.6.14 of the Plugin Updater.

= 2.8, July 25, 2017 =

* New: Design of repeatable rows, including variable prices and download files, has been redesigned to better accommodate more options and smaller screen sizes
* New: Variable price IDs now supported in payment import and export
* New: add_meta() and delete_meta() methods added to EDD_Payment
* New: Position of errors on checkout can now be changed through edd_global_checkout_script_vars filter
* New: edd_after_payment_actions action now fired through WP Cron after payment is completed
* New: EDD_Customer_Query class introduced
* New: Added support for PayPal Image URL setting
* New: Added support for filtering Payment History by used payment gateway
* New: Added shortcode-download.php template file
* Tweak: Use document.body in scripts where possible, for performance
* Tweak: Minimum WordPress version now set to 4.4
* Tweak: edd-ajax.js and edd-ajax.min.js now loaded in wp_footer
* Tweak: Improved performance of EDD_Customer by avoiding duplicate query to get notes
* Tweak: Banned Emails option now supports blocking addresses with just a TLD
* Tweak: Added new actions to template files to allow content to be more easily added to log in and registration forms
* Tweak: Chosen dropdown field of EDD_HTML_Elements now supports "multiple" parameter
* Tweak: Added a link to gateways extension category on gateway settings page to make gateways more easily discoverable
* Tweak: Updated the EDD add-on updater class to version 1.6.13
* Tweak: Added new edd_log_file_download_download_files filter and edd_log_file_download_file_id filter to get_logs() method of the file download list table
* Tweak: Empty categories now shown on Earnings by Category report
* Tweak: EDD_Customer object added to completed payment actions
* Tweak: Current customer instance added to all hooks and filters in EDD_Customer
* Tweak: Download link expiration time now shown on System Info
* Tweak: Added edd_checkout_billing_details_address filter to customer billing details on checkout
* Tweak: Purchase button amounts now automatically update as quantity input is changed
* Tweak: Customer records now updated with information entered on checkout
* Tweak: Improved translation flexibility of Complete Purchase button text
* Tweak: Added new edd_price_option_output filter to function that displays variable prices
* Tweak: Notes and price IDs now escaped on purchase receipt display
* Tweak: Improved description of login redirect page setting
* Tweak: Avoid hard-coding "striped" class on list tables
* Tweak: A link to Product Reviews extension has been added to product edit screen when Reviews plugin is not installed
* Tweak: Account for multiple reverse proxy IPs in $_SERVER['HTTP_X_FORWARDED_FOR']
* Tweak: Update phpunit dependency to latest of 3.7 branch
* Fix: Price ID not properly set when generating payment records with WP CLI
* Fix: Credit card name field validated as true when card number was entered
* Fix: Detect and correct invalid email addresses in From Address settings for purchase receipts and email notifications
* Fix: Sales export includes incorrect items
* Fix: Invalid SQL query due to extraneous curly brace
* Fix: Fatal error due to undefined function edd_extension_has_beta_support()
* Fix: Some admin screens not properly responsive for small screens
* Fix: misc-functions.php file loaded twice
* Fix: Corrupt file downloads due to non-binary setting passed to fopen()
* Fix: _canonical_import_id not deleted after payment import
* Fix: All products could be deleted on a payment
* Fix: 100% discount codes do not remove tax from tax-inclusive items
* Fix: Item tax not shown on payment screen when price contains commas
* Fix: Tax rates not included in settings import/export
* Fix: get_payments() method of EDD_Payments_Query affects global $post
* Fix: Customer record not properly linked to existing user record
* Fix: State / province field of customer address not saved properly
* Fix: Download links still shown on purchase confirmation when Disable Redownload is enabled
* Fix: select() method of EDD_HTML_Elements always uses "Downloads" as search placeholder
* Fix: Product Dropdown not always showing the selected item when large number of downloads exist

= 2.7.11, June 21, 2017 =

* Fix: Amazon Payments had errors being displayed at incorrect times.
* Fix: Start date not set properly in reports all pre-set ranges.
* Tweak: Fix URL for the "Rate Us" link.

= 2.7.10, June 12, 2017 =

* Fix: Plugin Compatibility: Improve file download reliability when Really Simple SSL Mixed Content Filter is active.

= 2.7.9, May 11, 2017 =

* Fix: Chosen search had incorrect select element targeting.
* Fix: EDD_Payment was using invalid modified_date instead of date.
* Fix: Recovering a guest payment prompted user to login to complete the purchase.
* New: Add edd_get_report_dates_default_range filter to report date range.

= 2.7.8, May 2, 2017 =

* Fix: Products sometimes duplicated in CSV product export
* Fix: Fatal error with PHP 7+ when get_meta() returns a string instead of array
* Fix: Incorrect earnings stats for "Today"
* Fix: Use once per customer option on discount codes does not respect case sensitivity
* Fix: Date filters on payment history not working properly
* Fix: Tax rates of less than 1 calculates an incorrect total
* Fix: edd_unset_cart_discount() is case sensitive when it should not be
* Fix: PHP 7 compatibility flags due to safe_mode checks
* Fix: Download files not imported properly when file URL/path begins with a forward slash
* Fix: Pending verification message shown multiple times if the page contains multiple shortcodes
* Tweak: Improved error message for "Email already used" error
* Tweak: Default reports view is now "Last 30 days"
* Tweak: EDD_Graph class now supports an "addition_options" parameter
* Tweak: Added new hooks to the profile editor template

= 2.7.7, April 3, 2017 =

* Fix: User ID not properly assigned during some payment imports
* Fix: Discount codes sometimes changed to inactive improperly
* Fix: Incorrect variable name in add-on updater
* Fix: edd_has_user_purchased() can return false incorrectly
* Fix: File price assignment fails when set to the first price on old products
* Fix: Last Month report showing incorrect numbers
* Fix: Incorrect class name on customer details page
* Tweak: Improved error message shown when viewing a receipt after purchase session has expired
* Tweak: Added new filter and action to edd_has_user_purchased()
* Tweak: Renamed Czech Republic to Czechia
* Tweak: Log in form on checkout now accepts log-in by email
* Tweak: Added new edd_download_inner_class filter

= 2.7.6, March 24, 2017 =

* New: Added new hooks to customer details page
* New: Email tags are now processed in the Purchase Email heading
* Fix: User dropdown field does not always show selected user
* Fix: Payment field for Amazon Payments gateway not properly shown after authenticating with Amazon
* Fix: edd-page class improperly added to all site pages when Test Mode is enabled
* Fix: Incorrectly named CSS selector
* Fix: Checkout does not work when AJAX is disabled
* Fix: Profile editor HTML markup is inconsistent with other forms
* Fix: Query parameters not properly setup when calling multiple instances of EDD_Payments_Query
* Fix: Invalid argument supplied foreach() notice on some bundle products
* Fix: Incorrect capitalization on First Name field of checkout
* Fix: Incorrect field name passed to get_user_by() in payment import
* Fix: Custom "Complete Purchase Text" not used if payment submission results in error
* Fix: Incorrect date set for "end_date" in EDD_Stats class
* Fix: Price option not properly added when using custom add to cart links for variable priced product and not price ID is supplied
* Fix: Fees that are taxed get counted twice in tax total

= 2.7.5, March 6, 2017 =

* Tweak: Added a new filter that allows for the message shown in the email receipt when there are no download files to be controlled
* Tweak: Renamed "User" to "Customer" on sales and file downloads logs view and updated the columns to always show the customer name
* Fix: No error messages shown on [edd_register] shortcode
* Fix: Product Requirements check for discount codes fail if database value contains an empty string
* Fix: Empty metadata values get stored when creating discount codes
* Fix: Recovered payments do not store the correct purchase date
* Fix: "Click here to request a new verification URL" link does not contain a real URL
* Fix: Browser cache not flushed when EDD CSS is updated
* Fix: Spaces in URLs for files and featured images can result in import problems
* Fix: Positive fees should not be added to PayPal Standard when assigned a Download ID
* Fix: Extra dash output in email receipt and purchase history when no price option is present
* Fix: It is possible for the ID returned from EDD_DB::insert() to be returned incorrectly
* Fix: Invalid customer error shown in file downloads log endpoint of the REST API
* Fix: Removing items from an order can result in the wrong item being removed after save
* Fix: Credit Card and billing address fields shown on checkout even when no payment gateways are enabled
* Fix: Personal Info section of checkout missing the aria-describedby attribute
* Fix: Payment mode fieldset does not have a legend tag
* Fix: Duplicate DIV tag on checkout

= 2.7.4, February 22, 2017 =

* Fix: "Loading" text shown on add to cart buttons for sites without screen ready text CSS.

= 2.7.3, February 20, 2017 =

* Fix: Email addresses with a + sign cannot have their receipt resent
* Fix: Some PDF files downloaded as JPGs
* Fix: Incorrect default payment gateway error message when saving sub-sections of Payment Gateway settings
* Fix: edd-submit class accidentally removed from some buttons on the front end
* Fix: Variable price selection not possible when adding new product to existing payment record

= 2.7.2, February 15, 2017 =
* Fix: It was possible for the batch exporter base class to not be loaded before it was trying to be used.
* Fix: Payments completed with the 'resume payment' feature prevented file download links from working.
* New: EDD_Payments_Query now keeps a record of the initial arguments used, to allow better extensibility.

= 2.7.1, February 14, 2017 =
* Fix: Checkout was showing wrong total price when certain fees were applied to the cart.
* Fix: Plugin row meta linked to non-existent "Getting Started" page.
* Fix: There was a typo in the link to our site when showing an error message for a license key.
* Fix: Incorrect function name in new EDD_Discount class was being checked.

= 2.7, February 13, 2017 =
* New: Introduced EDD_Cart class for managing the shopping cart contents.
* New: Redesigned and improved functionality of the purchased downloads when viewing a payment.
* New: The applied tax rate is now saved in the payment meta.
* New: Created a tool that generates CSV earnings report.
* New: Added the ability for users to complete abandoned/pending purchases.
* New: Reduced number queries run during reports, improving performance.
* New: Selected image size is now inserted into File URL field in Download Files box.
* New: Added a link to the discount edit screen when viewing a payment.
* New: Added an option to the cart widget that allows it to be hidden when empty.
* New: Added support for all_blank on text inputs.
* New: Messages registered with edd_set_error are now output via a hook.
* New: Introduced the EDD_Discount class.
* New: Created tool to export all Logs.
* New: Improved WP CLI payment creation to support a date range.
* New: Quantity fields can now be disabled on individual download products.
* New: Added parent theme name to System Info when a child theme is detected.
* New: Added lost password URL to log in form on checkout.
* New: Introduce edd_get_payment which uses WordPress object cache to improve performance of getting payments.
* New: EDD_Payment and edd_get_payment now accept a payment transaction ID.
* New: Introduced a more EDD-specific downloads shortcode [edd_downloads].
* New: Moved edd-ajax.min script to footer to allow async loading of jQuery.
* New: Added a 'Refresh Reports' button to the graph view.
* New: Variable priced bundles can now fully support a variable priced item being bundled.
* New: Switched to using new IPN endpoints for PayPal Standard.
* New: Zip / postal code now included in tax calculation function.
* Tweak: Replaced all instances of get_post_meta() for payments with edd_get_payment_meta().
* Tweak: Deprecated edd_get_earnings_by_date & edd_get_sales_by_date.
* Tweak: Default gateway can no longer be set to a disabled gateway.
* Tweak: Adjusted error message returned when a discount code is not yet active.
* Tweak: Updated Profile Editor markup to match current EDD markup format.
* Tweak: Removed loading of the icon-font in the front end.
* Tweak: Improved the metabox for managing the customer when editing a payment.
* Tweak: Settings, Reports, Tools admin page now have headings.
* Tweak: The gateway selector is now shown when a user has an error during checkout.
* Tweak: Improved the layout and responsiveness of the customer details screen.
* Tweak: Buy Now options and buttons are now disabled if multiple gateways are enabled.
* Tweak: Improved the markup for the shortcode-login.php template file.
* Tweak: Added a per-download hook to the edd_receipt shortcode.
* Tweak: Unit tests no longer hit the network. They are so much faster now.
* Tweak: Removed use of global variable $edd_options.
* Tweak: Placeholders can now be defined for text fields when using the EDD Settings API.
* Tweak: Removed PDF earnings report in favor of the CSV Report.
* Tweak: Made the 'ignore tax' setting on reports less confusing.
* Tweak: Fixed some links in the readme.txt file.
* Tweak: Removed option to disable AJAX.
* Tweak: Adjusted "post type attribute" metabox label for downloads.
* Tweak: Fixed unit tests to work with the new WordPress core 4.7 unit tests.
* Fix: EDD_License did not properly support `item_id`.
* Fix: Earnings by Category estimates were not correct.
* Fix: Item card views (customers, licenses, subscriptions, etc) size improperly.
* Fix: Stopped redirect to PayPal on Buy Now buttons if PayPal gateway is disabled.
* Fix: The wrong class name was on the Checkout state input.
* Fix: Amazon Gateway settings are now checked before loading the scripts for Amazon Payments.
* Fix: The edd_download_redirect_to_checkout filter wasn't respecting the desired outcome in some configurations.
* Fix: The payment notes were included in normal comment count.
* Fix: Disabling API request logging was not working.
* Fix: Undefined index notices could be triggered during the login process on checkout.
* Fix: South Korea Zip/Postal Codes changed, so we updated our validation RegEx.
* Fix: Undefined index notice was shown on the dashboard widget.
* Fix: Attachment ID was not overwritten by external URL on download files.
* Fix: The history-downloads.php template was not properly showing variable price names.
* Fix: When adding fee to cart, we now preserve the decimal precision.
* Fix: Recounting store stats now resets the report transients.
* Fix: Improved the fault tolerance and error handling of creating discount codes.
* Fix: EDD_Download::setup_download() now identify $download as a WP_Post object type.
* Fix: Product import now defaults to the main admin user if the author does not exist.
* Fix: Multi-option purchase mode and variable prices work better with buy now buttons.
* Fix: Added "required" attribute to the email input field.
* Fix: Moved edd_undo_purchase_on_refund to deprecated-functions.php.
* Fix: Fixed the spelling of "Pound Sterling".

= 2.6.17, December 28, 2016 =
* Fix: Checkboxes in Downloads > Tools > Beta Versions do not retain checked state
* Fix: Extension update notifications do not show up

= 2.6.16, December 21, 2016 =
* Fix: 404 errors when downloading some files

= 2.6.15, December 19, 2016 =
* Fix: Conflict with some object caching configurations and the extension update checks that resulted in poor performance.

= 2.6.14, December 15, 2016 =
* New: Added hooks before and after cart on checkout screen
* New: Added support for user-specific locales
* Tweak: Improved performance of edd_get_payment_by(), making account pages faster
* Fix: Quantity not set on cart items when adding multiple price options to the cart at once
* Fix: Download links in email receipts over escaped, resulting in failed downloads
* Fix: December point plotted improperly on earnings / sales graphs
* Fix: Files still downloaded even if the file doesn't exist, resulting in a corrupted download file
* Fix: Non-formatted amount not set in data attribute of cart when discount codes applied
* Fix: Deleting an item from payment record does not delete the associated sale log
* Fix: This Week and Last Week reports not showing sale stats
* Fix: Calling edd_is_discount_valid() results in cart errors being set
* Fix: Earnings value doubled for Today report
* Fix: Price and currency not properly separated in schema microdata
* Fix: Tax exempt products still show tax rate on purchase buttons
* Fix: check_update() method is called twice in EDD_SL_Plugin_Updater class

= 2.6.13, November 21, 2016 =
* Fix: Custom payment meta items were not being saved correctly.

= 2.6.12, November 17, 2016 =
* New: Added new hooks to the profile editor form.
* Fix: edd_has_active_discounts could return false when there were active discounts.
* Fix: Supplying an invalid date range on reports could produce an incorrect graph.
* Fix: EDD_Payment::update_meta could produce a PHP warning when used.
* Fix: Variable Pricing options were inconsistently being shown and hidden when toggled.
* Fix: Today/Yesterday Reports miscalculated hours to include the first hour of the next day.
* Fix: When single day ranges were used on Payments list table, order status counts were not loading.
* Fix: EDD HTML Select input had many cases where mixed variable types could trigger errors and warnings.
* Fix: edd_get_users_purchases had outdated PHPDocs.
* Fix: Determining the 'main' subsection of settings could fire hooks twice and had poor performance.
* Fix: When changing report years, the report data could have been incorrect.
* Fix: Payment counts were incorrect on the Payments list table when custom dates were used.
* Fix: Certain hosting configurations caused the usage tracking notice to be improperly escaped.
* Fix: Admin scripts were not requiring `jquery-form`.
* Fix: Download limit setting isn't checked for existence before accessing it when saving a Download.
* Fix: Timezone wasn't respected when setting up daily cron.
* Fix: Upgrade routines could calculate incorrect number of total steps.
* Fix: The notice about being in test mode was not linked to the correct settings page.
* Fix: `edd_get_users_purchased_products` would fail if the first product ID supplied was not a download.
* Fix: Checkout could require a state even if the country had no states associated with it.
* Fix: Creating a discount would not save the product requirements and exclusions on first save.
* Fix: PHP Warning was being caused by the new beta setting in the extension updater.
* Fix: The EDD_SL_Plugin_Updater::check_update method could possibly be called twice.
* Fix: Sanitized unescaped URLs with esc_url

= 2.6.11, November 8, 2016 =
* New: WP CLI: Customers command now allows searching by user_id.
* New: Add framework for the new Software Licensing beta support.
* New: EDD Settings API now supports adding classes to registered settings.
* New: Improve PayPal Standard IPN lookup logic.
* New: Support iOS app one-click configuration.
* New: Add hook after cart quantities are updated.
* New: Add tooltip to "Display during checkout" tax option.
* New: Allow exporting the file download history of a specific product.
* New: Add action after discount is added to the cart.
* New: Add action hook called "edd_payment_saved" for when EDD_Payment::save() is run.
* New: Add "author" parameter support to [downloads] shortcode with support for username or ID.
* Tweak: Correct branding of necessary assets.
* Tweak: Block self-pings in tracking check-ins.
* Tweak: Update author and author URI to Easy Digital Downloads.
* Tweak: Update the Insert Download media button icon to use Dashicons.
* Tweak: Allow download admin icon to be more easily customized.
* Tweak: Exported CSVs show "Complete" status as "publish".
* Fix: Corrected translation for login shortcode redirect description.
* Fix: Improved the caching of stats transients for better performance.
* Fix: API Keys were not able to be copied from user profile.
* Fix: Corrected link to the iOS application.
* Fix: Use new iPhone icon.
* Fix: EDD_Payment::setup_tax did not always contain proper data.
* Fix: Styles on Recount/Reset tool were lost.
* Fix: CSV import tool were not importing Download Files in some circumstances.
* Fix: Tooltip styles had a conflict with Gravity Forms.
* Fix: Recount earning/sales tool for all downloads was failing to properly recount.
* Fix: Multiple instances of cart widget was causing conflicts when adding or removing items.
* Fix: API Key list table was unreadable on mobile.
* Fix: Custom icons via edd_accepted_payment_icons were unwrapped.
* Fix: Fees for specific download and price IDs did not check if the item or price ID is in the cart.
* Fix: EDD API was always returning version 1 by default.
* Fix: Changed uses of jQuery .toggle() to use .show() and .hide() to fix bad checkbox states.
* Fix: Corrected translation for 'State / Province'.
* Fix: Corrected a variable type issue in the HTML_Elements::select defaults.

= 2.6.10, October 21, 2016 =
* Fix: JavaScript error when removing a product from a payment that does not contain a fee.

= 2.6.9, October 20, 2016 =
* Fix: Negative fees associated with cart item do not affect cart item earnings.
* Fix: Z-index of tooltips needs to be increased.
* Fix: Products endpoint returns empty response on v2 of the API.
* Fix: Email property set twice in edd_insert_payment().
* Fix: "Email already in use" error if capitalization does not match.
* Fix: Chosen dropdowns cause a horizontal scroll bug in RTL.
* Fix: record_fees() clears fees in the session before purchases are completed.
* Fix: New user email strips login link on plain text email.
* Fix: Country and state chosen fields on view order details broken.
* Fix: Billing address fields are not saving in the payment details page when edited.
* Fix: Not all settings and data removed when uninstall is run.
* Fix: Don't output a label if one isn't set for text and select HTML elements.
* Fix: Date in payment_meta should match the payment date when modified.
* Fix: The edd_get_random_download() should return an item.
* Fix: Potential PHP warning when using EDD_Payment->save().
* Fix: Payment date is not included in the payment history export.
* New: API sales endpoints now include both user_id and customer_id.
* New: Add user_dropdown to HTML elements that support chosen.
* New: Add support for product variations in the HTML elements product_dropdown.
* Tweak: Change "Disable Guest Checkout" to "Require Login".
* Tweak: Typo "assocaited" in error messages when adding emails to a customer.
* Tweak: Resend Receipt button allows selecting which associated customer email address to send receipt to.

= 2.6.8, September 26, 2016 =
* Fix: Category earnings report does not recover when the site has no download categories.
* Fix: PHP notice caused by localized script loader.
* Fix: CSV Product exporter/importer does not honor file conditions for variable pricing.
* Fix: CSV importer improperly started variable pricing IDs as 0 instead of 1.
* Fix: Repeatable rows not properly adding data-key attribute for variable price select boxes.
* Fix: Undefined index warning when adding download details widget within the customizer.
* Fix: edd_update_payment_status() creates new blank payment record if given an invalid payment ID.
* Fix: REST API Products endpoint doesn't take into account search parameter API.
* Tweak: Correct typo in country list for Philippines.
* Tweak: Upload file text is misaligned within the input field.

= 2.6.7, September 14, 2016 =
* Fix: Improved CSV file type detection to avoid 'invalid CSV' error.
* Fix: The edd_payment_meta filter was not respecting values modified during the filter when saving a payment.
* Fix: Redirect to Checkout setting was not keeping custom query string variables when direct cart URLs.
* Fix: Cart Widget did not properly refresh the page when purchase links were present on the page.
* Fix: Categories/Tags not created and assigned during product import.
* Fix: Remove discount cron which could cause discount codes incorrectly changing to inactive without warning.
* Fix: Can't Uncheck All Checkboxes in Multi-Check.
* Fix: Verify discount is in array before unsetting the discount.
* Fix: edd_stats_{key} transients causing performance issues.
* Fix: Undefined Indexes when assigning new user ID to customer details.
* Fix: Purchase Email Subject ampersands getting improperly HTML encoded.
* Fix: Local files not being properly found when on a Windows server.
* Fix: Properly catch default case for license activation callback.
* Fix: Sequential payment number not assigned when creating payments with EDD_Payment.
* Fix: Tax calculation should only run on values greater than 0.
* Fix: Fix variable name in customer recount tool for post status array.
* Fix: Discount functions not always having user_info array key.
* Tweak: Rename Download List Table Taxonomy Headers.
* Tweak: Fix horizontal alignment of items in the dashboard widget.
* Tweak: Update codex link in readme.txt.
* Tweak: Update EDD_SL_Plugin_Updater.php to latest version.
* Tweak: Correct references of 'short code' to 'shortcode'.
* Tweak: Filter "edd_get_cart_discounts_html" does not pass relevant arguments for developers.
* Tweak: Update payments export to use EDD_Payment.
* Tweak: Return null for all empty data returned from the API instead of an empty array.
* Tweak: Update readme.txt with new donate link.
* Tweak: Allow custom Arguments for Settings API Callbacks.
* New: Accepted payment method icons have been updated to PNGs with transparent backgrounds.
* New: Update MasterCard Logo.
* New: Add filters to API endpoints.
* New: Added actions to the adding and removing of fees.
* New: Buy Now button option on Add/Edit Download now always shows, but is disabled when requirements are not.
* New: Customer address can now be edited for customers who do not previously have an address on file.
* New: Add edd_get_php_arg_separator_output on System Info.
* New: Linking a Customer to a WordPress user now allows login or email address as a valid input.

= 2.6.6, August 1, 2016 =
* Fix: Discount codes being marked as inactive
* Fix: Incorrect state/province used in tax calculations in certain scenarios
* Fix: Incorrect placeholder for Select Customer drop down
* Fix: Incorrect redirect URL for [edd_login] shortcode
* Fix: Spelling errors in internal documentation
* New: Added $items parameter to edd_post_add_to_cart action

= 2.6.5, July 25, 2016 =
* Fix: Incorrect parameters passed to edd_is_checkout()
* Fix: Some records skipped during CSV import
* Fix: update_option() cannot be used to update EDD settings
* Fix: Incorrect date format used in CSV payment import
* Fix: Product-specific sales / earnings graphs show no earnings
* Fix: Spelling errors in PHPDocs
* Fix: Resend Receipt box visible even when payment is not Complete
* Fix: File URLs split on / during product import
* Fix: Setting display:none on variable price options breaks add to cart processing
* Fix: Prices can be set as negative
* Fix: edd_get_variable_prices() returns prices even when variable prices are disabled
* Tweak: Added filters to payment gateway labels on checkout screen
* Tweak: Modified how metadata is registered in anticipation of WordPress 4.6
* Tweak: Changed role required for deleting payment records to delete_shop_payments
* New: Added Remember Me option to log in form
* New: Added /info/ endpoint to REST API

= 2.6.4, July 6, 2016 =
* Fix: Negative fees getting included twice with PayPal Standard
* Fix: Non-standard status in the product import caused silent failure.
* Fix: Rely on Customer's User ID when EDD_Payment::setup_user_id has incorrect data.
* Fix: Date strings are not properly parsed in product import.
* Fix: PHP notice is triggered when using purchase_link shortcode with an invalid SKU attribute.
* Fix: PHP warning when activating on Multisite due to roles not being correcly instantiated.
* Fix: It is possible for edd_get_ip() to return a CSV of IP addresses.
* Fix: Products deleted after being added to the cart creates invalid cart data.

= 2.6.3, June 30, 2016 =

* Fix: Product name needs to be trimmed during payment import to prevent duplicate products being created
* Fix: Discount codes getting erroneously marked as Inactive
* Fix: Importing settings causes a fatal error
* Fix: Address Line 2 erroneously marked as required in some cases
* Tweak: Improved inline documentation for edd_get_download_file_url()
* Tweak: Add-on updater updated to 1.6.4

= 2.6.2, June 28, 2016 =
* Fix: Existing guest customers cannot register a user account on checkout using the email address associated with their existing customer profile.
* Fix: DocBloc for edd_delete_option function is incorrect.

= 2.6.1, June 24, 2016 =
* Fix: PayPal Standard transaction ID links don't link to PayPal Sandbox when payment was made in test mode.
* Fix: Opt-in tracking not sending after initial activation.
* Tweak: Welcome page not showing on upgrade.
* Tweak: Only show welcome page on major versions.
* New: If enabled, send checkin data when Easy Digital Downloads is upgraded.
* New: Add a filter for edd_price_options() that allows adding classes to the output.

= 2.6, June 23, 2016 =
* New: Added filters to process the earnings as they are updated.
* New: Profile Editor state field shows as dropdown when possible.
* New: Public API query mode to allow extension developers the ability to create API endpoints that do not require API keys.
* New: Add/Improve inline help throughout the plugin with UI Tooltip.
* New: Purchased Products column in payment export improved for better parsing.
* New: Filters added to EDD_Customer increase and decrease methods.
* New: Introduce Version 2 (v2) of the REST API.
* New: (API v2) Products endpoint supports category and tag filtering.
* New: (API v2) Customers endpoint supports filtering customers by creation date.
* New: (API v2) Support searching products.
* New: (API v2) Improve discount code reporting.
* New: Add price(s) to oEmbed output for downloads.
* New: Remove comment/trackback counts from oEmbed output for downloads.
* New: Add new edd-table class to all tables outputted by Easy Digital Downloads.
* New: Improve discount code status updates by setting inactive when usage reaches max.
* New: Add daily cron to mark expired and discount codes at max usage as expired or inactive.
* New: Add get_payments() method to the EDD_Customer class.
* New: Make download ID more visible on the downloads list table.
* New: Add filters to the add_fee() and get_fees() methods of EDD_Fees class.
* New: Add price_id support for the Fees API.
* New: PayPal Standard payments are now able to be refunded within the WordPress admin.
* New: Deprecate edd_get_success_page_url().
* New: Add default redirect option to [edd_login] and [edd_register] shortcodes.
* New: Introduce customer meta table.
* New: Add JavaScript trigger to edd_load_gateway() for 3rd party hooks.
* New: Support post__in as an argument in [downloads] shortcode.
* New: Final declaration removed from EDD_Payment class.
* New: Allow edd_get_payment_status to also accept a payment ID.
* New: Support additional email addresses for customers.
* New: Add actions into the increase/decrease sales/earnings methods of the EDD_Download class.
* New: Added CSV Import functionality.
* Tweak: Use internal methods when getting sales counts and files in EDD_Download class.
* Tweak: Add campaign tracking to links in the contextual help menus.
* Tweak: Improve edd-admin.css coding standards.
* Tweak: Update translation .mo files and add development tool for downloading translations from Language Packs.
* Tweak: Improve EDD Licenses tab in settings.
* Tweak: Improve edd_object_to_array method.
* Tweak: Improve mobile breakpoints for customer details view.
* Tweak: Remove pagination when [download] shortcode uses 'random' for the sort.
* Tweak: Use existing function to build {receipt_link} email tag.
* Tweak: PayPal Standard Buy Now was updated to use EDD_Payment.
* Fix: New User Email alerts have incorrect header.
* Fix: Transient being bypassed in EDD_Payment_Stats::get_earnings().
* Fix: Remove unused variable and duplicate post_where filters in EDD_Payment_Stats.
* Fix: Correct spelling error in edd_get_paypal_redirect().
* Fix: Improved cache key generation in EDD_Payment_Stats::get_earnings().
* Fix: Remove deprecated constructor method in System Info browser class.
* Fix: Negative cart fees should not have tax charged on them.
* Fix: Roles are being initialized on every admin request.
* Fix: Negative item fees did not alter the taxation on the item.
* Fix: System info shows Must-Use plugins when none are present.
* Fix: Cart position (key) is not passed to the hooks in the cart.
* Fix: Product dropdown search never shows the current download in results.
* Fix: Trim response from country state lookup.
* Fix: Update subscribe link in Welcome screen.
* Fix: edd_get_users_purchased_products() can sometimes try an array_mege on a non-array value.
* Fix: PayPal IPN Verification forced to HTTPS.
* Fix: Incorrect earnings across a custom date range report.
* Fix: Flat rate discounts can apply an amount larger than the cart total.
* Fix: Improve performance of transient deletion when uninstalling Easy Digital Downloads.
* Fix: Sales logs show incorrect item amounts with variable pricing sales.
* Fix: (a11y) Customer details page icons are not focused.
* Fix: (a11y) Removed title attributes.
* Fix: (a11y) Focus is lost when removing price option.
* Fix: (a11y) Make Add New Price a button when working with variable pricing.
* Fix: (a11y) Repeatable field link to remove row should be a button.
* Fix: Creating a payment sometimes doesn't save the correct user_id or customer_id.
* Fix: Remove old WordPress version compatibility checks for WordPress versions less than 4.0.
* Fix: Preview emails use default gateway.
* Fix: EDD_API hooks for API key generation fire when extending the base class.
* Fix: Remove incorrect messaging on profile editor related to password changes.
* Fix: HTML validation fails if schema.org itemtype is missing.
* Fix: Clicking 'Complete Purchase' button multiple times can result in Empty Cart error.
* Fix: Replace calls to global settings variable with edd_get_option().
* Fix: Duplicate get_post_meta calls in EDD_Download class.
* Fix: Amazon Payments address field not showing with AJAX disabled.
* Fix: Reporting is incorrect when changing predefined dates where year_end changes.
* Fix: Allow no gateway to be enabled when purchase is free.
* Fix: Item fees not taken into account when using EDD_Payment_Stats::get_earnings() for a specific download.
* Fix: Subtotal and Total data attributes using incorrect amounts.
* Fix: Taxonomies with numeric slugs are assumed to be the term_id in [downloads] shortcode.
* Fix: Multiple instances of variable pricing output for a single product causes label target issue.
* Fix: Correct schema.org structured data for items with variable pricing.
* Fix: Correct HTML validation for the legend tag on forms by removing span wrappers.
* Fix: Schema.org markup missing priceCurrency attribute.
* Fix: Use tel input type and patterns to force numeric keyboard on checkout for card number and CVC inputs.
* Fix: Settings sanitization for subsections unsets tax rates when a subsection is registered under taxes.

= 2.5.17, June 3, 2016 =

* Fix: Discount codes are not always sent when opt-in tracking is enabled
* Fix: Correct a capitilzation error in EDD_Customer class usage during edd_insert_payment
* Fix: Correct error in the System Info browser detection

= 2.5.16, May 18, 2016 =

* Fix: Checkboxes cannot be unchecked in the settings screens of some extensions if only one extension is activated

= 2.5.15, May 11, 2016 =

* Fix: Removed unused variables and typos in unit tests
* Fix: Non-standardized display of file names for items in bundles on receipts
* Fix: Downloads not always removed from payment records when removed from the View Order Details screen
* Tweak: Introduced new edd_checkout_user_error_checks action during purchase processing
* Tweak: Placeholders on product dropdowns improved to help indicate searchability

= 2.5.14, May 5, 2016 =

* Fix: New user emails do not have the proper heading
* Fix: Opt-in tracking not always sending when allowed
* Tweak: Added Locale to opt-in tracking

= 2.5.13, April 21, 2016 =

* Fix: User info data not properly populated from customer record when missing in payment meta
* Fix: filesize() run on external files during download process
* Tweak: Changed log in form label to include email address
* Tweak: Added PHP version, EDD version, install date, and WordPress version to opt-in tracking payload

= 2.5.12, April 14, 2016 =

* Fix: Removed incorrect title attribute from Send Test Email button
* Fix: Made add to cart AJAX action Accessible
* Tweak: Added Delete Payment option to View Order Details screen
* Tweak: Moved Resend Receipt button to separate box on View Order Details screen

= 2.5.11, April 7, 2016 =

* Fix: Non-complete payments permitting file downloads
* Fix: Double POST requests for plugin update checks
* Fix: Missing validation for discount code ID in edd_decrease_discount_usage()
* Fix: Default view of Sales / Earnings graphs for individual products not working
* Fix: Download Details widget will not save "Current" display option
* Fix: Sessions should never start on RSS feeds
* Fix: Missing screen reader text for Default Price Option radio buttons
* Fix: Incorrect heading size for some admin screens
* Fix: Payment History Search results now stay after performing actions on shown payments
* Tweak: Added new filters to recount stats tool for customers to allow support for other payment statuses
* Tweak: Added new filters to allow URIs to be added to the session blacklist to prevent sessions from starting on those URIs
* Tweak: Added filter to permit disabling wpautop() in emails
* Tweak: Set "filter_items_list", "items_list_navigation", and "items_list" labels for Download post type
* Tweak: Added new "edd_payment_advanced_filters_row" filter

= 2.5.10, March 24, 2016 =

* Fix: Fatal PHP error when adding multiple price IDs to the card when same item is already in cart
* Fix: New user registration notification email does not support HTML
* Fix: {receipt_link} HTML stripped from plain text emails
* Fix: fees_total property not set up in EDD_Payment object
* Fix: Payment History not properly setting end date filter
* Fix: filesize() being run on external files during file download
* Fix: Symlinked file downloads result in 0 byte files
* Fix: 100% discount codes with taxes enabled fail to allow purchase
* Fix: Extraneous hyphen after product name for products without price options
* Fix: Payments cannot be searched by user ID
* Fix: Undefined index "download_method"
* Fix: Ajax Download search excludes bundles improperly
* Fix: Custom date range over multiple years does not work well in earnings reports
* Fix: HTTP/HTTPS protocol stored on file URLs in database, resulting in failed downloads if site protocol changes
* Fix: Extensions settings tab displays empty Main section in some cases
* Fix: "No checkout page has been configured" notice cannot be dismissed properly
* Fix: EDD transients not deleted during uninstall
* Fix: Sales logs not deleted when payment is changed from Complete to Pending
* Fix: Inconsistent formatting in Dashboard stats widget
* Fix: About and Welcome pages not compatible with Admin Menu Editor plugin
* Fix: State / Province field not populating saved country / state / province when shown as text field
* Fix: discount_dropdown() method of EDD_HTML_Elements does not support non-item label
* Fix: widgets.php page dies if site has large number of products
* Fix: Form to create new API key not shown
* Tweak: Re-adding support for retrieving card item price without tax

= 2.5.9, February 18, 2016 =

* Fix: Settings cannot be saved

= 2.5.8, February 18, 2016 =

* Fix: Transaction ID detection not working properly for old payment records that stored transaction ID in notes
* Fix: 100% discount codes not properly removing billing fields when decimal separator is not a period
* Fix: [edd_receipt payment_key="false"] results in error retrieving receipt message
* Fix: Unused variable in Javascript
* Fix: File downloads failing with Force download method on nginx
* Fix: Undefined variable $file_path during file downloads on some servers
* Fix: Incorrect inline PHP documentation
* Fix: Settings with some non-alphanumeric keys not saved properly
* Fix: Price override in add_download() method of EDD_Payment does not respect price of 0
* Fix: Dash incorrectly shown after product name on the receipt page
* Fix: Missing P tag on View Order Details screen
* Tweak: Replace usage of $edd_options with edd_get_option() helper function
* Tweak: URL in New User Notification email now linked
* Tweak: edd_price() now displays the value of the Default price option
* New: Introduced edd_payment_currency_default filter

= 2.5.7, February 10, 2016 =

* New: Added refund() method to EDD_Payment class
* New: Added filters to enable/disable product and customer stat adjustments during refunds
* New: Added new hooks to EDD_Payment class that run before payment is setup
* Tweak: Improved taxonomy labels for categories and tags
* Tweak: Automatically flush permalinks when a 404 is detected on EDD archive pages
* Tweak: Add proper 403 headers to REST API
* Tweak: Removed usage of soon-to-be-deprecated function get_currentuserinfo()
* Tweak: Improved CSS formatting for edd.css
* Tweak: Improved label/field HTML markup on checkout
* Fix: Store earnings reports can cause memory problems when store has only 0.00 sales
* Fix: Incorrect query arguments when redirecting back to checkout with ?payment-mode if query args are already present
* Fix: Maybe unserialize user_info array in EDD_Payment
* Fix: Recalculate Totals button ignores item quantities
* Fix: Incorrect item price stored in sales log when adding item to existing payment
* Fix: .jpeg files blocked by .htaccess file
* Fix: Product search on customer export returns customer names instead of products
* Fix: Editing items on payment do not save properly in some instances
* Fix: File download links fail with qTranslate-X plugin active
* Fix: Admin notice about expired and invalid keys should show only to site admins
* Fix: Cart widget cannot be shown on checkout screen
* Fix: Incorrect date format when viewing Last Week report
* Fix: PHP notice when sending test payment receipt
* Fix: edit_date not passed in when updating payment record
* Fix: Unneeded product query on discount add/edit screen
* Fix: Profile editor does not update customer name
* Fix: Price not formatted in placeholder for price field
* Fix: Unnecessary paragraph tags inside of form elements on Export screen
* Fix: Payments list filters are off by one day
* Fix: File download links break if UTM variables are added to them
* Fix: pagination=false parameter in [downloads] shortcode does not work
* Fix: Coupon code use count not decremented when payment marked as failed
* Fix: Username field not validated before submitting form to generate new API key
* Fix: Download Details widget requires settings to be saved before it displays

= 2.5.6, January 13, 2016 =

* Fix: Payment dates recorded with incorrect dates depending on the timezone selected in settings
* Fix: Download links missing from purchase receipts for some sites

= 2.5.5, January 12, 2016 =

* Fix: Timezones still not set properly for some sites. This resulted in download links missing from purchase receipts.

= 2.5.4, January 12, 2016 =

* Fix: Timezones set improperly sometimes when payments are created
* Fix: PHP notices in edd_process_add_to_cart() when AJAX is disabled
* Fix: PHP warning in Recount Single Customer Stats tool
* Fix: Payment date cannot be changed in the admin
* Fix: Currency code not properly returned if payment is missing currency metadata
* Fix: "Sorry trouble retrieving payment receipt" error shown occasionally
* Fix: Sanitization process for settings breaks some extension's settings
* Fix: Download links blank for some customers
* Fix: Prevent default placeholder from showing as an option in multi-select fields

= 2.5.3, January 9, 2016 =

* Fix: Status passed to edd_insert_payment() not respected. Caused subscription payments to be marked as pending
* Fix: edd_is_payment_complete() returns false improperly
* Fix: Buy Now links going to empty checkout screen when customer is not logged in
* Tweak: Removed redundant Max Uses column on Discounts screen

= 2.5.2, January 8, 2016 =

* Fix: Item specific fees applying twice

= 2.5.1, January 7, 2016 =

* Fix: Infinite loop in some instances where add_filter() is used by extensions
* Fix: Deactivate License button missing on valid license keys
* Fix: Payments not properly attached to customer records if last name is not supplied during checkout while logged out
* Fix: Item amounts not saving properly when adding new Download to payment record
* Fix: PHP warning on explode() due to empty customer notes field

= 2.5, January 7, 2016 =

* New: Improved settings organization with subsections
* New: Product export to CSV tool
* New: Recount stats tool
* New: EDD_Payment class for developers
* New: Credit card fields now include HTML5 attributes
* New: Improved license key fields for extensions
* New: Discount codes can now be sorted
* New: 0.00 value sales can now be excluded from sales graphs
* New: File download history now available in REST API at /edd-api/file-download-logs
* New: Quantities now included in payment history export
* New: Payment History can be searched by discount code
* New: File Downloads on products can now be re-ordered with drag-and-drop
* New: Added filter to disable "edd_items_in_cart" cookie
* Tweak: Improved customer options in purchase history export
* Tweak: All meta keys now registered with WordPress
* Tweak: EDD_API now runs on wp hook for improved performance
* Tweak: Show item price instead of sale price in sales log
* Tweak: Post type labels now used for Featured Image labels
* Tweak: Inline styles have been removed from [downloads] shortcode
* Tweak: Improved labels for checkbox options in Emails settings tab
* Tweak: Improved SSL detection
* Tweak: Improved abstraction of Customer UI so it can be re-used
* Tweak: edd_get_cart_contents() standardized
* Tweak: Set minimum WordPress version to 4.0
* Tweak: Customer name on Payment History now goes to Customer details screen
* Tweak: Properties in EDD_Amazon class are now public
* Fix: Bulk actions not shown when list tables have no items
* Fix: Fatal error in earnings by category reports
* Fix: edd_maybe_remove_menu_profile_links() breaks some AJAX actions
* Fix: PHP notices in PayPal if cart_details is not an array
* Fix: "This Week" reports fail when crossing a month or year boundary
* Fix: Deleting non-complete payment updates customer stats
* Fix: inline-edit-post loaded when it shouldn't be
* Fix: PayPal IPN listener using deprecated mc_gross key
* Fix: PayPal listener not properly decoding data keys in some server environments
* Fix: Downloads cannot be sorted in DESC order
* Fix: User verification URL missing from email when plain text template is used
* Fix: Incorrectly spelled UTM tags in Add Ons page
* Fix: CSS for Welcome Page affects other pages
* Fix: Properly run install routine when network activating EDD
* Fix: Remove use of WP_CONTENT_URL constant
* Fix: North/South Korea country codes reversed
* Fix: WordPress 4.4 tab styles fix
* Fix: Extension updates do not display if license key is not entered
* Fix: Undefined variable $payment_id when seding test email
* Fix: Cart widgets break add to cart button
* Fix: edd_render_receipt_in_browser() outputs invalid markup
* Fix: Parameters for [edd_receipt] shortcode not working properly
* Fix: Payment Method fields not hidden when 100% discount code is applied
* Fix: Running EDD_Payment_Stats::get_earnings() twice gives inconsistent values
* Fix: Running EDD_Payment_Stats::get_sales() twice gives inconsistent values
* Fix: AJAX call to load dashboard sales widget fires on all admin pages
* Fix: Quantity not added with variable prices and multi-purchase mode when AJAX is disabled
* Fix: user_id field not removed when customer's user account is deleted
* Fix: Symlink File Download option not functioning
* Fix: Order of bundled products not kept when saving Download product
* Fix: Ugly display of long transaction IDs in View Order Details
* Fix: File download links break when language parameter from qTranslate and WPML are present
* Fix: Excluded products improperly count towards minimum purchase total of discount codes
* Fix: Incorrect dates displayed when using custom date ranges in earnings reports
* Fix: Subtotal should be removed from checkout when prices are inclusive of tax
* Fix: price="0" fails when price_id="x" is used in [purchase_link] shortcode
* Fix: Pagination fails when searching Payment History by download ID

= 2.4.10, December 12, 2015 =

* Fix: Security vulnerability related to session IDs

= 2.4.9, October 14, 2015 =

* Fix: Importing payments caused payments to be associated with customer of user doing the import
* Fix: Corrected spelling for edd_customer_recent_purchases_actions hook

= 2.4.8, October 12, 2015 =

* New: Added option to manually verify a user account from the customer details screen
* New: Added support for searching customer records by user ID
* New: Added improved error logging for email sending
* Fix: Incorrect CSS animation property
* Fix: Removed unused code in edd_get_purchase_link() function
* Fix: Corrected spelling error in EDD_Stats class
* Fix: New customers improperly created when logged-in user completed purchases with a different email
* Fix: User verification process should not run on the very first purchase by a customer
* Fix: edd_get_current_page_url() returns improper URL when WordPress is installed in sub folder
* Tweak: Improved formatting of the welcome screen to match the styles of WordPress core

= 2.4.7, September 29, 2015 =

* Tweak: Changed text domain from "edd" to "easy-digital-downloads"
* Fix: User ID not properly set on customer record when user account is created
* Fix: Earnings / sales graph reporting 0 stats for some days incorrectly

= 2.4.6, September 18, 2015 =

* Fix: Bug in user verification process causing redirect loop when Purchase History page is not set
* Fix: Warning: Missing argument 3 for edd_receipt_show_download_files()
* Fix: Quick Edits on Downloads not always expanding the form
* Fix: Occasional redirect loop caused by edd_enforced_ssl_redirect_handler()
* Fix: Item quantity not properly added to cart when AJAX is disabled
* Tweak: Fix extra parameter being provided in get sales by date

= 2.4.5, September 16, 2015 =

* Fix: Bug with AJAX URL on checkout and mixed-content error messages for sites that use HTTPS on checkout but not in /wp-admin/

= 2.4.4, September 14, 2015 =

* Fix: Incorrectly shown "Sorry, trouble retrieving payment receipt" error
* Fix: Credit / debit cards with an expiration more than 10 years in the future cannot be used
* Fix: Non-object notice on /edd-api/customers endpoint
* Fix: Javascript error on category / tag quick edit screen
* Fix: Not array PHP error on customer details screen when customer has purchases without any items
* Fix: Cart item quantities cannnot be changed in HTML structure of cart items is changed
* Fix: Purchase link shortcode attributes for "text" not working properly
* Fix: Default price ID cannot be saved with ID of 0
* Fix: New user notifications not working properly since WordPress 4.3
* Fix: Incorrect URl returned by edd_get_current_page_url() in some instances
* Tweak: Improved account creation process
* Tweak: Introduced "pagination" parameter for downloads shortcode to disable pagination
* Tweak: Introduced edd_protected_directory_allowed_filetypes filter
* Tweak: Add $item to edd_receipt_show_download_files filter
* Tweak: Better error reporting when batch export process fails

= 2.4.3, August 18, 2015 =

* Tweak: Added new action hooks to the Sales Summary widget
* Tweak: Added new action hook that fires when an item is removed from a payment record
* Tweak: Updated logo on PDF reports
* Tweak: Updated logo on welcome screen
* Tweak: Improved order of operations when updating discount codes
* Tweak: Amazon Payments Address widget is hidden on reload when a charge is declined
* Tweak: Only show address widget for Amazon Payments when taxes are enabled
* Tweak: Update Amazon Payment registration URLs for EU and DE
* Tweak: Retrieve complete billing address from Amazon
* Tweak: Updated language files
* Fix: Profile editor missing P tag when user is logged out
* Fix: Email headers should only be added if header text is set
* Fix: Undefined index "plugin"
* Fix: Sale log entries not deleted when purchase is refunded
* Fix: Preset discount code logic tries to run when bulk deleting discount codes
* Fix: Adding ?discount={code} to static home page URL causes blog page to be shown
* Fix: Ensure we have a user before trying to get purchase history
* Fix: Properly format decimals for HUF currency
* Fix: Prevent fatal errors when entering invalid date in start/end date of payment history
* Fix: Removed unused function edd_add_ons_init()
* Fix: Prevent multiple batch processes from being started at the same time
* Fix: Re-instantiate Chosen when cloning a repeatable row with a Chosen field
* Fix: Variable typo in edd_is_admin_page()
* Fix: Customer name not stored properly if three names are entered when purchasing through Amazon Payments
* Fix: Sales report column fails does not work for guest customers
* Fix: direct="true" does not work properly if price_id="1" is also set
* Fix: Products without a title cannot be purchased through PayPal

= 2.4.2, July 13, 2015 =

* Tweak: Allow filtering the ajax user search
* Tweak: Send first_name and last_name to PayPal
* Tweak: edd_filter_success_page_content() not run early enough
* Tweak: URLs to remove fees and items should not be caught by caching
* Tweak: Improve batch exporter extensibility
* Tweak: Add ABSPATH check to Amazon gateway files
* Fix: Multiple tax rates with same id in taxes settings
* Fix: Clarified opt-in messaging
* Fix: Microdata wrapper showing in sidebar
* Fix: Excerpt missing from products API Endpoint
* Fix: Customer search not working with name or email in API
* Fix: Invalid markup on profile editor save
* Fix: API Key fields caused fatal error when viewed in front end profile editors
* Fix: Invalid 'for' attribute in username label for login shortcode
* Fix: Correct edd_listen_for_failed_payments() sending post id, not WP_Post object
* Fix: Fix tax state not saving when text field

= 2.4.1, July 2, 2015 =

* Tweak: Updated Language Files
* Fix: edd_get_gateway_admin_label() should use edd_get_payment_gateways()
* Fix: Payment email in payments list table pulled from User Info, should be pulled from payment info
* Fix: Manually added items to an order always get a price of $0.00
* Fix: Improve Customer View CSS
* Fix: Select Payment Method shown incorrectly when only one gateway is enabled
* Fix: API Security Fix

= 2.4, June 30, 2015 =

* New: Added support for Amazon Login and Pay
* New: Added Earnings by Category report
* New: Added batch processing to data export for handling large amounts of data
* New: Added versioning to the REST API
* New: Added a filter to disable redirect to checkout on per-download basis
* New: Added method for extensions to pre-fill customer details on checkout
* New: Added helper functions for verifying credit / debit card numbers
* New: Added date range options to payment and file download history exports
* New: Added options to control the text shown on Buy Now buttons
* New: Added an action to the cart item title column
* New: Added an action to the Actions column of the cart
* New: Added standardized classes for error, notice, and alert messages
* New: Added date_field() method to EDD_HTML_Elements class
* New: Added filters for the From Address for admin sale notifications
* Tweak: Improved performance of user validation in the REST API
* Tweak: Improved edd_is_admin_page() helper function for detecting when on specific EDD admin pages
* Tweak: Stylesheets are now registered before enqueued
* Tweak: Moved Test Mode option to the Payment Gateways tab
* Tweak: Earnings and sales states now incremented while in Test Mode
* Tweak: Download Details widget now properly respects taxonomy labels
* Tweak: Improved customer count functions in the REST API
* Tweak: Default gateway now shows as first gateway on checkout
* Tweak: Purchase link shortcode now shown in the Download Settings meta box
* Tweak: edd_recalculate_taxes() now includes a raw amount in the response
* Tweak: Customer export is now standarized for all export options
* Tweak: Sequential order numbers improved to protect against race conditions
* Fix: Opt-in tracking accidentally enabled for all installs
* Fix: Minor security flaw with gateway selection on checkout
* Fix: Symlink file downloads option gets hidden after reload
* Fix: Undefined index error with banned emails
* Fix: Notices thrown when logging API requests
* Fix: Customer email not updated when associated user account's email is updated
* Fix: Incorrect for attribute on checkout's password field
* Fix: edd_items_in_cart cookie disables cache improperly
* Fix: API keys are difficult to select on mobile
* Fix: Tools tab displays poorly on mobile
* Fix: Buy Now buttons not properly setting item quantity through PayPal
* Fix: December month data is plotted in January when viewing custom date range
* Fix: Double error message when entering discount code that has already been used

= 2.3.9, May 25, 2015 =

* Fix: Variable price assignment options get removed from download when deleting file row
* Fix: Pagination container still shown when no pagination is needed
* Fix: Airplane Mode load order can cause problems
* Fix: Rewrites hard flushed during activation instead of soft flushed
* Fix: Log records not recording post_date_gmt
* Fix: Slashes not stripped from customer name in Customer Details view
* Fix: "Apply to whole country" tax setting not saved on first save
* Fix: Trashed downloads can be purchased with custom add to cart URLs
* Tweak: Added filters to join and where clauses in edd_count_payments()
* Tweak: Improved logic and flexibility for Products endpoint of the REST API


= 2.3.8, April 27, 2015 =

* Fix: Customer stats incrementing with attaching payment to customer, if payment is already attached
* Fix: edd_get_file_download_method called too late during download process
* Update: Translations Updated
* Tweak: Improvements to the EDD Extensions page
* Tweak: Corrections and updates to readme.txt

= 2.3.7, April 20, 2015 =

* Fix: XSS security flaw

= 2.3.6, April 8, 2015 =

* Fix: Correct issue with non-day-by-day reporting calculating earnings & sales incorrectly
* Fix: Payment Tax backwards compatibility not working correctly
* Fix: Always set the data-price attribute, even when price is excluded from purchase button
* Fix: Prevent New Download Draft by using explicit create method in EDD_Download
* Fix: Hours/Minutes on Order Details truncating leading zeros
* Tweak: Increase the Total Price and Tax input widths on order details

= 2.3.5, March 24, 2015 =

* Fix: Make home_url consistently unslashed in token generation
* Fix: Better checks in edd_get_payment_tax()
* Tweak: Allow clearing of edd_doing_upgrade

= 2.3.4, March 20, 2015 =

* Fix: Cannot add new tax rates
* Fix: Airplane mode plugin v0.1.1 causes fatal error
* Fix: Completed payments can sometimes be marked as abandoned improperly
* Fix: Cart widget items not fully removed when clicking Remove
* Fix: Incorrect price assignment for files when creating new Download products

= 2.3.3, March 18, 2015 =

* Fix: Minor SQL injection issue in the Customers DB class
* Fix: All purchase buttons for a product displayed on a page change to Checkout incorrectly when one is clicked
* Fix: Customer dropdown on View Order Details improperly shows first customer in the list when no customer is attached
* Fix: Mixed-content notice on the checkout page for sites with SSL
* Fix: Incorrect price ID gets added to the cart when multiple purchase buttons are placed on the same page with the price_id parameter
* Fix: Removed Yugoslavia from the country list since it is not a country anymore
* Fix: Quantity field not shown on purchase buttons with the [purchase_link] shortcode
* Tweak: Automatically disable buy now buttons when taxes are enabled since they do not support taxes
* Tweak: Automatically disable the edd_test_ajax_works() test if the Airplane Mode plugin is enabled
* Tweak: Updated translation files for many languages

= 2.3.2, March 14, 2015 =

* Fix: Slow performance in admin area due to edd_test_ajax_works() function

= 2.3.1, March 13, 2015 =

* Fix: File download limits not limiting the number of downloads allowed per payment
* Fix: Microdata improperly added to page titles and content
* Fix: Customer records cannot be deleted
* Fix: Upgrade notices shown unnecessarily on new installs

= 2.3, March 11, 2015 =

* New: Improved customer management interface
* New: Added support for adding multiple prices IDs to the cart with a single add to cart command
* New: Introduced edd_update_option() and edd_delete_option() functions
* New: Payments that remain pending in PayPal will now record a reason in the Payment Notes section
* New: Adding / removing Download products from payment records now properly updates sale and earnings stats
* New: Introduced signed URLs for more secure file download links
* New: Introduced {ip_address} email template tag
* New: Introduced EDD_Customer class for interacting with customer records
* New: Introduced WP CLI command to create sample customers
* New: Introduced edd_purchase_form_user_info_fields hook
* New: Introduced edd_purchase_form_user_register_fields hook
* New: Introduced edd_download_after_thumbnail hook
* New: Introduced edd_download_after_title hook
* New: Introduced edd_download_after_content hook
* New: Introduced edd_download_after_price hook
* New: Introduced edd_before_purchase_history hook
* New: Introduced edd_after_purchase_history hook
* New: Introduced edd_email_show_links filter
* New: Updated translation files for numerous languages
* New: Introduced EDD_Notices class for handling admin notices
* Tweak: Buy Now buttons should revert to Add to Cart if no compatible gateway is activated
* Tweak: Improved PHPDoc for many existing functions and classes
* Tweak: First input field in repeatable files / prices fields receive input focus when adding a new row
* Tweak: Added line breaks to edd.css file in favor of single-line rules
* Tweak: Improved performance of edd_get_users_purchases() by querying the customer table directly
* Tweak: Dashboard sales / earnings widget is now loaded via Ajax to improve performance
* Tweak: PayPal payments made through Buy Now buttons do not show up
* Tweak: Removed the "You must have at least one file" alert when deleting file rows
* Tweak: Improved text alignment in repeatable file / price rows
* Tweak: Updated HTTP Protocal version in PayPal Standard gateway
* Tweak: Improved support for Polylang plugin
* Tweak: Improved standards throughout EDD for usage of edd_get_option()
* Tweak: Added option to prevent empty settings in the rich_editor callback function
* Tweak: Removed dependency on base64_encode/decode functions
* Tweak: Notice now displayed NGINX users to alert them of missing protection for file downloads
* Tweak: Improved quantity / price display for items in the cart widget
* Tweak: Bundles should not be included in the product search when adding items to a bundle
* Tweak: Improved earnings / sales stats tracking for products to avoid race conditions
* Tweak: Improved performance for edd_get_sales_tax_for_year()
* Fix: Yesterday view for reports and REST API fails when on the first day of the month
* Fix: EDD_Download class missing default properties from WP_Post
* Fix: Removed unused function calls in PDF reports and upgrade functions
* Fix: Deprecated edd_get_cart_subtotal() function called with too many arguments
* Fix: edd_get_cart_item_price() function called with too many arguments
* Fix: edd_remove_item_url() function called with too many arguments
* Fix: Improper start_date declaration in CLI class
* Fix: Missing variable declaration in EDD_SL_Plugin_Updater class
* Fix: Undefined variable $download in CLI clas
* Fix: Rounding error when prices are inclusive of tax
* Fix: Sale / Earnings stats improperly adjusted when Test Mode is enabled
* Fix: Discount codes are validated improperly when the product requirements are not meant
* Fix: CVC field allows more than 4 digits
* Fix: In-browser receipt page is a mess on Twenty Fifteeen theme
* Fix: exclude_categories and exclude_tags parameters not working properly in [downloads] shortcode
* Fix: Cross-domain download files get corrupted on NGINX servers
* Fix: Instantiating EDD_Payment_Stats without a date triggers an error
* Fix: File size not displayed when download files
* Fix: Undefined index notice in REST API
* Fix: Missing Download ID check in the Sales Log table
* Fix: Update successful messages are wrong when using bulk edit
* Fix: Cart widget items do not show the proper quantity
* Fix: Upgrade routine notices overwrite each other improperly
* Fix: Not all schema metadata removed when schema is disabled
* Fix: Incorrect schema markup
* Fix: Taxes on checkout do not display the taxed amount of fees

= 2.2.8, February 13, 2015 =

* Fix: Permissions error when accessing upgrades screen with DISALLOW_FILE_EDITS defined
* Fix: Shop Accountants are unable to resend purchase receipts
* Fix: PHP warnings on checkout when purchasing an "item" fee
* Fix: Improper application of discount codes that do not have their product requirements meant
* Fix: Buy Now buttons for free products result in error at PayPal.com
* New: Translation file for Argentina Spanish
* Tweak: Updated translation files for most languages

= 2.2.7, January 30, 2015 =

* Fix: Prevent payment records with missing meta data from haulting the upgrade routine introduced in v2.2.6

= 2.2.6, January 29, 2015 =

* Note: This release will ask you to perform an upgrade process on the payments database. It should take approximately 1.5 minutes for every 1000 payment records
* Bug: Price ID improperly logged in the database, making customer export by price option impossible
* Bug: WP_CONTENT_URL does necessarily respect HTTPS URLs causing some file downloads to fail

= 2.2.5, January 27, 2015 =

* Bug: FORCE_SSL_LOGIN incorrectly makes checkout link HTTPS
* Bug: Reports for 'This Month' forced to current year
* Bug: Reverted CSV Seperator to , and escaped values
* Bug: No downloads showing when using category parameter

= 2.2.4, January 24, 2015 =

* New: Introduced edd_global_checkout_script_vars and edd_ajax_script_vars filters for localized javascript variables
* Bug: Strict PHP Standards notice in EDD_Gateway_Error_Log class
* Bug: Category parameter behaves incorrectly for the [downloads] shortcode
* Bug: Select a Download placeholder on add discount screen saves improperly
* Bug: EDD_Session leaks across sites in multisite installs
* Bug: Incorrect spelling of Indian state names
* Bug: Duplicate array key in country list

= 2.2.3, January 14, 2015 =

* New: Added more hooks to the profile editor template files
* New: Added more country state/provinces to the country dropdown field
* New: Added a JSHint file for WP Coding Standards
* Tweak: Use get_posts() instead of query_posts() in edd_get_*_by() functions
* Tweak: Improved flexibility for EDD()->html->year_dropdown() to support larger year spans
* Tweak: Added NZD currency symbol
* Tweak: Improved support for Polylang plugin via edd_get_option() standardization
* Tweak: Improved unit testing suite
* Tweak: Updated numerous translation files
* Bug: GMT date / time not properly set in date is specified when creating a payment record
* Bug: Items purchased with quantities show incorrectly in sales log table
* Bug: [downloads] pagination not working with default permalinks
* Bug: AND relation acting as an OR relation in [downloads] shortcode
* Bug: Cart widget items incorrect with variable prices
* Bug: Custom date range reports do not work when crossing year boundaries
* Bug: Yesterday report fails on January 1
* Bug: Missing license declaration from Credit Card validation library
* Bug: loading.gif file does not respect HTTPS
* Bug: Copy Download Link(s) link displayed on non-complete purchases
* Bug: Nested FORM tags on checkout after taxes are recalculated
* Bug: get_the_ID() causing non-object error
* Bug: Discount codes not applied if Apply button is not clicked
* Bug: Default price ID cannot be selected on products created before version 2.2
* Bug: edd_get_current_page_url() returns localhost in HHVM
* Bug: Conflict with 404 Redirected plugin resulting in receipts not being displayed
* Bug: Add to Cart button reappears on refresh with variable prices
* Bug: Profile editor not properly validation user email address on save

= 2.2.2, December 14, 2014 =

* Fix: Extension updates running on every page load of plugins.php when using multisite
* Fix: edd_test_ajax_works() request firing on every page load
* Fix: Incorrect price ID added to the cart when two purchase buttons are on the same page
* Fix: Fatal error when using price_id in the purchase_link shortcode
* Fix: Shopping cart squished in the Twenty Fifteen theme
* Fix: Removed unused variables in edd_get_register_fields()
* Fix: Incorrect quantity field displayed when a variable priced item with multi-purchase mode enabled is in the vart
* Fix: Invalid HTML markup due to a missing space before a style tag
* Fix: Improper behavior when deleting the last tax rate

= 2.2.1, December 10, 2014 =

* Fix: Fatal error with some sites in the admin area due to an "ajax works" test
* Fix: Improper user capability check for shop upgrades
* Fix: Non-object errors on the in-browser receipt when an invalid payment key is provided
* Fix: Security flaw related to API key verification
* Fix: Undefined index for download quantity during add to cart
* Tweak: Better option description in settings for item quantities

= 2.2, December 9, 2014 =

* New: Transaction IDs can now be linked to the transaction details page in the payment processor (per gateway)
* New: Added a WP CLI command for generating test purchase data
* New: "price_id" parameter introduced for [purchase_link] shortcode to allow purchasing a single price option
* New: Added support for variable prices to the [edd_price] shortcode
* New: EDD_Download class to make interacting with Download products easier for theme and extension developers
* New: edd_cart_item_tax_description filter
* New: Purchase buttons can now display a quantity field
* New: EDD_Fees API now supports per-product fees
* Tweak: Improved the Tax settings tab
* Tweak: Improved Scrutinizer configs
* Tweak: Set the default number in [downloads] to 9
* Tweak: Added network-activated plugins to the System Info
* Tweak: Updated payment notes to use new type__not_in parameter available for comments
* Tweak: Removed some calls to deprecated functions for PHP 5.4
* Tweak: Improved the UI of the Product Drop Down
* Tweak: Added a check for Flywheel hosting accounts
* Tweak: Added "Ajax Works" status to the System Info
* Tweak: Changed the insert text for "Insert into post" button
* Tweak: Improved the layout of the View Order Details screen
* Tweak: Only update dashboard summaries when the value has changed
* Tweak: Added proper HTTP error codes to all instances of wp_die()
* Tweak: Improved status and error reporting for extension license keys
* Fix: Expiration dates on discount codes don't save properly if crossing year boundaries
* Fix: Inaccurate total with flat rate discounts
* Fix: Resending purchase receipts for bundles does not properly increment File Download limit
* Fix: "All Downloads" filter enables all downloads even when vendor does not have permission to view them
* Fix: edd_settings_sanitize does not respect all field type specific filters such as edd_settings_sanitize_$type
* Fix: Payments show incorrect currency if the shop currency is changed after the purchase is made
* Fix: Posts pagination breaks on front page if using a static home page
* Fix: Item amounts in View Order Details not always respecting currency seperator
* Fix: No default price option if the original price option is deleted
* Fix: Tax column in the CSV export does not respect decimal formatting options
* Fix: ".htaccess missing" error message shown to all users, not just admins
* Fix: Item quantity boxes squashed on checkout with the Twenty Fourteen theme
* Fix: Incorrect price option selected when price option is free
* Fix: Downloads admin menu label blank when using Arabic
* Fix: Flat rate discounts can cause item amounts to be negative
* Fix: Link to mobile app in Payment History incorrect
* Fix: Recalculation amounts in View Order Details can generate incorrect results
* Fix: PHP notices from CREATE SQL passed to dbDelta()
* Fix: Impropoer cart amounts when attempting to set a cart discount programmattically that does not exist
* Fix: .zip files being downloaded without .zip extension due to file-download attribute
* Fix: .card-type class not updated during .change() event

= 2.1.10, December 4, 2014 =

* Fix: An important security flaw with discount codes

= 2.1.9, October 29, 2014 =

* Fix: Extension update checks were running on every page load, causing significant performance problems

= 2.1.8, October 28, 2014 =

* Fix: Incorrect item amounts displayed on the purchase confirmation page when prices are inclusive of tax
* Fix: Discount Invalid error message getting erroneously displayed on checkout when using a preset discount code
* Fix: Invalid CSS comment in minified admin CSS
* Tweak: Updated language files

= 2.1.7, October 20, 2014 =

* Fix: Incorrect currency code comparison in PayPal Standard

= 2.1.6, October 20, 2014 =

* Fix: Do not allow item prices to go negative when using flat rate discounts
* Fix: Pagination doesn't work on /edd-api/customers
* Fix: Do not overwrite existing price IDs when adding, rearranging, and then re-adding price options
* Fix: Compare PayPal currency to the currency in payment meta, not the overall store currency
* Tweak: Improve the display of Download Notes on purchase receipts
* Tweak: Add Today to the default response for /edd-api/stats
* Tweak: Improve checkout CSS to allow some generic HTML elements

= 2.1.5, October 8, 2014 =

* Fix: Flat rate discounts can result in negative amounts in PayPal, causing the purchase to be rejected
* Fix: Cart items that are tax exclusive still display the tax rate
* Fix: console.log() left erroneously in Heartbeat API integration
* Fix: microdata tag was missing from the shortcode-content-price.php template
* Fix: Plugin text domain loaded too early, needed to be done on plugins_loaded
* Fix: Cart fees incorrectly attached to all cart items
* Fix: edd_settings_sanitize filter returning incorrect value
* Fix: HTML encoding issue with email subjects
* Fix: Subtotal should be amount before discounts, not after
* Fix: Incorrect item amount on the Sales log tag
* Fix: Item quantities not displayed on email purchase receipts
* Tweak: Introduced edd_email_tag_bundled_products filter
* Tweak: Pass the payment ID to the edd_get_price_option_name function() calls
* Tweak: Add the price ID to the edd_get_price_option_name filter
* Tweak: Added the transaction ID to the sales endpoint for the REST API
* Tweak: Display the Price ID on each row of variable prices
* Tweak: Verify payment update was successful during edd_update_payment_details

= 2.1.4, September 22, 2014 =

* Fix: New sale notification emails not sending for some users
* Fix: direct="true" not working in the [purchase_link] shortcode
* Fix: User meta for saved carts not properly cleaned out after a cart is restored
* Fix: SQL errors related to WP Session garbage collection
* Fix: API Request logs table showing log entries from other log types
* Fix: Invalid payment meta data related to special characters in PayPal customer info

= 2.1.3, September 15, 2014 =

* Fix: edd_has_user_purchased() returning true improperly
* Fix: Pre-set discount URL parameter not working reliably
* Fix: Duplicate checkout buttons showing up
* Fix: First price option not checked by default
* Fix: edd_record_sale_in_log() not respecting purchase date for imported sales
* Fix: Undefined index notice in the cart widget
* Fix: No file name displayed in download history when one isn't set
* Fix: Corrected some strict SQL standards with the customer table creation SQL
* Fix: Restored the .hentry class
* Tweak: Modified the CSV Payments export to allow easier data manipulation

= 2.1.2, September 4, 2014 =

* Fix: Tax calculation for items with quantities greater than 1
* Fix: Incorrect amount at PayPal

= 2.1.1, September 4, 2014 =

* Fix: Full image URL in Logo upload field in email settings not displaying
* Fix: Fatal error with PHP Sessions for hosts with safe_mode enabled
* Fix: Incorrect item price on checkout when taxes are enabled
* Fix: Incorrect subtotal displayed on purchase receipt when taxes are enabled
* Fix: Customer records not getting created due to SQL syntax error
* Fix: Apostrophes in site name not being decoded in emails
* Fix: card_state class not kept on select when when switching countries on checkout

= 2.1, September 3, 2014 =

* New: Redesigned email templates powered by the new EDD_Emails class
* New: Customers API and database layer that dramatically improves performance of customer-related queries
* New: Improved customer reports table that includes column filtering
* New: Improved transaction ID tracking and display
* New: Added support for WP CLI
* New: Drag-and-drop ordering for variable prices
* New: Admin sale notifications are now sent with same HTML template as purchase receipts
* New: edd_update_payment_meta() function for easily adding and updating meta values for payment records
* New: edd_update_payment_meta() function for easily adding and updating meta values for payment records
* New: Hooks introduced at the bottom and top of the Discount edit screen
* New: Added an option to hide the cart widget when on the checkout page
* New: Introduced a function to detect if a download product is free, edd_is_free_download()
* New: Introduced edd_get_payment_transaction_id() and edd_set_payment_transaction_id()
* New: Introduced edd_user_can_view_receipt_item filter

* Tweak: [downloads] shortcode now accepts slugs or term IDs for category and tag attributes
* Tweak: Estimated earnings are more accurate
* Tweak: Custom date ranges for report graphs now include a day option
* Tweak: Added EDD-specific classes to the body tag when appropriate
* Tweak: Improved responsiveness of the View Order Details screen
* Tweak: Added "download" attribute to file download links
* Tweak: Parameters for edd_get_download_file_url() now passed through urlencode()
* Tweak: Product excerpts now available in the JSON/XML API
* Tweak: Improved display of the payment method icons in settings
* Tweak: Removed all instances of the extract() function
* Tweak: PHP sessions now automatically enabled when the hosting account supports it
* Tweak: Added Download post type to the At a Glance widget
* Tweak: Improved SSL URL filtering of assets and non-checkout pages
* Tweak: Replaced padlock icon on checkout with icon font
* Tweak: Added currency settings to the System Info
* Tweak: Prevent W3 Total Cache from caching discount codes
* Tweak: Added caching to the get_user() method in the EDD_API
* Tweak: Added a "size" parameter to the edd_rich_editor_callback() function

* Fix: Sales column linked incorrectly to the File Downloads log
* Fix: "yesterday" date range failed for EDD_Stats when the current day was the first day of the month
* Fix: The shop_manager role could not export reports
* Fix: Non-item fees were incorrectly allowed to be in the cart when the cart was empty
* Fix: Errors when default CSV columns removed
* Fix: Undefined index in process-download.php
* Fix: Undefined index when updating a payment record with no last name
* Fix: Fatal error on some hosts that disallow set_time_limit()
* Fix: Incorrect label in Discount edit screen for flat rate discounts
* Fix: Conflict with WooCommerce's SSL option when Enforce SSL on Checkout is enabled
* Fix: Incorrect postal code validation for Argentina
* Fix: Incorrect postal code validation for Canada
* Fix: Discount code not properly set in cart when passed in a URL
* Fix: Incorrect tax amounts when a discount code is used and item quantity is greater than 1
* Fix: Incorrect tax amount on fees when prices are inclusive of tax
* Fix: Incorrect item amounts due to rounding amounts too early
* Fix: Duplicated Personal Information sections sometimes displayed on checkout due to non-strict comparison
* Fix: Notices displayed in Download Categories / Tags widget upon save
* Fix: Multiple discounts with the same code could be created
* Fix: Invalid CSS properties
* Fix: Filtering the File Downloads log did not work
* Fix: edd_before_download_content action ran after the download content
* Fix: Download links could not be copied on View Order Details in some versions of Chrome
* Fix: Incorrect number of decimal places for some cart amounts
* Fix: Incorrect tax amounts when taxes are calculated after discounts
* Fix: Adding duplicate items to the cart does not increase cart item quantity
* Fix: Division by zero error when saving a payment record with an amount of zero
* Fix: Empty cart problems when FORCE_SSL_ADMIN is set to true
* Fix: Improper display of the Products field for Bundle products
* Fix: Refunds and disputes not picked up by PayPal's IPN listener

= 2.0.4, June 23, 2014 =

* Fix: Problem with file download URLs when using the Redirect download method
* Fix: Downloads cannot be removed from a payment in View Order Details
* Fix: Erroneous "Cart needs one or more of the selected Downloads" error message
* Fix: MySQL version not properly detected in System Info
* Fix: Undefined variable in cart widget

* Tweak: Added note about where to place language files in languages/readme.txt
* Tweak: Added filters to export file names
* Tweak: Enable author support by default on the Downloads post type
* Tweak: Set $user to currently logged in user when validating a discount if no email or ID is supplied

= 2.0.3, June 19, 2014 =

* Fix: Problem with incorrect gateway being assigned when a discount code was applied
* Fix: Incorrect usage of "login" as a verb
* Fix: Check if a user is deleted before retrieving user data in dashboard widget
* Fix: Incorrect usage of esc_attr_e()
* Fix: All submit buttons on checkout screen text updated when purchase is processing instead of just the submit purchase button
* Fix: Fatal error in System Info when mysqli extension is not enabled

* Tweak: Add link to the changelog on the welcome screen
* Tweak: Show the currently logged-in user's name when previewing an email template

= 2.0.2, June 12, 2014 =

* Fix: Error about selected gateway not being active when purchasing with a discount code
* Fix: REST API not respecting sequential order numbers
* Tweak: Added a class name to the Unlimited File Downloads checkbox in View Order Details

= 2.0.1, June 10, 2014 =

* Fix: Clicking Update from the Download Edit screen sometimes sends admins to a 404 page
* Fix: Accepted Payment Method icons do not load over https://
* Fix: Chosen drop down widths not properly set
* Fix: Payments erroneously marked as Failed
* Fix: Double S in checkout URL when using the Enforce SSL on Checkout option
* Fix: Undefined index while applying a discount code
* Fix: Sequential order upgrade routine not properly running
* Fix: Improper grammar

* Tweak: Added cart subtotal / total to some AJAX responses

= 2.0, June 3, 2014 =

* New: Added support for sequential order numbers
* New: Added a new [edd_register] shortcode
* New: Added an enforce SSL option
* New: Added greatly improved discount code validation during checkout
* New: Added a new API Keys list table in Downloads > Tools
* New: Added support for making purchases with cart fees only
* New: Added support for searching for specific payments via the REST API
* New: Added a tabbed interface to the Tools page
* New: Added an option to generate file download URLs from the View Order Details screen
* New: Added JS events for all frontend cart / checkout actions
* New: Added an "Apply" button to the checkout discount field
* New: Added an Earnings / Sales Overtime export tool
* New: Added support for searching payment records by transaction ID
* New: Added a template file for the [edd_login]
* New: Added support for Revisions to the Downloads post type
* New: Added {discount_codes} template tag to purchase receipt emails
* New: Added no-index, no-follow to checkout and account pages
* New: Added options to control how the login / registration forms are displayed on checkout
* New: Added support for passing a discount code to the checkout screen via a query arg
* New: Added textarea support to the EDD_HTML_Elements class
* New: Added support for exporting customers of a specific product and a specific price option
* New: Introduced edd_get_*_by() functions for downloads and discounts
* New: Introduced a edd_get_users_purchased_products() function
* New: Introduced a edd_is_host() function

* Tweak: Removed the "Update" cart button and added a background update process so amounts and quantities are updated automatically.
* Tweak: Added billing address to payment history export
* Tweak: Added average earnings / sales to the detailed earnings reports for products
* Tweak: Added a link to the File Downloads log from View Order Details
* Tweak: Added a "was_completed" meta flag for payment records
* Tweak: Reversed some of the checkbox anti-patterns
* Tweak: Added support showing all Download products in the [downloads] shortcode
* Tweak: Log the reason a payment is marked as failed from PayPal
* Tweak: Added a columns variable to the edd_download_class filter
* Tweak: Added tax settings to the System Info
* Tweak: Added improved hooks to the edd_shopping_cart() function
* Tweak: Added a link to the product edit screens for each Download in the Purchased Downloads section of View Order Details
* Tweak: Added $payment_id to the edd_view_order_details_form_top action
* Tweak: Modified the way that the global file download limit affects individual file download limits
* Tweak: Add support for identifying products in [purchase_link] by an SKU
* Tweak: Added support for hiding the credit card form if a 100% discount code is redeemed
* Tweak: Added support for moving the checkout cart to the bottom of the checkout screen
* Tweak: Improved the Product Requirements section of the discount edit screen
* Tweak: Improved the Amount field of the discount edit screen
* Tweak: Added WP_LANG constant to the System Info
* Tweak: Improved order history display for non-completed payments in the purchase history
* Tweak: Removed unnecessary serialization of payment meta

* Bug: Cart fees weren't properly taxed
* Bug: JS error caused by error in the German translation
* Bug: The File Download Limit field couldn't be left empty
* Bug: Expiration dates were set improperly in WP_Session, resulting in the garbage collection not working
* Bug: Payment method icons fail to load properly on Windows servers
* Bug: Entering a currency sign in the price field results in an invalid amount on save
* Bug: Incorrect data format passed to number_format()
* Bug: edd_before_download_content action fired too early
* Bug: Customer names longer than two words cannot be properly saved in payment meta
* Bug: "Activate" button for discounts fails if a discount is expired
* Bug: Country field during checkout wasn't actually required
* Bug: Duplicate IDs when multiple purchase buttons for the same product are on the same page
* Bug: Cart totals incorrect when redeeming multiple discounts
* Bug: File download limits cannot be reset
* Bug: File URLs and other fields in File Downloads secttions are not trimmed of whitespace
* Bug: Currency signs improperly encoded in the email subject of purchase receipts
* Bug: Improper decimal points in Dashboard Summary widget sale counts
* Bug: State / province fields loaded in Taxes settings when not needed
* Bug: Custom events not purged from WP Cron when EDD is deactivated
* Bug: Dates for "Last Quarter" incorrect Custom reports
* Bug: Filtering payment history by a guest user fails
* Bug: EDD_Payments_Query cannot be instantiated multiple times
* Bug: Spaces cannot be used for the thousands separator
* Bug: Undefined index "state" in System Info
* Bug: 400 bad request error during API calls
* Bug: Improper behavior during extension license deactivation
* Bug: Restored the Unlimited File Downloads option for payment records
* Bug: API request logs not properly displayed
* Bug: Duplicate label in View Order Details
* Bug: Live credit card verification doesn't update the card type after initial check
* Bug: Removed duplicate call to edd_get_payment_meta()
* Bug: Removed duplicate comma in edd.css
* Bug: Return value, not echo in metabox.php
* Bug: View Order Details can be loaded for non-payment post types
* Bug: Obsolete mfunc/mclude/dynamic-cached-content removed
* Bug: Payment history cannot be sorted by date
* Bug: Current view not properly displayed in the Logs table
* Bug: Issuewith default payment gateway when no gateways are active

= 1.9.9.2: May 6, 2014 =

* Fix: Critical error with ajax actions

= 1.9.9.1: May 6, 2014 =

* Fix: Reverted a change in the ajax URL determination that caused some issues with HTTPS checkouts
* Tweak: Added $payment_id to edd_payment_amount filter
* Tweak: Added $payment_id to edd_view_order_details_form_top filter
* Tweak: Removed nonces from ajax frontend requests

= 1.9.9: May 3, 2014 =

* New: Added a JS trigger for when the cart quantity is updated
* New: Added a CSS class name to the download file URL on purchase confirmation
* New: Introduced an edd_is_success_page() function
* New: Introduced a filter on the edd_get_variable_prices() function
* New: Added Offer schema.org markup
* New: Added edd_get_sales_args filter
* New: Added edd_get_cart_content_details_item_discount_amount filter
* New: Added edd_get_cart_item_tax_item_discount_amount filter

* Tweak: Added $payment_id to the edd_email_receipt_download_title filter
* Tweak: Added a break after the country select field on checkout
* Tweak: Removed direct call to wp_enqueue_script( 'jquery' ) since it is loaded as a dependency
* Tweak: Improved the Dashboard summary widget layout
* Tweak: Improve column width of the Downloads table
* Tweak: Updated language files
* Tweak: Limit payment counts by start and end date
* Tweak: Improved spacing in payment history
* Tweak: Removed nonce fields from front-end ajax requests

* Fix: Allow remove from cart button to work within ajax calls
* Fix: Properly format sale numbers for Total Sales stats
* Fix: Remove all custom taxonomies and terms during uninstall
* Fix: Improper HTML for text fields through EDD_HTML_Elements class
* Fix: Improper HTML for checkbox fields through EDD_HTML_Elements class
* Fix: Broken cache key in EDD_Payment_Stats
* Fix: Properly account for when global $post isn't available in edd_get_purchase_link()
* Fix: Cart quantity could go negative, that's silly
* Fix: Deprecated notices from usage of wp_editor() with WordPress 3.9
* Fix: Improper cursor behavior on Dashboard widgets
* Fix: Broken payment method icons on checkout
* Fix: Deprecated notice with $wpdb->escape()
* Fix: Do not retrieve user if no key is set in EDD_API
* Fix: Fatal error when installing EDD via WP CLI
* Fix: Typo in Australian states function
* Fix: Undefined index in edd_count_purchases_of_customer()
* Fix: InlineEditPost JS error
* Fix: JS error in IE
* Fix: Improper formatting of New Zealand currency
* Fix: Improper verification of Serbian zip codes
* Fix: No validation on logged-in user's email addresses during checkout
* Fix: Improper slash in PayPal IPN URL
* Fix: Ajax product drop down search doesn't return all found products
* Fix: File downloads get named as "index.php" on Android devices
* Fix: Duplicate field ID in card state and card country fields
* Fix: Strings in Discounts admin not able to be translated
* Fix: Empty carts with FORCE_SSL_ADMIN set to true
* Fix: Tax improperly applied to countries not included in tax rules
* Fix: Unable to override global file download limit option
* Fix: Don't load scripts in admin except when needed
* Fix: Payment method icons fail on Microsoft-IIS servers
* Fix: Incorrect stats with Custom date ranges on reports
* Fix: edd_get_chosen_gateway() doesn't respect default gateway

= 1.9.8: March 6, 2014 =

* Fix: Problem with guest customers not being able to view purchase receipts
* Fix: Problem with field alignment in the View Order Details screen on small screens
* Tweak: Added an option to dismiss the "No Checkout Page" notice


= 1.9.7: March 4, 2014 =

* Fix: Problem with prices losing the decimal places
* Fix: Issue with file URL being obscured in the file URL field
* Fix: Currency sign added to monthly estimated sale count
* Fix: Not all payment statuses taken into account  for payment counts

* Tweak: Allow get_terms() arguments to be filtered in categories / tags widget
* Tweak: Add arguments to purchase link filter

* New: Added Hebrew translation

= 1.9.6: February 26, 2014 =

* Fix: Purchase stats not undone when changing a payment from Revoked to Refunded
* Fix: Typo on the settings for the Disable Live Credt Card Validation settings
* Fix: Tax calculation after discounts is incorrect
* Fix: UPLOADS constant not respected for file downloads
* Fix: wp_session garbage collection not always working
* Fix: PayPal IPN gets validated even when validation is disabled
* Fix: State tax rates can't be set to 0 when default rate is greater than 0
* Fix: Cart items not properly sanitized when adding them to the  cart
* Fix: SQL error on very first purchase
* Fix: PayPal business email comparison sometimes fails when it shouldn't
* Fix: Decimals shown on currencies that don't support decimals
* Fix: Custom date ranges for reports greater than 3 months should query by month, not day
* Fix: Several small typos and capitalization issues
* Fix: Purchase History page not deleted on uninstall
* Fix: Refunds not detected by PayPal IPN
* Fix: Detect when user is done typing in product drop down and only trigger ajax search once done

* Tweak: Some improved coding standards and PHPDoc
* Tweak: Added discount codes used to sales API response
* Tweak: Added ini_get( 'arg_separator.output' ) and allow_url_fopen status to System Info
* Tweak: Improve _edd_deprecated_function() to actually pass the backtrace
* Tweak: Inline documentation for filters
* Tweak: Allow the From Name and From Email to be filtered for sale notifications
* Tweak: Allow the cart contents to be filtered when adding items to the cart
* Tweak: All receipt visibility to be filtered
* Tweak: Allow array of download IDs to be passed to EDD_Payments_Query
* Tweak: Added floatval() to edd_get_payment_amount()
* Tweak: Properly format number in Sales column
* Tweak: Color code axes on graphs when there are multiple axes
* Tweak: Removed error suppression from edd_readfile_chunked()
* TweaK: Added helper function for reporting views


= 1.9.5: February 4, 2014 =

* Fix: Total customer count not showing in Customer Reports
* Fix: Pagination not working in Customer Reports
* Fix: Custom date ranges greater than 3 months should query by month, not day
* Fix: .required class not added to input fields when fields are required
* Fix: Non published Downloads not deleted on uninstall
* Fix: Taxes not properly calculated for logged-out customers
* Fix: Dashboard earnings summary widget uses "edit_pages" capability instead of "view_shop_reports"
* Fix: Restored functionality of edd_get_purchase_download_links() function
* Fix: Resend Purchase Receipt button shouldn't show on non-complete purchases
* Fix: Product drop down doesn't show all products
* Fix: Item amounts not shown correctly in Order Details when using item quantities
* Fix: Cart fees not removed when cart is empty
* Fix: {billing_address} email tag returns empty string
* Fix: Updated missing language files
* Fix: Selecting same month for start and end date with custom date ranges results in a 12 month spread
* Fix: Admin sale notification email has not formatting
* Fix: Cart sessions loaded in the wp-admin when they shouldn't be
* Fix: Pages drop downs in settings cause all pages to be queried on every wp-admin page
* Fix: Format total sales correctly in Reports
* Fix: Incorrect variable name in edd_get_cart_item_final_price()

* Tweak: Dramatic performance improvement to payment queries throughout the admin
* Tweak: Rework edd_get_earnings_by_date() to be much more performant
* Tweak: Rework edd_get_total_earnings() to be much more performant
* Tweak: Rework EDD_Payment_Stats::get_earnings() to be much more performant
* Tweak: Removed Files Downloaded count from customer reports due to it being too expensive
* Tweak: Rework edd_get_purchase_stats_by_user() to be much more performant
* Tweak: Only filter wp_count_comments() when on the Dashboard to create less performance impact on wp-admin
* Tweak: Remove plaintext password from new user notification email
* Tweak: Increase refresh time from 5 to 8 seconds when returning from PayPal to give PayPal IPN longer to complete
* Tweak: Better separation of sections in settings
* Tweak: Optimized all images to reduce footprint
* Tweak: Removed Purchase History widget as it has never worked and is never used
* Tweak: Send billing address to PayPal
* Tweak: Change all purchase buttons on page of product to Checkout when one is clicked

= 1.9.4: January 13, 2014 =

* Fix: Bug with Last Month stats showing a combined total of this month and last month
* Fix: Bug with item amounts that could result in a PayPal error

= 1.9.3: January 13, 2014 =

* Fix: Bug with tax amounts not being rounded resulting in an error when going to PayPal
* Fix: Invalid foreach error message when saving the extensions tab

= 1.9.2: January 10, 2014 =

* Fix: Bug with add-on and theme license key activation
* Fix: Bug with invalid foreach() in small number of cases

= 1.9.1: January 9, 2014 =

* Fix: Rounding issue with taxes when item quantities are greater than 1
* Fix: Customer's State / Province field not showing on checkout, even when stored
* Fix: File Download Limit and Download Link Expiration settings not able to be changed
* Fix: Buy Now buttons set price to 0.00 at PayPal

* Tweak: Updated all language files for EDD 1.9+

= 1.9: January 7, 2014 =

_REQUIRES WordPress 3.7 or later_

* New: Added a new Getting Started page for first time installs
* New: Rebuilt the View / Edit Details screen for payments, adding the ability to edit almost all data associated with a payment and dramatically improving the edit payment interface
* New: Added per-products earnings and sales graphs
* New: Allow purchase buttons to show only the price, no text
* New: Added an option to enable/disable data deletion during plugin uninstall
* New: Allow users to login with their email address
* New: HTML and Number field callbacks for settings field types
* New: Added an option to be able to exclude products from discount codes
* New: Allow the EDD templates directory to be modified via plugins or themes
* New: Added start/end date filters to the Payment History screen
* New: Added a Product Details widget to show the purchase options and details of a product in any widget area
* New: Added betters hooks for the loging process
* New: Added a "edd-payment-type-selected" class to the chosen payment gateway during checkout
* New: Allow shop vendors to see earnings / sales for their own products in main Downloads screen
* New: Dramatically improved the Edit product screen by splitting up the product options into multiple meta boxes to reduce clutter
* New: Added EDD_Email_Template_Tags class and helper functions give developers a simple way to register new email tempalte tags
* New: Added EDD_Graph class to allow developers to easily display custom graphs in add-ons and themes
* New: Added live ajax search to all product drop-downs in the admin to dramatically improve performance of EDD on stores with a lot of products
* New: Add dashicon for Downloads menu and WP 3.8+
* New: Added new Payment Processing template file that is displayed when returning from PayPal to ensure the IPN has enough time to be processed before showing the customer the payment receipt

* Fix: Rewrote the tax API to fix numerous bugs
* Fix: A bug with payment item amounts getting zeroed out when modifying an existing payment
* Fix: A bug that caused Euro and other currency signs to get encoded improperly in the PDF report
* Fix: A memory leak in the File Downloads log page
* Fix: A bug that caused discounted amounts to show as twice the amount they should
* Fix: A bug with the subtotal being incorrect when item prices are entered inclusive of tax
* Fix: A bug that caused custom add to cart links to add items to the cart twice
* Fix: Undefined index when using edd_action=straight_to_gateway and variable prices
* Fix: Purchasing a free product doesn't increase purchase count
* Fix: Access denied error when viewing single pages of attachments connected to a Download
* Fix: EDD_Fees doesn't properly sanitizes amounts before adding up the total
* Fix: Undefined index when restoring a saved cart and logged-out
* Fix: Don't allow the checkout form to submit when hitting Enter after entering a discount
* Fix: Shop Manager user role cannot save shop settings
* Fix: Estimated earnings could go negative, which they should not be allowed to do
* Fix: Item earnings / sales not properly adjusted when item quantity is greater than 1
* Fix: edd_settings_sanitize prevents EDD settings from being modified via update_option()
* Fix: Very first purchase in shop causes total store earnings to be doubled
* Fix: Item price incorrect when item prices are entered inclusive of tax
* Fix: Ajax animation doesn't stop when adding an item to the cart that has Multi-Option Purchase Mode enabled
* Fix: Incorrect echo statement inside of an apply_filters() call (twice)
* Fix: Selecting the same month for start and end in Report date filters resulted in a 12 month spread
* Fix: A bug that caused the Yesterday report view to show 0 earnings and sales when the current month is January

* Tweak: Better support for responsive columns in the [downloads] shortcode
* Tweak: Improved the sample product import file
* Tweak: Better setup EDD_Roles during initial installation
* Tweak: Improved the checkout_cart.php template file
* Tweak: Automatically map the lowest price option for variably-priced products to the standard price field, allowing sort by price
* Tweak: Improved the Downloads > Add Ons page
* Tweak: Improved the checkout login form to include an actual "Login" button
* Tweak: Add id attributes to fields in profile editor
* Tweak: Set minimum WordPress version required to 3.7

= 1.8.6: January 3, 2014 =

* Fix: invalid date error in Dashboard Sales Summary widget

= 1.8.5: November 18, 2013 =

* Fix: revert accidental introduction of new meta box UI that broke file URL saving

= 1.8.4: November 17, 2013 =

* Fix: discounts cannot be searched by discount code
* Fix: file download limit not honored when files are assigned to price IDs
* Fix: ajax cart item remove URL always set to key of 0
* Fix: bug with price IDs and the straight to gateway action
* Fix: do not execute before/after download contnet hooks if download requires a password
* Fix: bug with styling of first P tag in purchase receipts
* Fix: email preview could only be shown once per page load
* Fix: API keygen option not shown to users even when enabled
* Fix: I18N error

* Tweak: MP6 UI compatibility
* Tweak: add edd_get_option() helper function
* Tweak: enable mobile app link to be removed
* Tweak: pass $item along with edd_email_receipt_download_title filter
* Tweak: map lowest price option amount to edd_price
* Tweak: add new user notification on checkout user registration
* Tweak: check the address is not equal to * when selecting country
* Tweak: show manual payment gateway as "Free Purchase" on payment receipt
* Tweak: store total shop earnings in database to improve performance
* Tweak: enable access to products API end point wiithout API keys

= 1.8.3.1: November 5, 2013 =

* Fix: a bug that prevented EDD cron events from firing
* Fix: incorrect display of negative amounts for EDD_Fees

= 1.8.3: November 4, 2013 =

* New: added edd_payment_receipt_after_table hook

* Fix: account for themes that set form input values to the value of the placeholder (caused a bug with discount codes)
* Fix: show tax as whole number, not as decimal on prices
* Fix: incorrect user assigned to purchases made when registering an account
* Fix: 404 error due to "download" parameter in file download URLs on some hosts
* Fix: fatal error in payment history column
* Fix: payment method icons not respecting WP in its own directory
* Fix: invalid UTF8 sequence in heartbeat API response
* Fix: illegal offset with user address in profile editor shortcode
* Fix: empty paragraph tag after tax rates in tax settings
* Fix: undefined notices when saving Extensions tab with only one checkbox
* Fix: double subtotal when two cart widgets are displayed on the same page
* Fix: security flaw with user registration process during checkout
* Fix: rich editor escaping issue in admin sale notification email

* Tweak: improved .htaccess missing error message
* Tweak: increased width of default email receipt template
* Tweak: display EURO with symbol, not as EUR
* Tweak: updated many translation files

= 1.8.2.1: October 20, 2013 =

* Fix: Ensure get_plugins() function exists and load it if not before using it

= 1.8.2: October 20, 2013 =

* New: Added optional plugin usage tracking (opt-in and get a discount code)

* Fix: Incorrect tax label on cart subtotal
* Fix: Download earnings / sales not decreased when refunding a payment
* Fix: Aposthrophes in first / last name fields on checkout broke order details
* Fix: Pagination broken on Downloads report list table
* Fix: Undefined offset when no variable prices are saved
* Fix: Undefined offset when no variable prices are saved
* Fix: Purchase link tax label does not respect logged-in user's stored billing details

* Tweak: Set Purchase Confirmation as a child of the checkout page on install

= 1.8.1: October 12, 2013 =

* Tweak: Itemization in PayPal disabled due to bugs with amount calculation. Will be fixed in 1.9
* Tweak: Added filters to admin script loaders so extensions can enable core EDD scripts on custom pages

* Fix: Download Limit field shown incorrectly to shop vendors
* Fix: Price option name not passed to PayPal
* Fix: Settings import doe not perform a filetype check
* Fix: Bug with Payment History pagination
* Fix: Escapaing issues with text and textarea fields in settings
* Fix: Previous purchase lookup on user registration not working
* Fix: Deleting payment note redirects to Payment History instead of Edit screen
* Fix: Incorrect username in Payment History for guest purchases
* Fix: Check for apache before showing .htaccess missing warning
* Fix: Add fallback cor cal_days_in_month()
* Fix: Tax calculation bug
* Fix: Checkboxes in Settings > Extensions cannot be turned off
* Fix: Extra <p> tag in profile editor

= 1.8: September 26, 2013 =

* New: added Cart Saving feature
* New: new button color options
* New: redesigned purchase button styles
* New: display a notice if the .htaccess file for file protection is not present
* New: improved caching compatibility with new cookie that can be detected by hosts and caching plugins
* New: "activate" and "deactivate" options added to Discount code bulk actions menu
* New: added Downloads > Tools menu for settings export / import and other utility options
* New: introduced EDD_Payments_Query class for querying payment records
* New: introduced EDD_Payment_Stats class for querying earnings and sales data
* New: introduced EDD_Stats base class to be extended by other classes for retrieving data-based data
* New: added settings and donate links to plugin action links
* New: add email tags for billing address
* New: added address fields to [edd_profile_editor] to allow customers to update their stored billing address
* New: add status options to Payment History bulk action menu to allow payment statuses to be updated in bulk
* New: added WP Heartbeat API to the EDD Dashboard summary widget for live dashboard updating
* New: added category filtering support to Downloads > Reports > Downloads

* Fix: allow payment status to be translated before inserting the payment note on status change
* Fix: tax calculation bug with 100% discount codes
* Fix: broken pagination on Discounts page
* Fix: missing linebreaks in admin sale notification email
* Fix: tax not initially calculated for logged-in user
* Fix: better prevent broken download URLs by including index.php in all file download URLs
* Fix: typo in states list function
* Fix: broken file downloads when using absolute path on Windows servers
* Fix: file download limit not working
* Fix: price option name not passed to PayPal purchase
* Fix: corrupted file downloads caused by ob_flush() and flush()
* Fix: file download bug when using a lighttpd server
* Fix: email address not checked for existing email when updating user profile
* Fix: price option name not displayed on purchase confirmation
* Fix: add to cart redirects incorrectly when ajax is disabled
* Fix: price assignment for download files doesn't work correctly with Buy Now
* Fix: edd_download_history_row_end action passed wrong variable
* Fix: tax calculation incorrect when Prices entered with tax set to "Yes, I will enter prices inclusive of tax"
* Fix: PHP notices for settings descriptions
* Fix: incorrect label ending HTML tags
* Fix: AJAX loading indicator breaks if edd.css is moved to edd_templates folder
* Fix: negative Fees (discounts) don't respect "Taxes after discounts"
* Fix: [downloads] pagination doesn't work on non hierarchical single post types
* Fix: stripslashes on discount code name fields
* Fix: incorrect label for "Deactivate" in Discount Codes

* Tweak: removed the "You have already purchased this" message from the single Download pages
* Tweak: small improvements to checkout UI
* Tweak: some settings callbacks not using size argument
* Tweak: hide Buy Now button behavior option is supported gateway is not active
* Tweak: redundant post meta created on Download publication
* Tweak: added support for adding default Download metaboxes to other post types
* Tweak: added host detection to System Info
* Tweak: added a filter to product types to allow new product types to be registered
* Tweak: added hex values to edd_get_button_colors()
* Tweak: added form_id attribute to [edd_purchase_link]
* Tweak: dramatically improved the EDD settings API
* Tweak: added a column class to the [downloads] shortcode
* Tweak: added SPAN tags around checkoug LEGEND tags
* Tweak: automatically update file price conditions when new price options are added
* Tweak: fire edd_create_protection_files() on install process to ensure .htaccess file is created in uploads/edd directory


= 1.7.2: July 30, 2013 =

* Fix: Translation error with GB file
* Fix: Payment method icons not showing with only one payment gateway enabled
* Fix: HTML being outputted even when no excerpt
* Fix: Incorrect PayPal item quantities
* Fix: Height bug with jQuery Chosen fields
* Fix: Admin sale notification has no formatting

* Tweak: Added the_title_attribute() to shortcode-content-title.php template file
* Tweak: Updated pot files
* Tweak: Add new shortcode_atts() parameter for the new filter in WP 3.6
* Tweak: Improved styling of discount section on checkout
* Tweak: Added new javascript actions for discount actions

= 1.7.1: July 23, 2013 =

* Fix: Payment amount check in PayPal IPN
* Fix: Typo in register-settings.php
* Fix: Retina payment icon size
* Fix: Undefined index errpr
* Fix: 'std' option doesn't work for select fields
* Fix: Disable purchase link on non-published products
* Fix: Schema.org microdata titles cause span tags to show in header section
* Fix: Disable deprecated WP Super Cache Dynamic Content check

* Tweak: Move tax rate below purchase button

= 1.7: July 20, 2013 =

* New: Brand new styling for the checkout form
* New: Added options to configure the admin purchase notification email
* New: Added search to customer reports
* New: Added item quantity support on checkout
* New: Brought back the [downloads_history] shortcode
* New: Added the ability to use multiple discounts per-purchase
* New: Added filter to disable schema.org microdata
* New: Better payment method icons, including full retina support
* New: Better icons throughout admin, including full retina support
* New: Added complete Swedish translation
* New: Include any discounts used in Payment History export
* New: Added new post installation hook: edd_after_install
* New: Introduced function for retrieving random Download ID numbers (for themes)
* New: Added option to resend purchase receipts from the View Order Details page
* New: Added option under Tools menu to import / export store settings
* New: Introduced "Buy Now" option for (PayPal) purchase buttons

* Tweak: Improved add to cart ajax indicator
* Tweak: Better caching plugin support
* Tweak: Added HTTP status headers to the EDD_API class
* Tweak: Improved purchase notification emails
* Tweak: Allow the enctype of the purchase form to be changed
* Tweak: Modified the tax display on the purchase receipt
* Tweak: Added the Order ID # to the admin sales notice subject
* Tweak: Changed the capability of the EDD Add Ons page
* Tweak: Moved the Zip / Postal Code field just after the Billing City field
* Tweak: Added "inherit" to the button color options
* Tweak: Added additional server / environment details to System Info
* Tweak: Improved variable price option display for products with duplicate price amounts
* Tweak: Greatly refactored admin-side javascript
* Tweak: Better required fields handling for checkout
* Tweak: Show 0.00 prices as "Free"
* Tweak: Allow Reports and REST API to cross year boundaries
* Tweak: Better date selection options in Reports
* Tweak: Better permission checks in the REST API

* Fix: RTL compatibility issues
* Fix: qTranslate plugin compatibility
* Fix: System Info bug with display server Memory incorrect
* Fix: User ID not stored correctly in purchase meta
* Fix: Cart amount should never be allowed to go negative
* Fix: Payment email not properly updated when editing a payment
* Fix: 100% discount code purchases getting set as PayPal purchases
* Fix: Bugs with "Sorry, trouble retrieving payment receipt."
* Fix: File uploads going into incorrect year directory
* Fix: Subtotal in cart widget only showing one decimal place
* Fix: Incorrect usage of edd_log_test_payment_stats filter
* Fix: Check for existence of country code in zip/postal code regex
* Fix: Variable pricing didn't follow currency position
* Fix: Invalid foreach error with [downloads_discounts] shortcode
* Fix: [purchase_collection] shortcode broken
* Fix: Customers not always receiving purchase receipt


= 1.6.4: June 24, 2013 =

* Fix: Semicolon instead of comma
* Fix: Duplicate foreach keys
* Fix: Default fallthrough on switch statement
* Fix: Undefined variable $requested_file during file downloads
* Fix: Incorrect redirect when clicking Next during checkout with permalinks set to default
* Fix: Incorrect currency code for Malaysian Ringgits
* Fix: Non-unique element IDs on checkout
* Fix: Incorrect status check in edd_process_paypal_web_accept_and_cart
* Fix: Use current_time( 'timstamp' ) when checking for discount validity
* Fix: Tax settings display issue
* Fix: Email receipts not sending in Test Mode
* Fix: .htaccess rules not updated when changing download methods
* Fix: Downloads failing with Forced download method
* Fix: System Info not picking up network activated plugins
* Fix: Taxes rounded up incorrectly

* Tweak: Added $tax to the edd_cart_item_price filter
* Tweak: Hide discount code on 0.00 purchases
* Tweak: Sanitize subjects for email receipts
* Tweak: Allow 3 and 4 decimal tax rates
* Tweak: Changed "Download" to "Free Download" for 0.00 purchases

= 1.6.3: June 13, 2013 =

* Fix: Invalid parameter warning for [download_discounts]
* Fix: Problem with 100% discount codes going to PayPal
* Tweak: Updated German translation files
* Tweak: Improved the order of countries in the drop down menu

= 1.6.2: June 11, 2013 =

* Fix: Positive cart fees overwrote PayPal items after sending purchase to PayPal
* Fix: Hide tax billing fields if checkout amount is 0.00
* Fix: Fix equality operator in edd_get_download_files()
* Fix: X-Accel-Redirect needs relative path but gets absolute
* Fix: Wrong description for taxes on checkout
* Fix: Cannot delete all tax rates
* Fix: Spelling error on option to disable admin notifications
* Fix: Issue with edd_before/after_download_content hooks being added on pages that are not Downloads

* Tweak: Added minor tax rate option to make tax rate country wide
* Tweak: Change "Purchase to "Download" on checkout if cart total is 0.00

= 1.6.1: June 11, 2013 =

* Fix: Fatal error for users that had modified the checkout_cart.php template files
* Fix: Fatal memory error for some users when viewing the File Downloads logs
* Fix: Warning about urldecode() on some pages, including Dashboard Sales Summary widget

= 1.6: May 31, 2013 =

* New: Bundled products
* New: Download limits per-purchase
* New: Pending orders over 1-week old are automatically marked as Abandoned
* New: Added support for X-Sendfile, X-Lighttpd-Sendfile, and X-Accel-Redirect download methods
* New: Added Download Method option: Redirect or Forced
* New: Discounts API endpoint
* New: Global file download limit
* New: Added possible search methods to help tabs
* New: Payments amounts can be edited
* New: Introduced .min versions of all scripts / styles
* New: Ability to delete payment notes
* New: Improved Order Details screen
* New: SKU fields for Downloads
* New: Itemized purchase details for PayPal Standard
* New: Introduced state / province fields for 12 additional countries
* New: Introduced EDD_Cron class for scheduling routine events

* Tweak: File Name field not set by default
* Tweak: Improved file protection via better .htaccess rules
* Tweak: Export payment history by date
* Tweak: Show payment status in [purchase_history]
* Tweak: Show payment status in [edd_receipt]
* Tweak: Removed PressedTrends tracking
* Tweak: Improved cart widget
* Tweak: Added a class to the Empty Cart message
* Tweak: Allow opt-in use of PHP $_SESSION for data storage
* Tweak: Better error messages for File Download failures
* Tweak: Better default stats response in EDD_API
* Tweak: Better HTML helper functions

* Fix: Draft products could be added to the cart
* Fix: Insert Download icon screwed up
* Fix: Estimated stats incorrect
* Fix: "upload" field type in settings doesn't use WP 3.5 uploader
* Fix: Sample import data uses wrong shortcode
* Fix: Max product limit in PayPal Standard
* Fix: Incorrect parameter in shortcode-content-cart-button.php
* Fix: System Info: Page On Front and Page for Posts have same value
* Fix: Firt Name field not required for free downloads
* Fix: Download categories 404 on front end
* Fix: Blank credits page
* Fix: WP Super Cache 1.3.1 compatibility
* Fix: Incorrect URL to iPhone image in Payment History
* Fix: Editing Downloads in payment doesn't work fully
* Fix: Purchase History page used wrong shortcode
* Fix: Error bulk-deleting payments with some languages
* Fix: Prices not showing on purchase button
* Fix: Incorect path and URL constants when wp-content/plugins is symlinked
* Fix: SQL error with comments_clauses
* Fix: Non-object error
* Fix: Estimated earnings are sometimes incorrect
* Fix: Payment History and Reports not based on site's timezone
* Fix: Week Reports start day doesn't respect start day in general WordPress settings
* Fix: Multi-Option purchase mode: can add downloads to cart without checking a box
* Fix: White screen after checkout when on multi-site

= 1.5.2.3: May 23, 2013 =

* Fix: An uninstall error

= 1.5.2.2: May 9, 2013 =

* Fix: A bug that caused prices to not show on purchase buttons

= 1.5.2.1: April 23, 2013 =

* Fix: A bug that caused taxes to be calculated incorrectly
* FIx: A bug that caused purchase receipts to not respect an edited email address

= 1.5.2: April 13, 2013 =

* New: Discount codes now automatically removed from cart when the required cart items are removed
* New: Added PHP safe_mode indicator to System Info
* New: The price option purchased is now shown in [edd_receipt]
* New: Added get_output() method to the EDD_API
* New: Added new "upgraded from" option to better help with support issues
* New: Added symlinks on/off to System Info
* New: Added a link to the EDD iOS sales / earnings tracker
* New: Added ability to export file download history by date
* New: Added category filtering to Downloads > Reports > Downloads
* New: Added option to disable admin sales notices
* Tweaked: Better options to disable the price in the [purchase_link] shortcode
* Tweaked: Improved the checkout error fields
* Fix: Issue with purchase receipt CSS
* Fix: SQL error with comments_clauses
* Fix: EDD_API retrieved pending sales when it shouldn't
* Fix: Default currency now set
* Fix: Issue with edd_show_added_to_cart_messages() showing on incorrect pages
* Fix: Force redirect when adding items to the cart from the checkout page
* Fix: EDD_API &number=-1 returned null
* Fix: Product price formatting screws up when saving products without a thousands separator set
* Fix: Not all products shown in the drop down for Discount Code Requirements
* Fix: "Total sales for period shown" displayed as $0.00
* Fix: Issue with cart fees not being taxed

= 1.5.1: March 21, 2013 =

* Fix: Tags / Categories couldn't be assigned by anyone except shop_manager and admins
* Fix: Improved memory usage by removing file download log meta box
* Fix: Couldn't change the email associated with purchases
* Fix: Comment feeds showed payment notes
* Fix: Corrected some filters for text outputs
* Fix: Raw HTML displayed on checkout after opting into taxes
* Fix: Total shown twice on the checkout page
* New: Added link to File Download Log from Edit download screen
* New: Made file download symlinks disabled by default
* New: Added hour::minute::second to payment history export
* New: Improved CSS for payment method select
* New: Allowed store vendors to see sales / earnings for their own products
* New: Added new hooks to the export page

= 1.5: March 13, 2013 =

* New: Added [EDD_API class](https://github.com/easydigitaldownloads/Easy-Digital-Downloads/issues/857) to provide a fully RESTful API to retrieve sales and earnings stats
* New: Dramatically improved layout, design, and UX for the checkout page
* New: Changed payment method select to radio buttons
* New: Added option to define a default payment method
* New: Added option to export all payments of a specific status
* New: Added an option to export all buyers of specific products
* New: Added per-product discount codes
* New: Added option to enable/disable one-use-per cusomter discount codes
* New: Added estimated monthly earnings / sales to Reports
* New: Added product microdata for Schema.org
* New: Added ability to edit a payment's user ID
* New: Added option to send a test purchase receipt
* New: Added new template files for the shopping cart and shopping cart widget
* New: Added improved file download delivery to better support large files
* New: Added improved session management with WP_Session and removed reliance on PHP $_SESSION
* New: Added [arbitrary cart fees class](https://github.com/easydigitaldownloads/Easy-Digital-Downloads/issues/418)
* New: Added option to edit purchased price options in the edit payment screen
* New: Added option to view purchase receipts in the browser
* New: Dramatically improved tax options

* Fixed: A critical bug that made it possible to find download files via Google
* Fixed: Prices lose decimal points when saving if thousands / decimal separators are left blank
* Fixed: Payment History layout bug when viewing from small (mobile) screens
* Fixed: Updating payment record removes buyer's email address
* Fixed: Non-object notice during uninstall
* Fixed: Problem with downloading files after purchasing multipe price options for the same product
* Fixed: Issue with India and zip code validation
* Fixed: PayPal purchases marked as complete more than once
* Fixed: csv_cols_out() didn't correctly apply_filters()
* Fixed: Bug with SSL and ajax
* Fixed: Report times were out of sync
* Fixed: No Permission to Download error when purchasing products with multiple files
* Fixed: Gateway redirect sometimes fails with ajax
* Fixed: Multiple price options mode doesn't save
* Fixed: Missing parameter in edd_log_user_in()
* Fixed: Undefined index error on checkout
* Fixed: shop_vendor role can't assign categories
* Fixed: Products can't be removed from edit payment screen
* Fixed: Sorry, Trouble retrieving payment receipt error
* Fixed: Issue with Show Price with Taxes bug


= 1.4.4.3: February 25, 2013 =

* Fixed: error with discount codes and PayPal

= 1.4.4.2: February 15, 2013 =

* URGENT: Fixed a crucial security bug. PLEASE UPDATE.

= 1.4.4.1: February 10, 2013 =

* Fix: Fixed an issue with the ajax add to cart introduced in 1.4.4
* Fix: re-enabled the multi-option purchase mode removed by accident in 1.4.4

= 1.4.4: February 9, 2013 =

* New: Added new EDD_Export class to more flexible export system
* New: Pages are auto created and saved to the EDD options on activation
* New: Added excerpt support to download post type
* New: Added new filter for [downloads] shortcode HTML
* New: Added dashboard alert to payment history when in Test Mode
* New: Added dashboard alert if the checkout page is deleted
* New: Show price range for variable priced products in Downloads list
* New: Introduced edd_get_lowest_price_option() and edd_get_highest_price_option()
* New: Added support for bulk editing product prices
* New: Add new shop management user roles
* New: Validate zip codes during purchase based on country code
* Fix: Missing DIV tag in Dashboard Summary widget
* Fix: HTML encoding on total amount returned after applying discount
* Fix: Discounts on prices over 1000 failed
* Fix: Set post_date_gmt when creating payments
* Fix: Japanese YEN decimal display
* Fix: "All" view in Payment History didn't count custom statuses
* Fix: Purchase receipt sent when changing payment status
* Fix: First name required but not enforced
* Fix: File URLs didn't save when file name wasn't provided

= 1.4.3.1: February 3, 2013 =

* Fix: Securtity Check Failed message when logging in during purchase
* Fix: Added missing alt tag to fix HTML validation
* New: Added new edd_show_has_purchased_item_message filter

= 1.4.3: February 1, 2013 =

* New: PayPal refunds are now automatically detected
* New: Removed jQuery Validation option
* New: Added {payment_id} tag to email receipt
* New: Added $price_id parameter to all file download links
* New: Added new payment status transition notes for recording when a payment changes statuses
* New: Added the ability to set a payment status to "revoked"
* New: Improved System Info to better help support technicians
* New: Added improved compatibility with the popular Responsive theme
* New: Added dynamic-cached-content tags for WP Super Cache
* New: Added product notes to the purchase confirmation
* New: Added an uninstall method
* Fix: Deleting pending purchase deducts earnings / sale count
* Fix: Undefined notice for a currency option
* Fix: Nonce field added to the delete discount links
* Fix: Fixed an issue with duplicate products getting added when buying variable priced products
* Fix: Fixed a bug with retrieving the purchase receipt on the confirmation page
* Fix: Corrected some post type labels

= 1.4.2.1: January 28, 2013 =

* Fix: Purchase receipts were getting sent when payments were marked as "failed"

= 1.4.2: January 25, 2013 =

* New: Added sample product import xml file in easy-digital-downloads/assets/
* New: Variable price purchased now displayed in admin sale notifications
* New: Checkout submission now done via ajax for improved user experience
* New: Improved discount code UI during checkout
* New: Checkout fields now saved (if ajax enabled) when an error is present
* New: Currency-specific decimal point formatting
* New: Multiple variations of the same product can now be purchased at one time
* New: Added option for enabling "multi option purchase mode" for products with variable prices
* New: Added new sample import file
* New: Variable price purchased now displayed in purchase history
* New: Added Today, This Week, and Last Week views to Reports
* New: Added option to redirect users straight to checkout (works with and without ajax)
* New: Added new action hooks to discount add/edit pages
* Fix: Accepted Payment Method icon display issues
* Fix: Registration during checkout incorrectly required
* Fix: Admin gateway label was showing on the [edd_receipt] instead of the front end label
* Fix: Discount codes set to 100% didn't work
* Fix: PayPal UK VAT problems that caused purchases to not get completed
* Fix: jQuery validation didn't work with multiple payment methods enabled
* Fix: Prices over 1000 resulted in a price of 1
* Fix: Incorrect label attribute
* Fix: Conflict with cart quantities when using custom cart areas
* Fix: Settings arrays didn't have keys

= 1.4.1.1: January 14, 2013 =

* Fix: Discounts weren't getting carried over to PayPal
* Fix: Added missing {username} tag for purchase receipts

= 1.4.1: January 13, 2013 =

* New: Added PayPal Page Style Support
* New: Added .apk support (props @chriscct7)
* New: Added debug_backtrace to deprecated functions (props @chriscct7)
* New: Store Discount ID in Payment Meta
* New: Upgrade [download_discounts] for new CPT
* New: Show Payment Notes on View Order Details
* New: Made Discount Edit & Add screens extensible
* New: Store Discounted Amount in Cart Details via Ajax
* New: Ability to set own error class/classes in edd_print_errors() function
* New: Add support for .apk (props @chriscct7)
* Tweak: Use AJAX & session with 'local residents only'
* Tweak: Ajax Local Tax Opt-In
* Tweak: Refractor edd_process_profile_editor_updates()
* Tweak: Updated Manual Travis instructions (props @chriscct7)
* Tweak: Better error reporting for usernames with uppercase letters.
* Tweak: Post save/update messages now can be translated (props @chriscct7)
* Tweak: Changelogs cleaned up (props @chriscct7)
* Tweak: Spaces in Download File Names May Cause 404
* Tweak: Remove Bullets from Default Email Template
* Tweak: Paginate Payment / Download History Shortcodes
* Tweak: Convert Discount Admin Page to WP List Table
* Tweak: Moved the new edit profile form into templates folder
* Tweak: Removed cache_results query arg from sales widget
* Tweak: Change "Enter title here" field to "Enter download title here" in add/edit download page
* Tweak: Don't Show Discount if None was Used on [edd_receipt]
* Tweak: Remove Subtotal and Taxes if Taxes Disabled  [edd_receipt]
* Tweak: Payment Notes Showing Up in Comment Streams
* Fix: Pagination Not Working Fully on File Download Logs
* Fix: New option to make Supercache compatible with EDD (props @chriscct7)
* Fix: Flat Rate Discounts Not Working Correctly
* Fix: Discount Start Dates Defaulting to Current Day
* Fix: Download System Info button added
* Fix: Pagination of [purchase_history] and [download_history] (props @chriscct7)
* Fix: Number format error when no price entered
* Fix: Last Month Dashboard Widget Incorrect For January
* Fix: Calculate the tax price in edd_get_cart_content_details() when tax inclusive
* Fix: Validate Checkout
* Fix: File Download Count for Customer Reports is Failing
* Fix: Double Click Required for Purchase
* Fix: PayPal Post giving wrong URL
* Fix: Issue with new Payment History
* Fix: PHP warnings and notices on individual download page
* Fix: Tax Calculation Doesn't Respect Discounts
* Fix: Whitescreen after checkout
* Fix: An issue with the checkout page on sites with HTTPS and PayPal Standard

= 1.4.0.4: January 3, 2013 =

* Fix: File missing that makes the profile editor shortcode work (props @chriscct7)

= 1.4.0.3: January 2, 2013 =

* New: Travis now autoloads all of EDD (props @chriscct7)
* Fix: Double Click Required JS issue (props @chriscct7)
* Fix: Problem with pending purchases showing in user's purchase history
* Fix: Error with the dashboard summary widget for previous month (if current month is Jan)
* Fix: Issue with guests and discount codes
* Tweak: WP_Sessions removed temporarily (props @chriscct7)

= 1.4.0.2: December 28, 2012 =

* Fix: An issue with the checkout page on sites with HTTPS and PayPal Standard

= 1.4.0.1: December 27, 2012 =

* Fix: An issue with purchase receipts sending
* Fix: Issue with registration / login forms not showing on checkout
* Fix: An undefined index on the discounts page

= 1.4: December 27, 2012 =

* New: Converted coupons to a custom post type
* New: Dummy XML File
* New: System Info (props @chriscct7)
* New: Contextual Help
* New: Receipt shortcode
* New: Filter on Default Customer User Role
* New: Live Credit Card Verification
* New: Travis-CI Integration (props @chriscct7)
* New: Column to Customers Reports to Show File Download Count
* New: edd_send_back_to_checkout()
* New: Brand new Logs UI
* New: Support for WP 3.5 Button
* New: Serious Optomizations
* New: Optimized png's losslessly
* New: Payment Notes
* New: More efficient AJAX selector
* New: New Helper Function for "Transaction ID"
* New: "failed" payment status
* New: Profile Editor
* New: Over 100 new MIME-Types allowed for download
* Fix: Conflict with Jetpack
* Fix: Issue with exporting lots of customers
* Fix: Download Icon missing
* Fix: Bulk Delete Payments
* Fix: Payments functions
* Fix: Retina images
* Fix: Added support for uploading .psd files
* Tweak: Updated edd_get_user_purchases()
* Tweak: Made some UI tweaks, and bug fixes for Logs
* Tweak: Made updates to edd_process_download()
* Tweak: Reordered the inclusion of payment gateways
* Tweak: Restructured file organization
* Tweak: mproved payment-functions.php file
* Tweak: Stripped whitespace + normalize
* Tweak: Converted Discount Admin Page to WP List Table
* Tweak: Rewrote main plugin file to use a singleton OOP approach

= 1.3.4.3: December 06, 2012 =

* Fix: Fatal error in PayPal

= 1.3.4.2: December 06, 2012 =

* New: {fullname} email template tag
* Fix: a potential issue with jQuery validation of the checkout form
* Tweak: Improved CSS for the ajax cart loader
* Tweak: download taxonomy rewrites hierarchical
* Tweak: Updated Italian language files
* Tweak: Made a JS file only load on the checkout page instead of all pages
* Tweak: Reverted back to $_SESSION based storage as WP_Session isn't quite ready for use yet

= 1.3.4.1: December 1, 2012 =

* Fix: Major bug in PayPal standard gateway introduced in 1.3.4
* Tweak: Updated French langauge files

= 1.3.4: December 1, 2012 =

* New: Option for defining the emails that receive admin sale notifications
* New: edd_item_in_cart filter
* New: Added prices to the [purchase_link] shortcode so that the product price is shown on the button
* New: Added payment history search
* New: Added exclude_category and exclude_tags parameters to the [downloads] shortcode
* New: Added date parameters to edd_get_payments() to allow payments of specific dates to be queried
* Fix: A problem with $0 purchases
* Fix: Problem with display the buyer's first name in purchase receipts
* Fix: Problem with category/tag query parameters in the [downloads] shortcode
* Fix: Problem with PayPal purchases when item names have HTML entities
* Fix: Problem with prices over 1,000 on checkout
* Fix: Path to custom edd.css
* Fix: Problem with some payments not having meta data for the total amount recorded
* Tweak: Improved contextual help tabs
* Tweak: Made the edd_log_type taxonomy private
* Tweak: Updated category/tag slugs to respect EDD_SLUG constant (if defined)
* Tweak: Updated Italian language files
* Tweak: Updated French language files
* Tweak: Removed the "required" class from the local tax opt-in checkbox
* Tweak: Improved the function that retrieves the total earnings amount
* Tweak: Updated customer CSV export to include the number of purchases and total amount spent
* Tweak: Updated purchase details to include tax information
* Tweak: Made the email address in View Details for purchase history clickable
* Tweak: Improved some internationalization with date functions
* Tweak: Improved edd_get_ajax_url() to fix problems with sites that use SSl
* Tweak: Improved the way language files are loaded to permit users to place custom language files in wp-content/languages/edd/
* Tweak: Improved PayPal IPN processing with new do_action() hooks for each transaction type
* Tweak: Rebuilt Payment History page to use better core UI standards

= 1.3.3: November 15, 2012 =

* New: Tax system for calculating simple taxes on purchases
* New: Added error / payment failure logging to PayPal standard gateway
* New: Added new edd_file_download_has_access filter
* Fix: Issue with payment method select when ajax is disabled
* Fix: Problem with a stray file upload button in IE and Firefox
* Fix: Problem with improperly formatted amounts after applying a flat rate discount
* Fix: two conflicting filter names
* Fix: A pagination bug with the [downloads] shortcode
* Tweak: Improved the error logging system
* Tweak: Improved the Payment History export to CSV option
* Tweak: Removed old, out of date PayPal payment gateway
* Tweak: Improved markup for the [edd_price] shortcode
* Tweak: Updated Dutch translation files
* Tweak: Improved front-end CSS for variable price options
* Tweak: Improved logic for determing the lower price on variable priced downloads
* Tweak: Improved stylesheet loading

= 1.3.2.1: November 06, 2012 =

* New: Added basic pagination to the [downloads] shortcode
* New: Added new "edd_checkout_form_bottom" hook
* New: Added version numbers to scripts and styles to ensure proper display on upgrades
* New: Improved the checkout template to make it easier to customize
* New: Added new edd_ajax_url filter
* New: Added new edd_cart_total() function for showing fully formatted cart amount
* Fix: Problem with discount code amount formatting
* Fix: Bug with PressTrends integration
* Fix: Price formats in the admin sales notification
* Fix: Problem with upgrade routines
* Fix: Bug with edd_get_sales_by_date()
* Tweak: Moved user info (email, first / last name) fields to a function connected via a hook to allow them to be changed
* Tweak: Updated French language files
* Tweak: Updated login/register ajax actions to use do_action() instead of calling functions directly
* Tweak: Updated checkout login/register fields to be attached via actions
* Tweak: Upgraded Colorbox to v1.3.20

= 1.3.2: October 31, 2012 =

* New: Added Total Earnings For Period Shown to Reports page
* New: Added ability to filter payments by username
* New: Added new edd_get_purchase_id_by_key() function, props Yoast
* New: Added Recent Purchases to the Dashboard widget
* New: Added new edd_add_to_cart_item filter for modifying the item info when adding items to the cart
* New: Added version numbers to all scripts and stylesheets to help prevent caching issues on updates
* New: Added option to export file download history
* New: Integrated Opt-In PressTrends tracking
* New: Added new edd_price_field action to the download meta box
* New: Added Lifetime Best Selling into the Dashboard Sales widget
* Fix: Problem with the [download_discounts] shortcode
* Fix: Problem with the file download limit feature
* Fix: Problem with amount formatting in the purchase receipts
* Fix: Problem with the Apply Discount link when not logged-in
* Fix: Formatting issue with prices in the email template preview
* Fix: Problem with saving prices when they contain a thousands separator
* Fix: Some UTF8 decoding problems with the PDF reports
* Fix: Problem with the download Tags slug and archive views for the taxonomy
* Tweak: Improved efficiency of downloads list table
* Tweak: Improved the checkout template to be more modular
* Tweak: Updated post updated messages with "View Download" link
* Tweak: Moved all template files and CSS to /templates folder instead of the includes/ folder
* Tweak: Updated the checkout form to load the payment forms automatically when selecting a payment method
* Tweak: Updated French language files

= 1.3.1: October 22, 2012 =

* New: Added new file download limit option to limit the number of times buyers can download files
* New: Added upgrade routine for converting old file download and purchase logs to the new EDD_Logging class
* New: Added new upgrade routine for handling database upgrades
* New: Added a new EDD_Logging class for logging events
* New: Added support for custom reporting views
* New: Added new graceful failure for missing callback functions for settings fields
* New: Added dozens of new filters for function returns
* New: Added a new function for tracking deprecated function calls
* New: Added a check to ensure items in the cart are of post_type "download"
* Fix: Bug with creating the blank index.php in wp-content/uploads/edd/
* Fix: Bug with an HTML class name in edd_get_purchase_link()
* Fix: Some text strings that were missing localization
* Tweak: Updated German translation files
* Tweak: Removed unnecessary parameters for register_post_type()
* Tweak: Code formatting improvements

= 1.3: October 11, 2012 =

* New: edd_before_download_content hook
* New: edd_purchase_history_files hook
* New: filter for edd_is_checkout
* New: Introduced several new functions for calculating average sales / earnings for individual products
* New: Introduced several new functions for counting number of purchases and amount spent for customers
* New: EDD_VERSION constant
* New: Completely rewrote the Reports page with new graphs and Downloads / Customers view
* New: Introduced new CSS styles for purchase buttons
* New: Contextual help menu to the Discounts page
* New: Contextual help menu to the edit Download page
* New: jQuery UI styles that better match core WordPress style
* New: Filter to remove product titles in purchase receipts
* New: New Polish translation files
* Fix: Problem with the add-ons page
* Fix: Problem with thousands separator and price formatting
* Fix: jQuery UI conflict
* Fix: Problem with adding items to the cart via ajax when admin/front end http/s protocals are miss matched
* Fix: The upload field settings field callback JS
* Fix: Missing item description in PayPal checkout
* Fix: Problem with the total earnings widget
* Tweak: Replaced date() with date_i18n() for improved internationalization
* Tweak: Improved data validation throughout the plugin
* Tweak: Updated French translation files and default language files
* Tweak: Significant cleanup of code formatting and adherence of WordPress coding standards

= 1.2.2: September 25, 2012 =

* New: Added a check to prevent users from deleting all price/download files in download configuration
* New: Added WPML config file for more WPML compatibility
* New: Added new Arabic language files
* New: Added a Sales Summary dashboard widget
* New: Added cache flush for user purchase history when payments are created
* New: Added new default button color/style options to Settings > Styles
* New: Added new default add-to-cart button text option in Settings > Misc
* New: Added a new query filter to block direct access to attachments of downloads
* Fix: Bug with undefined index error with the metabox nonce
* Fix: Problem with sorting downloads by price and added compatibility for Post Types Order plugin
* Fix: Bug with percentage based discount codes
* Tweak: Improved file organization
* Tweak: Dramatically improved admin javascript functions to be more extendable
* Tweak: Updated French language files
* Tweak: Updated edd_email_template_tags with $payment_id
* Tweak: Updated download configuration with brand new UI and simplified options
* Tweak: Removed button text / style from Download Configuration

= 1.2.1.1: September 19, 2012 =

* New: Added a new filter for edd_receipt_attachments
* Fix: Bug with the earnings per day graph
* Fix: Minor CSS conflict with purchase buttons
* Fix: Security exploit that made it possible for malicious users to purchase variable priced items for free
* Tweak: Improved extendability of payment form

= 1.2.1: September 17, 2012 =

* New: Added new filters to the taxonomy args for download categories and tags
* New: Added a new "Product Notes" meta box to the Edit Download page
* New: Added some missing text domains for strings
* Fix: Incorrect help text for the start/end date of discount codes
* Fix: Couple of typos
* Fix: Problem with manually completing purchases
* Fix: Some problems with international number formatting
* Tweak: Updated German translation

= 1.2: September 15, 2012 =

* New: Added reset styles to default fieldsets to account for themes without fieldset styling
* New: Added new Date and Time to the View Details purchase popup
* New: Added a missing closing anchor tag
* New: Added an error notice on download pages if no checkout page is set
* New: Added labels to the checkboxes in the Download Configuration meta box to make fields easier to click on
* New: Added new filter to the EDD languages directory
* New: Added new CSS for improved styling of checkout error messages
* New: Added new filter to edd_get_checkout_uri
* New: Added huge new templating system to [download_history] and [purchase_history] shortcodes
* New: Added huge new templating system for [downloads] shortcode
* New: Created new global checkout fields and validation methods for use by payment gateways
* New: Added new "Purchase History" widget
* New: Added new classes/div to the purchase history widget
* New: Added new "Total Earnings" stat to the bottom of Payment History
* New: Added CSS styles specific to Twenty Twelve
* New: Added support for absolute file paths for download files
* New: Added a lot of new helper functions for developers
* New: Added dozens of new content types to the download processing function
* New: Added a new edd_get_payments_args filter
* New: Added the ability to sort payments by their total price
* New: Added new edd_payments_page_date_format filter to allow date format in Payment History to be changed
* New: Added a new meta key for payment total so that payments can be sorted by amount
* New: Added a new option to export all customer emails from Payment History
* New: Added new edd_download_post_type_args filter
* Fix: Problem with the auto-generated shortcode on the All Downloads page
* Fix: Problem with new downloads not being able to add download files
* Fix: Incorrect variable name in register-settings.php
* Fix: Problem with checkout ajax when permalinks are not enabled
* Fix: Few small typos in labels
* Fix: Deveral undefined index errors
* Fix: Discrepancy with the sales per month graph
* Fix: Bug with radio button toggling in Download Configuration
* Fix: Bug in the email template preview
* Tweak: Improved the edd_append_purchase_link() function
* Tweak: Removed "Deleted" from the payment hsitory filter options
* Tweak: Made improvements to script loading
* Tweak: Minor improvements to the add-ons page
* Tweak: Improvements to add/remove to/from cart functions with ajax
* Tweak: Updated default language files
* Tweak: Improved data sanitization in many files
* Tweak: Improved code formatting in many files
* Tweak: Changed the Earnings Per Day graph to show the latest 30 days, instead of the current month
* Tweak: Improved the way files are downloaded, especially for large files
* Tweak: Improved the UI of Download Configuration meta box
* Tweak: Improved number formatting for prices
* Tweak: Updated Italian language files
* Tweak: Updated German language files
* Tweak: Replaced hard-coded instance of "Downloads" with plural label function
* Tweak: Updated French translation
* Tweak: Updated [purchase_collection] to support custom link text
* Tweak: Improved the edd_delete_purchase() function

= 1.1.8: September 13, 2012 =

* Fix: a major bug with discount codes not being accepted
* Fix: Bin the PDF reports
* Added a new "Earnings per day" graph on the Reports page
* Improved URL > path conversion for locally stored download files
* Improved organization of email templating functions

= 1.1.7: August 29, 2012 =

* New: Added option to set minimum purchase amount required before discount can be applied
* New: Added filters to all discount validation functions for developers
* Fix: Major bug with processing file downloads
* Tweak: Removed price check from PayPal purchase verification temporarily
* Tweak: Improved data sanitization to discount creation / edit forms
* Tweak: Removed the "type" column from the discounts page

= 1.1.6: August 28, 2012 =

* New: Added the name of the buyer to the admin purchase notifications
* New: Added a new setting for "Complete Purchase" button text
* New: Added pre_ and post_ actions to the add to cart function
* New: Added a new edd_download_price filter to the edd_price() function
* New: Added new actions to top and bottom of payment history page
* New: Added class names to all table rows and cells in the checkout template
* Fix: Misnamed class on the empty cart element
* Fix: Bug with button colors when inserting a shortcode
* Fix: Spelling error in Downloads > Settings > Payment Gateways
* Fix: Major bug with discount codes that caused the "uses" value to get erased when updated a code
* Fix: Bug with download sales/earnings stats and variable priced downloads
* Fix: Incorrect check for missing directory and creation of /uploads/edd
* Tweak: Escaped attributes and improved code formating in template-functions.php
* Tweak: Removed ini_set error display
* Tweak: Escaped attributes and improved code formating in download-functions.php
* Tweak: Updated Dutch language files
* Tweak: Escaped values of settings field callbacks
* Tweak: Removed an old and unused add_meta_box() call
* Tweak: Updated French translation files
* Tweak: Removed call by reference in edd_scan_folders()

= 1.1.5.2: August 22, 2012 =

* Fix: Call-by-reference error
* Fix: Problem with zero-byte downloads

= 1.1.5.1: August 20, 2012 =

* Fix: Bug with file downloads

= 1.1.5: August 20, 2012 =

* New: Added new edd_get_current_page_url() function
* New: Added a new option for showing download links on the success page after completing a payment
* New: Added item prices to the cart widget
* New: Added support for the Iranian Rial currency. Make sure your gateway supports it before using it
* Fix: Couple of undefined index errors
* Fix: Problem with serving download files
* Fix: Bug that caused images to break when uploaded to download products
* Tweak: Made significant security improvements for protecting files against unauthorized downloads
* Tweak: Updated discounts so taht users can only use a discount code once
* Tweak: Download titles are now decoded for html entities in payment history
* Tweak: Updated payment history to fix an error notice when a user isn't found
* Tweak: Updated default language files
* Tweak: Changed "Purchase Page" label to "Checkout Page" in settings
* Tweak: Updated the edd_remove_item_url() to use the current page URL instead of the home URL
* Tweak: Made the edd_payment post type not public
* Tweak: Updated French language files

= 1.1.4.1: August 07, 2012 =

* New: Added "order" and "orderby" parameters to the [downloads] shortcode
* New: Added support for .mobi files
* New: Add a "No Download Found" message to the PDF reports for when there are no products
* Fix: Bug with the source file download processing
* Fix: Error notice warning
* Fix: Rendering issue with purchase receipts in Outlook
* Fix: Some errors with aposthrophe encoding
* Tweak: Removed a conditional check for the jQuery library as it was causing problems with jQuery not loading
* Tweak: Removed deprecated get_magic_quotes_runtime()

= 1.1.4.0: July 31, 2012 =

* New: Added Quick Edit ability to the Download Price option
* New: Added a new PDF Report generation feature for Sales and Earnings, thanks to SunnyRatilal
* New: Added a new [edd_price] shortcode
* New: Added new edd_cart_contents filter
* New: Added a check to existing jQuery libraries before enqueuing
* New: Added is_array() check to the price options name function to fix a potential error
* New: Added an php_ini check for safe mode
* Fix: Bug with the purchase receipt templates
* Fix: Bug with the discount code field on the checkout page
* Fix: Encoded bug with the purchase receipts
* Fix: Bug with the way the currency sign was displayed in the meta box price field
* Fix: Bug where flat rate discounts could result in negative checkout values
* Fix: Missing currency sign in the email {price} template tag
* Fix: Bug with + signs in email addresses
* Fix: Bug with prices not saving when set to 0
* Fix: Miss spelled FOR attribute on a checkout label
* Tweak: Updated default language files with a lot of new strings
* Tweak: Replaced Thickbox with Colorbox for email template previews
* Tweak: Updated the charset from ISO-8859-1 to utf-8 for the purchase receipts
* Tweak: Update the date in purchase receipts to reflect the date_format setting in WordPress
* Tweak: Improved the formatting of country names

= 1.1.3.2: July 20, 2012 =

* New: Added two new action hooks to the reports page
* Fix: Minor bug with the PayPal IPN listener
* Fix: Minor bug with the function that checks for a valid discount

= 1.1.3.1: July 18, 2012 =

* Fix: Bug that caused complete CC fields to show when only one gateway was enabled

= 1.1.3: July 18, 2012 =

* New: Added a new filter to the PayPal redirect arguments array
* New: Added a check to the download processing function to ensure the purchase has been marked as complete
* Fix: Bug with free downloads that happened when no payment gateway was selected
* Fix: Padding bug on the checkout form
* Fix: Bug that prevented large files from being able to be downloaded
* Fix: Error that showed up when purchasing a download without any downloadable files
* Fix: Bug with the PayPal Standard gateway that was present when allow_url_fopen wasn't enabled
* Tweak: Removed the edd_payment post type from the WP Nav Menus
* Tweak: Separated First and Last name fields in the payment's CSV export
* Tweak: Improved the countries drop down field in the default CC form for payment gateways

= 1.1.2: July 16, 2012 =

* New: Added new payment export system, thanks to MadeByMike
* New: Added a legend to the user info fieldset
* New: Added a new "class" parameter to the [purchas_link} shortcode
* New: Added new edd_is_checkout() conditional function
* Fix: Bug with the ajax function that adds items to the cart - it did not show the price option name until page was refreshed
* Fix: Bug in the purchase receipt that caused it to include all source file links, not just the ones set to the price option purchase
* Tweak: Moved the discount code fieldset inside of the user info fieldset on the checkout form
* Tweak: Improved the markup of the default CC fields
* Tweak: Updated Spanish language files

= 1.1.1: July 10, 2012 =

* New: Added a couple of new filters to the file download processing function
* New: Added Japanese language files
* Fix: a couple of undefined index errors
* Fix: Bug with the "All" filter in the Payment History page
* Fix: an amount comparision error in the PayPal IPN processer

= 1.1.0: July 07, 2012 =

* New: Added new French translation files, thanks for Boddhi
* New: Added a new "upload" callback for settings field types
* New: Added a new hook, edd_process_verified_download, to the download processing function
* New: Added new {receipt_id} template tag for purchase receipts
* New: Added payment "status" filters to the payment history page
* New: Added an option to filter the payment history page by user/buyer
* New: Added a "Price" column to the Downloads page
* New: Added a missing text domain to the Settings Updated notice
* Fix: Bug with the add-ons cache that caused them to never refresh
* Fix: Bug with duplicate "Settings Updated" notices
* Tweak: The width of the "Email" column in the payment history page
* Tweak: Improved CSS for the checkout page
* Tweak: Improved CSS for the payment method icons
* Tweak: Minor improvements to the email templating system
* Tweak: Minor improvements to the View Order Details pop up
* Tweak: Updated edd_sert_payment() to apply the date of the payment to the post_date field
* Tweak: Updated default language files

= 1.0.9: July 03, 2012 =

* New: Added labels above the file name and file URL fields to help users using browsers without placeholder support
* New: Added the ability to register custom payment method icons
* New: Added unique IDs to P tags on the checkout form
* New: Added an option to disable the PayPal IPN verification
* New: Added a new feature that allows source files to be restricted to specific price options
* New: Added an option in Settings > Misc to define the expiration length for download links - default is 24 hours
* New: Added a new filter, edd_download_file_url_args,  for changing the arguments passed to the function that generages download URLs
* New: Added a new filter to allow developers to change the redirect URL for the edd_login form
* Fix: Bug with the EDD_READ_FILE_MODE constant
* Fix: Bug with the file upload meta box fields
* Tweak: Updated the "View Purchase Details" modal to include the price option purchased, if any
* Tweak: Updated the purchase/download history shortcodes to only show files for the price options the user has purchased
* Tweak: Made improvements to the checkout registration form layout
* Tweak: Updated the [purchase_link] shortcode in the Download Configuration meta box to reflect the chosen button color
* Tweak: Updated the "Shortcode" column in the list table to include the correct button color option
* Tweak: Improved some file / function organization

= 1.0.8.5: June 28, 2012 =

* New: Added {payment_method} to the list of email template tags for showing the method of payment used for a purchase
* Fix: Bug with the page options in settings
* Fix: Bug with the function that checks if a user has purchased a specific download
* Fix: Potential bug with the "settings updated" notice that could have caused duplicate messages to be shown
* Fix: Bug with the [downloads] shortcode
* Tweak: Enhanced the function for checking if a user has purchased a download to add support for checking for specific price options
* Tweak: Removed the menu_position attribute from the "download" post type to help prevent menu conflicts
* Tweak: Updated the edd_read_file() function to convert local URLs to absolute file paths

= 1.0.8.4: June 24, 2012 =

* New: Added a few new action hooks
* New: Added "Settings Updated" notification when saving plugin settings
* New: Add a parameter to the [downloads] shortcode for showing the complete content
* New: Added options for linking the download titles in the [downloads] shortcode
* New: Added a "price" parameter to the [downloads] shortcode
* Fix: Bug with free downloads
* Fix: Bug with download sale/earning stats going negative when reversing purchases
* Tweak: Improved the CSS on the variable price option forms
* Tweak: Moved the function that triggers the purchase receipt to its own function/hook so that it can be modified more easily
* Tweak: Made some improvements to the default purchase receipt email template
* Tweak: Renamed the "Manual Payment" gateway to "Test"
* Tweak: Updated Spanish language files
* Tweak: Removed some blank form action attributes that caused the HTML to invalidate
* Tweak: Removed the "You have already purchased this" message from the purchase link shortcode / template

= 1.0.8.3: June 15, 2012 =

* New: Added a default purchase receipt email that is used if no custom email has been defined
* New: Added new constant EDD_READ_FILE_MODE for defining how download files are delivered
* New: Added auto creation for .htaccess files in the uploads directory for EDD to help protect unauthorized file downloads
* New: Added Turkish language files
* New: Added detection for php.ini variables important to PayPal payment verification
* New: Added a new shortcode for showing a list of active discounts:** [download_discounts]
* New: Added pagination to the download/sale log on download Edit screens
* New: Added new "edd_default_downloads_name" filter for changing the default singular and plural "download" labels used globally throughout the plugin
* New: Adding new span.edd-cart-item-separator to the cart widget and shortcode
* New: Added more support for the [downloads] shortcode, used to display a list or grid of digital products
* New: Added option to send purchase receipt when manually marked a payment as complete
* New: Added new "edd_success_page_redirect" filter to the function that redirects a buyer to the success page
* New: Added "Payment Method" to the "View Order Details" popup
* Fix: Bug with the discount codes and their usage counts not getting recorded correctly
* Fix: Bug with the install script
* Fix: Problem with apostrophe encoding in the purchase summary sent to PayPal
* Fix: Couple of undefined index errors
* Tweak: Moved load_plugin_textdomain to an "init" hook in order to work better with translation plugins
* Tweak: Changed the default charset in the PayPal standard gateway to that of the website
* Tweak: Made ajax enabled by default
* Tweak: Reorganized the edd_complete_purchase() function to be more extensible

= 1.0.8.2: May 31, 2012 =

* New: Added a number_format() check to the PayPal standard gateway
* New: Added the Turkish Lira to supported currencies
* New: Added new edd_hook_callback() function for settings field type callbacks
* New: Added edd_get_ip() and updated the user IP detection. It previously failed if the server was running SSL
* New: Added missing class name to the download history table
* New: Added a new conditional called edd_no_redownload() that theme devs can use to check if redownloading of files is permitted
* Fix: Problem with improper encoding of apostrphes in purchase receipt emails
* Fix: A misnamed class in the purchase history table
* Tweak: Updated purchase and download history to now show download links if redownload is disabled
* Tweak: Dramatically improved the default PayPal gateway, which should help prevent payments not getting verified
* Tweak: Updated default language files with new strings for translation

= 1.0.8.1: May 28, 2012 =

* New: Added a new option for marking a payment as "refunded". The refund process must be done through the payment gateway still. When payments are marked as "refunded", the sales and earnings stats will be adjusted accordingly.
* New: Added an alert message to the "Delete Payment" link
* New: Added get_post_class() to the payments history page so that payment rows can be styled based on their status, post type, etc.
* New: Added new filter called "edd_payment_statuses", which can be used to register custom statuses
* Fix: Translation domains on the login forms
* Fix: Problem with user emails not being recorded for guest purchases
* Tweak: Updated es_ES translation files
* Tweak: Lots of code documentation improvements
* Tweak: Completely rewrote the purchase processing functions to fix a couple of bugs and make the entire thing easier to debug and improve
* Tweak: Improved the performance of the add-ons page with transients
* Tweak: Reorganized some functions into more appropriate files
* Tweak: Updated admin CSS to add custom background color to refunded payments
* Tweak: Updated French language files

= 1.0.8: May 22, 2012 =

* New: Added the [purchase_history] shortcode for showing a detailed list of user's purchases
* New: Added the edd_get_checkout_uri() function for use by themes
* Fix: Incorrectly named parameter in the edd_after_download_content hook
* Fix: CSS bug with the Add Ons page
* Fix: Couple of bugs with the login/register checkout forms
* Tweak: Dramatically improved code documentation
* Tweak: Improved the names of the widgets

= 1.0.7.2: May 17, 2012 =

* New: Added a new EDD Categories / Tags widget
* New: Added an enhancement to the cart widget that causes the "Purchase" button to reset when removing an item from the cart
* New: Added user's IP address to payment meta
* New: Added localization to the default page titles created during install
* Fix: Major bug that made it impossible to safely update orders
* Tweak: Removed old stripe.js code that is no longer used
* Tweak: Removed duplicated code from payments history page

= 1.0.7.1: May 11, 2012 =

* New: Added a second instance do_action('edd_purchase_form_user_info') to the checkout registration form
* New: Added a wrapper div.edd-cart-ajax-alert around the message that shows when an item has been added to the cart
* Fix: Bug with the discount code form on checkout. It now only shows if there is at least one active discount. Props to Sksmatt
* Fix: Bug with the Media Uploader when adding media to the content of a Download. Props to Sksmatt
* Fix: Small error notice present in the checkout form shortcode. Props to Sksmatt
* Fix: Small bug wit the edd_remove_item_url() present when on a 404 error page. Props to Sksmatt
* Tweak: Updated the edd_purchase_link() function to automatically detect chosen link styles and colors

= 1.0.7: May 08, 2012 =

* New: edd_has_variable_prices() function
* New: Added missing "required" classes to the checkout login form
* New: Added the ability to update the email address associated with payments
* New: Added a new [edd_login] shortcode for showing a basic login form
* New: Added new Dutch language translation files
* New: Added an $id parameter to the edd_cart_item filter
* Tweak: Updated French language files
* Tweak: Improved the edd_price() function to take into account products with variable prices

= 1.0.6: May 06, 2012 =

*** NOTE:** if you have modified the checkout_cart.php template via your theme, please consider updating it with the new version as many things have changed.
* New: Added missing element classes to the cart widget, checkout cart, and more
* New: Added the edd_price() function for use in themes
* New: Added new a new filter that allows for the jQuery validation rules to be modified for the checkout page
* New: Added filters that allow for post type and taxonomy labels to be modified via the theme
* New: Added filters that allow for the post type "supports" attributes to be modified
* New: Added extra mimetypes to the function that processes file downloads
* Fix: Bug that allowed for the same download to be added to the cart twice.
* Fix: Bug with the empty cart message not being displayed on the checkout page
* Fix: Bug with the in-checkout registration /login form
* Fix: Bug in the "Edit Payment" page caused by the variable price system
* Fix: Bug with plugin pages being duplicate on reactivation of EDD
* Tweak: Variable price descriptions can now contain HTMl
* Tweak: Payments in the Payment History page can now be sorted by ID, Status, and Date.
* Tweak: Improved the layout of the in-checkout register / login forms
* Tweak: Updated the edd_payment_meta filter with a second parameter for $payment_data
* Tweak: Updated the "Insert Download" icon in the "Insert Media" section to match the main post type icon
* Tweak: Dramatically improved the CSS of the checkout page.
* Tweak: When purchasing a product with variable prices, the selected price option name is now shown on the checkout page

= 1.0.5: May 01, 2012 =

* New: Variable pricing option for downloads
* New: Added new {price} template tag for emails
* New: Added support for free downloads
* New: Added a check for whether the current theme supports post thumbnails
* New: Icon to the Downloads post type
* Fix: Improperly named filter for "edd_payment_meta"
* Fix: Some bugs with the email formatting
* Fix: Small bug with the ajax add to cart system
* Fix: Few undefined index errors
* Tweak: Updated Spanish language files
* Tweak: Updated some advanced query URLs to be more efficient
* Tweak: Updated the German language files
* Tweak: Updated default.po/mo
* Tweak: Improved the download metabox layout
* Tweak: Updated the French language files

= 1.0.4.1: April 27, 2012 =

* New: Download post type icon
* Fix: Missing add-ons.php file

= 1.0.4: April 26, 2012 =

* New: "Add Ons" page for viewing all available add-ons for the plugin
* New: Two new filters for currencies that allow developers to add their own currencies
* Tweak: Meta box field loading that allows add-ons to add / remove fields
* Tweak: Added language files for Spanish
* Tweak: Improvements to the "empty cart" message. It can now be customized via a filter

= 1.0.3: April 21, 2012 =

* New: Added first and last name fields to the checkout registration form.
* New: Option to include an "Agree to terms" to the checkout.
* New: An option for the checkout cart template to be customized via the theme.
* New: Add .epub files to accepted mime types.
* Fix: backwards compatibility for WP versions < 3.3. The rich editors in the settings pages could not be rendered in < 3.3.
* Fix: Potential bug with file downloads.
* Fix: Bug with a missing email field when using add-on gateways.
* Tweak: Improved country list formatting.
* Tweak: Improved the price input field to make it more clear and help prevent improper price formats.

= 1.0.2: April 19, 2012 =

* New: An option to delete payments
* New: Featured thumbnails to checkout cart
* New: Forced file downloads and hidden file URLs
* Fix: Bug with duplicate purchase receipts
* Fix: A bug with the discount code system
* Tweak: Updated language files
* Tweak: "Already purchased" message now shows option to checkout when purchasing again.
* Tweak: Improved checkout CSS to help prevent conflicts
* Tweak: Moved payment action links to beneath the payment email to better match WordPress core

= 1.0.1.4: April 17, 2012 =

* New: The Italian language files, thanks to Marco.
* Fix: A bug with the "Add New" button for download source files.

= 1.0.1.3: April 16, 2012 =

* Fix: A bug with the checkout login / register forms

= 1.0.1.2: April 15, 2012 =

* New: German translation, thanks to David Decker.
* New: Partial European Portuguese translation, thanks to Takssista.
* Fix: A bug with the manual payment gateway.
* Fix: A bug where sales / earnings counts were increased before a purchase was confirmed.
* Fix: A bug with the checkout registration / login forms.

= 1.0.1.1: April 15, 2012 =

* Released on WordPress.org (we consider this date EDD's official birthday)
* New: Inclusion of INR as an available currency.
* Fix: Updates to the default.po file for missing strings.

= 1.0: April 7, 2012 =

* EDD is born. This release was only available via download at https://easydigitaldownloads.com/blog/easy-digital-downloads-ready-for-first-beta-testers/ or via GitHub. We launched on WordPress.org 10 beta versions later on April 15th as version 1.0.1.1. We consider April 15, 2012, EDD's birthday.
