Expiring User Upgrades

Expiring User Upgrades [Paid] 2.5.2

No permission to buy ($25.00)
Is it possible to turn the emails off and on individually?

We only have subscriptions and I really I only want emails when a subscription lapses or expires, I don't want to send any reminders leading up to the renewal if everything is in good order with an active subscription.
 
Is this compatible with Paid Registration add-on?
If they create a normal user upgrade it should work.

Is it possible to turn the emails off and on individually?

We only have subscriptions and I really I only want emails when a subscription lapses or expires, I don't want to send any reminders leading up to the renewal if everything is in good order with an active subscription.
Yes, users can opt-out individually and it can be configured to only send expires and not soon-to-expire notices
 
This seems really good so far, just waiting for subscription to expire to test that aspect.

One thing I have noticed though, which I'm not sure is desirable, is that if you edit the end date on an active user upgrade it initiates a brand new conversation and email as if the user has received a fresh upgrade, when that's not really the case.

I think think this could be a bug? As I can see this being very confusing for the user if the admin performs a minor edit and the user then starts receiving notifications thanking them for purchasing new upgrades. This will cause them to worry that they've been charged for something, when that's not the case.
 
That does sound like a bug, probably need a checkbox to send alerts as it may be conditional that the admin wants to send alerts
 
Hi there @Xon,

I started noticing this error when the system is trying to downgrade expired user upgrades via cron.

Could you take a look and let me know what might be the issue?

Many thanks as always for the wonderful support.


TypeError: XF\Service\User\Downgrade::__construct(): Argument #3 ($user) must be of type XF\Entity\User, null given, called in /home/nginx/domains/site.com/public/src/XF/Container.php on line 276 in src/XF/Service/User/Downgrade.php at line 29
  1. XF\Service\User\Downgrade->__construct() in src/XF/Container.php at line 276
  2. XF\Container->createObject() in src/XF/App.php at line 1709
  3. XF\App->XF\{closure}() in src/XF/Container.php at line 234
  4. XF\Container->create() in src/XF/App.php at line 3022
  5. XF\App->service() in src/XF/Repository/UserUpgrade.php at line 140
  6. XF\Repository\UserUpgrade->downgradeExpiredUpgrades() in src/addons/SV/ExpiringUserUpgrades/XF/Repository/UserUpgrade.php at line 45
  7. SV\ExpiringUserUpgrades\XF\Repository\UserUpgrade->downgradeExpiredUpgrades() in src/XF/Cron/CleanUp.php at line 188
  8. XF\Cron\CleanUp::runUserDowngrade() in src/XF/Admin/Controller/CronEntry.php at line 114
  9. XF\Admin\Controller\CronEntry->actionRun() in src/addons/XenCentral/MultiSite/Admin/XF/Controller/Cron.php at line 31
  10. XenCentral\MultiSite\Admin\XF\Controller\Cron->actionRun() in src/XF/Mvc/Dispatcher.php at line 352
  11. XF\Mvc\Dispatcher->dispatchClass() in src/XF/Mvc/Dispatcher.php at line 259
  12. XF\Mvc\Dispatcher->dispatchFromMatch() in src/XF/Mvc/Dispatcher.php at line 115
  13. XF\Mvc\Dispatcher->dispatchLoop() in src/XF/Mvc/Dispatcher.php at line 57
  14. XF\Mvc\Dispatcher->run() in src/XF/App.php at line 2352
  15. XF\App->run() in src/XF.php at line 524
  16. XF::runApp() in admin.php at line 13
 
This isn't related to my add-on, and looks to be an XF bug.

This happens if the user doesn't exist for a user-upgrade. This might have happened if the user was deleted from the database or the user-delete process didn't work correctly.
 
This isn't related to my add-on, and looks to be an XF bug.

This happens if the user doesn't exist for a user-upgrade. This might have happened if the user was deleted from the database or the user-delete process didn't work correctly.
I see. In this case, would I have to uninstall and re-install the add-on to end the server errors?
 
Hello,
Since I am having different payment profiles, is there a way to set up the add-on to send the notifications ONLY for the payment profile I select? Please let me know!
 
It is per user-upgrade, not per payment profile. Due to limitations of XF user upgrades (and some payment profiles) you may end up a user-upgrade per payment profile.

An example of this is if you want to two recurring services with BrainTree. This requires two seperate payment profiles. No idea why.
 
It is per user-upgrade, not per payment profile. Due to limitations of XF user upgrades (and some payment profiles) you may end up a user-upgrade per payment profile.

An example of this is if you want to two recurring services with BrainTree. This requires two seperate payment profiles. No idea why.
As payment profiles I am running Paypal , Cryptocurrency and a hollow payment profile for testing purposes. On PayPal I do not want any of the users to receive any notifications but for the others can I set up this add-on to send notifications only to those users that used the Cryptocurrency payment profile?
Please let me know
 
It is per user-upgrade, not per payment profile. Due to limitations of XF user upgrades (and some payment profiles) you may end up a user-upgrade per payment profile.

An example of this is if you want to two recurring services with BrainTree. This requires two seperate payment profiles. No idea why.
Hello Xon,
I sent you a PM asking if the feature I seek can be facilitated via custom development.
Please let me know if this is possible.
Looking forward to hearing back from you
Best regards!
 
Hi there @Xon , I am using Expiring User Upgrades with Gift Upgrade.

Using this combination has an issue I realized. I am unable to send different messages to users who purchased a VIP upgrade and those who were gifted a user upgrade.

They all end up using the phrase from the Expiring User Upgrades add-on. Can you look into how we can ensure that purchased upgrade alerts and gifted upgrade alerts are not the same message so that our users are not confused?

Thank you so much. This add-on has been a great addition to my community!
 
They all end up using the phrase from the Expiring User Upgrades add-on. Can you look into how we can ensure that purchased upgrade alerts and gifted upgrade alerts are not the same message so that our users are not confused?
Yeah, fair enough. I think adding a few simple additional phrases should make this doable. I'll look into that for the next release.

May be quite a few phrases, ugh.
 
Last edited:
Yeah, fair enough. I think adding a few simple additional phrases should make this doable. I'll look into that for the next release.

May be quite a few phrases, ugh.

This would be an amazing update! Thank you so much for looking into this, and putting this in your list.
 
Xon updated Expiring User Upgrades with a new update entry:

2.3.0 - Feature update

  • Require php 7.2+
  • Fix recurring upgrades did not send expiry notices >24 hours before they where due to expire
  • Shorten various notification alerts
  • Improve scalability of notifying large number of users about expiring upgrades
  • Improve @NixFifity's Gift Upgrades integration. Titles for gifted upgrades/subscriptions are prefixed with "gifted" (editable phrase).
  • Add per-user upgrade "Exclude payment providers from notifications" option to skip user upgrades which have...

Read the rest of this update entry...
 
@Xon
Since upgrading to 2.3.0 I've found that when disabling an upgrade it creates the following error:
  • Attempted to set 'exup_excluded_payment_provider_ids' while a save was pending without forceSet
  • src/XF/Mvc/Entity/Entity.php:600
[HEADING=2]Stack trace[/HEADING] #0 src/XF/Mvc/Entity/Entity.php(572): XF\Mvc\Entity\Entity->set('exup_excluded_p...', NULL) #1 src/addons/SV/ExpiringUserUpgrades/XF/Entity/UserUpgrade.php(156): XF\Mvc\Entity\Entity->__set('exup_excluded_p...', NULL) #2 src/XF/Mvc/Entity/Entity.php(1272): SV\ExpiringUserUpgrades\XF\Entity\UserUpgrade->_postSave() #3 src/XF/ControllerPlugin/Toggle.php(43): XF\Mvc\Entity\Entity->save() #4 src/XF/ControllerPlugin/Toggle.php(11): XF\ControllerPlugin\Toggle->toggle('XF:UserUpgrade', 'can_purchase', Array) #5 src/XF/Admin/Controller/UserUpgrade.php(145): XF\ControllerPlugin\Toggle->actionToggle('XF:UserUpgrade', 'can_purchase') #6 src/XF/Mvc/Dispatcher.php(352): XF\Admin\Controller\UserUpgrade->actionToggle(Object(XF\Mvc\ParameterBag)) #7 src/XF/Mvc/Dispatcher.php(259): XF\Mvc\Dispatcher->dispatchClass('XF:UserUpgrade', 'Toggle', Object(XF\Mvc\RouteMatch), Object(SV\ExpiringUserUpgrades\XF\Admin\Controller\UserUpgrade), NULL) #8 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\ExpiringUserUpgrades\XF\Admin\Controller\UserUpgrade), NULL) #9 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch)) #10 src/XF/App.php(2353): XF\Mvc\Dispatcher->run() #11 src/XF.php(524): XF\App->run() #12 admin.php(13): XF::runApp('XF\\Admin\\App') #13 {main} [HEADING=2]Request state[/HEADING] array(4) { ["url"] => string(38) "/forums/admin.php?user-upgrades/toggle" ["referrer"] => string(62) "https://www.mysite/forums/admin.php?user-upgrades/" ["_GET"] => array(1) { ["user-upgrades/toggle"] => string(0) "" } ["_POST"] => array(5) { ["_xfToken"] => string(8) "********" ["can_purchase"] => array(8) { [2] => string(1) "1" [1] => string(1) "1" [34] => string(1) "0" [35] => string(1) "1" [30] => string(1) "0" [32] => string(1) "0" [31] => string(1) "0" [33] => string(1) "0" } ["_xfRequestUri"] => string(32) "/forums/admin.php?user-upgrades/" ["_xfWithData"] => string(1) "1" ["_xfResponseType"] => string(4) "json" } }

Regards,
 
Yeah, fair enough. I think adding a few simple additional phrases should make this doable. I'll look into that for the next release.

May be quite a few phrases, ugh.

whats the difference between a subscription and an upgrade?
 
Top Bottom