- 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.
176 lines
8.1 KiB
PHP
176 lines
8.1 KiB
PHP
<?php
|
|
|
|
/*+********************************************************************************
|
|
* The content of this file is subject to the Reports 4 You license.
|
|
* ("License"); You may not use this file except in compliance with the License
|
|
* The Initial Developer of the Original Code is IT-Solutions4You s.r.o.
|
|
* Portions created by IT-Solutions4You s.r.o. are Copyright(C) IT-Solutions4You s.r.o.
|
|
* All Rights Reserved.
|
|
********************************************************************************/
|
|
|
|
require_once('modules/ITS4YouReports/ITS4YouReports.php');
|
|
|
|
class ITS4YouReports_Save_Action extends Vtiger_Save_Action {
|
|
|
|
public function checkPermission(Vtiger_Request $request) {
|
|
$moduleName = $request->getModule();
|
|
$moduleModel = Reports_Module_Model::getInstance($moduleName);
|
|
|
|
$currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
|
|
if (!$currentUserPriviligesModel->hasModulePermission($moduleModel->getId())) {
|
|
throw new AppException('LBL_PERMISSION_DENIED');
|
|
}
|
|
|
|
$record = $request->get('record');
|
|
if ($record) {
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
if (!$reportModel->isEditable()) {
|
|
throw new AppException('LBL_PERMISSION_DENIED');
|
|
}
|
|
}
|
|
}
|
|
|
|
public function process(Vtiger_Request $request) {
|
|
$moduleName = $request->getModule();
|
|
$requestAll = $request->getAll();
|
|
|
|
$record = $requestAll["record"];
|
|
if ($record != "") {
|
|
$mode = "edit";
|
|
} else {
|
|
$mode = "create";
|
|
}
|
|
|
|
global $default_charset;
|
|
$reportModel = new ITS4YouReports_Record_Model();
|
|
$reportModel->setModule("ITS4YouReports");
|
|
if (!empty($record) && !$request->get('isDuplicate')) {
|
|
$reportModel->setId($record);
|
|
}
|
|
|
|
$reportModel->set('reportname', $requestAll['reportname']);
|
|
$reportModel->set('folderid', $requestAll['reportfolder']);
|
|
$reportModel->set('description', $requestAll['reportdesc']);
|
|
|
|
$reportModel->setPrimaryModule($requestAll['primarymodule']);
|
|
|
|
$reportModel->set('template_owner', $requestAll['template_owner']);
|
|
$reportModel->set('sharing', $requestAll['sharing']);
|
|
|
|
$saveselectedcolumns = explode(";", trim($requestAll['selectedColumnsString'], ";"));
|
|
$reportModel->set('selectedFields', $saveselectedcolumns);
|
|
|
|
$selectedSummaries_array = explode(";", trim($requestAll['selectedSummariesString'], ";"));
|
|
$reportModel->set('selectedSummaries', $selectedSummaries_array);
|
|
|
|
$reportModel->set('summaries_orderby', $requestAll['summaries_orderby_columnString']);
|
|
$reportModel->set('summaries_orderby_type', $requestAll['summaries_orderby_type']);
|
|
|
|
$lbl_array = [];
|
|
$lbl_url_string = $requestAll['labels_to_go'];
|
|
$lbl_url_string = urldecode($lbl_url_string);
|
|
$lbl_url_string = html_entity_decode($lbl_url_string, ENT_QUOTES, $default_charset);
|
|
// $lbl_url_string = str_replace("@AMPKO@", "&", $lbl_url_string);
|
|
if ($lbl_url_string != "") {
|
|
$lbl_url_arr = explode('$_@_$', $lbl_url_string);
|
|
foreach ($lbl_url_arr as $key => $lbl_value) {
|
|
if (strpos($lbl_value, '_SC_lLbLl_') !== false) {
|
|
$temp = explode('_SC_lLbLl_', $lbl_value);
|
|
$temp_lbls = explode('_lLGbGLl_', $temp[1]);
|
|
$lbl_key = $temp_lbls[0];
|
|
$lbl_value = $temp_lbls[1];
|
|
$lbl_array["SC"][$lbl_key] = $lbl_value;
|
|
}
|
|
if (strpos($lbl_value, '_SM_lLbLl_') !== false) {
|
|
$temp = explode('_SM_lLbLl_', $lbl_value);
|
|
$temp_lbls = explode('_lLGbGLl_', $temp[1]);
|
|
$lbl_key = $temp_lbls[0];
|
|
$lbl_value = $temp_lbls[1];
|
|
$lbl_array["SM"][$lbl_key] = $lbl_value;
|
|
}
|
|
|
|
if (strpos($lbl_value, '_CT_lLbLl_') !== false) {
|
|
$temp = explode('_CT_lLbLl_', $lbl_value);
|
|
$temp_lbls = explode('_lLGbGLl_', $temp[1]);
|
|
$lbl_key = $temp_lbls[0];
|
|
$lbl_value = $temp_lbls[1];
|
|
$lbl_array["CT"][$lbl_key] = $lbl_value;
|
|
}
|
|
}
|
|
}
|
|
$reportModel->set('lbl_array', $lbl_array);
|
|
|
|
for ($gi = 1; $gi < 4; $gi++) {
|
|
$reportModel->set('sort_by' . $gi, $requestAll['Group' . $gi]);
|
|
$reportModel->set('sort_order' . $gi, $requestAll['Sort' . $gi]);
|
|
}
|
|
|
|
$reportModel->set('timeline_type2', $requestAll['timeline_type2']);
|
|
$reportModel->set('timeline_type3', $requestAll['timeline_type3']);
|
|
|
|
for ($tgi = 1; $tgi < 4; $tgi++) {
|
|
if ($request->has('TimeLineColumn_Group' . $tgi) && !$request->isEmpty('TimeLineColumn_Group' . $tgi) && $requestAll['Group' . $tgi] != "none") {
|
|
$TimeLineColumn_Group = $requestAll['TimeLineColumn_Group' . $tgi];
|
|
$TimeLineColumn_Group_arr = explode("@vlv@", $TimeLineColumn_Group);
|
|
$TimeLineColumn_str = $TimeLineColumn_Group_arr[0];
|
|
$TimeLineColumn_frequency = $TimeLineColumn_Group_arr[1];
|
|
$reportModel->set('TimeLineColumn_str' . $tgi, $TimeLineColumn_str);
|
|
$reportModel->set('TimeLineColumn_frequency' . $tgi, $TimeLineColumn_frequency);
|
|
}
|
|
}
|
|
|
|
$reportModel->set('SortByColumn', $requestAll['SortByColumn']);
|
|
$reportModel->set('SortOrderColumn', $requestAll['SortOrderColumn']);
|
|
|
|
$pmodule = $requestAll['primarymodule'];
|
|
$reportModel->set('pmodule', $pmodule);
|
|
$smodule = trim($requestAll['secondarymodule'], ":");
|
|
$reportModel->set('smodule', $smodule);
|
|
|
|
$reportModel->set('sharetype', $requestAll['sharing']);
|
|
$reportModel->set('shared_entities', $requestAll['sharingSelectedColumnsString']);
|
|
|
|
$columnstototal = explode('$_@_$', $requestAll["curl_to_go"]);
|
|
$reportModel->set('columnstototal', $columnstototal);
|
|
|
|
$json = new Zend_Json();
|
|
//$std_filter_columns = $ITS4YouReports->getStdFilterColumns();
|
|
$advft_criteria = $requestAll['advft_criteria'];
|
|
$advft_criteria = $json->decode($advft_criteria);
|
|
$reportModel->set('advft_criteria', $advft_criteria);
|
|
$advft_criteria_groups = $requestAll['advft_criteria_groups'];
|
|
$advft_criteria_groups = $json->decode($advft_criteria_groups);
|
|
$reportModel->set('advft_criteria_groups', $advft_criteria_groups);
|
|
|
|
$groupft_criteria = $requestAll['groupft_criteria'];
|
|
$groupft_criteria = $json->decode($groupft_criteria);
|
|
$reportModel->set('groupft_criteria', $groupft_criteria);
|
|
|
|
$reportModel->set('limit', $requestAll['limit']);
|
|
$reportModel->set('summaries_limit', $requestAll['summaries_limit']);
|
|
|
|
$reportModel->set('isReportScheduled', $requestAll['isReportScheduled']);
|
|
$reportModel->set('selectedRecipientsString', $requestAll['selectedRecipientsString']);
|
|
$reportModel->set('scheduledReportFormat', $requestAll['scheduledReportFormat']);
|
|
$reportModel->set('scheduledIntervalString', $requestAll['scheduledIntervalString']);
|
|
|
|
$chartType = $requestAll["chartType"];
|
|
$reportModel->set('chartType', $chartType);
|
|
if ($chartType != "" && $chartType != "none") {
|
|
$data_series = $requestAll["data_series"];
|
|
$reportModel->set('data_series', $data_series);
|
|
$charttitle = $requestAll["charttitle"];
|
|
$reportModel->set('charttitle', $charttitle);
|
|
}
|
|
|
|
$reportModel->save();
|
|
|
|
if ($requestAll["SaveType"] == "Save") {
|
|
$loadUrl = $reportModel->getListViewUrl();
|
|
} else {
|
|
$loadUrl = $reportModel->getDetailViewUrl();
|
|
}
|
|
header("Location: $loadUrl");
|
|
}
|
|
}
|