- 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.
100 lines
4.3 KiB
PHP
100 lines
4.3 KiB
PHP
<?php
|
|
|
|
class ITS4YouMobileApp_SearchParams_Helper
|
|
{
|
|
public static function transferListSearchParamsToFilterCondition($listSearchParams, $moduleModel)
|
|
{
|
|
if (empty($listSearchParams)) {
|
|
$listSearchParams = array();
|
|
}
|
|
|
|
$advFilterConditionFormat = array();
|
|
$glueOrder = array('and', 'or');
|
|
$groupIterator = 0;
|
|
|
|
foreach ($listSearchParams as $groupInfo) {
|
|
if (empty($groupInfo)) {
|
|
$advFilterConditionFormat[] = array();
|
|
$groupIterator++;
|
|
continue;
|
|
}
|
|
|
|
$groupConditionInfo = array();
|
|
$groupColumnsInfo = array();
|
|
$groupConditionGlue = $glueOrder[$groupIterator];
|
|
|
|
foreach ($groupInfo as $fieldSearchInfo) {
|
|
$advFilterFieldInfoFormat = array();
|
|
$fieldName = $fieldSearchInfo[0];
|
|
preg_match('/(\w+) ; \((\w+)\) (\w+)/', $fieldName, $matches);
|
|
|
|
if (count($matches) != 0) {
|
|
list($full, $referenceParentField, $referenceModule, $referenceFieldName) = $matches;
|
|
$referenceModuleModel = Vtiger_Module_Model::getInstance($referenceModule);
|
|
$fieldInfo = Vtiger_Field_Model::getInstance($referenceFieldName, $referenceModuleModel);
|
|
$fieldInfo->set('reference_fieldname', $fieldName);
|
|
} else {
|
|
$fieldInfo = $moduleModel->getField($fieldName);
|
|
$referenceModule = $moduleModel->getName();
|
|
$referenceFieldName = $fieldName;
|
|
}
|
|
|
|
if (empty($fieldInfo) && $referenceModule == 'Calendar') {
|
|
$eventsModuleModel = Vtiger_Module_Model::getInstance('Events');
|
|
$fieldInfo = Vtiger_Field_Model::getInstance($referenceFieldName, $eventsModuleModel);
|
|
}
|
|
|
|
$operator = $fieldSearchInfo[1];
|
|
$fieldValue = $fieldSearchInfo[2];
|
|
|
|
if ($fieldInfo && $fieldInfo->getFieldDataType() == "time") {
|
|
$fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
|
|
}
|
|
|
|
$specialDateTimeConditions = Vtiger_Functions::getSpecialDateTimeCondtions();
|
|
|
|
if ($fieldName == 'date_start' || $fieldName == 'due_date' || ($fieldInfo && $fieldInfo->getFieldDataType() == "datetime") && !in_array($operator, $specialDateTimeConditions)) {
|
|
$dateValues = explode(',', $fieldValue);
|
|
$isFirstDate = true;
|
|
|
|
foreach ($dateValues as $key => $dateValue) {
|
|
$dateTimeCompoenents = explode(' ', $dateValue);
|
|
|
|
if (empty($dateTimeCompoenents[1])) {
|
|
if ($isFirstDate)
|
|
$dateTimeCompoenents[1] = '00:00:00';
|
|
else
|
|
$dateTimeCompoenents[1] = '23:59:59';
|
|
}
|
|
|
|
$dateValue = implode(' ', $dateTimeCompoenents);
|
|
$dateValues[$key] = $dateValue;
|
|
$isFirstDate = false;
|
|
}
|
|
|
|
$fieldValue = implode(',', $dateValues);
|
|
}
|
|
|
|
if ($fieldInfo) {
|
|
$columnName = $fieldInfo->getCustomViewColumnName();
|
|
}
|
|
|
|
$advFilterFieldInfoFormat['columnname'] = $columnName;
|
|
$advFilterFieldInfoFormat['comparator'] = $operator;
|
|
$advFilterFieldInfoFormat['value'] = $fieldValue;
|
|
$advFilterFieldInfoFormat['column_condition'] = $groupConditionGlue;
|
|
$groupColumnsInfo[] = $advFilterFieldInfoFormat;
|
|
}
|
|
|
|
$noOfConditions = count($groupColumnsInfo);
|
|
$groupColumnsInfo[$noOfConditions - 1]['column_condition'] = '';
|
|
$groupConditionInfo['columns'] = $groupColumnsInfo;
|
|
$groupConditionInfo['condition'] = 'or';
|
|
$advFilterConditionFormat[] = $groupConditionInfo;
|
|
$groupIterator++;
|
|
}
|
|
|
|
unset($advFilterConditionFormat[count($advFilterConditionFormat) - 1]['condition']);
|
|
return $advFilterConditionFormat;
|
|
}
|
|
} |