Software Licensing – Easy Digital Downloads

Version 3.8.7, October 20, 2022

  • Improvement: Output has been updated for better compatibility with the order history and receipt blocks.
  • Fix: Licenses in bundles did not always display correctly.
  • Fix: Licenses could not always be upgraded more than one time.
  • Fix: The price option on the receipt was missing a space.
  • Dev: The main get_license method has been updated to return false if a license object could not be retrieved.

Version 3.8.6, June 17, 2022

  • Fix: Improved performance related to license retrieval and activation counts.
  • Dev: Remote Version and License Check methods can now return an array instead of only outputting JSON.
  • Dev: The arguments used to create a license can now be filtered.
  • EDD 3.0: License upgrades were not supporting the partially refunded status.
  • Samples
    • Sample Plugin
      • ‘Tested Up To’ value for WordPress Plugins now mirrors WordPress Core behavior.
      • EDD_SL_Plugin_Updater class is now 1.9.2.

Version 3.8.5, March 17, 2022

  • Change: Renewal notices settings are now under the main email settings tab.
  • Update: The bundled German translation files have been updated.
  • Improvement: Placeholder URL schemes are now https.
  • Improvement: The renewal discount can now be filtered more precisely.
  • Fix: Changing the price option of the main bundle product is now properly reflected on child licenses.

Version 3.8.4, February 15, 2022

  • Fix: The license keys shortcode was not showing “Unlimited” for unlimited licenses.
  • Fix: In certain scenarios, users who opted into upgrading to betas could not upgrade to a newer stable version of a download.
  • Fix: Variable prices could not set the activation limit to be empty.
  • Fix: The Software Licensing upgrade notice was showing on new EDD 3.0 installations.

Version 3.8.3, December 2, 2021

  • Fix: Fatal error when changing price ID on existing bundle license.
  • Fix: Deprecation notice in PHP 8.1.
  • Fix: Updating a lifetime license incorrectly sets the expiration date to today.
  • Dev: The EDD_SL_License constructor can now accept an array or object representing the database row.
  • Dev: Performance improvements when retrieving license keys.
  • Dev: Use EDD core’s extension registry class if available.

Version 3.8.2, November 3, 2021

  • Modified Templates: templates/license-keys.phptemplates/licenses-manage-overview.php
  • New: Added action hooks when license is updated, inserted, and deleted.
  • Improvement: Sample Plugin – Refactor health checks so that a failed API request is remembered for 1 hour.
  • Improvement: Sample Plugin – Show update notifications on multisite if the user can view plugins but cannot install them.
  • Fix: An upgrade path was saved to download meta when not configured.
  • Fix: Newly created renewal notice emails save an incorrect message.
  • Fix: Purchasing an item as a single product and as part of a bundle results in a missing license key.
  • Refactor: License templates have been reworked for speed improvements and to reduce the number database queries.
  • Dev: Ensure edd_sl_get_license_upgrades() always returns an array instead of false.

Version 3.8.1, September 15, 2021

  • New: Added three filters on Staged Rollout logic: edd_sl_staged_rollout_identifieredd_sl_staged_rollout_eligible_for_batch_update, and edd_sl_staged_rollout_number.
  • Improvement: The Use the last time this Download was modified as the "Last Modified" date? meta option has been removed, as this behaviour was happening regardless of whether the option was checked.
  • Improvement: Shortcodes are now stripped from the API plugin description. This prevents un-rendered shortcodes from displaying to end users when they click “View Details” on the plugin page.
  • Fix: SHOW TABLES LIKE query running on every page load.
  • Fix: Edge case No such file or directory warning from the readme parser.
  • Fix: Unexpected results in a plugin’s “last updated” date, especially when using non-English languages.
  • EDD 3.0: Ensure Software Licensing email tags have a label.

Version 3.8, August 30, 2021

  • New: Admins can now subscribe and unsubscribe users from license renewal emails.
  • New: Staged Rollouts feature – You can now slowly release a new version of your software to your users.
  • New: Version Requirements feature – Prevent users with unsupported requirements from getting updates.
  • New: Added an index to the license_key database column to improve performance.
  • Fix: Upgrade paths button did not work with Easy Digital Downloads 2.11.
  • Fix: Tooltips displayed incorrectly when using German translations.
  • Fix: Methods to get license term and license expiration unit nicename did not respect variable price IDs.
  • Fix: Show Changelog link for multisite could show the changelog for the wrong download.
  • Sample Plugin
    • Updater Class: Updated to version 1.9.
    • New: Support for requirements checks before providing an update package.
    • Fix: Improved support for multi-site installations.
  • Sample Theme
    • Updater Class: Updated to version 1.2.
    • New: Support for requirements checks before providing an update package.
    • Fix: Removed some PHP errors and warnings.

Version 3.7.3, July 26, 2021

  • Improvement: Adjust license upgrade logic to account for different license lengths for different variable prices. (Requires custom code.)
  • Fix: 1 month to 1 year upgrade results in incorrect dates and amount.
  • Fix: License expiration date picker not working as expected with all date formats.
  • Fix: Retroactive processor not working with item quantities.
  • Fix: Remove .DS_Store file from sample theme.
  • Fix: Fatal error in theme updater in PHP 8.
  • EDD 3.0: Update to use new order history hook for speed improvements.

Version 3.7.2, June 14, 2021

  • New: Admin notice about upcoming system requirement changes in version 3.8. You will only see this notice if you don’t meet the future requirements. (PHP 5.6, WP 4.9, EDD 2.9)
  • Improvement: Reworded the retroactive processor message on the order details page.
  • Improvement: The request data is now passed to the edd_sl_license_response filter.
  • Improvement: The “Cancel” license renewal link is now a <button>.
  • Fix: Child license can display incorrect information when the variable price ID is 0.
  • Fix: Incorrect upgrade price when variable price ID is 0.
  • Fix: Readme parsing was still processing when disabled, if it had been enabled previously.
  • Fix: Changing an order status back to completed generated new, additional license keys.
  • EDD 3.0 – Retroactive Processor compatibility.
  • EDD 3.0 – Compatibility with new refund API.
  • EDD 3.0 – Update some raw database queries on the post meta table to be compatible.

Version 3.7.1, March 29, 2021

  • New: The get_version API endpoint can now accept an array of products to check via a new products argument. Each item in the products array uses the exact same arguments as individual requests. Consult our docs for an example.
  • Improvement: License management links (“Manage Sites” link, etc.) weren’t working well with customized/tabbed UIs. We’ve partially reverted the change from 3.7, so that it should now use the old method if the shortcode is inside The Loop. If the shortcode is outside The Loop it will use the new method that was introduced in 3.7.
  • Fix: If no upgrade paths existed for a product, the current product could not be selected as an upgrade option.
  • Fix: Deprecation notices in PHP 8.
  • Fix: The edd_sl_use_current_price_proration filter wasn’t applying to non-variable priced products.
  • Fix: [edd_license_keys] shortcode – The “Manage Sites” and “Upgrade” links weren’t working if the “Purchase History Page” was not set correctly.
  • Fix: Readme parser wasn’t using version_compare() which could result in incorrect comparisons.
  • Fix: PHP “undefined index” errors.
  • Plugin Sample: The updater class was missing the declaration for the $beta property.
  • Plugin Sample: Fixed an “Invalid argument supplied for foreach()” error in EDD_SL_Plugin_Updater::convert_object_to_array()
  • EDD 3.0 – Filtering orders by renewal/upgrade not working.
  • EDD 3.0 – PHP notice on admin license table if associated order doesn’t exist.
  • EDD 3.0 – Both legacy and new reports were being loaded. Now only the new ones are.
  • EDD 3.0 – License renewal JavaScript not loading on checkout.

Version 3.7, January 26, 2021

  • New: The admin Licenses table has been reworked, and the number of queries reduced.
  • New: Added a new shortcode [edd_renewal_form] that allows customers to enter a license key to renew.
  • New: Renewal notices can now be previewed.
  • New: Email template tags are now more consistent with EDD core. {name} can be used for the customer’s first name only, and {fullname} can be used for the customer’s full name.
  • New: When purchasing an upgrade, the license key being upgraded is now displayed in the cart.
  • Improvement: Add *.wpengine.com to list of allowed local/staging subdomains.
  • Improvement: Utilize wp_get_environment_type() to help improve staging domain detection.
  • Improvement: The renewal/unsubscribe URLs on the admin Manage License page have been changed to readonly inputs for easier copying.
  • Improvement: Clicking the “Generate License Keys” link on a payment now takes you directly to the Retroactive Processor metabox.
  • Improvement: Update display of order numbers to be compatible with sequential ordering and order prefix/postfix.
  • Improvement: Clearing cached readme files now happens via ajax instead of requiring a page reload.
  • Refactor: Use wp_add_inline_script() for checkout JavaScript.
  • Refactor: Images, CSS, and JS have been moved into an assets/ directory.
  • Fix: Retroactive Processor tool not working with upgrades.
  • Fix: Inconsistent get_version API response when no license key is provided.
  • Fix: Licenses were still able to be renewed via a direct URL even if renewals were disabled.
  • Fix: Undefined variable errors.
  • Fix: When [purchase_history] was used outside of the main loop, Software Licensing features were not working.
  • Fix: Empty post meta was being saved unnecessarily.
  • Dev: Numerous code updates for EDD 3.0 compatibility.
  • Dev: Remove usage of extract() in license API functions for improved readability and to align with WordPress coding standards.
  • Dev: Replace internal uses of EDD_SL_License::$post_parent (which is deprecated) with EDD_SL_License::$parent.

Version 3.6.13, December 2, 2020

  • Fix: Upgrade calculations can be incorrect when the upgrade has two variations that are the same price.
  • Fix: Admin “Manage License” screen showing incorrect child price ID.
  • Fix: Unable to deactivate a “site” when the site is not a URL.

Version 3.6.12, November 2, 2020

  • New: Samples updated to support auto updates.
  • Improvement: Increase width of input fields on Edit Download page.
  • Fix: Conflicts with ManageWP Orion.
  • Fix: Bundled products containing variable priced products without specifying a price option may incorrectly show a price option in license key lists.
  • Fix: License key price ID not updated when upgrading from an individual product to a bundle containing that same product.
  • Fix: “Uncaught TypeError” JavaScript error when running upgrade for update license activation records.
  • Fix: JSON response broken by Redis Object Cache plugin.
  • Fix: Proration calculation when upgrading from a limited license to a lifetime license.
  • Fix: Timeout when using Test Email button on purchase receipts.
  • Fix: Minimum WordPress and PHP versions not showing when viewing update version details.

Version 3.6.11, May 18, 2020

  • Fix: Disabled licenses were able to be upgraded.
  • Fix: The EDD_SL_License_Meta:get_license_id was not respecting the single argument.
  • Fix: The EDD_SL_License_DB class was not respecting the date range when an end date was only passed.
  • Fix: Changelogs were being inproperly truncated on some customer sites when the more tag was not supplied.
  • Fix: When renewals were not enabled, the option to send a renewal notice was still visible.
  • Sample Plugin (EDD_SL_Plugin_Updater version 1.7.1):
    • Fix: Removed a duplication of the icon data.
    • Fix: Prevent the possibility of duplicate entries of cached update information.
    • Fix: Improve the no_update data set.

Version 3.6.10, April 8, 2020

  • Fix: When Apache forced trailing slashes, update packages could fail to be downloaded.
  • Fix: When upgrading a bundle, the child licenses may not have gotten their price IDs updated.
  • Fix: It was not possible to renew multiple licenses for the same product, at the same time.
  • Fix: When using bundle licenses with children, the license list table had some performance issues.
  • Fix: Child licenses could have a different activation limit than their parent.
  • Fix: License counts on the list table for license statuses could be incorrect when child licenses were used.
  • Fix: Some of the Readme information was not being parsed correctly after the latest parser update.
  • Fix: Searching for a child licenses could give incorrect results, or no results.
  • Fix: Updates could intermittently cause the ‘Too Many Redirects’ error.
  • Fix: Searching for partial license keys and email addresses could cause PHP notices and/or warnings.
  • Fix: When jQuery was being loaded in the footer, some JavaScript errors could occur when managing licenses on the front end.
  • Fix: Searching for a non-existent license key, returned all license keys in the list table.
  • Fix: Improved the reliability of the checks to make sure an update can be downloaded.
  • Fix: When using custom keys, it was possible to use a key length that exceeded the database column’s allowed length.
  • Sample Theme:
    • Fix: The sample theme was missing the theme_slug parameter from the API calls.
    • New: The sample theme now supports the item_id parameter.
  • Sample Plugin:
    • Fix: The “View Details” link on the plugin list was not always present.
    • Fix: Sample plugin did not define the EDD_SAMPLE_ITEM_NAME string.
  • New: Changelogs now support the “Read More” tag, to allow reducing changelog information stored in the get_version API calls.
  • Dev: The license list table columns are now filterable and sortable.

Version 3.6.9, March 12, 2020

  • Fix: Some information that can be included in the readme.txt files were not being parsed.
  • Fix: The “Tested Up To” value was not being read properly in the get_version calls.
  • Fix: The contributors section of the readme.txt files was not being parsed correctly.
  • Fix: Corrected an issue that caused an `is_countable` notice being thrown on PHP 7.2+.

Version 3.6.8, March 19, 2019

  • Fix: Licenses were missing from REST API sales data response when sequential order numbers was enabled.
  • Fix: License list table was getting 20 per page, but building pagination for 30.
  • Fix: Corrected an issue with the template for managing licenses causing the ‘Back’ link to be incorrect.
  • Fix: A PHP warning was being logged when logging a license renewal email being sent.
  • Fix: Custom activation count meta could get removed if deleting a license that has activations.
  • Fix: With URL Checking Disabled, the attempt to get a URL is still run, it should not have been.
  • Fix: De/activating with no URL parameter was returning success when it should have failed with URL checking required.
  • Fix: We now support ‘staging-` in the local URL detection to support Kinsta staging environments.
  • Dev: The EDD_SL_DB::insert method wasn’t using the type passed into the method.

Version 3.6.7, Feburary 22, 2019

  • Fix: Prevent the license query from accepting a user ID or customer ID of 0.

Version 3.6.6, February 11, 2019

  • Fix: Database class generated invalid MySQL statement when using arrays for parameters in some cases.
  • Fix: Changelog widget was not using readme data.
  • Fix: Corrected an issue when parsing readme.txt files
  • Fix: URLs containing query strings could not be activated/deactivated from admin or frontend.
  • Fix: Bulk actions for licenses were not working.
  • Fix: Improved the accuracy of the get_license_keys_of_user() method.
  • Fix: Price option settings are no longer displayed when licensing is disabled.
  • Fix: Corrected a compatibility issue with updates and the Git Updater extension.
  • Fix: The cron that sends renwal reminders now verifies that the Send Renewal Reminders option is checked.
  • Fix: Child licenses now have the correct expiration date when the bundle license is renewed.
  • Fix: Disabled licenses are not able to be automatically set to expired.
  • Fix: Improved issues around user IDs and license keys.
  • Fix: Corrected an issue that caused a ‘key_mismatch’ error in the API when keys had leading or trailing whitespace.
  • Fix: Using contributors in the readme.txt caused a fatal error.
  • Fix: The sales API previously caused a PHP error when no licenses were present for an order.
  • Fix: Status changes did not always call the appropriate do_action hooks.
  • Fix: The `is_local_url` variable was possibly undefined when calling the get_version API endpoint.
  • Sample Plugin/Theme Chagnes
    • Updated the theme sample to not use wp_die when errors are encountered.
    • Fixed an undefined property in the EDD_SL_Plugin_Updater class.
    • The EDD_SL_Plugin_Updater class now uses the verify_ssl method when making remote calls.
    • Bumped the EDD_SL_Plugin_Updater version to 1.6.18
    • Included samples in the delivered/downloaded extension, as well as available within your account.

Version 3.6.5, September 10, 2018

  • Fix: License activate/deactivate status is now fully controlled by the Activations database.
  • Fix: Corrected an issue where using Emoji in changelogs could cause problems on customer sites using old Database Schemas.
  • Fix: Configuring the changelog widget could cause problems on sites with a large number of products.
  • Fix: The check_license endpoint was returning “valid” for local URLs even when “Ignore Local URLs” was not enabled.
  • Fix: Before the first save of a download, existing downloads were not able to be selected for the upgrade paths.
  • Fix: The license deactivate response was incorrect when passing erroneous URLs.
  • Fix: Further improved isolating unnecessary queries from license management views on the front end.
  • Fix: The check_license now returns “site_inactive” when checking a local URL and Ignore Local URLs is enabled.
  • Fix: The manage license front end views are now limited to only logged in users.
  • Fix: EDD REST API Sales endpoint now returns no licenses when an invalid payment ID is provided.
  • Fix: License Card view used `get_the_time` for Purcahse Date instead of the built in method of EDD_Payment.
  • New: Added ‘test’ as a valid subdomain and tld to the local URL checks.
  • New: Added a confirmation when regenerate an existing license key.
  • New: Update readme.txt parsing to use unmodified helper classes.
  • New: Licensed products can now have renewal discounts disabled on a per-product basis.
  • Dev: Added a method to the EDD_SL_Download class to allow for easier logging.

Samples:

  • New: Plugin Updater – Support was added for plugin icons introduced in WordPress 4.9.
  • Fix: Plugin Updater – Added a health-check for store URLs before attempting to run get_version calls.

Version 3.6.4, July 2, 2018

  • Fix: Deleting a parent license does not remove the association for child license keys.
  • Fix: Searching for a child license failed in the license list table.
  • Fix: Upgrading a license from a deleted price ID caused unexpected pro-ration amounts.
  • Fix: Removed some duplicate queries on the license list table.
  • Fix: Guest licenses were not updated to have the user ID when a guest was converted to a user.
  • Fix: Reduced the number of queries run when getting a license’s sites.
  • Fix: License exports contained the product ID instead of name.
  • Fix: Improved cache accuracy for license objects.
  • Fix: Searching for licenses by email was not working in the license list table.
  • New: Added customer name and email to the license export.
  • New: Removed dependency on jQuery for license management overview.
  • Dev: Minor changes to the output for the WP CLI command to migrate licenses.

Version 3.6.3 (Phased Roll-out), May 17, 2018

  • Fix: Corrected an issue causing license expiration emails to be sent at incorrect intervals or times.

Version 3.6.2 (Phased Roll-out), May 10, 2018

  • Fix: When ignoring local domains for activation counts, package updates were failing when only local domains were activated.
  • Fix: You can now search for licenses by activated domains in the licenses list view, again.
  • Fix: Remove usage of sanitize_key for license key generation and migration so that keys keep their case sensitivity.

Version 3.6.1 (Phased Roll-out), April 25, 2018

  • Fix: Corrected many textdomain issues.
  • Fix: License term could be incorrectly determined if the license had a price ID but was not assocaited with a variable priced product.
  • Fix: License Deactivation with Disable URL Checking resulted in resetting the activation count to 0.
  • Fix: Corrected an issue with the license status sometimes reporting as inactive when it should be active.
  • Fix: Fixed an issue with the new Activations DB class that resulted with incorrect Sites being returned when not sending in a license id.
  • Fix: Disabled licenses were listed as “inactive” in the API.
  • Fix: Software Licensing could cause a fatal error if Easy Digital Downloads was not active.
  • New: Added the ability to regenerate a license key from the License view.

Version 3.6 (Phased Roll-out), April 3, 2018

  • IMPORTANT: This update will ask you to perform database maintenance once installed. Your site should remain functional during this time.
  • New: Improved stability and performance by moving license data to custom database tables.
  • New: Added license status CSS class to customers license list view.
  • New: When a license is renewed or upgraded, the timestamp of the purchase is now stored on the license meta.
  • New: Added .test to the TLDs to check when determining if it is a local activation or not.
  • New: Added capabilities for license management (view_licenses, manage_licenses, delete_licenses).
  • New: Added the ability to swap the price_id of a license.
  • New: Included helper text to the +/- buttons for license activation increase and decrease.
  • New: Clarified terminology for ‘activate’ regarding licenses vs sites.
  • New: Improved the hooks and filters in the Software Licensing API.
  • New: Improved the flexibility of EDD_SL_Package_Download.
  • New: Enhanced licenses list table with more helpful data.
  • New: Tables on the front end now have the .edd-table class.
  • New: Removed the final keyword from the EDD_SL_License class.
  • New: Improved searching for license keys by supporting partial key search.
  • New: Change ‘View’ to ‘Manage’ on the licenses list table.
  • New: Changelogs can now be filtered.
  • New: Betas can now be downloaded from the front-end by users.
  • New: Refunded renewals now rollback the expiration date of any associated licenses (Recurring Payments).
  • New: Improve stability of package delivery when files are added and removed from downloads.
  • New: API Responses now include the Item ID.
  • New: Improved the license export tool to avoid timeouts when exporting a large number of licenses.
  • Fix: Corrected an issue preventing files from being downloaded when a purchase had 2 license keys for the same product.
  • Fix: Improved the accuracy and stability of the Retroactive License Processor.
  • Fix: We now prevent a case where you can ‘upgrade’ to the same price ID that is already owned.
  • Fix: Increased get_license_keys_of_user() to get 50 keys.
  • Fix: Deleting initial payment attached to licenses could cause MySQL errors.
  • Fix: Fixed data inconsistencies between bundle and child license keys.
  • Fix: Renewal payment IDs are now being added to the license meta (Recurring Payments).
  • Fix: Renewal notices were sometimes being sent to refunded licenses.
  • Fix: Prevent an issue with lifetime licenses when upgrading to a bundle.
  • Fix: License activation is now only logged once.
  • Fix: Child license expirations could sometimes get out of sync with their bundle license expiration.
  • Fix: Deleting a payment did not remove it from the license meta.
  • Fix: HTTP was being forced on the beta file URLs, causing issues.
  • Fix: Replaced current_time(‘timestamp’) with time() in the sample plugin.
  • Fix: Generally improved the performance of getting license counts.
  • Fix: The edd_empty_cart function was not clearing edd_is_renewal data.
  • Fix: Frontend output of the changelog is now run through stripslashes().
  • Fix: There was an undefined variable notice in the Sample Theme.
  • Fix: Upgrading from a single-site Bundle to a multi-site Bundle wasn’t always applying the correct price id assignment.
  • Fix: Updated the Automattic_Readme parser.
  • Fix: Updated the Markdown_Parser.
  • Dev: Added filters to the EDD_SL_Download upgrade file key methods.
  • Dev: Added filters for hash verification in package links.
  • Dev: Added edd_ignore_x_accel_redirect filter.
  • Dev: Improved comments and documentation throughout the plugin and samples.

Version 3.5.23, December 13, 2017

  • Fix: Local URL identification during API calls could fail for some domain non-local domain schemas.

Version 3.5.22, November 20, 2017

  • New: Add actions to the upgrades metabox.
  • Fix: Corrected an issue causing inline upgrade links to throw PHP Notices.
  • Fix: Prevent an issue causing retrieving a renewal discount amount on a non-existant license key.

Version 3.5.21, October 10, 2017

  • Fix: Repeatable row wrappers for upgrades incorrectly had the edd_repeatable_upload_wrapper class applied.
  • Fix: Upgrading from lifetime licenses to time-limited licenses fall back to cost-based proration.
  • Fix: Upgrades from lifetime licenses to time-limited licenses caused incorrect license expiration dates.
  • New: Added prefix to Software Licensing API response cache keys
  • New: Activating/Deactivating licenses from Admin now shows an entry in the license logs.
  • New: Improved staging detection of EDD_Software_Licensing::is_local_url.`

Version 3.5.20, September 15, 2017

  • Fix: Item name check did not account for if a download had been deleted.
  • Fix: Revoking a license was only limited to ‘completed’ payments, affecting some gateways.
  • Fix: Activations on licenses did not change after upgrading to a different product.
  • Fix: Remove use of wp_cache to avoid issues with licenses having incorrect status.

Version 3.5.19, September 5, 2017

  • Fix: User ID not set properly on some license keys
  • Tweak: Adjusted plugin name to be consistent with product name
  • Tweak: Added support for bypassing cache with EDD_SL_SKIP_CACHE constant

Version 3.5.18, July 27, 2017

  • Tweak: $license parameter now passed to edd_sl_check_item_name filter
  • Fix: Duplicate license keys generated when purchasing a bundle with multiple of the same product assigned to different price options
  • Fix: Empty customer column on license keys table and license details screen when custom record does not have a name set
  • Fix: Price option of bundled products not properly set on license keys when purchasing a bundle

Version 3.5.17, July 20, 2017

  • Fix: Improved cache invalidation of instantiated EDD_SL_License objects.
  • Fix: EDD_SL_License did not properly update status when it was changed programatically.
  • Fix: “View Details” link was missing from update notifications in some instances.
  • Fix: Customer license list did not account for alphanumeric payment numbers.
  • Fix: Use check_item_name() when comparing names in get_version API calls.
  • New: Plugin and Theme updaters now default verifying SSLs when calling the Software Licensing API.
  • New: Added a filter to X-Accel-Redirect file delivery to allow customizations.
  • New: Added a filter to the license manage overview list.
  • New: Add two new filters in the check and activate license methods.
  • Tweak: Use is_callable on license card view instead of function_exists.
  • Tweak: Cart quantities are now disabled on license renewal items on checkout.
  • Tweak: @return inline docs for EDD_Software_Licensing::get_license() was incorrect.

Version 3.5.16, June 21, 2017

  • Fix: Prevent possible PHP Warnings when attempting to activate a license with an invalid license key.
  • Fix: License List Table was truncating product names with hyphens at the wrong point.
  • Fix: License template checks should use licnese User ID, not payment User ID.
  • Fix: In some scenarios, the stable version was always being overwritten by the beta version when Betas were enabled.
  • Tweak: Added ‘edd_sl_allow_bundle_activation’ filter to allow extending bundle licensing.

Version 3.5.15, May 19, 2017

  • Fix: Incorrect payments showing in Payment History when filtering by upgrades.

Version 3.5.14, May 11, 2017

  • Fix: Beta versions overwriting stable versions when products have beta enabled.

Version 3.5.13, May 8, 2017

  • Fix: Update notifications not working for products that include a hyphen in their name.

Version 3.5.12, May 4, 2017

  • Fix: Check for EDD_BYPASS_NAME_CHECK in remote get version checks.
  • Fix: Beta version number overwritten by stable new_version when using readme parsing.
  • Fix: Renewal discount was shown on checkout even when the amount was $0.00.
  • Fix: Undefined variable “unsubscribed” in license view on lifetime memberships.
  • Fix: Sanitize message output when displaying renewal error messages on checkout.

Version 3.5.11, April 21, 2017

  • New: Added ability for customer to unsubscribe from license expiration emails on a per-license basis.
  • New: Added German translations.
  • Fix: Re-Generating licenses for bundles after having licensing enabled caused additional license keys to be generated.
  • Fix: Custom date ranges in License Upgrades and License Renewals report displayed incorrectly.
  • Fix: A PHP Notice was possible during license upgrades with PHP 7.1.1.
  • Fix: get_version API call would fail when no license key was provided.

Version 3.5.10, March 24, 2017

  • Fix: License key for different product can return update notification with incorrect version number.
  • Fix: Better cache invalidation when making changes to licenses.
  • Fix: PHP7 compatibility – Remove set_magic_quotes_runtime() check and usage.
  • Fix: Add fallback for edd_get_payment() to use EDD_SL_License class directly.
  • Fix: Incorrect markup around file upload field in Beta metabox caused problems with Amazon S3 Extension.

Version 3.5.9, March 14, 2017

  • New: Added is_expired() method to EDD_SL_License class.
  • Fix: Renewal URL should not be shown on lifetime license keys.
  • Fix: Cache not properly updated when adding / removing site URLs.
  • Fix: Cache not properly updated when changing license key status.

Version 3.5.8, March 9, 2017

  • Fix: Lifetime option not working properly for non-variable priced products.

Version 3.5.7, March 8, 2017

  • Fix: Licenses not always being renewed when a renewal payment is processed.
  • Fix: There was a potential for the activation count incremented twice when URL checking is disabled.
  • Fix: When a bundle license was renewed, child licenses were extending by their own product’s terms, not the bundles terms.
  • New: You can now sort the payment history by renewal or upgrade purchases.

Version 3.5.6, February 27, 2017

  • Fix: Lifetime flag not properly set on child license keys when upgrading a bundle from non-lifetime to lifetime
  • Fix: Child license keys not showing their expiration date on the licenses list table
  • Fix: Activation limit cannot be set to Unlimited on child license keys
  • Fix: edd_sl_post_set_status and edd_sl_pre_set_status actions not firing when license keys marked as expired

Version 3.5.5, February 23, 2017

  • Important: Plugin updater class updated to 1.6.11
  • New: License API responses now include the Price ID when associated.
  • New: Added a renewal link to the view licenses screen.
  • New: Added license status to License Keys tab on customer card view.
  • Fix: License Renewal Notices Logs page failed to load.
  • Fix: Disabled license keys were not showing on the licenses tab on the customer card.
  • Fix: Increasing license activation limit within admin was not saving changes.
  • Fix: Child license expirations were not affected by bundle license expiration changes.
  • Fix: Inconsistent counts were being returned when activating licenses via API.
  • Fix: Getting version info failed when passing product name only.
  • Fix: Nightly check for expired licenses needed a limit on how many license keys it queries.

Version 3.5.4, January 30, 2017

  • Important: Plugin updater class updated to 1.6.10
  • Important: Theme updater class updated to 1.0.3
  • New: Added can_extend() method and filter for disabling the Renew link in license key history
  • New: Added stable_version to remote version checks
  • Fix: Version checks do not cache properly when beta versions are enabled
  • Fix: License upgrade URLs do not work when logged out
  • Fix: Missing version number on admin JS file URLs
  • Fix: Generating license keys for products in bundles fail if licensing is disabled on the bundle
  • Fix: Incorrect pluralization of license duration on License details page
  • Fix: Invalid foreach error during update checks in some instances
  • Fix: Expiration dates not properly forced to 23:59:59 when editing expiration dates
  • Fix: Incorrect spelling of activation count property

Version 3.5.3, January 20, 2017

  • Fix: Renewal notices getting sent multiple times
  • Fix: update_meta() method does not support custom meta keys

Version 3.5.2, January 19, 2017

  • Fix: Fatal error for is_bundled_download() in some cases when activating license keys

Version 3.5.1, January 17, 2017

  • Fix: Fatal error when exporting license keys

Version 3.5, January 13, 2017

  • New: Redesigned license admin areas, including a new details screen for individual license keys
  • New: New option to prorate license upgrades with time-based discount calculations
  • New: Per-item renewal discount settings
  • New: Support for beta version releases
  • New: EDD_SL_License class for developers
  • New: License keys are now included in the /sales/ endpoint of the EDD REST API
  • New: License upgrades can now be added to cart via a direct URL
  • New: Plugin banner images can now be added through the ReadMe.txt file
  • New: Option to enforce email matching on license renewals has been added
  • New: More action hooks have been added to the license renewal process
  • New: More filters have been added to get_licenses_of_purchase() and get_licenses_by_purchase()
  • New: Inline upgrade links can now be shown on purchase buttons
  • New: MD5 checksums are now included in all license REST API responses
  • New: A new {expiration_time} template tag has been added to license renewal notice emails
  • New: Option to disable discount codes on license renewals
  • New: License keys list table can now be filtered by download product ID by entering download:# in the search field
  • Tweak: EDD_SL_Plugin_Updater class updated to 1.6.9
  • Tweak: EDD_Theme_Updater class updated to 1.0.2
  • Tweak: License keys for bundles are now grouped in the [edd_license_keys] shortcode display
  • Tweak: License keys and associated meta data are now deleted when a complete store reset is done
  • Tweak: The license keys metabox in View Order Details has been improved
  • Tweak: Improved file organization and naming
  • Fix: Action links on license keys list table should return user to previous screen
  • Fix: Extra paragraphs added to license renewal notice emails
  • Fix: Expiration dates are shown in GMT instead of local time
  • Fix: Incorrect renewal flags and discounts left in cart when removing renewal from cart
  • Fix: Invalid download message returned when using “item_name” instead of “item_id” in licensing REST API
  • Fix: Incorrect license keys generated when re-generating keys for a purchase
  • Fix: Updating customer email does not update the email address on license keys
  • Fix: Error message shown when loading “View Update Details” modal window multiple times
  • Fix: Upgrade paths shown for expired and disabled license keys
  • Fix: Incorrect upgrade path set as the default when products contain variable prices
  • Fix: Extend license link missing from View Licenses page in frontend Purchase History
  • Fix: Duplicate license keys created when regenerating license keys on a purchase
  • Fix: Site URLs can still be managed by customer when license is disabled
  • Fix: Setting a license key to lifetime does not update the status of the license
  • Fix: License keys improperly set to disabled when a refund is processed for a renewal
  • Fix: Extra dash shown on checkout when renewing a license key without variable prices
  • Fix: Deleting a renewal payment also deletes the associated license key

Version 3.4.14, December 21, 2016

  • Fix: accidentally included some changes from the upcoming 3.5 release

Version 3.4.13, December 21, 2016

  • New: EDD_SL_Plugin_Updater class is now updated to version 1.6.7. Please update your integrations.
  • New: License ID and license key are now included in cart item details during license renewals.
  • New: Additional hooks have been added to the licensing metabox for easier integration with other plugins.
  • Fix: Remove from cart link can sometimes cause renewal discounts to be improperly removed.
  • Fix: Transient caching in EDD_SL_Plugin_Updater have been replaced with options to prevent conflicts with object caching.
  • Fix: Undefined variable $file_path when downloading updates hosted on Amazon S3.
  • Fix: Renewal discounts sometimes applied to license upgrade purchases.
  • Fix: PHP warning with filter on _edd_sl_site_count on checkout.
  • Fix: License keys sometimes getting re-generated during renewal purchases.
  • Fix: Renewal discounts not properly applied if non-renewal is removed from the cart.

Version 3.4.12, October 13, 2016

  • Fix: Renewal emails can be sent to lifetime license key holders
  • Fix: Server / site timezones not properly respected when sending license renewal notices

Version 3.4.11, October 4, 2016

  • Fix: License actions not working due to single slashed URLs.
  • Tweak: Spelling error in settings.
  • New: Add tooltips to relevant license settings and fields.

Version 3.4.10, September 22, 2016

  • Fix: Renewal notices can be sent to lifetime license keys
  • Fix: PHP 5.2 compatibility
  • Fix: PHP notice when running prevent_expired_downloads() directly

Version 3.4.9, August 12, 2016

  • Fix: Key icon click no longer works from Purchase History > View Licenses.
  • Fix: Renewal discount flags not properly cleared when renewals are removed from cart.
  • Tweak: Correct capitalization on edd_sl_get_license_keys_of_user filter.

Version 3.4.8, August 8, 2016

  • Tweak: Improved  labels for activation limit settings
  • Tweak: Improved sample plugin and theme with better license key validation and error handling
  • Tweak: Added a filter to the check_item_name() method
  • Tweak: Added tooltips throughout the settings screens
  • Tweak: Replaced get_post_meta() with edd_get_payment_meta() for better future proofing
  • Tweak: Better display of current license key on Manage Sites screen
  • Tweak: Remove usage of _edd_sl_site_count post meta as it is not used
  • Tweak: get_price_id() now falls back to the default price ID if no price ID exists
  • Tweak: get_price_id() now looks at price_id stored in purchase meta if none is set on the license
  • Tweak: Combined all past license key generation options into a single tool
  • Fix: Removed unused JavaScript in [edd_license_keys] shortcode
  • Fix: Incorrect error message when trying to upgrade and renew a license key at the same time
  • Fix: Upgrade path should not be shown when license key is part of a bundle
  • Fix: Incorrect update count on Updates page for theme updater class
  • Fix: License key upgrades can be added to the cart multiple times
  • Fix: User ID now properly pulled from EDD_Payment if not set on license
  • Fix: Activation limits not set properly during license key generation for past purchases
  • Fix: Lifetime licenses sometimes show as expiring
  • Fix: edd_sl_override_history_content needs to check if in_the_loop
  • Fix: Upgrading from Bundle A to Bundle B places licenses of Bundle A inside of Bundle B
  • Fix: Translation error with {expiration} template tag
  • Fix: Custom date ranges break when crossing year boundary in Reports
  • Fix: PHP notice for undefined index
  • Fix: Incorrect table columns when purchase contains no products
  • Fix: Duplicate update notifications for plugins in multisite installs

Version 3.4.7, April 25, 2016

  • Fix: Missing is_main_query() check in purchase history template file override
  • Fix: Error messages during license renewal not displayed properly on checkout
  • Fix: Upgrading license keys connected to Abandoned payments is improperly allowed
  • Fix: Undefined index notices for first_name, last_name, and email
  • Fix: View Licenses link shows even when there are no license keys
  • Fix: Incorrect backwards compatibility filter edd_sl_license_exp_lengh
  • Fix: Improved PHPDocs
  • Fix: Non-static method called statically
  • Fix: Chained upgrade paths not functioning properly
  • Fix: Properly detect .dev and .local TLDs
  • Fix: Ensure updater does not ping itself
  • Fix: Missing nonce verification when adding upgrade to cart
  • Fix: dev. subdomains are not considered development sites
  • Fix: Product names that include hyphens are not displayed properly in Licenses page
  • Fix: Incorrect class name in License Keys template file
  • Tweak: Display customer name and link name to customer details page instead of username in Licenses table
  • Tweak: Added license key to edd_sl_download_package_url filter
  • Tweak: Renewal link in emails should be clickable
  • Tweak: Use content_url() instead of WP_CONTENT_URL
  • Tweak: Removed markup from translation strings
  • Tweak: Added edd_sl_license_upgraded action
  • Tweak: Introduced can_extend() method to the license keys template file
  • Tweak: Allow stylesheets to be dequed
  • Tweak: Added new wp_override parameter to EDD_SL_Plugin_Updater class to permit overriding results from WordPress.org
  • Tweak: Added new edd_sl_row_actions filter
  • Tweak: Renamed get_download_by_license() method to get_download_id_by_license() for clarity

Version 3.4.6, January 7, 2016

  • Fix: Notices when viewing Licenses shortcode when logged out
  • New: Support for EDD 2.5 Subsections

Version 3.4.5, January 5, 2016

  • Fix: Invalid id attributes on upgrade path drop downs

Version 3.4.4, December 31, 2015

  • Tweak: get_version no longer requires a license key
  • Fix: View Version Details link shows blank page
  • Fix: Renewal discount can be incorrect for old variable priced items
  • New: Added new edd_sl_column_{column_name} action

Version 3.4.3, November 19, 2015

  • Fix: URLs with port numbers do not validate properly
  • Fix: Upgrading a license key that has been renewed can cause it to be marked as expired after upgrading
  • Fix: Undefined index error when entering page number manually on Licenses page
  • Fix: Deleting abandoned payment records that contain upgrades or renewals deletes the original license key

Version 3.4.2, November 2, 2015

  • Fix: Regenerating license keys for purchase can, in rare cases, cause license keys to get marked as expired
  • Fix: Prevent conflict with sites that have a “changelog” post type
  • Fix: Use 1,000 instead of -1 for posts_per_page parameter

Version 3.4.1, October 26, 2015

  • Fix: Issue with license key icon displaying improperly in customer purchase history 

Version 3.4, October 20, 2015

  • New: Added new shortcode for showing complete license key history
  • New: Added new helper function for adding a license renewal to the cart
  • New: Price option name is now shown on purchase receipt and purchase history
  • Tweak: Improved version checks. Updates now show for al license keys, even if not activated
  • Fix: Price Option field in upgrade paths does not update properly when adding new upgrades
  • Fix: Renewal discounts not showing properly when renewing multiple license keys for the same product
  • Fix: Multiple license keys of the same product cannot be renewed at the same time
  • Fix: Renewal reminders get sent for non-published products
  • Fix: PHP notices when generating license keys for payment records with multiple bundles
  • Fix: Expiration date not set properly when upgrading from lifetime to non-lifetime
  • Fix: Property of non-object notice
  • Fix: Refunding a renewal purchase incorrectly revokes a non-expired license
  • Fix: License activation count increases without setting status to active

Version 3.3.3, October 7, 2015

  • TWEAK: Actually add wrapper function for retrieving price ID

Version 3.3.2, October 7, 2015

  • FIX: Disable allowing upgrades when a renewal for the same item is in the cart
  • FIX: Corrected issue with renewal links not always working for variable priced products
  • FIX: License deactivation fails when item_id is passed instead of item_name
  • FIX: Renewal Notices Sent on Recurring Payment Purchases
  • TWEAK: Add wrapper function for retrieving price ID

Version 3.3.1, August 24, 2015

  • FIX: Upgrading a license key can improperly extend an expiration date
  • FIX: Upgrade prorate discount fails if price ID no longer exists
  • FIX: Renewal discount files if price ID no longer exists
  • TWEAK: Updated French language files

Version 3.3, August 19, 2015

  • NEW: Added ability to create upgrade paths for license keys so customers can upgrade their licenses from their account page
  • NEW: Added Licenses tab to the Customer details screen
  • NEW: Added option to allow DEV sites to not count towards activation limits
  • FIX: Undefined variable in parse-readme.php
  • FIX: Special characters not supported in emails
  • FIX: EDD_BYPASS_ITEM_ID_CHECK constant now respected in package download process
  • FIX: Generate Missing Licenses button creates orphaned license keys when used on bundles
  • FIX: Renewal notice emails fail to send if email address contains a hyphen
  • FIX: Renewal notices now always sent to email address on customer record
  • FIX: Double update notification in multisite
  • FIX: Changelog text field too small
  • FIX: Marking an expired license as Lifetime leaves it as expired
  • FIX: Non-post object error on 404 pages
  • FIX: Refunded license keys can be renewed (should be allowed)
  • FIX: License keys not removed when item is removed from payment record
  • FIX: Renewal notices logged even if email is not sent
  • TWEAK: Added filters to download ID validation

Version 3.2.6, June 9, 2015

  • FIX: Fatal error when viewing licenses for a purchase
  • FIX: Licensing data now inserted into the EDD products API endpoint

Version 3.2.5, June 8, 2015

  • NEW: Support for Lifetime Licenses
  • FIX: Security updates for a number of AJAX endpoints
  • FIX: Fatal Error when Easy Digital Downloads is not activated
  • FIX: Links were not properly generated in Licenses > Manage
  • FIX: WordPress Compatibility not working correctly with ReadMe parsing
  • TWEAK: Activated child-licenses were showing in the inactive licenses view due to their parent license being inactive
  • TWEAK: Do not show the input to add more sites to the end user when a license is expired or at its limit

Version 3.2.4, May 19, 2015

  • NEW: Extend EDD API Products endpoint to return relevant SL data
  • FIX: “Extend” link not shown on bundles in list table view
  • FIX: Updates not installing correctly on Windows Servers
  • FIX: Fatal error in Admin on pre EDD 2.3
  • FIX: Replace wp_remote_get with wp_remote_post in sample plugin/theme
  • FIX: Correct issue with renewal reminder schedule
  • TWEAK: Show “Site Inactive” message when trying to deactivate a URL that is not activated
  • TWEAK: Properly escape query arg in example theme/plugin
  • TWEAK: Deactivate License button in sample theme behaving improperly
  • TWEAK: “All” filter in license list table did not show all license

Version 3.2.3, April 20, 2015

  • Important XSS security fix

Version 3.2.2, April 14, 2015

  • Improved the display of the license renewal form
  • Fixed a PHP notice during activation
  • Fixed an error when Apply License Renewal is clicked before entering a license key
  • Fixed an issue with CSS being loaded on all pages
  • Fixed an issue with renewing multiple license keys at once

Version 3.2.1, March 26, 2015

  • Fixed a bug that could cause license keys to be improperly marked as expired

Version 3.2, March 25, 2015

  • Added new bundle licensing options. See announcement post for details
  • Incorrect field labels in renewal notice settings
  • Improved CSS / JS loading
  • Port numbers get stripped from site URLs
  • Duplicate license keys created when using Generate License Keys button is used with bundles
  • New {renewal_discount} place holder for renewal notice emails
  • Slashes not properly stripped from renewal notices

Version 3.1.8, March 20, 2015

  • Fixed an incorrect version check when updating license keys during payment updates

Version 3.1.7, March 12, 2015

  • Fixed PHP notices triggered when updating payments with EDD v2.3+
  • Changed the user capability required to view licenses to edit_products
  • Added new hooks just before and after deleting and revoking license keys

Version 3.1.6,February 16, 2015

  • Added a “success” key to all API calls
  • Added “license_check” key to the get_version call
  • Updated the French translation files

Version 3.1.5, January 13, 2015

  • Fixed a bug with variable prices and renewal discount calculations (props Danny Van Kooten)

Version 3.1.4, December 29, 2014

  • Fixed a memory leak with expired license keys
  • Added the actual discount amount for renewals to the checkout screen
  • Added the item name being renewed next to the license key during renewals
  • Added new EDD_BYPASS_ITEM_ID_CHECK constant
  • Fixed several bugs with searching license keys.
  • Introduced edd_sl_get_download_id_by_license filter
  • Updated the ED_SL_Plugin_Updater class to fix some issues with multisite instances

Version 3.1.3, December 12, 2014

  • Fixed a bug with license renewals for non-yearly licenses
  • Tweaked the set_status() method to only save the status if the new status is different
  • Fixed a bug with clean_site_url() that caused issues for some site activations / deactivations
  • Fixed a bug with license row action links not working
  • Added missing HTTP response codes

Version 3.1.2, December 10, 2014

  • Fixed an important security flaw with package downloads
  • Fixed an undefined index notice with the Changelog widget
  • Fixed several minor security flaws
  • Improved URL cleaning when adding / removing sites

Version 3.1.1, December 5, 2014

  • Fixed a bug that could result in duplicate bulk actions taking place

Version 3.1, November 24, 2014

  • Added support for renewing multiple license keys at one time
  • Improved how items are discounted when renewing license keys
  • Automatically update license keys that were purchased as a guest when the respective user registers an account
  • Only load the plugin loader when in the admin area
  • Dramatically improved Sample Theme, thanks to Devin Price
  • Fixed a bug with license renewals and variable price options, thanks for Danny Van Kooten
  • Updated language files

Version 3.0.4, November 10, 2014

  • Fixed an incorrect filter name

Version 3.0.3, November 10, 2014

  • Fixed a bug with the apply license renewal form when the product uses variable prices
  • Fixed a bug that would prevent renewal notices from being sent out after the license had been renewed at least once
  • Fixed a bug that prevented the default renewal notice from being deleted

Version 3.0.2, November 4, 2014

  • Fixed a bug with renewal discounts and the Commissions extension that caused discounts to not be taken into account when generating commissions.
  • Fixed a bug in the EDD_SL_Plugin_Updater class that prevented updates from showing when not using multisite. Please update the file distributed with your plugins.

Version 3.0.1, October 29, 2014

  • Fixed a bug in the plugin updater class that caused update checks to run on every admin page load. Please update the version of EDD_SL_Plugin_Updater distributed with your plugins.

Version 3.0, October 21, 2014

  • Added support for multiple renewal notices, each sent at a designated time frame before or after license key expiration
  • Fixed a bug with renewing old license keys that did not have a price_id assigned to them
  • Fixed a bug in the EDD_SL_Plugin_Updater class that prevented plugin updates from working on non-primary sites in a multisite install
  • Improved the HTML markup of the license renewal form on the checkout screen
  • Added support for passing “item_id” instead of “item_name” to the API requests
  • Added new export options to allow exporting a CSV of license keys
  • Fixed an improper redirect when updating the expiration dates of license keys
  • Fixed several potential security vulnerabilities

Version 2.9.1, August 15, 2014

  • Fixed a critical bug with renewals of products that have variable prices, props Yoast
  • Fixed a bug in the Sample Plugin that caused update notices to not always show properly
  • Improved caching of the API response for the get_version call
  • Added a new filter to get_license_logs(), props Lee Willis
  • Fixed a bug with double encoding of product titles
  • Introduced a new filter called edd_sl_send_renewal_reminder
  • Store the time that renewal notices are sent instead of just “1”
  • Added a new filter for the the license key length, edd_sl_license_key_length

Version 2.9, June 30, 2014

  • Fixed a bug with license activation limits not being properly checked when manually adding new site URLs
  • Improved the Go Back buttons in the frontend license manager

Version 2.8.9, June 16, 2014

  • Fixed a bug with license keys not being updated when the user ID or email of the connected payment is updated
  • Fixed the missing retroactive licensing tool with EDD 2.0+
  • Fixed a 404 error caused by attempting to load a non-existent CSS file
  • Fixed a typo in the retroactive licensing section
  • Updated the View License Log link to use ajax to pull in the logs instead of querying them all on page looad.

Version 2.8.8, June 11, 2014

  • Fixed a bug with license activation limits when URL checking is disabled
  • Improved performance of the get_license_by_key() method
  • Improved performance of all API requests by disabling some default actions in WordPress core

Version 2.8.7, May 22, 2014

  • Fixed a security bug. Please update.

Version 2.8.6, May 20, 2014

  • Fixed a bug with searching license key.
  • Updated the ReadMe.txt cache expiration time to 6 hours

Version 2.8.5, May 19, 2014

  • Fixed a bug with filtering the licenses page when a specific view is chosen
  • Fixed a bug with retrieving the proper user info when sending renewal notices
  • Fixed a bug with when the text domain is loaded
  • Fixed a missing echo statement
  • Fix a bug with URLs that contain www or are https

Version 2.8.4, May 13, 2014

  • Fixed a bug with license expiration dates when renewing license keys
  • Fixed a typo
  • Fixed a performance issue with the log creation process when license keys are activated / deactivated by explicitly passing the post_name key to prevent WordPress from looking up possible slugs for the entry

Version 2.8.3, May 5, 2014

  • Fixed an undefined index for $item_id
  • Fixed a deprecated function call.
  • Fixed a bug with renewal notes for email addresses that contain dashes.
  • Fixed a bug that caused duplicate update checks
  • Added a French language file
  • Added “url” to sample license activation requests

Version 2.8.2, April 21, 2014

Added additional information about the license to the check_license API request.

Version 2.8.1, April 11, 2014
Fixed a bug with not being able to add / remove sites from the frontend license management.
Updated the package download expiration to 1 hour.
Improved the license renewal form.

Version 2.8, April 1, 2014
Added a new change log widget (thanks Lee Willis!)
Fixed a bug with slashes in changelogs
Fixed a positioning bug of the license key in purchase history in FireFox
Fixed a potential conflict with other filters attached to the_content
Fixed a bug with the license activation limit display in purchase history

Version 2.7, March 26, 2014
Added front-end licensing management so customers can activate / deactivate site URLs.
Improved missing license key generation on purchase records.
Added a renewal link to the Expired text shown on expired keys if renewals are enabled.
Tweaked check_license() method\’s logic for empty license IDs
Fixed a display conflict with Purchase Limits, Simple Shipping, and Recurring Payments extensions.
Better validation of site URLs.

Version 2.6.3, March 16, 2014
Fixed a bug with license key activation limits getting set to unlimited improperly.
Fixed the display of  Unlimited when manually setting a license activation limit to 0 (unlimited).
Added edd_remote_license_activation_response filter.

Version 2.6.2, March 11, 2014
Fixed a bug with license renewals that caused renewal discounts to sometimes be too high.
Fixed a bug with renewing variably-priced products.

Version 2.6.1, March 11, 2014
Fixed a bug with manual activation limit overrides that preventing them from being set to 0 for unlimited.

Version 2.6, February 28, 2014
Added an option to manually adjust the activation limits of license keys.
Added an option to generate license keys for products with missing keys from past purchases.
Added a visual editor to the Changelog field.
Fixed a bug with the activations_left response.
Added a notice to update notifications for expired license keys (to encourage renewals).

Version 2.5.2, February 18, 2014
Fixed an issue with site URLs getting stored and licenses activated even when at activation limits.

Version 2.5.1, February 11, 2014
Fixed a bug with the check_item_name() method introduced in v2.5. The item name being passed in the request needed to be passed through urldecode().

Version 2.5, February 10, 2014
Added support for setting license activation limits per each price option.

Fixed a bug with item name comparisons.

Improved the API responses for license activation requests.

Version 2.4.2, February 5, 2014
Updated the package download system to match the one in EDD core. Helps resolve occasional conflicts with WP Engine and other hosts.
Added support for delivering update packages via the Amazon S3 extension.

Version 2.4.1, January 31, 2014
Fixed a bug with nonce verification during download save.
Base license expiration off of purchase date instead of current time.
Added better support for activation counts when licenses are not tied to site URLs.
Fixed a bug with invalid activation responses because the expired check was running too early.

Version 2.4, January 23, 2014
New: added a retroactive licensing feature to generate keys on old purchases.

New: added option to automatically parse readme.txt files for WordPress plugins for populating the update notice dialog window.

New: added option to edit the expiration dates on license keys.

New: added option to manually add / remove site URLs from license keys.

New: added Renew link to expired license keys in purchase history and on the payment receipt page.

New: added \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\”url\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\” parameter to all license API requests that allow you to specify the exact URL an action is related to for a license.

Updated: rewrote how site URLs are stored to be much, much more efficient, dramatically improving performance and reliability. Also added an upgrade routine to move all site URLs to the new storage method.

Updated: moved the License metabox on Download edit screens to the main column and improved the general layout of the box.

Updated: use rawurldecode() instead of urldecode()

Version 2.3.2, December 18, 2013
Run item names through strtolower() before comparing them.

Version 2.3.1, December 13, 2013
Fixed a bug with file downloads of products that don\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\’t have a license key.
Fixed a bug with the license renewal system that could possibly allow an incorrect renewal discount to be applied.

Version 2.3, December 13, 2013
Automatically disable file downloads if a license key is expired or revoked.
Show \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\”Expired\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\” on the purchase receipt and history if a license is expired.

Version 2.2.6, December 10, 2013
Fixed a bug that prevent renewal links from adding the item to the cart.

Version 2.2.5, December 8, 2013
Fixed a bug that would allow renewal discounts to be applied to an incorrect product.

Version 2.2.4, December 6, 2013
Fixed a bug with the \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\”expires\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\” return in the check_license request.

Version 2.2.3, December 2, 2013
Fixed a bug with license key generation on bundle products.

Version 2.2.2, December 2, 2013
Fixed a bug with generating license keys for past purchases.
Fixed a bug with checking the product a license key belongs to during activation / deactivation.

Version 2.2.1, November 19, 2013
Delete license keys when their associated payment is also deleted.

Version 2.2, November 11, 2013
Added license renewal reports in Downloads > Reports > License Renewals

Version 2.1.4, November 8, 2013
Fixed a bug that caused renewal notices to be sent multiple times.

Version 2.1.3, November 6, 2013
Fixed a bug that caused renewal notices to be sent out even if disabled.

Version 2.1.2, November 5, 2013
Made the Purchased and Expires columns sortable.
Updated the renewal process to set the new expiration date based on the original expiration date, not the renewal date.

Version 2.1.1, November 4, 2013
Removed a leftover debugging function level that was left by accident.

Version 2.1, October 29, 2013
Added support for adding a list of predefined license keys to products that keys are then generated from for purchases.

Version 2.0.1, October 22, 2013
Fixed a bug that caused license checks to not validate on some sites.

Version 2.0, October 21, 2013
Added support for per-product license expiration dates.

Added cron event for daily checking of expired license keys.

Added a EDD_SL_REDIRECT_UPDATES constant for servers that have problems delivering update files.

Version 1.9.1
Fixed an issue with renewal discount calculations.
Added a new EDD_SL_REDIRECT_UPDATES constant that can be defined if file downloads during updates are corrupted.

Version 1.9
Added new option to generate license keys for payments without license keys for purchased products.
Added a new http_request_args() filter in the plugin update class to ensure ssl verification is disabled during updates.

Version 1.8.2
Fixed a bug with site URLs getting stored at license activation.

Version 1.8.1
Fixed a bug with license renewals.

Version 1.8
Fixed an exploit that could result in malicious users being able to potentially download files via the updater system.
Fixed a bug with html entities in license activation / checking.
Added the ability to Disable license keys.
Automatically disable license keys when associated payments are refunded or revoked.

Version 1.7.3
Added support for quantities introduced in EDD v1.7.

Version 1.7.2
Fixed a compatibility issue with the checkout screen of EDD v1.7.

Version 1.7.1
Fixed an issue with quick edit.

Version 1.7
Use stripos() instead of strpos() when activating a license key.
Fixed an incorrect text domain.
Removed the broken get_license_by_download() function.
Fixed an undefined index on the url parameter when performing update checks.
Added a new /changelog endpoint to Downloads to allow the changelog to be displayed.

Version 1.6
Added a license renewal system. Once update is installed, go to Downloads > Settings > Extensions and configure the renewal system.

Version 1.5.1
Fixed an issue with duplicate license keys getting generated.

Version 1.5
Added compatibility for Bundled products in EDD 1.6

Version 1.4.5
Fixed a bug with license activation on products that have a dash in their name.
Fixed a problem with deactivating a license key.
Fixed a missing product description in the plugin updater.

Version 1.4.4
Fixed an undefined index bug.
Fixed an issue with duplicate license keys getting generated when changing payment status.

Version 1.4.3
Fixed an issue with user agents.

Version 1.4.2
Fixed an issue with the update notices not showing.

Version 1.4.1
Fixed a bug with the new per-site statuses.

Version 1.4
Updated so that each site a license is used on receives a status, which fixes a bug with being able to update even when a license is inactive.

Version 1.3.9.1
Fixed a compatibility problem with EDD v1.5.

Version 1.3.9
Fixed several undefined index errors.
Fixed an issue with the edd_license_log post type being registered too late.
Added an option to force every license activation to be counted.
Updated the Them Updater class to use get_stylesheet().

Version 1.3.8
Fixed an incorrect option value in the updater.
Added an improved license key field that allows for licenses to be deactivated.

Version 1.3.7
Fixed an issue with deactivated license keys still allowing updates.

Version 1.3.6
Added license keys to the [edd_receipt] short code.
Fixed a bug with site counts when reactivating a site\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\’s license key.

Version 1.3.5
Fixed a bug with the site counts during activation so that each unique URL is now only counted as a single site. Props Joost de Valk.

Version 1.3.4
Dramatically improved performance of Licenses admin page.
Added license counts for each Status View in the admin.
Added new $download_id parameter to is_at_limit() member function.
Improved code formatting.

Version 1.3.3
Fixed an issue with the get_version remote request for non-WordPress implementations.

Version 1.3.2
Made a significant performance improvement for all remote requests. Props to @Yoast

Version 1.3.1
Fixed an undefined function error when searching for license keys.

Version 1.3
Added a method for remotely deactivating license keys.
Updated the sample plugin and theme with examples of deactivating license keys remotely.
Improved the log entries for license activation and deactivation.

Version 1.2.1
Fixed a bug with license keys on the purchase history page.

Version 1.2
Added a license search field.
Improved sample plugin and theme.
Simplified the sample theme.

Version 1.1.1
Added some additional action hooks.

Version 1.1
Added option to limit the number of times a license can be activated.
Added license keys to the Purchase History short code so buyers can easily retrieve their license keys.
Updated default language files.

Version 1.0.1
Fixed a bug with the updater.
Changed the licensing page to show 20 items instead of 5.

Version 1.0
Initial release.