Files
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

248 lines
11 KiB
PHP

<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
class ModuleBuilder_tksGetInfo_Action extends Settings_Vtiger_Index_Action
{
public function process(Vtiger_Request $request) {
global $log, $adb;
$module = $request->get('srcModule');
$tabid = $request->get('tabid');
$blkquery = "SELECT *
FROM vtiger_tks_module
INNER JOIN vtiger_tks_blocks ON vtiger_tks_blocks.tabid = vtiger_tks_module.tabid
WHERE vtiger_tks_module.name = ? and vtiger_tks_module.tabid = ?";
$blkresult = $adb->pquery($blkquery,array($module, $tabid ));
$blkrow = $adb->num_rows($blkresult);
$label = $adb->query_result($blkresult,0,'tablabel');
$parent = $adb->query_result($blkresult,0,'parent');
$blockinfo = array();
$fldquery = "SELECT *
FROM vtiger_tks_module
INNER JOIN vtiger_tks_field ON vtiger_tks_field.tabid = vtiger_tks_module.tabid
WHERE vtiger_tks_module.name = ? and vtiger_tks_module.tabid = ?";
$fldresult = $adb->pquery($fldquery,array($module, $tabid ));
$fldrow = $adb->num_rows($fldresult);
$fieldinfo = array();
$token = $request->get('token');
$temp_array = array();
if($_SESSION['tks_module_builder'][$token] == null)
{
$temp_array['tks_modname'] = $module;
$temp_array['tks_label'] = $label;
$temp_array['tks_parent'] = $parent;
$_SESSION['tks_module_builder'][$token] = $temp_array;
}
for($i=0; $i < $blkrow; $i++)
{
$blockinfo['blockno'][$i] = $adb->query_result($blkresult,$i,'sequence');
$blockinfo['blocklabel'][$i] = $adb->query_result($blkresult,$i,'blocklabel');
$a .= $i.',';
$blockinfo['sequencelist'][$i] = '['.rtrim($a,", ").']';
$blockid = $adb->query_result($blkresult,$i,'sequence');
$blocklabel = $adb->query_result($blkresult,$i,'blocklabel');
$fcsql = "SELECT count( block ) AS fcount
FROM `vtiger_tks_field`
WHERE block = ?
AND tabid = ?";
$fcresult = $adb->pquery($fcsql,array($blockid, $tabid));
$fcount = $adb->query_result($fcresult,0,'fcount');
$temp_array = array( 'name' => $blocklabel, 'block_id' => $blockid, 'deleted' => 'false', 'fieldCount' => $fcount);
$_SESSION['tks_module_builder'][$token]['blocks'][] = $temp_array;
}
for($j=0; $j < $fldrow; $j++)
{
$fieldinfo['block'][$j] = $adb->query_result($fldresult,$j,'block');
$fieldinfo['fieldlabel'][$j] = $adb->query_result($fldresult,$j,'fieldlabel');
$defaultvalue = $adb->query_result($fldresult,$j,'defaultvalue');
if($defaultvalue == null)
$fieldinfo['defaultvalue'][$j] = "false";
else
$fieldinfo['defaultvalue'][$j] = "true";
$mandatory = $adb->query_result($fldresult,$j,'typeofdata');
if (strpos($mandatory, 'M') !== false) {
$fieldinfo['mandatory'][$j] = "true";
}
else
$fieldinfo['mandatory'][$j] = "false";
$presence = $adb->query_result($fldresult,$j,'presence');
if($presence == 0)
$fieldinfo['presence'][$j] = "false";
else
$fieldinfo['presence'][$j] = "true";
$name = $adb->query_result($fldresult,$j,'fieldlabel');
$name = str_replace(' ', '', $name);
$fieldinfo['name'][$j] = 'tks_'.$name;
$massedit = $adb->query_result($fldresult,$j,'masseditable');
$summaryfield = $adb->query_result($fldresult,$j,'summaryfield');
$isfilter = $adb->query_result($fldresult,$j,'isfilter');
$quickcreate = $adb->query_result($fldresult,$j,'quickcreate');
if($massedit == 0)
$fieldinfo['massedit'][$j] = "false";
else
$fieldinfo['massedit'][$j] = "true";
if($summaryfield == 0)
$fieldinfo['summaryfield'][$j] = "false";
else
$fieldinfo['summaryfield'][$j] = "true";
if($isfilter == 0)
$isFilter = "false";
else
$isFilter = "true";
if($quickcreate == 0)
$fieldinfo['quickcreate'][$j] = "false";
else
$fieldinfo['quickcreate'][$j] = "true";
$uitype = $adb->query_result($fldresult,$j,'uitype');
if($uitype == 2)
$fieldinfo['typeofdata'][$j] = "string";
elseif($uitype == 7)
$fieldinfo['typeofdata'][$j] = "number";
elseif($uitype == 9)
$fieldinfo['typeofdata'][$j] = "percentage";
elseif($uitype == 71)
$fieldinfo['typeofdata'][$j] = "currency";
elseif($uitype == 5)
$fieldinfo['typeofdata'][$j] = "date";
elseif($uitype == 13)
$fieldinfo['typeofdata'][$j] = "email";
elseif($uitype == 14)
$fieldinfo['typeofdata'][$j] = "time";
elseif($uitype == 11)
$fieldinfo['typeofdata'][$j] = "phone";
elseif($uitype == 15)
$fieldinfo['typeofdata'][$j] = "picklist";
elseif($uitype == 17)
$fieldinfo['typeofdata'][$j] = "url";
elseif($uitype == 56)
$fieldinfo['typeofdata'][$j] = "boolean";
elseif($uitype == 21)
$fieldinfo['typeofdata'][$j] = "textarea";
elseif($uitype == 33)
$fieldinfo['typeofdata'][$j] = "multipicklist";
elseif($uitype == 85)
$fieldinfo['typeofdata'][$j] = "skype";
elseif($uitype == 1)
$fieldinfo['typeofdata'][$j] = "integer";
elseif($uitype == 10)
$fieldinfo['typeofdata'][$j] = "relate";
$typeofdata = $adb->query_result($fldresult,$j,'typeofdata');
if (strpos($typeofdata, 'M') !== false)
$isMandatory = "true";
else
$isMandatory = "false";
$block = $adb->query_result($fldresult,$j,'block');
$fieldlabel = $adb->query_result($fldresult,$j,'fieldlabel');
$type = $fieldinfo['typeofdata'][$j];
$fieldlength = $adb->query_result($fldresult,$j,'maximumlength');
$fieldinfo['isfilter'][$j] = $isFilter;
$fieldid = $adb->query_result($fldresult,$j,'fieldid');
$plsql = "SELECT vtiger_tks_picklist.tabid, vtiger_tks_picklist.fieldid, picklistvalue, vtiger_tks_picklist.sequence
FROM `vtiger_tks_picklist`
INNER JOIN vtiger_tks_field ON vtiger_tks_field.fieldid = vtiger_tks_picklist.fieldid
WHERE vtiger_tks_picklist.fieldid = ".$fieldid."
AND vtiger_tks_picklist.tabid =".$tabid;
$plres = $adb->pquery($plsql,array());
$plrow = $adb->num_rows($plres);
$values = array();
for($m = 0; $m < $plrow; $m++)
{
$values[$m] = $adb->query_result($plres,$m,'picklistvalue');
}
$pvalues = implode(',', $values);
$picklistvalues = array();
if($pvalues != '')
{
$p = explode(',',$pvalues);
foreach($p as $key => $value)
{
$picklistvalues[$value] = $value;
}
}
else
{
$picklistvalues = '';
}
$fieldinfo['picklistvalues'][$j] = $picklistvalues;
$fld['tkslabel'] = $fieldlabel;
$fld['tkslength'] = $fieldlength;
$fld['tksdecimal'] = "";
$fld['tkspicklistvalues'] = $pvalues;
$fld['tksrelate'] = "";
$fld['tksrequired'] = $isMandatory;
$fld['tksfilterfield'] = $isFilter;
$responseData = array(
'id' => $j, 'blockid' => $block,
'defaultvalue' => 'false', 'isQuickCreateDisabled' => $isMandatory,
'isSummaryField' => 'false', 'isSummaryFieldDisabled' => 'false',
'label' => $fld['tkslabel'], 'mandatory' => $isMandatory,
'masseditable' => 'false', 'name' => 'tks_'.str_replace(' ','',$fld['tkslabel']),
'presence' => 'true', 'quickcreate' => $isMandatory,
'type' => $type, 'tksrequired' => $isMandatory,
'tksfilterfield' => $isFilter, 'customField' => 'true',
'deleted' => 'false',
);
if($picklistvalues != '')
{
$responseData['picklistvalues'] = $picklistvalues;
}
foreach( $responseData as $key => $value )
{
$fld[$key] = $value;
}
$fld['tksrelate'] = "";
$fld['tkspickListValues'] = $pvalues;
$fld['tksdecimal'] = "";
$fieldCount = $_SESSION['tks_module_builder'][$token]['blocks'][$block]['fieldCount'];
$_SESSION['tks_module_builder'][$token]['fields'][$j] = $fld;
//$_SESSION['tks_module_builder'][$token]['blocks'][$block]['fieldCount'] = $fieldCount + 1;
$_SESSION['tks_module_builder'][$token]['fields'][$j]['sequence'] = ($fieldCount == '' ? 0 : $fieldCount);
}
$result = array("blockinfo"=>$blockinfo,"fieldinfo"=>$fieldinfo);
$response = new Vtiger_Response();
$response->setResult($result);
$response->emit();
}
}