Files
crm.clientright.ru/includes/SalesPlatform/PDF/viewers/SPContentViewer.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

113 lines
4.9 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: SalesPlatform vtiger CRM Open Source
* The Initial Developer of the Original Code is SalesPlatform.
* Portions created by SalesPlatform are Copyright (C) SalesPlatform.
* All Rights Reserved.
************************************************************************************/
include_once 'vtlib/Vtiger/PDF/viewers/ContentViewer.php';
include_once 'includes/Aste/Template.php';
include_once 'includes/Aste/Block.php';
include_once 'includes/Aste/Block/Parser.php';
include_once 'includes/Aste/Exception.php';
class SalesPlatform_PDF_SPContentViewer extends Vtiger_PDF_ContentViewer {
protected $template;
protected $orientation;
protected $documentModel;
function __construct($template, $orientation) {
$this->template = $template;
$this->orientation = $orientation;
}
function initDisplay($parent) {
}
function setDocumentModel($model) {
$this->documentModel = $model;
}
//Barcodes insertion
function setBarcodes($content, $model, $pdf) {
$style1d = array(
'position' => 'S',
'align' => 'C',
'stretch' => false,
'fitwidth' => true,
'cellfitalign' => '',
'border' => true,
'hpadding' => 'auto',
'vpadding' => 'auto',
'fgcolor' => array(0,0,0),
'bgcolor' => array(255,255,255),
'text' => true,
'font' => 'helvetica',
'fontsize' => 8,
'stretchtext' => 4
);
$style2d = array(
'border' => 2,
'vpadding' => 'auto',
'hpadding' => 'auto',
'fgcolor' => array(0,0,0),
'bgcolor' => array(255,255,255),
'module_width' => 1,
'module_height' => 1
);
preg_match_all('/{\S(?<tag>.+?)_barcode(?<demension>.+?):(?<standart>.+?)}/', $content, $matches);
$elements = $matches[tag];
foreach($elements as $key => $tag2barcode) {
if (in_array($tag2barcode, $model->keys())) {
$info4barcode = $model->get($tag2barcode);
}
if ($matches[demension][$key] == '1d'){
$param = $pdf->serializeTCPDFtagParameters(array($info4barcode, $matches[standart][$key], '', '', '', 18, 0.4, $style1d, 'N'));
}
elseif ($matches[demension][$key] == '2d') {
$param = $pdf->serializeTCPDFtagParameters(array($info4barcode, $matches[standart][$key], '', '', '', 20, $style2d, 'N'));
}
$content = str_replace($matches[0][$key], '<tcpdf method="write'.strtoupper($matches[demension][$key]).'Barcode" params="'.$param.'" />', $content);
}
return $content;
}
function display($parent) {
$pdf = $parent->getPDF();
$pdf->setPageOrientation($this->orientation);
$pdf->SetAutoPageBreak(true, 10);
$parent->createPage();
$contentFrame = $parent->getContentFrame();
if($this->documentModel) {
try {
$template = new Aste_Template($this->template);
$header = $template->getBlock('content');
foreach($this->documentModel->keys() as $key) {
$header->setVar($key, $this->documentModel->get($key));
}
$content = $header->fetch();
$content = $this->setBarcodes($content, $this->documentModel, $pdf);
$pdf->writeHTMLCell($contentFrame->w, $contentFrame->h,$contentFrame->x, $contentFrame->y, $content);
} catch(Aste_Exception $e) {
}
// Add the border cell at the end
// This is required to reset Y position for next write
$pdf->MultiCell($contentFrame->w, $contentFrame->h-$contentFrame->y, "", 0, 'L', 0, 1, $contentFrame->x, $contentFrame->y);
}
}
}