BxAdsFormsEntryHelper.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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 Ads Ads
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. /**
  12. * Entry forms helper functions
  13. */
  14. class BxAdsFormsEntryHelper extends BxBaseModTextFormsEntryHelper
  15. {
  16. public function __construct($oModule)
  17. {
  18. parent::__construct($oModule);
  19. }
  20. public function getObjectFormAdd($sDisplay = false)
  21. {
  22. if(($sCategoryDisplay = $this->_oModule->getCategoryDisplay('add')) !== false)
  23. $sDisplay = $sCategoryDisplay;
  24. return parent::getObjectFormAdd($sDisplay);
  25. }
  26. public function viewDataEntry ($iContentId)
  27. {
  28. $CNF = &$this->_oModule->_oConfig->CNF;
  29. $mixedResult = parent::viewDataEntry ($iContentId);
  30. if(!empty($mixedResult))
  31. return $mixedResult;
  32. $aContentInfo = $this->_oModule->_oDb->getContentInfoById($iContentId);
  33. $sDisplay = false;
  34. if(!empty($aContentInfo[$CNF['FIELD_CATEGORY']]) && ($sCategoryDisplay = $this->_oModule->getCategoryDisplay('view', $aContentInfo[$CNF['FIELD_CATEGORY']])) !== false)
  35. $sDisplay = $sCategoryDisplay;
  36. $oForm = $this->getObjectFormView($sDisplay);
  37. if(!$oForm)
  38. return '';
  39. $oForm->initChecker($aContentInfo);
  40. if(!empty($CNF['FIELD_TEXT']) && !$oForm->isInputVisible($CNF['FIELD_TEXT']))
  41. $s = '';
  42. else
  43. $s = $this->_oModule->_oTemplate->entryText($aContentInfo);
  44. return bx_is_api() ? [bx_api_get_block('entity_text', $s)] : $s;
  45. }
  46. public function onDataAddAfter($iAccountId, $iContentId)
  47. {
  48. $s = parent::onDataAddAfter($iAccountId, $iContentId);
  49. if(!empty($s))
  50. return $s;
  51. $this->_oModule->serviceUpdateCategoriesStats($iContentId);
  52. return '';
  53. }
  54. public function onDataEditAfter($iContentId, $aContentInfo, $aTrackTextFieldsChanges, $oProfile, $oForm)
  55. {
  56. $s = parent::onDataEditAfter($iContentId, $aContentInfo, $aTrackTextFieldsChanges, $oProfile, $oForm);
  57. if(!empty($s))
  58. return $s;
  59. $this->_oModule->serviceUpdateCategoriesStats($aContentInfo);
  60. return '';
  61. }
  62. public function onDataDeleteAfter ($iContentId, $aContentInfo, $oProfile)
  63. {
  64. $s = parent::onDataDeleteAfter ($iContentId, $aContentInfo, $oProfile);
  65. if(!empty($s))
  66. return $s;
  67. $this->_oModule->serviceUpdateCategoriesStats($aContentInfo);
  68. return '';
  69. }
  70. public function redirectAfterAdd($aContentInfo, $sUrl = '')
  71. {
  72. $CNF = &$this->_oModule->_oConfig->CNF;
  73. if($this->_oModule->_oConfig->isPromotion() && (float)$aContentInfo[$CNF['FIELD_BUDGET_TOTAL']] > 0) {
  74. $aCommodity = $this->_oModule->_oDb->getCommodity([
  75. 'sample' => 'entry_id',
  76. 'entry_id' => $aContentInfo[$CNF['FIELD_ID']],
  77. 'type' => BX_ADS_COMMODITY_TYPE_PROMOTION,
  78. 'latest' => true
  79. ]);
  80. if(!empty($aCommodity) && is_array($aCommodity)) {
  81. $oPayments = BxDolPayments::getInstance();
  82. $iVendorId = (int)$oPayments->getOption('site_admin');
  83. $aResult = $oPayments->addToCart($iVendorId, $this->_oModule->_oConfig->getId(), $aCommodity['id'], 1);
  84. if(isset($aResult['code']) && (int)$aResult['code'] == 0){
  85. $sUrl = $oPayments->getCartUrl($iVendorId);
  86. if (bx_is_api())
  87. return bx_api_get_block('redirect', ['uri' => '/' . bx_api_get_relative_url($sUrl), 'timeout' => 1000]);
  88. }
  89. }
  90. }
  91. parent::redirectAfterAdd($aContentInfo, $sUrl);
  92. }
  93. protected function redirectAfterEdit($aContentInfo, $sUrl = '')
  94. {
  95. $CNF = &$this->_oModule->_oConfig->CNF;
  96. if($this->_oModule->_oConfig->isPromotion() && (float)$aContentInfo[$CNF['FIELD_BUDGET_TOTAL']] > 0) {
  97. $aCommodity = $this->_oModule->_oDb->getCommodity([
  98. 'sample' => 'entry_id',
  99. 'entry_id' => $aContentInfo[$CNF['FIELD_ID']],
  100. 'type' => BX_ADS_COMMODITY_TYPE_PROMOTION,
  101. 'unpaid' => true,
  102. ]);
  103. if(!empty($aCommodity) && is_array($aCommodity)) {
  104. $oPayments = BxDolPayments::getInstance();
  105. $iVendorId = (int)$oPayments->getOption('site_admin');
  106. $aResult = $oPayments->addToCart($iVendorId, $this->_oModule->_oConfig->getId(), $aCommodity['id'], 1);
  107. if(isset($aResult['code']) && (int)$aResult['code'] == 0){
  108. $sUrl = $oPayments->getCartUrl($iVendorId);
  109. if (bx_is_api())
  110. return bx_api_get_block('redirect', ['uri' => '/' . bx_api_get_relative_url($sUrl), 'timeout' => 1000]);
  111. }
  112. }
  113. }
  114. parent::redirectAfterEdit($aContentInfo, $sUrl);
  115. }
  116. }
  117. /** @} */