BxDolStudioAgents.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup UnaStudio UNA Studio
  7. * @{
  8. */
  9. define('BX_DOL_STUDIO_AGENTS_TYPE_AGENTS', 'agents');
  10. define('BX_DOL_STUDIO_AGENTS_TYPE_AI_PROVIDERS', 'ai_providers');
  11. define('BX_DOL_STUDIO_AGENTS_TYPE_TOOLS', 'tools');
  12. define('BX_DOL_STUDIO_AGENTS_TYPE_VECTOR_STORE', 'vector_store');
  13. define('BX_DOL_STUDIO_AGENTS_TYPE_SETTINGS', 'settings');
  14. define('BX_DOL_STUDIO_AGENTS_TYPE_DEFAULT', BX_DOL_STUDIO_AGENTS_TYPE_AGENTS);
  15. class BxDolStudioAgents extends BxTemplStudioWidget
  16. {
  17. protected $oDbAi;
  18. protected $sPage;
  19. function __construct($sPage = "")
  20. {
  21. parent::__construct('agents');
  22. $this->oDbAi = new BxDolAIQuery();
  23. $this->sPage = BX_DOL_STUDIO_AGENTS_TYPE_DEFAULT;
  24. if(is_string($sPage) && !empty($sPage))
  25. $this->sPage = $sPage;
  26. }
  27. public function checkAction()
  28. {
  29. $sAction = bx_get('agt_action');
  30. if($sAction === false)
  31. return false;
  32. $sAction = bx_process_input($sAction);
  33. $aResult = ['code' => 1, 'message' => _t('_adm_pgt_err_cannot_process_action')];
  34. switch($sAction) {
  35. case 'agent-check-name':
  36. $sValue = false;
  37. if(($sValue = bx_get('agt_value')) !== false)
  38. $sValue = bx_process_input($sValue, BX_DATA_TEXT);
  39. else
  40. break;
  41. $sNameFld = 'name';
  42. $sNameVal = '';
  43. if(($iId = (int)bx_get('id'))) {
  44. $aAgent = $this->oDbAi->getAgentById($iId);
  45. if(strcmp($sValue, $aAgent[$sNameFld]) == 0)
  46. $sNameVal = $sValue;
  47. }
  48. $aResult = [
  49. 'code' => 0,
  50. 'title' => $sValue,
  51. 'name' => $sNameVal ?: uriGenerate($sValue, 'sys_agents_agents', $sNameFld, ['lowercase' => true])
  52. ];
  53. break;
  54. case 'agent-activate':
  55. $iValue = 0;
  56. if(($iValue = bx_get('agt_value')) !== false)
  57. $iValue = bx_process_input($iValue, BX_DATA_TEXT);
  58. else
  59. break;
  60. $aAgent = $this->oDbAi->getAgentById($iValue);
  61. if(!$aAgent || !$this->oDbAi->updateAgentField($iValue, 'active', 1 - (int)$aAgent['active']))
  62. $aResult = ['coed' => 2, 'message' => _t('_sys_txt_error_occured')];
  63. else
  64. $aResult = ['coed' => 0];
  65. break;
  66. }
  67. return $aResult;
  68. }
  69. }
  70. /** @} */