BxPaymentMenuSbsActions.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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 Payment Payment
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. class BxPaymentMenuSbsActions extends BxTemplMenu
  12. {
  13. protected $_sModule;
  14. protected $_oModule;
  15. protected $_iPendingId;
  16. public function __construct($aObject, $oTemplate = false)
  17. {
  18. $this->_sModule = 'bx_payment';
  19. $this->_oModule = BxDolModule::getInstance($this->_sModule);
  20. parent::__construct($aObject, $oTemplate);
  21. if(($iPendingId = bx_get('id')) !== false && ($iPendingId = bx_process_input($iPendingId, BX_DATA_INT)))
  22. $this->setPendingId($iPendingId);
  23. }
  24. public function setContentParams($aParams)
  25. {
  26. parent::setContentParams($aParams);
  27. if(($iPendingId = $aParams['pending_id'] ?? false))
  28. $this->setPendingId($iPendingId);
  29. }
  30. public function setPendingId($iPendingId)
  31. {
  32. $this->_iPendingId = $iPendingId;
  33. $aPending = $this->_oModule->_oDb->getOrderPending(['type' => 'id', 'id' => $this->_iPendingId]);
  34. if(empty($aPending) || !is_array($aPending))
  35. return;
  36. $sMethod = 'getMenuItemsActionsRecurring';
  37. $oProvider = $this->_oModule->getObjectProvider($aPending['provider'], $aPending['seller_id']);
  38. if($oProvider === false || !$oProvider->isActive() || !method_exists($oProvider, $sMethod))
  39. return;
  40. $this->_aObject['menu_items'] = array_merge($oProvider->$sMethod($aPending['client_id'], $aPending['seller_id'], [
  41. 'id' => $aPending['id'],
  42. 'order' => $aPending['order']
  43. ]), $this->getMenuItemsRaw());
  44. $aMarkers = [
  45. 'js_object' => $this->_oModule->_oConfig->getJsObject('subscription'),
  46. 'id' => $this->_iPendingId
  47. ];
  48. if(($sGrid = bx_get('grid')) !== false)
  49. $aMarkers['grid'] = bx_process_input($sGrid);
  50. $this->addMarkers($aMarkers);
  51. }
  52. public function getCode()
  53. {
  54. if(empty($this->_aObject['menu_items']) || !is_array($this->_aObject['menu_items']))
  55. return MsgBox(_t('_Empty'));
  56. return parent::getCode();
  57. }
  58. protected function _getMenuCallbackDataAPI($a)
  59. {
  60. $aResult = [];
  61. switch($a['name']) {
  62. case 'sbs-cancel':
  63. $aResult = [
  64. 'confirm' => 1,
  65. 'request_url' => $this->_sModule . '/cancel_by_pending_id/Subscriptions&params[]=' . $this->_iPendingId . '&params[]=1',
  66. 'on_callback' => 'hide_row',
  67. 'id' => $this->_iPendingId
  68. ];
  69. break;
  70. }
  71. return $aResult;
  72. }
  73. }
  74. /** @} */