1
0

BxBaseModPaymentModule.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  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 BxDolModule
  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 getProfileId()
  65. {
  66. return bx_get_logged_profile_id();
  67. }
  68. public function getProfileInfo($iUserId = 0)
  69. {
  70. $oProfile = $this->getObjectUser($iUserId);
  71. $oAccount = $oProfile->getAccountObject();
  72. return array(
  73. 'id' => $oProfile->id(),
  74. 'name' => $oProfile->getDisplayName(),
  75. 'email' => $oAccount->getEmail(),
  76. 'link' => $oProfile->getUrl(),
  77. 'icon' => $oProfile->getIcon(),
  78. 'unit' => $oProfile->getUnit(),
  79. 'active' => $oProfile->isActive(),
  80. );
  81. }
  82. public function getObjectUser($iUserId = 0)
  83. {
  84. bx_import('BxDolProfile');
  85. $oProfile = BxDolProfile::getInstance($iUserId);
  86. if (!$oProfile) {
  87. bx_import('BxDolProfileUndefined');
  88. $oProfile = BxDolProfileUndefined::getInstance();
  89. }
  90. return $oProfile;
  91. }
  92. public function getObjectJoin()
  93. {
  94. $sClassName = $this->_oConfig->getClassPrefix() . 'Join';
  95. if(!isset($GLOBALS['bxDolClasses'][$sClassName])) {
  96. bx_import('Join', $this->_aModule);
  97. $GLOBALS['bxDolClasses'][$sClassName] = new $sClassName();
  98. }
  99. return $GLOBALS['bxDolClasses'][$sClassName];
  100. }
  101. public function getObjectCart()
  102. {
  103. $sClassName = $this->_oConfig->getClassPrefix() . 'Cart';
  104. if(!isset($GLOBALS['bxDolClasses'][$sClassName])) {
  105. bx_import('Cart', $this->_aModule);
  106. $GLOBALS['bxDolClasses'][$sClassName] = new $sClassName();
  107. }
  108. return $GLOBALS['bxDolClasses'][$sClassName];
  109. }
  110. public function getObjectOrders()
  111. {
  112. $sClassName = $this->_oConfig->getClassPrefix() . 'Orders';
  113. if(!isset($GLOBALS['bxDolClasses'][$sClassName])) {
  114. bx_import('Orders', $this->_aModule);
  115. $GLOBALS['bxDolClasses'][$sClassName] = new $sClassName();
  116. }
  117. return $GLOBALS['bxDolClasses'][$sClassName];
  118. }
  119. public function getObjectDetails()
  120. {
  121. $sClassName = $this->_oConfig->getClassPrefix() . 'Details';
  122. if(!isset($GLOBALS['bxDolClasses'][$sClassName])) {
  123. bx_import('Details', $this->_aModule);
  124. $GLOBALS['bxDolClasses'][$sClassName] = new $sClassName();
  125. }
  126. return $GLOBALS['bxDolClasses'][$sClassName];
  127. }
  128. public function getObjectProvider($sProvider, $mixedVendorId = BX_PAYMENT_EMPTY_ID)
  129. {
  130. $aProvider = $this->_oDb->getProviders(array('type' => 'by_name', 'name' => $sProvider));
  131. if(empty($aProvider) || !is_array($aProvider) || empty($aProvider['class_name']))
  132. return false;
  133. if(is_numeric($mixedVendorId) && (int)$mixedVendorId != BX_PAYMENT_EMPTY_ID)
  134. $aProvider['options'] = $this->_oDb->getOptions((int)$mixedVendorId, $aProvider['id']);
  135. $sClassPath = !empty($aProvider['class_file']) ? BX_DIRECTORY_PATH_ROOT . $aProvider['class_file'] : $this->_oConfig->getClassPath() . $aProvider['class_name'] . '.php';
  136. if(!file_exists($sClassPath))
  137. return false;
  138. require_once($sClassPath);
  139. return new $aProvider['class_name']($aProvider);
  140. }
  141. public function callGetPaymentData($mixedModule)
  142. {
  143. $sMethod = 'get_payment_data';
  144. if(!BxDolRequest::serviceExists($mixedModule, $sMethod))
  145. return false;
  146. return BxDolService::call($mixedModule, $sMethod);
  147. }
  148. public function callGetCartItem($mixedModule, $aParams)
  149. {
  150. return BxDolService::call($mixedModule, 'get_cart_item', $aParams);
  151. }
  152. public function callGetCartItems($mixedModule, $aParams)
  153. {
  154. return BxDolService::call($mixedModule, 'get_cart_items', $aParams);
  155. }
  156. public function callRegisterCartItem($mixedModule, $aParams)
  157. {
  158. return BxDolService::call($mixedModule, 'register_cart_item', $aParams);
  159. }
  160. public function callRegisterSubscriptionItem($mixedModule, $aParams)
  161. {
  162. return BxDolService::call($mixedModule, 'register_subscription_item', $aParams);
  163. }
  164. public function callUnregisterCartItem($mixedModule, $aParams)
  165. {
  166. return BxDolService::call($mixedModule, 'unregister_cart_item', $aParams);
  167. }
  168. public function callUnregisterSubscriptionItem($mixedModule, $aParams)
  169. {
  170. return BxDolService::call($mixedModule, 'unregister_subscription_item', $aParams);
  171. }
  172. public function callCancelSubscriptionItem($mixedModule, $aParams)
  173. {
  174. return BxDolService::call($mixedModule, 'cancel_subscription_item', $aParams);
  175. }
  176. }
  177. /** @} */