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

86 lines
3.6 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 Reports_Save_Action extends Vtiger_Save_Action {
public function requiresPermission(\Vtiger_Request $request) {
$permissions = parent::requiresPermission($request);
$permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView', 'record_parameter' => 'record');
return $permissions;
}
public function checkPermission(Vtiger_Request $request) {
parent::checkPermission($request);
$record = $request->get('record');
if ($record) {
$reportModel = Reports_Record_Model::getCleanInstance($record);
if (!$reportModel->isEditable()) {
throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
}
}
return true;
}
public function process(Vtiger_Request $request) {
$moduleName = $request->getModule();
$record = $request->get('record');
$reportModel = new Reports_Record_Model();
$reportModel->setModule('Reports');
if(!empty($record) && !$request->get('isDuplicate')) {
$reportModel->setId($record);
}
$reporttype = $request->get('reporttype');
if(empty($reporttype)) $reporttype='tabular';
$reportModel->set('reportname', $request->get('reportname'));
$reportModel->set('folderid', $request->get('reportfolderid'));
$reportModel->set('description', $request->get('reports_description'));
$reportModel->set('reporttype', $reporttype);
$reportModel->setPrimaryModule($request->get('primary_module'));
$secondaryModules = $request->get('secondary_modules');
$secondaryModules = implode(':', $secondaryModules);
$reportModel->setSecondaryModule($secondaryModules);
$reportModel->set('selectedFields', $request->get('selected_fields'));
$reportModel->set('sortFields', $request->get('selected_sort_fields'));
$reportModel->set('calculationFields', $request->get('selected_calculation_fields'));
$reportModel->set('standardFilter', $request->get('standard_fiter'));
$reportModel->set('advancedFilter', $request->get('advanced_filter'));
$reportModel->set('advancedGroupFilterConditions', $request->get('advanced_group_condition'));
$reportModel->set('members', $request->get('members'));
$reportModel->save();
//Scheduled Reports
$scheduleReportModel = new Reports_ScheduleReports_Model();
$scheduleReportModel->set('scheduleid', $request->get('schtypeid'));
$scheduleReportModel->set('schtime', date('H:i', strtotime($request->get('schtime'))));
$scheduleReportModel->set('schdate', $request->get('schdate'));
$scheduleReportModel->set('schdayoftheweek', $request->get('schdayoftheweek'));
$scheduleReportModel->set('schdayofthemonth', $request->get('schdayofthemonth'));
$scheduleReportModel->set('schannualdates', $request->get('schannualdates'));
$scheduleReportModel->set('reportid', $reportModel->getId());
$scheduleReportModel->set('recipients', $request->get('recipients'));
$scheduleReportModel->set('isReportScheduled', $request->get('enable_schedule'));
$scheduleReportModel->set('specificemails', $request->get('specificemails'));
$scheduleReportModel->set('fileformat', $request->get('fileformat'));
$scheduleReportModel->saveScheduleReport();
//END
$loadUrl = $reportModel->getDetailViewUrl();
header("Location: $loadUrl");
}
}