BxBaseModGroupsCronPruning.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup BaseGroups Base classes for groups modules
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. class BxBaseModGroupsCronPruning extends BxDolCron
  12. {
  13. protected $_sModule;
  14. protected $_oModule;
  15. public function __construct()
  16. {
  17. $this->_oModule = BxDolModule::getInstance($this->_sModule);
  18. parent::__construct();
  19. }
  20. function processing()
  21. {
  22. $CNF = &$this->_oModule->_oConfig->CNF;
  23. $oPayments = BxDolPayments::getInstance();
  24. $aRoles = $this->_oModule->_oDb->getRoles(array('type' => 'expired'));
  25. foreach($aRoles as $aRole) {
  26. $aSubscription = $oPayments->getSubscriptionsInfo(array('subscription_id' => $aRole['order']), true);
  27. if(!empty($aSubscription) && is_array($aSubscription)) {
  28. $aSubscription = array_shift($aSubscription);
  29. $iRecurringReserve = 86400 * (int)getParam($CNF['PARAM_RECURRING_RESERVE']);
  30. if($aSubscription['data']['status'] == 'active') {
  31. $this->_oModule->_oDb->updateRoles(array('expired' => $aSubscription['data']['cperiod_end'] + $iRecurringReserve), array('id' => $aRole['id']));
  32. continue;
  33. }
  34. else {
  35. $oPayments->sendSubscriptionExpirationLetters($aSubscription['pending_id'], $aRole['order']);
  36. $this->_oModule->_oDb->updateRoles(array('expired' => $aRole['expired'] + $iRecurringReserve), array('id' => $aRole['id']));
  37. continue;
  38. }
  39. }
  40. $this->_oModule->unsetRole($aRole['group_profile_id'], $aRole['fan_id']);
  41. }
  42. }
  43. }
  44. /** @} */