- 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.
114 lines
3.5 KiB
PHP
114 lines
3.5 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: SalesPlatform Ltd
|
|
* The Initial Developer of the Original Code is SalesPlatform Ltd.
|
|
* All Rights Reserved.
|
|
* If you have any questions or comments, please email: devel@salesplatform.ru
|
|
************************************************************************************/
|
|
|
|
require_once 'include/utils/utils.php';
|
|
require_once 'vtlib/Vtiger/Unzip.php';
|
|
|
|
/**
|
|
* Descripes cretae zip archives operation on website file upload.
|
|
* @author alexd
|
|
*/
|
|
class UploadFileManager {
|
|
|
|
/* File uploads directories */
|
|
const UPLOAD_DIR = 'test/upload/site/';
|
|
const DEFAULT_ARCHIVE_NAME = 'import.zip';
|
|
|
|
private $archiveName;
|
|
private $archiveFileNames;
|
|
private $zip;
|
|
|
|
/**
|
|
* Initilizate upload directory to import files.
|
|
*/
|
|
public function __construct() {
|
|
if(!file_exists(self::UPLOAD_DIR)) {
|
|
mkdir(self::UPLOAD_DIR);
|
|
}
|
|
|
|
$this->archiveFileNames = array();
|
|
$this->archiveName = self::DEFAULT_ARCHIVE_NAME;
|
|
$this->zip = new ZipArchive();
|
|
}
|
|
|
|
private function getImportFileName($number) {
|
|
return "import".$number.".xml";
|
|
}
|
|
|
|
private function getOffersFileName($number) {
|
|
return "offers".$number.".xml";
|
|
}
|
|
|
|
private function getOrdersFileName() {
|
|
return "orders.xml";
|
|
}
|
|
|
|
/**
|
|
* Rewrite archive content by ctaalogs information.
|
|
* @param array<String> $imports
|
|
* @param array<String> $offers
|
|
*/
|
|
public function setZipCatalogsContent($imports, $offers) {
|
|
unlink(self::UPLOAD_DIR.$this->archiveName);
|
|
$this->zip->open(self::UPLOAD_DIR.$this->archiveName, ZIPARCHIVE::CREATE);
|
|
$this->archiveFileNames = array();
|
|
foreach($imports as $number => $content) {
|
|
$importFileName = $this->getImportFileName($number);
|
|
$offersFileName = $this->getOffersFileName($number);
|
|
|
|
$this->zip->addFromString($importFileName, $imports[$number]);
|
|
$this->zip->addFromString($offersFileName, $offers[$number]);
|
|
|
|
$this->archiveFileNames[] = $importFileName;
|
|
$this->archiveFileNames[] = $offersFileName;
|
|
}
|
|
$this->zip->close();
|
|
}
|
|
|
|
/**
|
|
* Adds orders description to archive.
|
|
* @param String $orders
|
|
*/
|
|
public function setZipOrdersContent($orders) {
|
|
unlink(self::UPLOAD_DIR.$this->archiveName);
|
|
$this->zip->open(self::UPLOAD_DIR.$this->archiveName, ZIPARCHIVE::CREATE);
|
|
$this->zip->addFromString($this->getOrdersFileName(), $orders);
|
|
$this->zip->close();
|
|
|
|
$this->archiveFileNames = array();
|
|
$this->archiveFileNames[] = $this->getOrdersFileName();
|
|
}
|
|
|
|
/**
|
|
* Return binary content of zip file.
|
|
* @return String
|
|
*/
|
|
public function getZipContent() {
|
|
$zipCatalog = file_get_contents(self::UPLOAD_DIR.$this->archiveName);
|
|
return $zipCatalog;
|
|
}
|
|
|
|
/**
|
|
* Return archive name.
|
|
* @return String
|
|
*/
|
|
public function getZipFileName() {
|
|
return $this->archiveName;
|
|
}
|
|
|
|
/**
|
|
* Return all file names which contains in archive. Return order - by add order.
|
|
* @return array
|
|
*/
|
|
public function getArchiveFileNames() {
|
|
return $this->archiveFileNames;
|
|
}
|
|
}
|