- 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.
118 lines
4.7 KiB
PHP
118 lines
4.7 KiB
PHP
<?php
|
|
/*+**********************************************************************************
|
|
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
|
* ("License"); You may not use this file except in compliance with the License
|
|
* The Original Code is: vtiger CRM Open Source
|
|
* The Initial Developer of the Original Code is vtiger.
|
|
* Portions created by vtiger are Copyright (C) vtiger.
|
|
* All Rights Reserved.
|
|
************************************************************************************/
|
|
|
|
/**
|
|
* Class FinReports_Module_Model
|
|
*/
|
|
class FinReports_Module_Model extends Vtiger_Module_Model
|
|
{
|
|
public $user = NULL;
|
|
public $db = NULL;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->user = Users_Record_Model::getCurrentUserModel();
|
|
$this->db = PearDatabase::getInstance();
|
|
}
|
|
|
|
|
|
public function getAllSettings()
|
|
{
|
|
$list = array();
|
|
$res = $this->db->pquery("SELECT * FROM vtiger_finreports_settings", array());
|
|
if ($this->db->num_rows($res)) {
|
|
while ($row = $this->db->fetchByAssoc($res)) {
|
|
$list[$row['name']] = $row['value'];
|
|
}
|
|
}
|
|
return $list;
|
|
}
|
|
|
|
public function getOrgField()
|
|
{
|
|
$settingsArray = $this->getAllSettings();
|
|
if (array_key_exists('org_field', $settingsArray)) {
|
|
return $settingsArray['org_field'];
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public function getVendorField()
|
|
{
|
|
$settingsArray = $this->getAllSettings();
|
|
if (array_key_exists('del_field', $settingsArray)) {
|
|
return $settingsArray['del_field'];
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public function getAPI()
|
|
{
|
|
$settingsArray = $this->getAllSettings();
|
|
if (array_key_exists('api', $settingsArray)) {
|
|
return $settingsArray['api'];
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function to get relation query for particular module with function name
|
|
* @param <record> $recordId
|
|
* @param <String> $functionName
|
|
* @param Vtiger_Module_Model $relatedModule
|
|
* @return <String>
|
|
*/
|
|
public function getRelationQuery($recordId, $functionName, $relatedModule, $relationId) {
|
|
if ($functionName === 'get_activities') {
|
|
$focus = CRMEntity::getInstance($this->getName());
|
|
$focus->id = $recordId;
|
|
$userNameSql = getSqlForNameInDisplayFormat(array('first_name' => 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users');
|
|
|
|
$query = "SELECT CASE WHEN (vtiger_users.user_name not like '') THEN $userNameSql ELSE vtiger_groups.groupname END AS user_name,
|
|
vtiger_crmentity.*, vtiger_activity.activitytype, vtiger_activity.subject, vtiger_activity.date_start, vtiger_activity.time_start,
|
|
vtiger_activity.recurringtype, vtiger_activity.due_date, vtiger_activity.time_end, vtiger_activity.visibility, vtiger_seactivityrel.crmid AS parent_id,
|
|
CASE WHEN (vtiger_activity.activitytype = 'Task') THEN (vtiger_activity.status) ELSE (vtiger_activity.eventstatus) END AS status
|
|
FROM vtiger_activity
|
|
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_activity.activityid
|
|
LEFT JOIN vtiger_seactivityrel ON vtiger_seactivityrel.activityid = vtiger_activity.activityid
|
|
LEFT JOIN vtiger_cntactivityrel ON vtiger_cntactivityrel.activityid = vtiger_activity.activityid
|
|
LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid
|
|
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
|
WHERE vtiger_crmentity.deleted = 0 AND vtiger_activity.activitytype <> 'Emails'
|
|
AND (vtiger_seactivityrel.crmid = ".$recordId;
|
|
$query .= ")";
|
|
|
|
$relatedModuleName = $relatedModule->getName();
|
|
$query .= $this->getSpecificRelationQuery($relatedModuleName);
|
|
$nonAdminQuery = $this->getNonAdminAccessControlQueryForRelation($relatedModuleName);
|
|
if ($nonAdminQuery) {
|
|
$query = appendFromClauseToQuery($query, $nonAdminQuery);
|
|
}
|
|
|
|
// There could be more than one contact for an activity.
|
|
$query .= ' GROUP BY vtiger_activity.activityid';
|
|
} else {
|
|
$query = parent::getRelationQuery($recordId, $functionName, $relatedModule, $relationId);
|
|
}
|
|
|
|
return $query;
|
|
}
|
|
public function getModuleIcon() {
|
|
$moduleName = $this->getName();
|
|
$lowerModuleName = strtolower($moduleName);
|
|
$title = vtranslate($moduleName, $moduleName);
|
|
$moduleIcon = "<i class='vicon-$lowerModuleName' title='$title'></i>";
|
|
|
|
return $moduleIcon;
|
|
}
|
|
} |