1
0

BxBaseModPaymentModule.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
  4. * CC-BY License - http://creativecommons.org/licenses/by/3.0/
  5. *
  6. * @defgroup BasePayment Base classes for Payment like modules
  7. * @ingroup TridentModules
  8. *
  9. * @{
  10. */
  11. class BxBaseModPaymentModule extends BxBaseModGeneralModule
  12. {
  13. protected $_sLangsPrefix;
  14. function __construct($aModule)
  15. {
  16. parent::__construct($aModule);
  17. $this->_oConfig->init($this->_oDb);
  18. $this->_sLangsPrefix = $this->_oConfig->getPrefix('langs');
  19. }
  20. public function serviceUpdateDependentModules($sModule = 'all', $bInstall = true)
  21. {
  22. $aModules = $sModule == 'all' ? $this->_oDb->getModulesBy(array('type' => 'modules'), false) : array($this->_oDb->getModuleByName($sModule, false));
  23. foreach($aModules as $aModule) {
  24. if(empty($aModule) || empty($aModule['name']))
  25. continue;
  26. $mixedData = $this->callGetPaymentData($aModule['name']);
  27. if($mixedData === false)
  28. continue;
  29. $sMethodName = $bInstall ? 'insertModule' : 'deleteModule';
  30. $this->_oDb->$sMethodName($mixedData);
  31. }
  32. }
  33. public function serviceGetCurrencyInfo()
  34. {
  35. return array(
  36. 'sign' => $this->_oConfig->getDefaultCurrencySign(),
  37. 'code' => $this->_oConfig->getDefaultCurrencyCode()
  38. );
  39. }
  40. public function serviceGetOption($sOption)
  41. {
  42. $sMethod = 'get' . bx_gen_method_name($sOption);
  43. if(method_exists($this->_oConfig, $sMethod))
  44. return $this->_oConfig->$sMethod();
  45. return $this->_oDb->getParam($this->_oConfig->getPrefix('options') . $sOption);
  46. }
  47. public function serviceGetProvidersCart($iVendorId)
  48. {
  49. $aVendorProviders = $this->_oDb->getVendorInfoProvidersSingle($iVendorId);
  50. $aResult = array();
  51. foreach($aVendorProviders as $aProvider) {
  52. $aProvider['caption_cart'] = _t($this->_sLangsPrefix . 'txt_cart_' . $aProvider['name']);
  53. $aResult[] = $aProvider;
  54. }
  55. return $aResult;
  56. }
  57. public function getVendorInfo($iUserId)
  58. {
  59. return array_merge($this->getProfileInfo($iUserId), array(
  60. 'currency_code' => $this->_oConfig->getDefaultCurrencyCode(),
  61. 'currency_sign' => $this->_oConfig->getDefaultCurrencySign()
  62. ));
  63. }
  64. public function getObjectJoin()
  65. {
  66. $sClassName = $this->_oConfig->getClassPrefix() . 'Join';
  67. if(!isset($GLOBALS['bxDolClasses'][$sClassName])) {
  68. bx_import('Join', $this->_aModule);
  69. $GLOBALS['bxDolClasses'][$sClassName] = new $sClassName();
  70. }
  71. return $GLOBALS['bxDolClasses'][$sClassName];
  72. }
  73. public function getObjectCart()
  74. {
  75. $sClassName = $this->_oConfig->getClassPrefix() . 'Cart';
  76. if(!isset($GLOBALS['bxDolClasses'][$sClassName])) {
  77. bx_import('Cart', $this->_aModule);
  78. $GLOBALS['bxDolClasses'][$sClassName] = new $sClassName();
  79. }
  80. return $GLOBALS['bxDolClasses'][$sClassName];
  81. }
  82. public function getObjectOrders()
  83. {
  84. $sClassName = $this->_oConfig->getClassPrefix() . 'Orders';
  85. if(!isset($GLOBALS['bxDolClasses'][$sClassName])) {
  86. bx_import('Orders', $this->_aModule);
  87. $GLOBALS['bxDolClasses'][$sClassName] = new $sClassName();
  88. }
  89. return $GLOBALS['bxDolClasses'][$sClassName];
  90. }
  91. public function getObjectDetails()
  92. {
  93. $sClassName = $this->_oConfig->getClassPrefix() . 'Details';
  94. if(!isset($GLOBALS['bxDolClasses'][$sClassName])) {
  95. bx_import('Details', $this->_aModule);
  96. $GLOBALS['bxDolClasses'][$sClassName] = new $sClassName();
  97. }
  98. return $GLOBALS['bxDolClasses'][$sClassName];
  99. }
  100. public function getObjectProvider($sProvider, $mixedVendorId = BX_PAYMENT_EMPTY_ID)
  101. {
  102. $aProvider = $this->_oDb->getProviders(array('type' => 'by_name', 'name' => $sProvider));
  103. if(empty($aProvider) || !is_array($aProvider) || empty($aProvider['class_name']))
  104. return false;
  105. if(is_numeric($mixedVendorId) && (int)$mixedVendorId != BX_PAYMENT_EMPTY_ID)
  106. $aProvider['options'] = $this->_oDb->getOptions((int)$mixedVendorId, $aProvider['id']);
  107. $sClassPath = !empty($aProvider['class_file']) ? BX_DIRECTORY_PATH_ROOT . $aProvider['class_file'] : $this->_oConfig->getClassPath() . $aProvider['class_name'] . '.php';
  108. if(!file_exists($sClassPath))
  109. return false;
  110. require_once($sClassPath);
  111. return new $aProvider['class_name']($aProvider);
  112. }
  113. public function callGetPaymentData($mixedModule)
  114. {
  115. $sMethod = 'get_payment_data';
  116. if(!BxDolRequest::serviceExists($mixedModule, $sMethod))
  117. return false;
  118. return BxDolService::call($mixedModule, $sMethod);
  119. }
  120. public function callGetCartItem($mixedModule, $aParams)
  121. {
  122. return BxDolService::call($mixedModule, 'get_cart_item', $aParams);
  123. }
  124. public function callGetCartItems($mixedModule, $aParams)
  125. {
  126. return BxDolService::call($mixedModule, 'get_cart_items', $aParams);
  127. }
  128. public function callRegisterCartItem($mixedModule, $aParams)
  129. {
  130. return BxDolService::call($mixedModule, 'register_cart_item', $aParams);
  131. }
  132. public function callRegisterSubscriptionItem($mixedModule, $aParams)
  133. {
  134. return BxDolService::call($mixedModule, 'register_subscription_item', $aParams);
  135. }
  136. public function callUnregisterCartItem($mixedModule, $aParams)
  137. {
  138. return BxDolService::call($mixedModule, 'unregister_cart_item', $aParams);
  139. }
  140. public function callUnregisterSubscriptionItem($mixedModule, $aParams)
  141. {
  142. return BxDolService::call($mixedModule, 'unregister_subscription_item', $aParams);
  143. }
  144. public function callCancelSubscriptionItem($mixedModule, $aParams)
  145. {
  146. return BxDolService::call($mixedModule, 'cancel_subscription_item', $aParams);
  147. }
  148. }
  149. /** @} */