|
|
@@ -11,6 +11,7 @@
|
|
|
|
|
|
class BxPaymentDetails extends BxBaseModPaymentDetails
|
|
|
{
|
|
|
+ protected $_bIsApi;
|
|
|
protected $_sLangsPrefix;
|
|
|
|
|
|
function __construct()
|
|
|
@@ -19,6 +20,7 @@ class BxPaymentDetails extends BxBaseModPaymentDetails
|
|
|
|
|
|
parent::__construct();
|
|
|
|
|
|
+ $this->_bIsApi = bx_is_api();
|
|
|
$this->_sLangsPrefix = $this->_oModule->_oConfig->getPrefix('langs');
|
|
|
}
|
|
|
|
|
|
@@ -39,39 +41,74 @@ class BxPaymentDetails extends BxBaseModPaymentDetails
|
|
|
/**
|
|
|
* @ref bx_payment-get_block_details "get_block_details"
|
|
|
*/
|
|
|
- public function serviceGetBlockDetails($iUserId = BX_PAYMENT_EMPTY_ID)
|
|
|
+ public function serviceGetBlockDetails($iUserId = BX_PAYMENT_EMPTY_ID, $mixedPaymentProvider = false)
|
|
|
{
|
|
|
if(!$this->_oModule->isLogged())
|
|
|
- return array(
|
|
|
- 'content' => MsgBox(_t($this->_sLangsPrefix . 'err_required_login'))
|
|
|
- );
|
|
|
+ return ($sMsg = $this->_sLangsPrefix . 'err_required_login') && $this->_bIsApi ? [bx_api_get_msg($sMsg)] : MsgBox(_t($sMsg));
|
|
|
|
|
|
$iUserId = $iUserId != BX_PAYMENT_EMPTY_ID ? $iUserId : $this->_oModule->getProfileId();
|
|
|
|
|
|
- $sContent = $this->getForm($iUserId);
|
|
|
- if(empty($sContent))
|
|
|
- $sContent = MsgBox(_t($this->_sLangsPrefix . 'msg_no_results'));
|
|
|
+ $aPaymentProviders = [];
|
|
|
+ if(!$mixedPaymentProvider) {
|
|
|
+ $aPaymentProviders = $this->_oModule->_oDb->getProviders([
|
|
|
+ 'type' => 'all',
|
|
|
+ 'active' => true,
|
|
|
+ 'order' => true
|
|
|
+ ]);
|
|
|
|
|
|
- return array(
|
|
|
- 'content' => $sContent
|
|
|
- );
|
|
|
+ if(!empty($aPaymentProviders) && is_array($aPaymentProviders))
|
|
|
+ $aPaymentProviders = array_keys($aPaymentProviders);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if(is_array($mixedPaymentProvider))
|
|
|
+ $aPaymentProviders = $mixedPaymentProvider;
|
|
|
+ else if(is_string($mixedPaymentProvider))
|
|
|
+ $aPaymentProviders = [$mixedPaymentProvider];
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!$aPaymentProviders)
|
|
|
+ return ($sMsg = $this->_sLangsPrefix . 'msg_no_results') && $this->_bIsApi ? [bx_api_get_msg($sMsg)] : MsgBox(_t($sMsg));
|
|
|
+
|
|
|
+ $mixedContent = $this->_bIsApi ? [] : '';
|
|
|
+ foreach($aPaymentProviders as $sPaymentProvider) {
|
|
|
+ $mixedForm = $this->getForm($iUserId, $sPaymentProvider);
|
|
|
+
|
|
|
+ if($this->_bIsApi)
|
|
|
+ $mixedContent[] = bx_api_get_block('form', $mixedForm, [
|
|
|
+ 'ext' => [
|
|
|
+ 'name' => $this->MODULE,
|
|
|
+ 'request' => ['url' => '/api.php?r=' . $this->MODULE . '/get_block_details/Details', 'immutable' => true]
|
|
|
+ ]
|
|
|
+ ]);
|
|
|
+ else
|
|
|
+ $mixedContent .= $this->_oModule->_oTemplate->parseHtmlByName('details_form.html', [
|
|
|
+ 'provider' => str_replace('_', '-', $sPaymentProvider),
|
|
|
+ 'form' => $mixedForm
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(empty($mixedContent))
|
|
|
+ return ($sMsg = $this->_sLangsPrefix . 'msg_no_results') && $this->_bIsApi ? [bx_api_get_msg($sMsg)] : MsgBox(_t($sMsg));
|
|
|
+
|
|
|
+ return $this->_bIsApi ? [$mixedContent] : $mixedContent;
|
|
|
}
|
|
|
|
|
|
- public function getForm($iProfileId)
|
|
|
+ public function getForm($iProfileId, $sPaymentProvider)
|
|
|
{
|
|
|
- $oForm = BxTemplFormView::getObjectInstance($this->_oModule->_oConfig->getObject('form_details'), $this->_oModule->_oConfig->getObject('form_display_details_edit'));
|
|
|
- $oForm->setProfileId($iProfileId);
|
|
|
- $oForm->initChecker();
|
|
|
+ $CNF = &$this->_oModule->_oConfig->CNF;
|
|
|
|
|
|
+ $oForm = BxTemplFormView::getObjectInstance($CNF['OBJECT_FORM_DETAILES'], $CNF['OBJECT_FORM_DETAILES_EDIT']);
|
|
|
+ $oForm->initWithParams($iProfileId, $sPaymentProvider);
|
|
|
+ $oForm->initChecker();
|
|
|
if($oForm->isSubmitted()) {
|
|
|
if($oForm->isValid()) {
|
|
|
- $aOptions = $this->_oModule->_oDb->getOptions();
|
|
|
+ $aOptions = $this->_oModule->_oDb->getOptionsByProvider($sPaymentProvider);
|
|
|
foreach($aOptions as $aOption) {
|
|
|
$sValue = bx_get($aOption['name']) !== false ? bx_get($aOption['name']) : '';
|
|
|
$this->_oModule->_oDb->updateOption($iProfileId, $aOption['id'], bx_process_input($sValue));
|
|
|
}
|
|
|
|
|
|
- header('Location: ' . bx_absolute_url(BxDolPermalinks::getInstance()->permalink('page.php?i=payment-details')));
|
|
|
+ header('Location: ' . bx_absolute_url(BxDolPermalinks::getInstance()->permalink('page.php?i=payment-details', ['pp' => $sPaymentProvider])));
|
|
|
return;
|
|
|
}
|
|
|
else
|
|
|
@@ -83,7 +120,7 @@ class BxPaymentDetails extends BxBaseModPaymentDetails
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return $oForm->getCode();
|
|
|
+ return $this->_bIsApi ? $oForm->getCodeAPI() : $oForm->getCode();
|
|
|
}
|
|
|
}
|
|
|
|