Over the last few months we have been hard at work on a new version of Software Licensing. Today we’re pleased to announce the release of the first beta version of 3.5. This version is being released with a beta period due to the sheer size of the update and the significant number of changes that have been made to the plugin. We want to ensure the update to 3.5 goes as smoothly as possible so, if you are able, please help us test the beta version.
For information on how you can gain access to the beta, please see the bottom of this post.
Let’s take a quick look at what’s new in version 3.5.
New license details screen
Previously there has never been a good way to view all of the information about an individual license key. In 3.5 we have introduced a new screen dedicated to license details.
This screen displays all relevant information for the license key, including related payments, related license keys, upgrade paths, and more. From this screen, site admins can easily edit attributes of the license and perform actions such as sending renewal notifications. If your site has multiple renewal notifications configured, you will also be able to select which email notice you wish to send:
The Related Payments section provides a list of all renewal and upgrade payments so it is easy to quickly view the history of a license.
With the Upgrade Paths section, site admins can easily see what upgrade options are available and even copy a direct purchase URL for an upgrade that can be sent to customers.
With this single license view, we have also cleaned up the main list table view for license keys.
New EDD_SL_License class
For developers, working with license key data hasn’t been very easy in the past due to a heavy reliance on WordPress post objects and postmeta and a significant lack of API methods within the plugin.
In version 3.5, we have introduced a new EDD_SL_License class that provides a significantly easier system for working with license keys. See the documentation for complete details on this new class.
Time based proration
Software Licensing has supported license upgrades since version 3.3, but the proration method used with upgrades was always a pseudo proration that only took into account the cost difference between the license levels. In 3.5 we have introduced a new option that allows site admins to choose whether they wish to use cost-based or time-based proration for license upgrades (if any).
With time-based calculations, the cost of an upgrade takes into account how much time is left on the existing license and then prorates the new purchase accordingly.
Note: time-based proration is disabled by default so you must enable it if you wish to use it.
Beta versions
Successful software update releases often include beta versions (like 3.5 of Software Licensing) so we have introduced a new feature that allows you to release beta versions as well. In a very meta way, we are actually using this same beta feature to release this beta version.
See our documentation for more information.
Per-item renewal discounts
Renewal discounts have been supported for a long time in Software Licensing. In version 3.5, we have introduced support for setting per-item renewal discounts. This means that site admins can set a global renewal discount that applies to all products but then set a specific discount rate for individual products.
Improved file organization
The file and folder organization of Software Licensing really began to show its age during this development cycle. We decided to take care of it once and for all and do some significant improvements. For developers this change will make it easier to grok the code base. For non developers there shouldn’t be any noticeable change.
It is important to note, however, that if you have written any custom features that manually load files from Software Licensing, you will need to update your code to account for the new file names and locations.
Other improvements
Along with the new features noted above, we’ve made a significant number of additional improvements as well.
- A new option has been added to enforce email matching on license renewals. This allows site admins to require that license renewals be purchased with the same email address as the original license.
- The EDD_SL_Plugin_Updater class has improved caching and support for beta versions. Please update your integrations.
- The EDD_Theme_Updater class has been updated with support for beta versions. Please update your integrations.
- New action hooks have been added to the license renewal process.
- New filters have been added to get_licenses_of_purchase() and get_licenses_by_purchase().
- License keys are now included in the /sales/ endpoint of the EDD REST API.
- License keys for bundles are now grouped in the [edd_license_keys] shortcode display.
- License upgrade purchases can now be performed through a direct URL.
- License keys and associated meta data are now deleted when a complete store reset is done.
- The license keys metabox in View Order Details has been improved.
- Inline upgrade links can now be shown on purchase buttons.
- MD5 checksums are now included in all license REST API responses.
- A new {expiration_time} template tag has been added to license renewal notice emails.
- A new option has been added to disable discount codes on license renewals.
- Banner images can now be added to WordPress plugins through the ReadMe.txt parsing.
- License keys list table can now be filtered by download product ID by entering download:# in the search field.
- Improved labels and layout of the licensing metabox.
Important bug fixes
A number of major and minor bugs have also been fixed.
- Action links on license keys list table should return user to previous screen.
- Extra paragraphs added to license renewal notice emails
- Expiration dates are shown in GMT instead of local time.
- Incorrect renewal flags and discounts left in cart when removing renewal from cart.
- Invalid download message returned when using “item_name” instead of “item_id” in licensing REST API.
- Incorrect license keys generated when re-generating keys for a purchase.
- Updating customer email does not update the email address on license keys.
- Error message shown when loading “View Update Details” modal window multiple times.
- Upgrade paths shown for expired and disabled license keys.
- Incorrect upgrade path set as the default when products contain variable prices.
- Extend license link missing from View Licenses page in frontend Purchase History.
- Duplicate license keys created when regenerating license kets on a purchase.
- Site URLs can still be managed by customer when license is disabled.
- Setting a license key to lifetime does not update the status of the license.
- License keys improperly set to disabled when a refund is processed for a renewal.
- Extra dash shown on checkout when renewing a license key without variable prices.
- Deleting a renewal payment also deletes the associated license key.
Template file changes
To fix a bug with customers still being able to manage the site URLs for a disabled license, we needed to update the templates/license-keys.php template file. If you have copied this file to your theme’s folder, please update it with the new version to ensure this bug is fixed on your site.
How to get the beta
There are two ways to access the beta version.
1. Download and install manually
The 3.5 beta is available for download from your account page. Navigate to your Downloads tab, locate the row for Software Licensing, and click the download link edd-software-licensing-3.5-beta.zip. Once you have downloaded it, you can install it manually just like any other plugin.
2. Download and install automatically from plugins.php
With the introduction of extension beta version support in Easy Digital Downloads 2.6.11, you can now navigate to Downloads > Tools > Beta Version in your WordPress site that has Easy Digital Downloads installed and then select the extensions you would like to receive beta update notifications for.
Check the box for Software Licensing and the update for the 3.5 beta will show up on your Plugins page just like any other update.
Notes:
- You must have Software Licensing installed and activated on your site already in order to opt into beta updates through plugins.php.
- Access to the beta is restricted to active license holders. Don’t have one? Purchase one today.
- You will need Easy Digital Downloads 2.6.17 or later in order to use the automatic beta install option.
Please let us know what you think! If you notice any problems, you may let us know in the comments below or by submitting a support ticket.
Is it possible to retrieve the license keys of individual products that are part of a bundle from just the bundle license key with this update? Managing licenses for products that are part of a large bundle can get a little clunky. It would be awesome if a user could just activate their bundle license and it would activate all associated product keys in the bundle (with some custom built activation code of course). There just seems to be no way to get the other license keys from the bundle key, or maybe I am missing something.
Are you looking for a way to do that in the UI or programmatically?
Allowing bundle keys to be used to activate products within a bundle is something we hope to offer in the future but is not supported yet.
Thanks for the reply Pippin! I was thinking programmatically, because I already have some custom license activation functions. But UI would be cool as well.
I have a plugin with a variety of add-ons. The plugin and the add-ons are sold in a bundle, so it would be awesome if you could programmatically retrieve the licenses for each right from the bundle license. So if the user activates the bundle license, behind the scenes, we can activate the plugin and any add-ons as well.
The new EDD_SL_License class provides you an easy way to get all child licenses. When you have bundle licensing enabled, all of the license keys for the products in the bundle will be considered “child licenses”. See the new EDD_SL_License documentation: http://docs.easydigitaldownloads.com/article/1723-software-licensing-developer-eddsllicense
Does that get you what you need?
Oh wow, that just might do it. I will dig into this on the weekend and see what I can come up with!
You can also use the class helper method to activate the child keys.
Question re: “The EDD_Theme_Updater class has been updated with support for beta versions. Please update your integrations.”
… does this mean we need to change the files in the /updater/theme-updater-class.php file? How about the theme-updater.php file? That’s the only one I believe has any custom info in it, so just want to make sure I’m making the right edits if we update to SL 3.5.
Thanks guys!
Yes you will want to update that file with the latest version.
Okay, great. Thanks!
Hey, Pippin.
I’m about to upgrade to SL 3.5, but before I do, I had one more question inline with my previous question. Let’s say I update the code in our theme-updater-class.php and update SL 3.5. What’s going to happen for our customers who have an older version of our theme installed (i.e. any version that does not include this update to the theme-updater-class.php going into the latest version)? How will that work since we’ll be updating to SL 3.5, but everyone will be on a version of the theme with an obsolete theme-updater-class.php?
Thank you!
Your customers with the older version will still get the update as normal. Customers won’t see any difference from other updates.
Perfect!
FYI, I added 3.5 and it made the whole site error 500 had to FTP in and delete the plugin and go back to an older version to get the site back.
Can you please check your PHP error logs and let me know what the exact error message was?