Files
crm.clientright.ru/modules/MailManager/views/Settings.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

127 lines
4.8 KiB
PHP

<?php
/*+**********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.1
* ("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 MailManager_Settings_View extends MailManager_MainUI_View {
/**
* Process the request for Settings Operations
* @param Vtiger_Request $request
* @return MailManager_Response
*/
public function process(Vtiger_Request $request) {
$response = new MailManager_Response();
$module = $request->getModule();
if ('edit' == $this->getOperationArg($request)) {
$model = $this->getMailBoxModel();
$connector = $this->getConnector();
$serverName = $model->serverName();
if ($connector->isConnected()) {
$folders = $connector->folders();
}
$viewer = $this->getViewer($request);
$viewer->assign('MODULE', $module);
$viewer->assign('MAILBOX', $model);
$viewer->assign('SERVERNAME', $serverName);
$viewer->assign('FOLDERS', $folders);
$response->setResult($viewer->view('SettingsEdit.tpl', $module, true));
} else if ('save' == $this->getOperationArg($request)) {
$model = $this->getMailBoxModel();
$model->setServer($request->get('_mbox_server'));
$model->setUsername($request->get('_mbox_user'));
// MailManager_Request->get($key) is give urldecoded value which is replacing + with space
$model->setPassword($request->getRaw('_mbox_pwd'));
$model->setProtocol($request->get('_mbox_protocol', 'IMAP4'));
$model->setSSLType($request->get('_mbox_ssltype', 'ssl'));
$model->setCertValidate($request->get('_mbox_certvalidate', 'novalidate-cert'));
$model->setRefreshTimeOut($request->get('_mbox_refresh_timeout'));
$connector = $this->getConnector();
$sentFolder = $request->get('_mbox_sent_folder');
//SalesPlatform.ru begin
$trashFolder = $request->get('_mbox_trash_folder');
//SalesPlatform.ru end
//SalesPlatform.ru begin
if($connector->isConnected()) {
$folderInstaces = $connector->folders();
/* Default folder if no match to sent folder */
$firstFolderInstance = current($folderInstaces);
$sentFolder = $firstFolderInstance->name();
/* Lookup folder which match to name */
$mboxFolder = strtolower($request->get('_mbox_sent_folder'));
$tboxFolder = strtolower($request->get('_mbox_trash_folder'));
foreach($folderInstaces as $folder) {
if(mb_strtolower($folder->name()) == $mboxFolder) {
$sentFolder = $folder->name();
}
if(mb_strtolower($folder->name()) == $tboxFolder) {
$trashFolder = $folder->name();
}
}
}
//if($connector->isConnected() && empty($sentFolder)) {
// $folderInstaces = $connector->folders();
// foreach($folderInstaces as $folder) {
// if (strpos(strtolower($folder->name()), 'sent') !== false) {
// $sentFolder = $folder->name();
// }
// }
//}
//SalesPlatform.ru end
$model->setFolder($sentFolder);
//SalesPlatform.ru begin
$model->setTrash($trashFolder);
//SalesPlatform.ru end
if ($connector->isConnected()) {
$model->save();
$request->set('_operation', 'mainui');
return parent::process($request);
} else if($connector->hasError()) {
$error = $connector->lastError();
$response->isJSON(true);
$response->setError(101, $error);
}
} else if ('remove' == $this->getOperationArg($request)) {
$model = $this->getMailBoxModel();
$model->delete();
$response->isJSON(true);
$response->setResult(array('status' => true));
} else if ('detail' == $this->getOperationArg($request)) {
$model = $this->getMailBoxModel();
$serverName = $model->serverName();
$viewer = $this->getViewer($request);
$viewer->assign('MODULE', $module);
$viewer->assign('MAILBOX', $model);
$viewer->assign('SERVERNAME', $serverName);
$response->setResult($viewer->view('SettingsDetail.tpl', $module, true));
}
return $response;
}
public function validateRequest(Vtiger_Request $request) {
return $request->validateWriteAccess();
}
}
?>