Files
crm.clientright.ru/modules/Campaigns/models/RelationListView.php
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

77 lines
3.4 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 Campaigns_RelationListView_Model extends Vtiger_RelationListView_Model {
/**
* Function to get the links for related list
* @return <Array> List of action models <Vtiger_Link_Model>
*/
public function getLinks() {
$relatedLinks = parent::getLinks();
$relationModel = $this->getRelationModel();
$relatedModuleName = $relationModel->getRelationModuleModel()->getName();
if (array_key_exists($relatedModuleName, $relationModel->getEmailEnabledModulesInfoForDetailView())) {
$currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
if ($currentUserPriviligesModel->hasModulePermission(getTabid('Emails'))) {
$emailLink = Vtiger_Link_Model::getInstanceFromValues(array(
'linktype' => 'LISTVIEWBASIC',
'linklabel' => vtranslate('LBL_SEND_EMAIL', $relatedModuleName),
'linkurl' => "javascript:Campaigns_RelatedList_Js.triggerSendEmail('index.php?module=$relatedModuleName&view=MassActionAjax&mode=showComposeEmailForm&step=step1','Emails');",
'linkicon' => ''
));
$emailLink->set('_sendEmail',true);
$relatedLinks['LISTVIEWBASIC'][] = $emailLink;
}
}
return $relatedLinks;
}
/**
* Function to get list of record models in this relation
* @param <Vtiger_Paging_Model> $pagingModel
* @return <array> List of record models <Vtiger_Record_Model>
*/
public function getEntries($pagingModel) {
$relationModel = $this->getRelationModel();
$parentRecordModel = $this->getParentRecordModel();
$relatedModuleName = $relationModel->getRelationModuleModel()->getName();
$relatedRecordModelsList = parent::getEntries($pagingModel);
$emailEnabledModulesInfo = $relationModel->getEmailEnabledModulesInfoForDetailView();
if (array_key_exists($relatedModuleName, $emailEnabledModulesInfo) && $relatedRecordModelsList) {
$fieldName = $emailEnabledModulesInfo[$relatedModuleName]['fieldName'];
$tableName = $emailEnabledModulesInfo[$relatedModuleName]['tableName'];
$db = PearDatabase::getInstance();
$relatedRecordIdsList = array_keys($relatedRecordModelsList);
$query = "SELECT campaignrelstatus, $fieldName FROM $tableName
INNER JOIN vtiger_campaignrelstatus ON vtiger_campaignrelstatus.campaignrelstatusid = $tableName.campaignrelstatusid
WHERE $fieldName IN (". generateQuestionMarks($relatedRecordIdsList).") AND campaignid = ?";
array_push($relatedRecordIdsList, $parentRecordModel->getId());
$result = $db->pquery($query, $relatedRecordIdsList);
$numOfrows = $db->num_rows($result);
for($i=0; $i<$numOfrows; $i++) {
$recordId = $db->query_result($result, $i, $fieldName);
$relatedRecordModel = $relatedRecordModelsList[$recordId];
$relatedRecordModel->set('status', $db->query_result($result, $i, 'campaignrelstatus'));
$relatedRecordModelsList[$recordId] = $relatedRecordModel;
}
}
return $relatedRecordModelsList;
}
}