- 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.
145 lines
3.7 KiB
PHP
145 lines
3.7 KiB
PHP
<?php
|
|
/*********************************************************************************
|
|
* The content of this file is subject to the ITS4YouKanbanView license.
|
|
* ("License"); You may not use this file except in compliance with the License
|
|
* The Initial Developer of the Original Code is IT-Solutions4You s.r.o.
|
|
* Portions created by IT-Solutions4You s.r.o. are Copyright(C) IT-Solutions4You s.r.o.
|
|
* All Rights Reserved.
|
|
********************************************************************************/
|
|
|
|
class ITS4YouKanbanView_KanbanView_Model extends Vtiger_Base_Model
|
|
{
|
|
/**
|
|
* @var object
|
|
*/
|
|
protected $listViewModel;
|
|
|
|
/**
|
|
* @var object
|
|
*/
|
|
protected $pagingModel;
|
|
|
|
/**
|
|
* @var object
|
|
*/
|
|
protected $queryGenerator;
|
|
|
|
/**
|
|
* @param object $listViewModel
|
|
* @param object $pagingModel
|
|
* @return self
|
|
*/
|
|
public static function getInstance($listViewModel, $pagingModel)
|
|
{
|
|
$self = new self();
|
|
$self->setListView($listViewModel);
|
|
$self->setPaging($pagingModel);
|
|
|
|
return $self;
|
|
}
|
|
|
|
/**
|
|
* @param object $value
|
|
*/
|
|
public function setListView($value)
|
|
{
|
|
$this->listViewModel = $value;
|
|
}
|
|
|
|
/**
|
|
* @param object $value
|
|
*/
|
|
public function setPaging($value)
|
|
{
|
|
$this->pagingModel = $value;
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getRecords()
|
|
{
|
|
$records = array();
|
|
|
|
foreach ($this->getListView()->getListViewEntries($this->getPaging()) as $recordModel) {
|
|
array_push($records, Vtiger_Record_Model::getInstanceById($recordModel->getId(), $recordModel->getModuleName()));
|
|
}
|
|
|
|
return $records;
|
|
}
|
|
|
|
/**
|
|
* @return object
|
|
*/
|
|
public function getListView()
|
|
{
|
|
return $this->listViewModel;
|
|
}
|
|
|
|
/**
|
|
* @return object
|
|
*/
|
|
public function getPaging()
|
|
{
|
|
return $this->pagingModel;
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
* @throws Exception
|
|
*/
|
|
public function getRecordsCount()
|
|
{
|
|
$adb = PearDatabase::getInstance();
|
|
$moduleModel = $this->getListView()->getModule();
|
|
|
|
$listQuery = preg_split('/ from /im', $this->getListView()->getQuery());
|
|
$listQuery[0] = 'SELECT count(distinct(' . $moduleModel->get('basetable') . '.' . $moduleModel->get('basetableid') . ')) AS count ';
|
|
$listQuery = implode(' FROM ', $listQuery);
|
|
|
|
$result = $adb->pquery($listQuery);
|
|
|
|
return (int)$adb->query_result($result, 0, 'count');
|
|
}
|
|
|
|
/**
|
|
* @param string $name
|
|
* @param string $value
|
|
*/
|
|
public function filterRecordsByFieldValue($name, $value)
|
|
{
|
|
$queryGeneratorClone = clone $this->getQueryGenerator();
|
|
$queryGeneratorClone->addUserSearchConditions(array('search_field' => $name, 'search_text' => $value, 'operator' => 'e'));
|
|
|
|
$this->getListView()->set('query_generator', $queryGeneratorClone);
|
|
}
|
|
|
|
/**
|
|
* @return object
|
|
*/
|
|
public function getQueryGenerator()
|
|
{
|
|
if (!$this->queryGenerator) {
|
|
$this->setQueryGenerator($this->getListView()->get('query_generator'));
|
|
}
|
|
|
|
return $this->queryGenerator;
|
|
}
|
|
|
|
/**
|
|
* @param object $value
|
|
*/
|
|
public function setQueryGenerator($value)
|
|
{
|
|
$this->queryGenerator = $value;
|
|
}
|
|
|
|
/**
|
|
* @param string $value
|
|
*/
|
|
public function assignUsersFilter($value)
|
|
{
|
|
$queryGenerator = $this->getQueryGenerator();
|
|
$queryGenerator->addCondition('assigned_user_id', $value, 'c', 'AND');
|
|
}
|
|
} |