BxAdsFormsEntryHelper.php 5.4 KB

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