|
|
@@ -93,11 +93,9 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
$oAI = BxDolAI::getInstance();
|
|
|
|
|
|
$iId = $this->_getId();
|
|
|
- $aAutomator = $oAI->getAutomator($iId);
|
|
|
- $aAutomator['providers'] = $this->_oDb->getAutomatorsBy(['sample' => 'providers_by_id_pairs', 'id' => $iId]);
|
|
|
- $aAutomator['helpers'] = $this->_oDb->getAutomatorsBy(['sample' => 'helpers_by_id_pairs', 'id' => $iId]);
|
|
|
+ $aAgent = BxDolAiQuery::getAgentObject($iId);
|
|
|
|
|
|
- $aForm = $this->_getFormEdit($sAction, $aAutomator);
|
|
|
+ $aForm = $this->_getFormEdit($sAction, $aAgent);
|
|
|
$oForm = new BxTemplFormView($aForm);
|
|
|
$oForm->initChecker();
|
|
|
|
|
|
@@ -105,97 +103,8 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
$aValsToAdd = [];
|
|
|
|
|
|
$sName = $oForm->getCleanValue($this->_sFieldName);
|
|
|
- if($aAutomator[$this->_sFieldName] != $sName) {
|
|
|
- $sName = $this->_getUniqName($sName);
|
|
|
- BxDolForm::setSubmittedValue($this->_sFieldName, $sName, $oForm->aFormAttrs['method']);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Process Providers
|
|
|
- */
|
|
|
- $aProvidersIds = $oForm->getCleanValue('providers_ids');
|
|
|
- $bProvidersIds = !empty($aProvidersIds) && is_array($aProvidersIds);
|
|
|
- $aProvidersValues = $oForm->getCleanValue('providers');
|
|
|
- $bProvidersValues = !empty($aProvidersValues) && is_array($aProvidersValues);
|
|
|
-
|
|
|
- //--- Providers: Remove deleted
|
|
|
- if(!empty($aAutomator['providers']) && is_array($aAutomator['providers']))
|
|
|
- $this->_oDb->deleteAutomatorProvidersById(array_diff(array_keys($aAutomator['providers']), $bProvidersIds ? $aProvidersIds : []));
|
|
|
-
|
|
|
- //--- Providers: Update existed
|
|
|
- if($bProvidersIds)
|
|
|
- foreach($aProvidersIds as $iIndex => $iApId)
|
|
|
- $this->_oDb->updateAutomatorProvider(['provider_id' => (int)$aProvidersValues[$iIndex]], ['id' => (int)$iApId]);
|
|
|
-
|
|
|
- //--- Providers: Add new
|
|
|
- $iProvidersIds = $bProvidersIds ? count($aProvidersIds) : 0;
|
|
|
- $iProvidersValues = $bProvidersValues ? count($aProvidersValues) : 0;
|
|
|
- if($iProvidersValues > $iProvidersIds) {
|
|
|
- $aProvidersValues = array_slice($aProvidersValues, $iProvidersIds);
|
|
|
- foreach($aProvidersValues as $iProvidersValue)
|
|
|
- $this->_oDb->insertAutomatorProvider([
|
|
|
- 'automator_id' => $iId,
|
|
|
- 'provider_id' => (int)$iProvidersValue,
|
|
|
- ]);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Process Helpers
|
|
|
- */
|
|
|
- $aHelpersIds = $oForm->getCleanValue('helpers_ids');
|
|
|
- $bHelpersIds = !empty($aHelpersIds) && is_array($aHelpersIds);
|
|
|
- $aHelpersValues = $oForm->getCleanValue('helpers');
|
|
|
- $bHelpersValues = !empty($aHelpersValues) && is_array($aHelpersValues);
|
|
|
-
|
|
|
- //--- Helpers: Remove deleted
|
|
|
- if(!empty($aAutomator['helpers']) && is_array($aAutomator['helpers']))
|
|
|
- $this->_oDb->deleteAutomatorHelpersById(array_diff(array_keys($aAutomator['helpers']), $bHelpersIds ? $aHelpersIds : []));
|
|
|
-
|
|
|
- //--- Helpers: Update existed
|
|
|
- if($bHelpersIds)
|
|
|
- foreach($aHelpersIds as $iIndex => $iAhId)
|
|
|
- $this->_oDb->updateAutomatorHelper(['helper_id' => (int)$aHelpersValues[$iIndex]], ['id' => (int)$iAhId]);
|
|
|
-
|
|
|
- //--- Helpers: Add new
|
|
|
- $iHelpersIds = $bHelpersIds ? count($aHelpersIds) : 0;
|
|
|
- $iHelpersValues = $bHelpersValues ? count($aHelpersValues) : 0;
|
|
|
- if($iHelpersValues > $iHelpersIds) {
|
|
|
- $aHelpersValues = array_slice($aHelpersValues, $iHelpersIds);
|
|
|
- foreach($aHelpersValues as $iHelpersValue)
|
|
|
- $this->_oDb->insertAutomatorHelper([
|
|
|
- 'automator_id' => $iId,
|
|
|
- 'helper_id' => (int)$iHelpersValue,
|
|
|
- ]);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Process Assistants
|
|
|
- */
|
|
|
- $aAssistantsIds = $oForm->getCleanValue('assistants_ids');
|
|
|
- $bAssistantsIds = !empty($aAssistantsIds) && is_array($aAssistantsIds);
|
|
|
- $aAssistantsValues = $oForm->getCleanValue('assistants');
|
|
|
- $bAssistantsValues = !empty($aAssistantsValues) && is_array($aAssistantsValues);
|
|
|
-
|
|
|
- //--- Assistants: Remove deleted
|
|
|
- if(!empty($aAutomator['assistants']) && is_array($aAutomator['assistants']))
|
|
|
- $this->_oDb->deleteAutomatorAssistantsById(array_diff(array_keys($aAutomator['assistants']), $bAssistantsIds ? $aAssistantsIds : []));
|
|
|
-
|
|
|
- //--- Assistants: Update existed
|
|
|
- if($bAssistantsIds)
|
|
|
- foreach($aAssistantsIds as $iIndex => $iAhId)
|
|
|
- $this->_oDb->updateAutomatorAssistant(['assistant_id' => (int)$aAssistantsValues[$iIndex]], ['id' => (int)$iAhId]);
|
|
|
-
|
|
|
- //--- Assistants: Add new
|
|
|
- $iAssistantsIds = $bAssistantsIds ? count($aAssistantsIds) : 0;
|
|
|
- $iAssistantsValues = $bAssistantsValues ? count($aAssistantsValues) : 0;
|
|
|
- if($iAssistantsValues > $iAssistantsIds) {
|
|
|
- $aAssistantsValues = array_slice($aAssistantsValues, $iAssistantsIds);
|
|
|
- foreach($aAssistantsValues as $iAssistantsValue)
|
|
|
- $this->_oDb->insertAutomatorAssistant([
|
|
|
- 'automator_id' => $iId,
|
|
|
- 'assistant_id' => (int)$iAssistantsValue,
|
|
|
- ]);
|
|
|
- }
|
|
|
+ $sName = $this->_getUniqName($sName);
|
|
|
+ BxDolForm::setSubmittedValue($this->_sFieldName, $sName, $oForm->aFormAttrs['method']);
|
|
|
|
|
|
$iProfileId = $oForm->getCleanValue('profile_id');
|
|
|
if(empty($iProfileId)) {
|
|
|
@@ -205,53 +114,27 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
|
|
|
$aValsToAdd['profile_id'] = $iProfileId;
|
|
|
}
|
|
|
+
|
|
|
+ $iModel = $oForm->getCleanValue('model_id');
|
|
|
+ $sTrigger = $oForm->getCleanValue('trigger');
|
|
|
|
|
|
- $sSchedulerTime = $oForm->getCleanValue('scheduler_time');
|
|
|
- if(!empty($sSchedulerTime))
|
|
|
- $aValsToAdd['params'] = json_encode(['scheduler_time' => $sSchedulerTime]);
|
|
|
-
|
|
|
- if($oForm->update($iId, $aValsToAdd) !== false) {
|
|
|
- if(($oCmts = BxDolAI::getInstance()->getAutomatorCmtsObject($iId, $oTemplate)) !== null) {
|
|
|
- $sInstructions = $oAI->getAutomatorInstruction('profile', $iProfileId);
|
|
|
-
|
|
|
- $aProviders = $this->_oDb->getAutomatorsBy(['sample' => 'providers_by_id_pairs', 'id' => $iId]);
|
|
|
- if(!empty($aProviders) && is_array($aProviders))
|
|
|
- $sInstructions .= $oAI->getAutomatorInstruction('providers', array_values($aProviders));
|
|
|
-
|
|
|
- $aHelpers = $this->_oDb->getAutomatorsBy(['sample' => 'helpers_by_id_pairs', 'id' => $iId]);
|
|
|
- if(!empty($aHelpers) && is_array($aHelpers))
|
|
|
- $sInstructions .= $oAI->getAutomatorInstruction('helpers', array_values($aHelpers));
|
|
|
-
|
|
|
- $aAssistants = $this->_oDb->getAutomatorsBy(['sample' => 'assistants_by_id_pairs', 'id' => $iId]);
|
|
|
- if(!empty($aAssistants) && is_array($aAssistants))
|
|
|
- $sInstructions .= $oAI->getAutomatorInstruction('assistants', array_values($aAssistants));
|
|
|
-
|
|
|
- $oCmts->addAuto([
|
|
|
- 'cmt_author_id' => $iProfileId,
|
|
|
- 'cmt_parent_id' => 0,
|
|
|
- 'cmt_text' => $sInstructions
|
|
|
- ]);
|
|
|
-
|
|
|
- if(($oMessage = new BxDolAIMessageString('hb', $sInstructions)) && ($sResponse = $oAI->getModelObject($aAutomator['model_id'])->getResponse($aAutomator['type'], $oMessage, $aAutomator['params'])) !== false) {
|
|
|
- sleep(1);
|
|
|
- $oCmts->addAuto([
|
|
|
- 'cmt_author_id' => $this->_iProfileIdAi,
|
|
|
- 'cmt_parent_id' => 0,
|
|
|
- 'cmt_text' => $sResponse
|
|
|
- ]);
|
|
|
- }
|
|
|
+ $sTools = is_array($oForm->getCleanValue('tools')) ? implode(',', $oForm->getCleanValue('tools')) : '';
|
|
|
+ $aValsToAdd['tools'] = $sTools;
|
|
|
+
|
|
|
+ $bIsValid = true;
|
|
|
+ if($bIsValid) {
|
|
|
+ if(($iId = $oForm->update($iId, $aValsToAdd)) !== false) {
|
|
|
+ $aRes = ['grid' => $this->getCode(false), 'blink' => $iId];
|
|
|
}
|
|
|
+ else
|
|
|
+ $aRes = ['msg' => _t('_sys_txt_error_occured')];
|
|
|
|
|
|
- $aRes = ['grid' => $this->getCode(false), 'blink' => $iId];
|
|
|
+ return echoJson($aRes);
|
|
|
}
|
|
|
- else
|
|
|
- $aRes = ['msg' => _t('_sys_txt_error_occured')];
|
|
|
-
|
|
|
- return echoJson($aRes);
|
|
|
}
|
|
|
|
|
|
$sFormId = $oForm->getId();
|
|
|
- $sContent = BxTemplStudioFunctions::getInstance()->popupBox($sFormId . '_popup', _t('_sys_agents_popup_edit'), $this->_oTemplate->parseHtmlByName('agents_automator_form.html', [
|
|
|
+ $sContent = BxTemplStudioFunctions::getInstance()->popupBox($sFormId . '_popup', _t('_sys_agents_agents_popup_edit', $aAgent['name']), $this->_oTemplate->parseHtmlByName('agents_automator_form.html', [
|
|
|
'form_id' => $sFormId,
|
|
|
'form' => $oForm->getCode(true),
|
|
|
'object' => $this->_sObject,
|
|
|
@@ -294,8 +177,7 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
$aForm = $this->_getForm($sAction, $aAgent);
|
|
|
$aForm['form_attrs']['action'] .= '&id=' . $aAgent['id'];
|
|
|
|
|
|
- unset($aForm['inputs']['type']);
|
|
|
- unset($aForm['inputs']['message']);
|
|
|
+ unset($aForm['inputs']['name']);
|
|
|
|
|
|
return $aForm;
|
|
|
}
|
|
|
@@ -325,7 +207,6 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
'required' => '1',
|
|
|
'checker' => [
|
|
|
'func' => 'Avail',
|
|
|
- 'params' => [],
|
|
|
'error' => _t('_sys_agents_form_field_err_enter'),
|
|
|
],
|
|
|
'db' => [
|
|
|
@@ -342,7 +223,6 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
'required' => '1',
|
|
|
'checker' => [
|
|
|
'func' => 'Avail',
|
|
|
- 'params' => [],
|
|
|
'error' => _t('_sys_agents_form_field_err_select'),
|
|
|
],
|
|
|
'db' => [
|
|
|
@@ -356,7 +236,12 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
'info' => _t('_sys_agents_field_profile_id_inf'),
|
|
|
'value' => isset($aAgent['profile_id']) ? $aAgent['profile_id'] : 0,
|
|
|
'values' => bx_srv('system', 'get_options_agents_profile', [], 'TemplServices'),
|
|
|
- 'required' => '0',
|
|
|
+ 'required' => '1',
|
|
|
+ 'required' => '1',
|
|
|
+ 'checker' => [
|
|
|
+ 'func' => 'Avail',
|
|
|
+ 'error' => _t('_sys_agents_form_field_err_select'),
|
|
|
+ ],
|
|
|
'db' => [
|
|
|
'pass' => 'Int',
|
|
|
]
|
|
|
@@ -383,14 +268,19 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
'pass' => 'Xss',
|
|
|
]
|
|
|
],
|
|
|
+
|
|
|
+ 'alert_section' => array(
|
|
|
+ 'type' => 'block_header',
|
|
|
+ 'caption' => 'Trigger - alert',
|
|
|
+ 'collapsable' => true,
|
|
|
+ 'collapsed' => true,
|
|
|
+ ),
|
|
|
+
|
|
|
'alert_sample' => [
|
|
|
'type' => 'custom',
|
|
|
'name' => 'alert_sample',
|
|
|
'caption' => _t('_sys_agents_field_alert_sample'),
|
|
|
'content' => isset($aAgent['alert_sample']) ? $aAgent['alert_sample'] : _t('_sys_agents_waiting_for_sample_data'),
|
|
|
- // 'tr_attrs' => [
|
|
|
- // 'style' => $sType != 'alert' ? 'display:none' : ''
|
|
|
- // ],
|
|
|
],
|
|
|
'alert_unit' => [
|
|
|
'type' => 'text',
|
|
|
@@ -398,9 +288,6 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
'caption' => _t('_sys_agents_field_alert_unit'),
|
|
|
'info' => _t('_sys_agents_field_alert_unit_info'),
|
|
|
'value' => isset($aAgent['alert_unit']) ? $aAgent['alert_unit'] : '',
|
|
|
- // 'tr_attrs' => [
|
|
|
- // 'style' => $sType != 'alert' ? 'display:none' : ''
|
|
|
- // ],
|
|
|
'db' => [
|
|
|
'pass' => 'Xss',
|
|
|
],
|
|
|
@@ -410,31 +297,41 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
'name' => 'alert_action',
|
|
|
'caption' => _t('_sys_agents_field_alert_action'),
|
|
|
'value' => isset($aAgent['alert_action']) ? $aAgent['alert_action'] : '',
|
|
|
- // 'tr_attrs' => [
|
|
|
- // 'style' => $sType != 'alert' ? 'display:none' : ''
|
|
|
- // ],
|
|
|
'db' => [
|
|
|
'pass' => 'Xss',
|
|
|
],
|
|
|
],
|
|
|
+
|
|
|
+ 'scheduler_section' => array(
|
|
|
+ 'type' => 'block_header',
|
|
|
+ 'caption' => 'Trigger - scheduler',
|
|
|
+ 'collapsable' => true,
|
|
|
+ 'collapsed' => true,
|
|
|
+ ),
|
|
|
+
|
|
|
'scheduler_cron' => [
|
|
|
'type' => 'text',
|
|
|
'name' => 'scheduler_cron',
|
|
|
'caption' => _t('_sys_agents_field_scheduler_cron'),
|
|
|
'info' => _t('_sys_agents_field_scheduler_cron_info'),
|
|
|
'value' => isset($aAgent['scheduler_cron']) ? $aAgent['scheduler_cron'] : '',
|
|
|
- // 'tr_attrs' => [
|
|
|
- // 'style' => $sType != 'scheduler' ? 'display:none' : ''
|
|
|
- // ],
|
|
|
+ 'db' => [
|
|
|
+ 'pass' => 'Xss',
|
|
|
+ ],
|
|
|
],
|
|
|
+
|
|
|
+ 'webhook_section' => array(
|
|
|
+ 'type' => 'block_header',
|
|
|
+ 'caption' => 'Trigger - webhook',
|
|
|
+ 'collapsable' => true,
|
|
|
+ 'collapsed' => true,
|
|
|
+ ),
|
|
|
+
|
|
|
'webhook_sample' => [
|
|
|
'type' => 'custom',
|
|
|
'name' => 'webhook_sample',
|
|
|
'caption' => _t('_sys_agents_field_webhook_sample'),
|
|
|
'content' => isset($aAgent['webhook_sample']) ? $aAgent['webhook_sample'] : _t('_sys_agents_waiting_for_sample_data'),
|
|
|
- // 'tr_attrs' => [
|
|
|
- // 'style' => $sType != 'webhook' ? 'display:none' : ''
|
|
|
- // ],
|
|
|
],
|
|
|
'webhook_key' => [
|
|
|
'type' => 'text',
|
|
|
@@ -442,20 +339,34 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
'caption' => _t('_sys_agents_field_webhook_key'),
|
|
|
'info' => _t('_sys_agents_field_webhook_key_info'),
|
|
|
'value' => isset($aAgent['webhook_key']) ? $aAgent['webhook_key'] : '',
|
|
|
- // 'tr_attrs' => [
|
|
|
- // 'style' => $sType != 'webhook' ? 'display:none' : ''
|
|
|
- // ],
|
|
|
+ 'db' => [
|
|
|
+ 'pass' => 'Xss',
|
|
|
+ ],
|
|
|
],
|
|
|
+
|
|
|
+ 'message_section' => array(
|
|
|
+ 'type' => 'block_header',
|
|
|
+ 'caption' => 'Trigger - message',
|
|
|
+ 'collapsable' => true,
|
|
|
+ 'collapsed' => true,
|
|
|
+ ),
|
|
|
+
|
|
|
'message_profile_id' => [
|
|
|
'type' => 'select',
|
|
|
'name' => 'message_profile_id',
|
|
|
'caption' => _t('_sys_agents_field_message_profile'),
|
|
|
'info' => _t('_sys_agents_field_message_profile_info'),
|
|
|
'value' => isset($aAgent['message_profile_id']) ? $aAgent['message_profile_id'] : '',
|
|
|
- // 'tr_attrs' => [
|
|
|
- // 'style' => $sType != 'message' ? 'display:none' : ''
|
|
|
- // ],
|
|
|
+ 'values' => bx_srv('system', 'get_options_agents_profile', [true, '_adm_nav_txt_items_visible_for_all'], 'TemplServices'),
|
|
|
+ 'db' => [
|
|
|
+ 'pass' => 'Xss',
|
|
|
+ ],
|
|
|
],
|
|
|
+
|
|
|
+ 'message_section_end' => array(
|
|
|
+ 'type' => 'block_end',
|
|
|
+ ),
|
|
|
+
|
|
|
'vector_store_id' => [
|
|
|
'type' => 'select',
|
|
|
'name' => 'vector_store_id',
|
|
|
@@ -463,6 +374,24 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
'info' => _t('_sys_agents_field_vector_store_id_info'),
|
|
|
'value' => isset($aAgent['vector_store_id']) ? $aAgent['vector_store_id'] : 0,
|
|
|
'values' => $this->_oDb->getVectorStores(),
|
|
|
+ 'required' => '1',
|
|
|
+ 'checker' => [
|
|
|
+ 'func' => 'Avail',
|
|
|
+ 'error' => _t('_sys_agents_form_field_err_select'),
|
|
|
+ ],
|
|
|
+ 'db' => [
|
|
|
+ 'pass' => 'Xss',
|
|
|
+ ],
|
|
|
+ ],
|
|
|
+ 'chat_history_context' => [
|
|
|
+ 'type' => 'text',
|
|
|
+ 'name' => 'chat_history_context',
|
|
|
+ 'caption' => _t('_sys_agents_field_chat_history_context'),
|
|
|
+ 'info' => _t('_sys_agents_field_chat_history_context_info'),
|
|
|
+ 'value' => isset($aAgent['chat_history_context']) ? $aAgent['chat_history_context'] : 50000,
|
|
|
+ 'db' => [
|
|
|
+ 'pass' => 'Int',
|
|
|
+ ],
|
|
|
],
|
|
|
'tools' => [
|
|
|
'type' => 'custom',
|
|
|
@@ -477,13 +406,27 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
'caption' => _t('_sys_agents_field_prompt_system'),
|
|
|
'info' => _t('_sys_agents_field_prompt_system_info'),
|
|
|
'value' => isset($aAgent['prompt_system']) ? $aAgent['prompt_system'] : '',
|
|
|
+ 'db' => [
|
|
|
+ 'pass' => 'Xss',
|
|
|
+ ],
|
|
|
],
|
|
|
+
|
|
|
+ 'prompts_section' => array(
|
|
|
+ 'type' => 'block_header',
|
|
|
+ 'caption' => 'Other prompts',
|
|
|
+ 'collapsable' => true,
|
|
|
+ 'collapsed' => true,
|
|
|
+ ),
|
|
|
+
|
|
|
'prompt_steps' => [
|
|
|
'type' => 'textarea',
|
|
|
'name' => 'prompt_steps',
|
|
|
'caption' => _t('_sys_agents_field_prompt_steps'),
|
|
|
'info' => _t('_sys_agents_field_prompt_steps_info'),
|
|
|
'value' => isset($aAgent['prompt_steps']) ? $aAgent['prompt_steps'] : '',
|
|
|
+ 'db' => [
|
|
|
+ 'pass' => 'Xss',
|
|
|
+ ],
|
|
|
],
|
|
|
'prompt_output' => [
|
|
|
'type' => 'textarea',
|
|
|
@@ -491,6 +434,9 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
'caption' => _t('_sys_agents_field_prompt_output'),
|
|
|
'info' => _t('_sys_agents_field_prompt_output_info'),
|
|
|
'value' => isset($aAgent['prompt_output']) ? $aAgent['prompt_output'] : '',
|
|
|
+ 'db' => [
|
|
|
+ 'pass' => 'Xss',
|
|
|
+ ],
|
|
|
],
|
|
|
'prompt_tools' => [
|
|
|
'type' => 'textarea',
|
|
|
@@ -498,7 +444,13 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
|
|
|
'caption' => _t('_sys_agents_field_prompt_tools'),
|
|
|
'info' => _t('_sys_agents_field_prompt_tools_info'),
|
|
|
'value' => isset($aAgent['prompt_tools']) ? $aAgent['prompt_tools'] : '',
|
|
|
+ 'db' => [
|
|
|
+ 'pass' => 'Xss',
|
|
|
+ ],
|
|
|
],
|
|
|
+ 'prompts_section_end' => array(
|
|
|
+ 'type' => 'block_end',
|
|
|
+ ),
|
|
|
'submit' => $this->_getFormControls(),
|
|
|
|
|
|
),
|