1
0
Эх сурвалжийг харах

#4558 - Build-in API support (forms)

roman.lesnikov@gmail.com 2 жил өмнө
parent
commit
b916018642

+ 6 - 5
template/scripts/BxBaseAccountForms.php

@@ -191,14 +191,15 @@ class BxBaseAccountForms extends BxDolProfileForms
 
     public function deleteAccountForm ($iAccountId)
     {
+        $bIsApi = bx_is_api();
         $oAccount = BxDolAccount::getInstance($iAccountId);
         $aAccountInfo = $oAccount ? $oAccount->getInfo() : false;
         if (!$aAccountInfo)
-            return MsgBox(_t('_sys_txt_error_account_is_not_defined'));
+            return $bIsApi ? _t('_sys_txt_error_account_is_not_defined') : MsgBox(_t('_sys_txt_error_account_is_not_defined'));
 
         // check access
         if (CHECK_ACTION_RESULT_ALLOWED !== ($sMsg = BxDolAccount::isAllowedDelete ($this->_iProfileId, $aAccountInfo)))
-            return MsgBox($sMsg);
+            return $bIsApi ? $sMsg : MsgBox($sMsg);
 
         // check and display form
         $oForm = $this->getObjectFormDelete();
@@ -206,7 +207,7 @@ class BxBaseAccountForms extends BxDolProfileForms
             $oForm->aInputs['delete_content']['value'] = (int)bx_get('content');
 
         if (!$oForm)
-            return MsgBox(_t('_sys_txt_error_occured'));
+            return $bIsApi ? _t('_sys_txt_error_occured') : MsgBox(_t('_sys_txt_error_occured'));
 
         if (!$oForm->isSubmitted())
             unset($aAccountInfo['password']);
@@ -214,12 +215,12 @@ class BxBaseAccountForms extends BxDolProfileForms
         $oForm->initChecker($aAccountInfo);
 
         if (!$oForm->isSubmittedAndValid())
-            return $oForm->getCode();
+            return $bIsApi ? $oForm->getCodeAPI() : $oForm->getCode();
 
         // delete account
         $oAccount = BxDolAccount::getInstance($aAccountInfo['id']);
         if (!$oAccount->delete(false === bx_get('delete_content') ? true : (int)$oForm->getCleanValue('delete_content') != 0))
-            return MsgBox(_t('_sys_txt_error_account_delete'));
+            return $bIsApi ? _t('_sys_txt_error_account_delete') : MsgBox(_t('_sys_txt_error_account_delete'));
 
         // logout from deleted account
         if($iAccountId == getLoggedId())

+ 62 - 10
template/scripts/BxBaseServiceAccount.php

@@ -139,16 +139,29 @@ class BxBaseServiceAccount extends BxDol
         $bApi = bx_is_api();
         
         $mixedResult =$this->_oAccountForms->editAccountEmailSettingsForm($iAccountId);
+        
         if($bApi) {
-            if(is_array($mixedResult))
+            if(is_array($mixedResult)){
+                if (isset($mixedResult['form'] )){
+                    return [
+                        bx_api_get_msg($mixedResult['msg']),
+                        bx_api_get_block('form', $mixedResult['form'], [
+                        'ext' => [
+                            'request' => ['url' => '/api.php?r=system/account_settings_email/TemplServiceAccount', 'immutable' => true]
+                        ]
+                    ])];
+                }
+                else{
                 return [bx_api_get_block('form', $mixedResult, [
                     'ext' => [
                         'request' => ['url' => '/api.php?r=system/account_settings_email/TemplServiceAccount', 'immutable' => true]
                     ]
                 ])];
+                }
+            }
             else
-                return bx_api_get_msg($mixedResult);
-        }
+                return [bx_api_get_msg($mixedResult)];
+        }    
         
         return $mixedResult;
     }
@@ -181,7 +194,7 @@ class BxBaseServiceAccount extends BxDol
                 }
             }
             else
-                return bx_api_get_msg($mixedResult);
+                return [bx_api_get_msg($mixedResult)];
         }
         
         return $mixedResult;
@@ -195,17 +208,29 @@ class BxBaseServiceAccount extends BxDol
         $bApi = bx_is_api();
         
         $mixedResult =$this->_oAccountForms->editAccountInfoForm($iAccountId);
+        
         if($bApi) {
-            if(is_array($mixedResult))
+            if(is_array($mixedResult)){
+                if (isset($mixedResult['form'] )){
+                    return [
+                        bx_api_get_msg($mixedResult['msg']),
+                        bx_api_get_block('form', $mixedResult['form'], [
+                        'ext' => [
+                            'request' => ['url' => '/api.php?r=system/account_settings_info/TemplServiceAccount', 'immutable' => true]
+                        ]
+                    ])];
+                }
+                else{
                 return [bx_api_get_block('form', $mixedResult, [
                     'ext' => [
-                        'request' => ['url' => '/api.php?r=system/account_settings_email/TemplServiceAccount', 'immutable' => true]
+                            'request' => ['url' => '/api.php?r=system/account_settings_info/TemplServiceAccount', 'immutable' => true]
                     ]
                 ])];
+                }
+            }
             else
-                return bx_api_get_msg($mixedResult);
-        }
-        
+                return [bx_api_get_msg($mixedResult)];
+        }    
         return $mixedResult;
     }
 
@@ -216,7 +241,34 @@ class BxBaseServiceAccount extends BxDol
         if (!$iAccountId)
             $iAccountId = getLoggedId();
 
-        return $this->_oAccountForms->deleteAccountForm($iAccountId);
+        $bApi = bx_is_api();
+        
+        $mixedResult = $this->_oAccountForms->deleteAccountForm($iAccountId);
+        
+        if($bApi) {
+            if(is_array($mixedResult)){
+                if (isset($mixedResult['form'] )){
+                    return [
+                        bx_api_get_msg($mixedResult['msg']),
+                        bx_api_get_block('form', $mixedResult['form'], [
+                        'ext' => [
+                            'request' => ['url' => '/api.php?r=system/account_settings_del_account/TemplServiceAccount', 'immutable' => true]
+                        ]
+                    ])];
+                }
+                else{
+                return [bx_api_get_block('form', $mixedResult, [
+                    'ext' => [
+                        'request' => ['url' => '/api.php?r=system/account_settings_del_account/TemplServiceAccount', 'immutable' => true]
+                    ]
+                ])];
+                }
+            }
+            else
+                return [];
+        }
+
+        return $mixedResult;
     }
 
     /**

+ 3 - 1
template/scripts/BxBaseServices.php

@@ -52,12 +52,14 @@ class BxBaseServices extends BxDol implements iBxDolProfileService
             'CreateAccountForm' => 'BxBaseServiceAccount',
             'AccountSettingsEmail' => 'BxBaseServiceAccount',
             'AccountSettingsPassword' => 'BxBaseServiceAccount',
+            'AccountSettingsDelAccount' => 'BxBaseServiceAccount',
+            'AccountSettingsInfo' => 'BxBaseServiceAccount',
             'ForgotPassword' => 'BxBaseServiceAccount',
             'SwitchProfile' => 'BxBaseServiceAccount',
             'AccountProfileSwitcher' => 'BxBaseServiceAccount',
             'EmailConfirmation' => 'BxBaseServiceAccount',
             'ConfirmEmail' => 'BxBaseServiceAccount',
-
+            
             'CategoriesList' => 'BxBaseServiceCategory',
 
             'Test' => 'BxBaseServiceLogin',