- 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.
1687 lines
77 KiB
PHP
1687 lines
77 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.
|
|
********************************************************************************/
|
|
|
|
vimport('~~/modules/ITS4YouReports/ScheduledReports4You.php');
|
|
|
|
class ITS4YouReports_EditView_Model extends Vtiger_Base_Model {
|
|
|
|
public static function ReportsStep1(Vtiger_Request $request, $viewer) {
|
|
$moduleName = $request->getModule();
|
|
$record = $request->get('record');
|
|
$R_Data = $request->getAll();
|
|
$viewer->assign("MODULE", $moduleName);
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
|
|
if ($request->has("reportname")) {
|
|
$reportname = $request->get("reportname");
|
|
} else {
|
|
$reportname = $reportModel->getName();
|
|
}
|
|
$viewer->assign("REPORTNAME", $reportname);
|
|
|
|
if ($request->has("reportdesc")) {
|
|
$reportdesc = $request->get("reportdesc");
|
|
} else {
|
|
$reportdesc = $reportModel->getDesc();
|
|
}
|
|
$viewer->assign("REPORTDESC", $reportdesc);
|
|
|
|
$viewer->assign("REP_MODULE", $reportModel->getPrimaryModule());
|
|
|
|
$viewer->assign("PRIMARYMODULES", $reportModel->getPrimaryModules());
|
|
|
|
$viewer->assign("REP_FOLDERS", $reportModel->getReportFolders());
|
|
|
|
return $viewer->view('ReportsStep1.tpl', $moduleName, true);
|
|
}
|
|
|
|
public static function ReportGrouping(Vtiger_Request $request, $viewer) {
|
|
$moduleName = $request->getModule();
|
|
$record = $request->get('record');
|
|
$R_Data = $request->getAll();
|
|
$viewer->assign("MODULE", $moduleName);
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
if ($request->has("primarymodule") && !$request->isEmpty("primarymodule")) {
|
|
$primary_moduleid = $request->get("primarymodule");
|
|
$primary_module = vtlib_getModuleNameById($primary_moduleid);
|
|
} else {
|
|
$primary_module = $reportModel->getPrimaryModule();
|
|
if (is_numeric($primary_module)) {
|
|
$primary_moduleid = $primary_module;
|
|
$primary_module = vtlib_getModuleNameById($primary_moduleid);
|
|
} else {
|
|
$primary_moduleid = getTabid($primary_module);
|
|
}
|
|
}
|
|
|
|
$selectedSummariesString = '';
|
|
$reportModel->module_list = $reportModel->report->module_list;
|
|
$primary_df_arr = getPrimaryTLStdFilter($primary_module, $reportModel->report);
|
|
$date_options = [];
|
|
if (!empty($primary_df_arr)) {
|
|
foreach ($primary_df_arr as $val_arr) {
|
|
foreach ($val_arr as $val_dtls) {
|
|
$date_options[] = $val_dtls["value"];
|
|
}
|
|
}
|
|
}
|
|
$date_options_json = Zend_JSON::encode($date_options);
|
|
$viewer->assign("date_options_json", $date_options_json);
|
|
|
|
$timelinecolumn = $reportModel->getTimeLineColumnHTML();
|
|
$viewer->assign("timelinecolumn", $timelinecolumn);
|
|
$Report_Informations = [];
|
|
$secondarymodule = '';
|
|
$secondarymodules = [];
|
|
|
|
if ($record != "") {
|
|
$Report_Informations = $reportModel->getReportInformations();
|
|
if ($request->has('summaries_limit') && !$request->isEmpty('summaries_limit')) {
|
|
$summaries_limit = $request->get("summaries_limit");
|
|
} else {
|
|
$summaries_limit = $Report_Informations["summaries_limit"];
|
|
}
|
|
} else {
|
|
$summaries_limit = "20";
|
|
}
|
|
$viewer->assign("SUMMARIES_LIMIT", $summaries_limit);
|
|
|
|
if ($primary_module != "") {
|
|
$reportModel->getPriModuleColumnsList($primary_module);
|
|
foreach ($reportModel->report->related_modules[$primary_module] as $key => $secmodid) {
|
|
$rp = $reportModel->report->getSecModuleColumnsList($secmodid["id"]);
|
|
if (!in_array($secmodid["id"], $reportModel->report->relatedmodulesarray)) {
|
|
$reportModel->report->relatedmodulesarray[] = $secmodid["id"];
|
|
}
|
|
}
|
|
}
|
|
|
|
for ($tc_i = 1; $tc_i < 4; $tc_i++) {
|
|
$timelinecol = $selected_timeline_column = "";
|
|
if ($request->has("group$tc_i") && !$request->isEmpty("group$tc_i")) {
|
|
$group = $request->get("group$tc_i");
|
|
$selected_timeline_column = $request->get("timeline_column$tc_i");
|
|
} else {
|
|
$group = $Report_Informations["Group$tc_i"];
|
|
$selected_timeline_column = $Report_Informations["timeline_columnstr$tc_i"];
|
|
}
|
|
if (isset($selected_timeline_column) && !in_array($selected_timeline_column, ["", "none", "@vlv@"])) {
|
|
$timelinecol = $reportModel->getTimeLineColumnHTML($tc_i, $selected_timeline_column);
|
|
$viewer->assign("timelinecolumn" . $tc_i . "_html", $timelinecol);
|
|
}
|
|
$RG_BLOCK = getPrimaryColumns_GroupingHTML($primary_module, $group, $reportModel->report);
|
|
|
|
if (!empty($reportModel->report->relatedmodulesarray)) {
|
|
foreach ($reportModel->report->relatedmodulesarray as $secmodid) {
|
|
$secmodule_arr = explode("x", $secmodid);
|
|
$module_id = $secmodule_arr[0];
|
|
$field_id = (isset($secmodule_arr[1]) && $secmodule_arr[1] != "" ? $secmodule_arr[1] : "");
|
|
if ($field_id != "MIF") {
|
|
// getSecondaryColumns_GroupingHTML($moduleid, $selected = "", $ogReport = "") -> return $shtml;
|
|
$RG_BLOCK .= getSecondaryColumns_GroupingHTML($secmodid, $group, $reportModel->report);
|
|
}
|
|
}
|
|
}
|
|
// ITS4YOU-UP SlOl |24.8.2015 11:09
|
|
|
|
// ITS4YOU-END
|
|
|
|
$viewer->assign("RG_BLOCK$tc_i", $RG_BLOCK);
|
|
if ($tc_i > 1) {
|
|
if ($request->has("timeline_type$tc_i") && !$request->isEmpty("timeline_type$tc_i")) {
|
|
$timeline_type = $request->get("timeline_type$tc_i");
|
|
} else {
|
|
$timeline_type = $Report_Informations["timeline_type$tc_i"];
|
|
}
|
|
$viewer->assign("timeline_type$tc_i", $timeline_type);
|
|
}
|
|
}
|
|
|
|
for ($sci = 1; $sci < 4; $sci++) {
|
|
if ($request->has("sort$sci") && !$request->isEmpty("sort$sci")) {
|
|
$sortorder = $request->get("sort$sci");
|
|
} else {
|
|
$sortorder = $Report_Informations["Sort" . $sci];
|
|
}
|
|
|
|
$sa = $sd = "";
|
|
if ($sortorder == "Descending") {
|
|
$sd = " selected='selected' ";
|
|
} elseif ($sortorder == "Ascending") {
|
|
$ss = " selected='selected' ";
|
|
}
|
|
|
|
$shtml = '<select id="Sort' . $sci . '" name="Sort' . $sci . '" class="select2 col-lg-2 inputElement" >
|
|
<option value="Ascending" ' . $sa . ' >' . vtranslate('Ascending', $moduleName) . '</option>
|
|
<option value="Descending" ' . $sd . ' >' . vtranslate('Descending', $moduleName) . '</option>
|
|
</select>';
|
|
|
|
$viewer->assign("ASCDESC" . $sci, $shtml);
|
|
}
|
|
|
|
$module_id = $primary_moduleid;
|
|
$modulename_prefix = "";
|
|
$module_array["module"] = $primary_module;
|
|
$module_array["id"] = $module_id;
|
|
$selectedmodule = $module_array["id"];
|
|
|
|
$modulename = $module_array["module"];
|
|
$modulename_lbl = getTranslatedString($modulename, $modulename);
|
|
|
|
$availModules[$module_array["id"]] = $modulename_lbl;
|
|
$modulename_id = $module_array["id"];
|
|
if (isset($selectedmodule)) {
|
|
$secondarymodule_arr = $reportModel->getReportRelatedModules($module_array["id"]);
|
|
$reportModel->getSecModuleColumnsList($selectedmodule);
|
|
$RG_BLOCK4 = sgetSummariesHTMLOptions($module_array["id"], $module_id);
|
|
$available_modules[] = ["id" => $module_id, "name" => $modulename_lbl, "checked" => "checked"];
|
|
//$secondarymodule_arrOfModule = $secondarymodule_arr[$modulename];
|
|
//foreach ($secondarymodule_arrOfModule as $key => $value) {
|
|
foreach ($secondarymodule_arr as $key => $value) {
|
|
$exploded_mid = explode("x", $value["id"]);
|
|
if (strtolower($exploded_mid[1]) != "mif") {
|
|
if (!$reportModel->report->in_multiarray($value["id"], $available_modules, "id")) {
|
|
$available_modules[] = ["id" => $value["id"], "name" => "- " . $value["name"], "checked" => ""];
|
|
}
|
|
}
|
|
}
|
|
|
|
$viewer->assign("RG_BLOCK4", $RG_BLOCK4);
|
|
}
|
|
|
|
$viewer->assign("SummariesModules", $available_modules);
|
|
$SumOptions = sgetSummariesOptions($selectedmodule);
|
|
|
|
if (empty($SumOptions)) {
|
|
$SumOptions = getTranslatedString("NO_SUMMARIES_COLUMNS", 'ITS4YouReports');
|
|
}
|
|
|
|
$SPSumOptions[$module_array["id"]][$module_array["id"]] = $SumOptions;
|
|
$viewer->assign("SUMOPTIONS", $SPSumOptions);
|
|
|
|
$summaries_orderby = "";
|
|
if ($request->has("selectedSummariesString")) {
|
|
$selectedSummariesString = $request->get("selectedSummariesString");
|
|
$selectedSummariesString = str_replace("&", "@AMPKO@", $selectedSummariesString);
|
|
$selectedSummariesArr = explode(";", $selectedSummariesString);
|
|
$RG_BLOCK6 = sgetSelectedSummariesHTMLOptions($selectedSummariesArr, $summaries_orderby);
|
|
} else {
|
|
if (!empty($Report_Informations["summaries_columns"])) {
|
|
foreach ($Report_Informations["summaries_columns"] as $key => $summaries_columns_arr) {
|
|
$selectedSummariesArr[] = $summaries_columns_arr["columnname"];
|
|
}
|
|
if ($selectedSummariesString != "") {
|
|
$selectedSummariesString = implode(";", $selectedSummariesString);
|
|
}
|
|
}
|
|
$RG_BLOCK6 = sgetSelectedSummariesHTMLOptions($selectedSummariesArr, $summaries_orderby);
|
|
}
|
|
|
|
// sum_group_columns for group filters start
|
|
$sm_arr = sgetSelectedSummariesOptions($selectedSummariesArr);
|
|
$sm_str = "";
|
|
if (!empty($sm_arr)) {
|
|
foreach ($sm_arr as $key => $opt_arr) {
|
|
if ($sm_str != "") {
|
|
$sm_str .= "(|@!@|)";
|
|
}
|
|
$sm_str .= $opt_arr["value"] . "(|@|)" . $opt_arr["text"];
|
|
}
|
|
}
|
|
$viewer->assign("sum_group_columns", $sm_str);
|
|
// sum_group_columns for group filters end
|
|
$viewer->assign("selectedSummariesString", $selectedSummariesString);
|
|
$viewer->assign("RG_BLOCK6", $RG_BLOCK6);
|
|
|
|
$RG_BLOCKx2 = [];
|
|
$all_fields_str = "";
|
|
foreach ($SPSumOptions AS $module_key => $SumOptions) {
|
|
$RG_BLOCKx2 = "";
|
|
$r_modulename = vtlib_getModuleNameById($module_key);
|
|
$r_modulename_lbl = getTranslatedString($r_modulename, $r_modulename);
|
|
|
|
foreach ($SumOptions as $SumOptions_key => $SumOptions_value) {
|
|
if (is_array($SumOptions_value)) {
|
|
foreach ($SumOptions_value AS $optgroup => $optionsdata) {
|
|
if ($RG_BLOCKx2 != "") {
|
|
$RG_BLOCKx2 .= "(|@!@|)";
|
|
}
|
|
$RG_BLOCKx2 .= $optgroup;
|
|
$RG_BLOCKx2 .= "(|@|)";
|
|
|
|
$RG_BLOCKx2 .= Zend_JSON::encode($optionsdata);
|
|
}
|
|
} else {
|
|
$RG_BLOCKx2 .= $SumOptions_value;
|
|
$RG_BLOCKx2 .= "(|@|)";
|
|
$optionsdata[] = ["value" => "none", "text" => getTranslatedString("LBL_NONE", 'ITS4YouReports')];
|
|
$RG_BLOCKx2 .= Zend_JSON::encode($optionsdata);
|
|
}
|
|
$all_fields_str .= $module_key . "(!#_ID@ID_#!)" . $r_modulename_lbl . "(!#_ID@ID_#!)" . $RG_BLOCKx2;
|
|
}
|
|
}
|
|
$viewer->assign("ALL_FIELDS_STRING", $all_fields_str);
|
|
// ITS4YOU-END 5. 3. 2014 14:50:47 SUMMARIES END
|
|
|
|
if ($request->has("summaries_orderby") && !$request->isEmpty("summaries_orderby")) {
|
|
$summaries_orderby = $request->get("summaries_orderby");
|
|
$summaries_orderby_type = $request->get("summaries_orderby_type");
|
|
} elseif (isset($Report_Informations["summaries_orderby_columns"]) && !empty($Report_Informations["summaries_orderby_columns"])) {
|
|
$summaries_orderby = $Report_Informations["summaries_orderby_columns"][0]["column"];
|
|
$summaries_orderby_type = $Report_Informations["summaries_orderby_columns"][0]["type"];
|
|
} else {
|
|
$summaries_orderby = "none";
|
|
$summaries_orderby_type = "ASC";
|
|
}
|
|
$viewer->assign("summaries_orderby", $summaries_orderby);
|
|
$viewer->assign("summaries_orderby_type", $summaries_orderby_type);
|
|
|
|
if ('summaries_matrix' === $Report_Informations['reporttype']
|
|
|| 'summaries_matrix' === $request->get('reporttype')) {
|
|
$viewer->assign('ALLOW_COLS', true);
|
|
}
|
|
|
|
return $viewer->view('ReportGrouping.tpl', $moduleName, true);
|
|
}
|
|
|
|
public static function ReportColumns(Vtiger_Request $request, $viewer) {
|
|
|
|
$adb = PearDatabase::getInstance();
|
|
$moduleName = $request->getModule();
|
|
|
|
$timelinecolumns = '';
|
|
|
|
$R_Data = $request->getAll();
|
|
$record = $request->get('record');
|
|
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
$primary_moduleid = $reportModel->getPrimaryModuleId();
|
|
$primary_module = $reportModel->getPrimaryModule();
|
|
|
|
$sortorder = "ASC";
|
|
if ($record != '') {
|
|
$BLOCK1 = getPrimaryColumnsHTML($primary_module);
|
|
|
|
$related_modules = $reportModel->getReportRelatedModules($primary_moduleid);
|
|
|
|
$selectedColumnsArray = $reportModel->getSelectedColumnListArray($record);
|
|
|
|
$BLOCK2 = $reportModel->getSelectedColumnsList($selectedColumnsArray);
|
|
$viewer->assign("BLOCK1", $BLOCK1);
|
|
$viewer->assign("BLOCK2", $BLOCK2);
|
|
|
|
// ITS4YOU-UP SlOl 13. 5. 2016 7:29:00 - sortcolsequence
|
|
$sreportsortsql = "SELECT sortcolsequence, columnname, sortorder FROM its4you_reports4you_sortcol WHERE reportid =? AND sortcolid = 4 ORDER BY sortcolsequence ASC";
|
|
$result_sort = $adb->pquery($sreportsortsql, [$record]);
|
|
$num_rows = $adb->num_rows($result_sort);
|
|
|
|
$BLOCKS3 = $BLOCKS_ORDER3 = [];
|
|
$scolrow_n = $sc_i = 1;
|
|
if ($num_rows > 0) {
|
|
$sarray = $reportModel->getSelectedColumnListArray($record);
|
|
$BLOCK3 = $reportModel->getSelectedColumnsList($sarray);
|
|
while ($sc_row = $adb->fetchByAssoc($result_sort)) {
|
|
$BLOCKS3[$sc_i] = $reportModel->getSelectedColumnsList($sarray, $sc_row["columnname"]);
|
|
$BLOCKS_ORDER3[$sc_i] = $sc_row["sortorder"];
|
|
$sc_i++;
|
|
}
|
|
$scolrow_n = ITS4YouReports_Functions_Helper::count($BLOCKS3);
|
|
} else {
|
|
$BLOCK3 = $BLOCK2;
|
|
}
|
|
$viewer->assign("BLOCK3", $BLOCK3);
|
|
$viewer->assign("BLOCKS3", $BLOCKS3);
|
|
$viewer->assign("BLOCKS_ORDER3", $BLOCKS_ORDER3);
|
|
$viewer->assign("scolrow_n", $scolrow_n);
|
|
// ITS4YOU-END
|
|
|
|
$BLOCK4 = "";
|
|
$viewer->assign("BLOCK4", $BLOCK4);
|
|
$columns_limit = $reportModel->report->reportinformations["columns_limit"];
|
|
} else {
|
|
$BLOCK1 = getPrimaryColumnsHTML($primary_module);
|
|
if (!empty($related_modules[$primary_module])) {
|
|
foreach ($related_modules[$primary_module] as $key => $value) {
|
|
$BLOCK1 .= $reportModel->getSecondaryColumnsHTML($R_Data["secondarymodule_" . $value]);
|
|
}
|
|
}
|
|
$viewer->assign("BLOCK1", $BLOCK1);
|
|
|
|
$columns_limit = "20";
|
|
}
|
|
$viewer->assign("COLUMNS_LIMIT", $columns_limit);
|
|
|
|
$timelinecolumns .= '<input type="radio" name="TimeLineColumn" value="DAYS" checked>' . vtranslate('TL_DAYS') . ' ';
|
|
$timelinecolumns .= '<input type="radio" name="TimeLineColumn" value="WEEK" >' . vtranslate('TL_WEEKS') . ' ';
|
|
$timelinecolumns .= '<input type="radio" name="TimeLineColumn" value="MONTH" >' . vtranslate('TL_MONTHS') . ' ';
|
|
$timelinecolumns .= '<input type="radio" name="TimeLineColumn" value="YEAR" >' . vtranslate('TL_YEARS') . ' ';
|
|
$timelinecolumns .= '<input type="radio" name="TimeLineColumn" value="QUARTER" >' . vtranslate('TL_QUARTERS') . ' ';
|
|
$viewer->assign("TIMELINE_FIELDS", $timelinecolumns);
|
|
|
|
// ITS4YOU-CR SlOl 19. 2. 2014 16:30:20
|
|
$SPSumOptions = $availModules = [];
|
|
$RC_BLOCK0 = "";
|
|
|
|
$viewer->assign("availModules", $availModules);
|
|
$viewer->assign("ALL_FIELDS_STRING", $RC_BLOCK0);
|
|
// ITS4YOU-END 19. 2. 2014 16:30:23
|
|
|
|
return $viewer->view('ReportColumns.tpl', $moduleName, true);
|
|
}
|
|
|
|
public static function ReportColumnsTotal(Vtiger_Request $request, $viewer) {
|
|
$adb = PearDatabase::getInstance();
|
|
$moduleName = $request->getModule();
|
|
$layout = Vtiger_Viewer::getDefaultLayoutName();
|
|
|
|
$R_Data = $request->getAll();
|
|
$record = $request->get('record');
|
|
|
|
$viewer->assign("MODULE", $moduleName);
|
|
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
$Report_Informations = $reportModel->getReportInformations();
|
|
|
|
$LBL_INFORMATIONS_4YOU = vtranslate("LBL_STEP6_INFO", $moduleName);
|
|
$viewer->assign("LBL_INFORMATIONS_4YOU", $LBL_INFORMATIONS_4YOU);
|
|
|
|
$Objects = [];
|
|
|
|
$curl_array = [];
|
|
if (isset($R_Data["curl"])) {
|
|
$curl = $R_Data["curl"];
|
|
$curl_array = explode('$_@_$', $curl);
|
|
$selectedColumnsString = str_replace("@AMPKO@", "&", $R_Data["selectedColumnsStr"]);
|
|
$R_Objects = explode("<_@!@_>", $selectedColumnsString);
|
|
} else {
|
|
$curl_array = $reportModel->getSelectedColumnsToTotal($record);
|
|
$curl = implode('$_@_$', $curl_array);
|
|
$selectedColumnsString = str_replace("@AMPKO@", "&", $Report_Informations["selectedColumnsString"]);
|
|
$default_charset = vglobal("default_charset");
|
|
$R_Objects = explode(";", html_entity_decode($selectedColumnsString, ENT_QUOTES, $default_charset));
|
|
}
|
|
$viewer->assign("CURL", $curl);
|
|
|
|
$Objects = sgetNewColumnstoTotalHTMLScript($R_Objects);
|
|
$reportModel->setColumnsSummary($Objects);
|
|
|
|
$BLOCK1 = $reportModel->sgetNewColumntoTotalSelected($record, $R_Objects, $curl_array);
|
|
|
|
$viewer->assign("RECORDID", $record);
|
|
$viewer->assign("BLOCK1", $BLOCK1);
|
|
|
|
$viewer->assign("display_over", $Report_Informations["display_over"]);
|
|
$viewer->assign("display_under", $Report_Informations["display_under"]);
|
|
|
|
//added to avoid displaying "No data avaiable to total" when using related modules in report.
|
|
$rows_count = 0;
|
|
$rows_count = ITS4YouReports_Functions_Helper::count($BLOCK1);
|
|
$viewer->assign("ROWS_COUNT", $rows_count);
|
|
|
|
if($layout == "v7"){
|
|
$cc_populated = false;
|
|
if ($request->has("cc_populated")) {
|
|
$viewer->assign("ACT_MODE", $request->get('mode'));
|
|
$columns_options = ITS4YouReports::getColumnsOptions($request);
|
|
$viewer->assign("COLUMNS_OPTIONS", $columns_options);
|
|
|
|
$cc_populated = $request->get("cc_populated");
|
|
|
|
if (!empty($record)) {
|
|
$viewer->assign("CUSTOM_CALCULATIONS", $reportModel->report->reportinformations["cc_array"]);
|
|
}
|
|
}
|
|
$viewer->assign("cc_populated", $cc_populated);
|
|
} else {
|
|
$viewer->assign("cc_populated",$request->get('cc_populated'));
|
|
if($record=="" && $request->has("cc_populated")!=true){
|
|
$viewer->assign("ACT_MODE",$request->get('mode'));
|
|
$columns_options = ITS4YouReports::getColumnsOptions($request);
|
|
$viewer->assign("COLUMNS_OPTIONS",$columns_options);
|
|
}
|
|
}
|
|
|
|
if ('v7'===$layout) {
|
|
$customCalculationsInfo = vtranslate('LBL_STEP61_INFO',$moduleName);
|
|
$breaks = array('<br />','<br>','<br/>');
|
|
$customCalculationsInfo = str_replace($breaks, '', $customCalculationsInfo);
|
|
} else {
|
|
$customCalculationsInfo = vtranslate('LBL_STEP61_INFO',$moduleName);
|
|
}
|
|
$viewer->assign('CUSTOM_CALCULATIONS_INFO', $customCalculationsInfo);
|
|
|
|
return $viewer->view('ReportColumnsTotal.tpl', $moduleName, true);
|
|
}
|
|
|
|
// ITS4YOU-CR SlOl 16. 5. 2016 13:35:01
|
|
public static function ReportCustomCalculations(Vtiger_Request $request, $viewer) {
|
|
$layout = Vtiger_Viewer::getDefaultLayoutName();
|
|
$moduleName = $request->getModule();
|
|
|
|
$record = $request->get('record');
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
|
|
$columns_options = ITS4YouReports::getColumnsOptions($request);
|
|
$viewer->assign("COLUMNS_OPTIONS", $columns_options);
|
|
|
|
$custom_calculations = $reportModel->report->reportinformations["cc_array"];
|
|
$viewer->assign("CUSTOM_CALCULATIONS", $custom_calculations);
|
|
|
|
return $viewer->view('ReportCustomCalculations.tpl', $moduleName, true);
|
|
}
|
|
|
|
// ITS4YOU-END
|
|
|
|
public static function ReportLabels(Vtiger_Request $request, $viewer) {
|
|
$adb = PearDatabase::getInstance();
|
|
$moduleName = $request->getModule();
|
|
|
|
$curl = '';
|
|
|
|
$R_Data = $request->getAll();
|
|
$record = $request->get('record');
|
|
|
|
$viewer->assign("MODULE", $moduleName);
|
|
|
|
// ITS4YOU-CR SlOl 10. 9. 2013 16:13:47
|
|
$LBL_INFORMATIONS_4YOU = vtranslate("LBL_STEP7_INFO", $moduleName);
|
|
$viewer->assign("LBL_INFORMATIONS_4YOU", $LBL_INFORMATIONS_4YOU);
|
|
// ITS4YOU-END 10. 9. 2013 16:13:50
|
|
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
$Report_Informations = $reportModel->getReportInformations();
|
|
|
|
$Objects = [];
|
|
|
|
$selected_columns_array = $selectedSummaries_array = $curl_array = [];
|
|
|
|
// selected labels from url
|
|
$default_charset = vglobal("default_charset");
|
|
$lbl_url_string = html_entity_decode($R_Data["lblurl"], 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, 'hidden_') === false) {
|
|
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_url_selected["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_url_selected["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_url_selected["CT"][$lbl_key] = $lbl_value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// COLUMNS labeltype SC
|
|
if (isset($R_Data["selectedColumnsStr"])) {
|
|
$selectedColumnsString = html_entity_decode($R_Data["selectedColumnsStr"], ENT_QUOTES, $default_charset);
|
|
$selectedColumnsString = str_replace("@AMPKO@", "&", $selectedColumnsString);
|
|
$selected_columns_array = explode("<_@!@_>", $selectedColumnsString);
|
|
} else {
|
|
$selectedColumnsString = html_entity_decode($Report_Informations["selectedColumnsString"], ENT_QUOTES, $default_charset);
|
|
$selected_columns_array = explode(";", $selectedColumnsString);
|
|
}
|
|
|
|
for ($gi = 1; $gi < 4; $gi++) {
|
|
if ($request->has("group$gi") && !$request->isEmpty("group$gi")) {
|
|
$group_col = $request->get("group$gi");
|
|
if ($group_col != "") {
|
|
$selected_columns_array[] = $group_col;
|
|
}
|
|
}
|
|
}
|
|
//ITS4YouReports::sshow($lbl_url_selected);
|
|
|
|
$labels_html["SC"] = $reportModel->report->getLabelsHTML($selected_columns_array, "SC", $lbl_url_selected);
|
|
// SUMMARIES labeltype SM
|
|
if (isset($R_Data["selectedSummariesString"])) {
|
|
$selectedColumnsString = trim($R_Data["selectedSummariesString"], ";");
|
|
$selectedColumnsString = str_replace("@AMPKO@", "&", $selectedColumnsString);
|
|
$selectedSummaries_array = explode(";", $selectedColumnsString);
|
|
} else {
|
|
if (isset($Report_Informations["summaries_columns"])) {
|
|
foreach ($Report_Informations["summaries_columns"] as $key => $sum_arr) {
|
|
$selectedSummaries_array[] = $sum_arr["columnname"];
|
|
}
|
|
}
|
|
}
|
|
$labels_html["SM"] = $reportModel->report->getLabelsHTML($selectedSummaries_array, "SM", $lbl_url_selected);
|
|
|
|
$viewer->assign("labels_html", $labels_html);
|
|
|
|
$viewer->assign("LABELS", $curl);
|
|
|
|
$viewer->assign("RECORDID", $record);
|
|
|
|
$viewer->assign("display_over", $Report_Informations["display_over"]);
|
|
$viewer->assign("display_under", $Report_Informations["display_under"]);
|
|
|
|
//added to avoid displaying "No data avaiable to total" when using related modules in report.
|
|
$rows_count = ITS4YouReports_Functions_Helper::count($labels_html);
|
|
foreach ($labels_html as $key => $labels_type_arr) {
|
|
$rows_count += ITS4YouReports_Functions_Helper::count($labels_type_arr);
|
|
}
|
|
$viewer->assign("ROWS_COUNT", $rows_count);
|
|
|
|
return $viewer->view('ReportLabels.tpl', $moduleName, true);
|
|
}
|
|
|
|
public static function ReportFilters(Vtiger_Request $request, $viewer) {
|
|
|
|
global $default_charset;
|
|
require_once('modules/ITS4YouReports/FilterUtils.php');
|
|
|
|
$adb = PearDatabase::getInstance();
|
|
$moduleName = $request->getModule();
|
|
|
|
$R_Data = $request->getAll();
|
|
$record = $request->get('record');
|
|
|
|
$viewer->assign("MODULE", $moduleName);
|
|
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
$Report_Informations = $reportModel->getReportInformations();
|
|
|
|
$primary_module = $reportModel->getPrimaryModule();
|
|
$primary_moduleid = $reportModel->getPrimaryModuleId();
|
|
|
|
$current_user = Users_Record_Model::getCurrentUserModel();
|
|
$is_admin = is_admin($current_user);
|
|
|
|
$viewer->assign("DATEFORMAT", $current_user->date_format);
|
|
$viewer->assign('USER_DATE_FORMAT', $current_user->date_format);
|
|
$viewer->assign("JS_DATEFORMAT", parse_calendardate(vtranslate('NTC_DATE_FORMAT')));
|
|
|
|
// ITS4YOU-CR SlOl 10. 9. 2013 16:13:47
|
|
$LBL_INFORMATIONS_4YOU = vtranslate("LBL_STEP7_INFO", $moduleName);
|
|
$viewer->assign("LBL_INFORMATIONS_4YOU", $LBL_INFORMATIONS_4YOU);
|
|
// ITS4YOU-END 10. 9. 2013 16:13:50
|
|
|
|
$BLOCK1 = "<option selected value='Not Accessible'>" . vtranslate('LBL_NOT_ACCESSIBLE') . "</option>";
|
|
|
|
$user_privileges_path = 'user_privileges/user_privileges_' . $current_user->id . '.php';
|
|
if (file_exists($user_privileges_path)) {
|
|
require($user_privileges_path);
|
|
}
|
|
|
|
$related_modules = $reportModel->getReportRelatedModulesList();
|
|
$advft_criteria = array();
|
|
|
|
if (!empty($record)) {
|
|
$reportModel->getSelectedStandardCriteria($record);
|
|
|
|
$stdselectedcolumn = $reportModel->getSTDSelectedColumn();
|
|
$relatedmodulesstring = $reportModel->getRelatedModulesString();
|
|
|
|
$BLOCK1 .= getITSPrimaryStdFilterHTML(ITS4YouReports::getStoredITS4YouReport(), $primary_module, $stdselectedcolumn);
|
|
$BLOCK1 .= getITSSecondaryStdFilterHTML(ITS4YouReports::getStoredITS4YouReport(), $relatedmodulesstring, $stdselectedcolumn);
|
|
|
|
//added to fix the ticket #5117
|
|
|
|
$selectedcolumnvalue = '"' . $stdselectedcolumn . '"';
|
|
if (!$is_admin && isset($stdselectedcolumn) && strpos($BLOCK1, $selectedcolumnvalue) === false) {
|
|
$viewer->assign("BLOCK1_STD", $BLOCK1);
|
|
}
|
|
|
|
$stdselectedfilter = $reportModel->getSTDSelectedFilter();
|
|
|
|
$startdate = $reportModel->getStartDate();
|
|
$enddate = $reportModel->getEndDate();
|
|
|
|
if ($startdate != "") {
|
|
$viewer->assign("STARTDATE_STD", getValidDisplayDate($startdate));
|
|
}
|
|
|
|
if ($enddate != "") {
|
|
$viewer->assign("ENDDATE_STD", getValidDisplayDate($enddate));
|
|
}
|
|
|
|
$reportModel->getGroupFilterList($record);
|
|
$reportModel->getAdvancedFilterList($record);
|
|
$advft_criteria = $reportModel->getSelectedAdvancedFilter($record);
|
|
|
|
} else {
|
|
$primary_module = $R_Data["reportmodule"];
|
|
|
|
$BLOCK1 .= getITSPrimaryStdFilterHTML(ITS4YouReports::getStoredITS4YouReport(), $primary_module);
|
|
if (!empty($related_modules[$primary_module])) {
|
|
foreach ($related_modules[$primary_module] as $key => $value) {
|
|
$BLOCK1 .= getITSSecondaryStdFilterHTML(ITS4YouReports::getStoredITS4YouReport(), $R_Data["secondarymodule_" . $value]);
|
|
}
|
|
}
|
|
$viewer->assign("BLOCK1_STD", $BLOCK1);
|
|
|
|
$stdselectedfilter = "";
|
|
}
|
|
|
|
$BLOCKCRITERIA = $reportModel->getSelectedStdFilterCriteria($stdselectedfilter);
|
|
$viewer->assign("BLOCKCRITERIA_STD", $BLOCKCRITERIA);
|
|
|
|
$BLOCKJS = $reportModel->getCriteriaJS();
|
|
$viewer->assign("BLOCKJS_STD", $BLOCKJS);
|
|
|
|
///AdvancedFilter.php
|
|
|
|
if('Detail' !== $R_Data['view']) {
|
|
$summaries_criteria = $reportModel->getSummariesCriteria();
|
|
$viewer->assign("SUMMARIES_CRITERIA", $summaries_criteria);
|
|
}
|
|
|
|
$viewer->assign("CRITERIA_GROUPS", $advft_criteria);
|
|
$viewer->assign("EMPTY_CRITERIA_GROUPS", empty($advft_criteria));
|
|
|
|
if ($record != "") {
|
|
$mode = 'edit';
|
|
} else {
|
|
$mode = 'create';
|
|
}
|
|
$viewer->assign('MODE', $mode);
|
|
|
|
$FILTER_OPTION = getAdvCriteriaHTML();
|
|
$viewer->assign("FOPTION", $FILTER_OPTION);
|
|
$secondarymodule = '';
|
|
$secondarymodules = [];
|
|
|
|
if (!empty($related_modules[$primary_module])) {
|
|
foreach ($related_modules[$primary_module] as $key => $value) {
|
|
if (isset($R_Data['secondarymodule_' . $value])) {
|
|
$secondarymodules [] = $R_Data['secondarymodule_' . $value['id']];
|
|
}
|
|
}
|
|
}
|
|
|
|
$reportModel->getPriModuleColumnsList($primary_module);
|
|
if (!empty($related_modules[$primary_module])) {
|
|
foreach ($related_modules[$primary_module] as $key => $value) {
|
|
$secondarymodules[] = $value['id'];
|
|
}
|
|
$secondary_modules_str = implode(":", $secondarymodules);
|
|
}
|
|
$reportModel->getSecModuleColumnsList($secondary_modules_str);
|
|
|
|
if ($mode != "ChangeSteps") {
|
|
$Options = getPrimaryColumns($Options, $reportModel->report->primarymodule, true, $reportModel->report);
|
|
|
|
$secondarymodules = [];
|
|
if (!empty($reportModel->report->related_modules[$reportModel->report->primarymodule])) {
|
|
foreach ($reportModel->report->related_modules[$reportModel->report->primarymodule] as $key => $value) {
|
|
$exploded_mid = explode("x", $value["id"]);
|
|
if (strtolower($exploded_mid[1]) != "mif") {
|
|
$secondarymodules[] = $value["id"];
|
|
}
|
|
}
|
|
}
|
|
$secondarymodules_str = implode(":", $secondarymodules);
|
|
$Options_sec = getSecondaryColumns([], $secondarymodules_str, $reportModel->report);
|
|
|
|
foreach ($Options_sec as $moduleid => $sec_options) {
|
|
$Options = array_merge($Options, $sec_options);
|
|
}
|
|
|
|
// ITS4YOU-CR SlOl 16. 9. 2015 10:49:04 OTHER COLUMNS
|
|
if (isset($R_Data["selectedColumnsStr"]) && $R_Data["selectedColumnsStr"] != "") {
|
|
$selectedColumnsStr = $R_Data["selectedColumnsStr"];
|
|
$selectedColumnsStringDecoded = html_entity_decode($selectedColumnsStr, ENT_QUOTES, $default_charset);
|
|
$selectedColumns_arr = explode("<_@!@_>", $selectedColumnsStringDecoded);
|
|
} else {
|
|
$selectedColumnsStr = $reportModel->report->reportinformations['selectedColumnsString'];
|
|
$selectedColumnsStringDecoded = html_entity_decode($selectedColumnsStr, ENT_QUOTES, $default_charset);
|
|
//$selectedColumnsStringDecoded = $selectedColumnsStr;
|
|
$selectedColumns_arr = explode(';', trim($selectedColumnsStringDecoded, ';'));
|
|
}
|
|
|
|
if (!empty($selectedColumns_arr)) {
|
|
$opt_label = vtranslate('LBL_Filter_SelectedColumnsGroup', 'ITS4YouReports');
|
|
|
|
foreach ($selectedColumns_arr as $sc_key => $sc_col_str) {
|
|
if ($sc_col_str != "") {
|
|
$in_options = false;
|
|
foreach ($Options as $opt_group => $opt_array) {
|
|
if ($reportModel->report->in_multiarray($sc_col_str, $opt_array, "value") === true) {
|
|
$in_options = true;
|
|
continue;
|
|
}
|
|
}
|
|
if ($in_options) {
|
|
continue;
|
|
} else {
|
|
$Options[$opt_label][] = ["value" => $sc_col_str, "text" => $reportModel->report->getColumnStr_Label($sc_col_str)];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// ITS4YOU-END
|
|
|
|
foreach ($Options AS $optgroup => $optionsdata) {
|
|
if ($COLUMNS_BLOCK_JSON != "") {
|
|
$COLUMNS_BLOCK_JSON .= "(|@!@|)";
|
|
}
|
|
$COLUMNS_BLOCK_JSON .= $optgroup;
|
|
$COLUMNS_BLOCK_JSON .= "(|@|)";
|
|
$COLUMNS_BLOCK_JSON .= Zend_JSON::encode($optionsdata);
|
|
}
|
|
$viewer->assign("COLUMNS_BLOCK_JSON", $COLUMNS_BLOCK_JSON);
|
|
|
|
$adv_sel_fields = $reportModel->getAdvSelFields();
|
|
|
|
$sel_fields = Zend_Json::encode($adv_sel_fields);
|
|
$viewer->assign("SEL_FIELDS", $sel_fields);
|
|
|
|
$default_charset = vglobal("default_charset");
|
|
$std_filter_columns = $reportModel->getStdFilterColumns();
|
|
$std_filter_columns_js = implode("<%jsstdjs%>", $std_filter_columns);
|
|
$std_filter_columns_js = html_entity_decode($std_filter_columns_js, ENT_QUOTES, $default_charset);
|
|
|
|
$viewer->assign("std_filter_columns", $std_filter_columns_js);
|
|
|
|
$Date_Filter_Values = $reportModel->getDateFilterValues();
|
|
|
|
// ITS4YOU-UP SlOl 19. 11. 2015 10:46:35
|
|
foreach ($Date_Filter_Values as $std_opt => $std_val) {
|
|
$Date_Filter_Values[$std_opt] = str_replace("\'", "`", vtranslate($std_val, $reportModel->report->currentModule));
|
|
}
|
|
// ITS4YOU-END
|
|
$std_filter_criteria = Zend_Json::encode($Date_Filter_Values);
|
|
$viewer->assign("std_filter_criteria", $std_filter_criteria);
|
|
}
|
|
$rel_fields = $reportModel->getAdvRelFields();
|
|
$viewer->assign("REL_FIELDS", Zend_Json::encode($rel_fields));
|
|
/*NEWS*/
|
|
$primary_module = $reportModel->report->primarymodule;
|
|
$primary_moduleid = $reportModel->report->primarymoduleid;
|
|
|
|
// NEW ADVANCE FILTERS START
|
|
$reportModel->report->getGroupFilterList($reportModel->report->record);
|
|
$reportModel->report->getAdvancedFilterList($reportModel->report->record);
|
|
if('Detail' !== $R_Data['view']) {
|
|
$reportModel->report->getSummariesFilterList($reportModel->report->record);
|
|
}
|
|
|
|
$sel_fields = Zend_Json::encode($reportModel->report->adv_sel_fields);
|
|
$viewer->assign("SEL_FIELDS", $sel_fields);
|
|
if (isset($_REQUEST["reload"])) {
|
|
$criteria_groups = $reportModel->report->getRequestCriteria($sel_fields);
|
|
} else {
|
|
$criteria_groups = $reportModel->report->advft_criteria;
|
|
}
|
|
|
|
$viewer->assign("CRITERIA_GROUPS", $criteria_groups);
|
|
$viewer->assign("EMPTY_CRITERIA_GROUPS", empty($criteria_groups));
|
|
|
|
$viewer->assign("SUMMARIES_CRITERIA", $reportModel->report->summaries_criteria);
|
|
$FILTER_OPTION = getAdvCriteriaHTML();
|
|
$viewer->assign("FOPTION", $FILTER_OPTION);
|
|
|
|
$COLUMNS_BLOCK_JSON = $reportModel->report->getAdvanceFilterOptionsJSON($primary_module);
|
|
$viewer->assign("COLUMNS_BLOCK", $COLUMNS_BLOCK);
|
|
if ($mode != "ajax") {
|
|
//echo "<div class='none' style='display:none;' id='filter_columns'>" . $COLUMNS_BLOCK_JSON . "</div>";
|
|
//echo "<input type='hidden' name='filter_columns' id='filter_columns' value='".$COLUMNS_BLOCK_JSON."' />";
|
|
$viewer->assign("filter_columns", $COLUMNS_BLOCK_JSON);
|
|
$sel_fields = Zend_Json::encode($reportModel->report->adv_sel_fields);
|
|
$viewer->assign("SEL_FIELDS", str_replace("'","`",$sel_fields));
|
|
global $default_charset;
|
|
$std_filter_columns = $reportModel->report->getStdFilterColumns();
|
|
$std_filter_columns_js = implode("<%jsstdjs%>", $std_filter_columns);
|
|
$std_filter_columns_js = html_entity_decode($std_filter_columns_js, ENT_QUOTES, $default_charset);
|
|
$viewer->assign("std_filter_columns", $std_filter_columns_js);
|
|
// ITS4YOU-UP SlOl 19. 11. 2015 10:46:35
|
|
$Date_Filter_Values = $reportModel->report->Date_Filter_Values;
|
|
foreach ($Date_Filter_Values as $std_opt => $std_val) {
|
|
$Date_Filter_Values[$std_opt] = str_replace("\'", "`", vtranslate($std_val, $reportModel->report->currentModule));
|
|
}
|
|
// ITS4YOU-END
|
|
$std_filter_criteria = Zend_Json::encode($Date_Filter_Values);
|
|
$viewer->assign("std_filter_criteria", $std_filter_criteria);
|
|
}
|
|
$rel_fields = $reportModel->report->adv_rel_fields;
|
|
$rel_fields = Zend_Json::encode($rel_fields);
|
|
$rel_fields = str_replace("'", "\'", $rel_fields);
|
|
$viewer->assign("REL_FIELDS", $rel_fields);
|
|
// NEW ADVANCE FILTERS END
|
|
|
|
$BLOCKJS = $reportModel->getCriteriaJS();
|
|
$viewer->assign("BLOCKJS_STD", $BLOCKJS);
|
|
/*NEWE*/
|
|
|
|
// ITS4YOU-CR SlOl 23. 11. 2015 14:42:35
|
|
$viewer->assign("current_mk_time", mktime(0, 0, 0, date("m"), date("d"), date("Y")));
|
|
global $current_user;
|
|
$viewer->assign("user_date_format", $current_user->date_format);
|
|
// ITS4YOU-CR SlOl 9. 6. 2016 7:04:45
|
|
$viewer->assign("fld_date_options", Zend_Json::encode(ITS4YouReports::$fld_date_options));
|
|
// ITS4YOU-END
|
|
|
|
$qfForJson = array();
|
|
if(!empty($reportModel->report->reportinformations['quick_filters'])) {
|
|
foreach($reportModel->report->reportinformations['quick_filters'] as $qfColumn) {
|
|
$qfForJson[] = $qfColumn;
|
|
}
|
|
}
|
|
$viewer->assign("QF_COLUMNS_BLOCK_JSON",Zend_Json::encode($qfForJson));
|
|
|
|
return $viewer->view('ReportFilters.tpl', $moduleName, true);
|
|
}
|
|
|
|
public static function ReportFiltersAjax(Vtiger_Request $request, $viewer) {
|
|
|
|
global $default_charset;
|
|
$BLOCK_R = $BLOCK1 = $BLOCK2 = '';
|
|
|
|
$Options = [];
|
|
$secondarymodule = '';
|
|
$secondarymodules = [];
|
|
|
|
$record = $request->get('record');
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
|
|
$primary_moduleid = $request->get("primarymodule");
|
|
$primary_module = vtlib_getModuleNameById($primary_moduleid);
|
|
|
|
//$reportModel->report->init_list_for_module($primary_module);
|
|
$related_modules = $reportModel->getReportRelatedModulesList();
|
|
|
|
if (!empty($related_modules[$primary_module])) {
|
|
foreach ($related_modules[$primary_module] as $key => $value) {
|
|
$exploded_mid = explode("x", $value["id"]);
|
|
if (strtolower($exploded_mid[1]) != "mif") {
|
|
$secondarymodules[] = $value["id"];
|
|
}
|
|
}
|
|
}
|
|
$Options = $reportModel->getPrimaryColumns($Options, $primary_module, true);
|
|
// $Options = array_merge(array(vtranslate("LBL_NONE")=>array("0"=>array("value"=>"","text"=>vtranslate("LBL_NONE"),))), $p_options);
|
|
|
|
$secondarymodules_str = implode(":", $secondarymodules);
|
|
|
|
$reportModel->getSecModuleColumnsList($secondarymodules_str);
|
|
$Options_sec = $reportModel->getSecondaryColumns([], $secondarymodules_str);
|
|
|
|
foreach ($Options_sec as $moduleid => $sec_options) {
|
|
$Options = array_merge($Options, $sec_options);
|
|
}
|
|
|
|
// ITS4YOU-CR SlOl 16. 9. 2015 10:49:04 OTHER COLUMNS
|
|
if ($request->has("selectedColumnsStr") && $request->get("selectedColumnsStr") != "") {
|
|
$selectedColumnsStr = $request->get("selectedColumnsStr");
|
|
$selectedColumnsStringDecoded = html_entity_decode($selectedColumnsStr, ENT_QUOTES, $default_charset);
|
|
$selectedColumns_arr = explode("<_@!@_>", $selectedColumnsStringDecoded);
|
|
} else {
|
|
$selectedColumnsStr = $reportModel->report->reportinformations["selectedColumnsString"];
|
|
$selectedColumnsStringDecoded = html_entity_decode($selectedColumnsStr, ENT_QUOTES, $default_charset);
|
|
$selectedColumns_arr = explode(";", $selectedColumnsStringDecoded);
|
|
}
|
|
if (!empty($selectedColumns_arr)) {
|
|
$opt_label = vtranslate("LBL_Filter_SelectedColumnsGroup", "ITS4YouReports");
|
|
foreach ($selectedColumns_arr as $sc_key => $sc_col_str) {
|
|
if ($sc_col_str != "") {
|
|
$in_options = false;
|
|
foreach ($Options as $opt_group => $opt_array) {
|
|
if ($reportModel->report->in_multiarray($sc_col_str, $opt_array, "value") === true) {
|
|
$in_options = true;
|
|
continue;
|
|
}
|
|
}
|
|
if ($in_options) {
|
|
continue;
|
|
} else {
|
|
$Options[$opt_label][] = ["value" => $sc_col_str, "text" => $reportModel->report->getColumnStr_Label($sc_col_str)];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// ITS4YOU-END
|
|
|
|
foreach ($Options AS $optgroup => $optionsdata) {
|
|
if ($BLOCK1 != "") {
|
|
$BLOCK1 .= "(|@!@|)";
|
|
}
|
|
$BLOCK1 .= $optgroup;
|
|
$BLOCK1 .= "(|@|)";
|
|
$BLOCK1 .= Zend_JSON::encode($optionsdata);
|
|
}
|
|
$BLOCK_R .= $BLOCK1;
|
|
|
|
// ITS4YOU-CR SlOl 21. 3. 2014 10:20:17 summaries columns for frouping filters start
|
|
$selectedSummariesString = $request->get("selectedSummariesString");
|
|
$selectedSummariesArr = explode(";", $selectedSummariesString);
|
|
$sm_arr = sgetSelectedSummariesOptions($selectedSummariesArr);
|
|
$sm_str = "";
|
|
foreach ($sm_arr as $key => $opt_arr) {
|
|
if ($sm_str != "") {
|
|
$sm_str .= "(|@!@|)";
|
|
}
|
|
$sm_str .= $opt_arr["value"] . "(|@|)" . $opt_arr["text"];
|
|
}
|
|
$BLOCK_S = $sm_str;
|
|
$BLOCK_R .= "__BLOCKS__" . $BLOCK_S;
|
|
|
|
$Report_Informations = $reportModel->getReportInformations();
|
|
if (isset($Report_Informations["advft_criteria"]) && $Report_Informations["advft_criteria"] != "") {
|
|
$advft_criteria = $Report_Informations["advft_criteria"];
|
|
} else {
|
|
$advft_criteria = "";
|
|
}
|
|
$BLOCK_R .= "__ADVFTCRI__" . Zend_JSON::encode($advft_criteria);
|
|
|
|
$adv_sel_fields = $reportModel->getAdvSelFields();
|
|
$sel_fields = Zend_Json::encode($adv_sel_fields);
|
|
$BLOCK_R .= "__ADVFTCRI__" . $sel_fields;
|
|
|
|
$default_charset = vglobal("default_charset");
|
|
$std_filter_columns = $reportModel->getStdFilterColumns();
|
|
$std_filter_columns_js = implode("<%jsstdjs%>", $std_filter_columns);
|
|
$std_filter_columns_js = html_entity_decode($std_filter_columns_js, ENT_QUOTES, $default_charset);
|
|
$BLOCK_R .= "__ADVFTCRI__" . $std_filter_columns_js;
|
|
|
|
return $BLOCK_R;
|
|
}
|
|
|
|
public static function ReportSharing(Vtiger_Request $request, $viewer) {
|
|
|
|
$moduleName = $request->getModule();
|
|
$record = $request->get('record');
|
|
$R_Data = $request->getAll();
|
|
$viewer->assign("MODULE", $moduleName);
|
|
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
|
|
$current_user = Users_Record_Model::getCurrentUserModel();
|
|
|
|
$Report_Informations = $reportModel->report->reportinformations;
|
|
|
|
$LBL_INFORMATIONS_4YOU = vtranslate("LBL_STEP8_INFO", $moduleName);
|
|
$viewer->assign("LBL_INFORMATIONS_4YOU", $LBL_INFORMATIONS_4YOU);
|
|
|
|
// ITS4YOU-UP SlOl 26. 4. 2013 9:47:59
|
|
$template_owners = get_user_array(false);
|
|
if (isset($Report_Informations["owner"]) && $Report_Informations["owner"] != "") {
|
|
$selected_owner = $Report_Informations["owner"];
|
|
} else {
|
|
$selected_owner = $current_user->id;
|
|
}
|
|
$viewer->assign("TEMPLATE_OWNERS", $template_owners);
|
|
$owner = (isset($R_Data['template_owner']) && $R_Data['template_owner'] != '') ? $R_Data['template_owner'] : $selected_owner;
|
|
$viewer->assign("TEMPLATE_OWNER", $owner);
|
|
|
|
$viewer->assign('SHARINGTYPES', ITS4YouReports::getSharingTypes());
|
|
|
|
if ('custom_report' === $request->get('reporttype')) {
|
|
$sharingtype = 'private';
|
|
} else {
|
|
$sharingtype = ITS4YouReports::getDefaultSharingType();
|
|
}
|
|
if (isset($R_Data['sharing']) && $R_Data['sharing'] != '') {
|
|
$sharingtype = $R_Data['sharing'];
|
|
} elseif (isset($Report_Informations["sharing"]) && $Report_Informations["sharing"] != "") {
|
|
$sharingtype = $Report_Informations["sharing"];
|
|
}
|
|
|
|
$viewer->assign("SHARINGTYPE", $sharingtype);
|
|
|
|
$sharingMemberArray = [];
|
|
if (isset($R_Data['sharingSelectedColumns']) && $R_Data['sharingSelectedColumns'] != '') {
|
|
$sharingMemberArray = explode("|", trim($R_Data['sharingSelectedColumns'], "|"));
|
|
} elseif (isset($Report_Informations["members_array"]) && !empty($Report_Informations["members_array"])) {
|
|
$sharingMemberArray = $Report_Informations["members_array"];
|
|
}
|
|
$sharingMemberArray = array_unique($sharingMemberArray);
|
|
$viewer->assign("RECIPIENTS", $sharingMemberArray);
|
|
|
|
$viewer->assign('ROLES', Settings_Roles_Record_Model::getAll());
|
|
|
|
$visiblecriteria = $reportModel->getVisibleCriteria();
|
|
$viewer->assign("VISIBLECRITERIA", $visiblecriteria);
|
|
|
|
$currentUser = Users_Record_Model::getCurrentUserModel();
|
|
$viewer->assign('CURRENT_USER', $currentUser);
|
|
|
|
$layout = Vtiger_Viewer::getDefaultLayoutName();
|
|
if ('v7' !== $layout) {
|
|
$ITS4YouReports = ITS4YouReports::getStoredITS4YouReport();
|
|
$viewer = $ITS4YouReports->getSelectedValuesToSmarty($viewer, 'ReportSharing');
|
|
}
|
|
|
|
return $viewer->view('ReportSharing.tpl', $moduleName, true);
|
|
}
|
|
|
|
public static function ReportScheduler(Vtiger_Request $request, $viewer) {
|
|
|
|
$moduleName = $request->getModule();
|
|
$record = $request->get('record');
|
|
$mode = $request->get('mode');
|
|
|
|
$adb = PearDatabase::getInstance();
|
|
$current_user = Users_Record_Model::getCurrentUserModel();
|
|
|
|
$viewer->assign('CURRENT_USER', $current_user);
|
|
|
|
$viewer->assign("MODULE", $moduleName);
|
|
|
|
$record = $request->get('record');
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
|
|
/* SCHEDULE REPORTS START */
|
|
$availableUsersHTML = ITS4YouScheduledReport::getAvailableUsersHTML();
|
|
$availableGroupsHTML = ITS4YouScheduledReport::getAvailableGroupsHTML();
|
|
$availableRolesHTML = ITS4YouScheduledReport::getAvailableRolesHTML();
|
|
$availableRolesAndSubHTML = ITS4YouScheduledReport::getAvailableRolesAndSubordinatesHTML();
|
|
|
|
$viewer->assign("AVAILABLE_USERS", $availableUsersHTML);
|
|
$viewer->assign("AVAILABLE_GROUPS", $availableGroupsHTML);
|
|
$viewer->assign("AVAILABLE_ROLES", $availableRolesHTML);
|
|
$viewer->assign("AVAILABLE_ROLESANDSUB", $availableRolesAndSubHTML);
|
|
|
|
$scheduledReport = new ITS4YouScheduledReport($adb, $record);
|
|
|
|
if ($mode == "ChangeSteps") {
|
|
$scheduledReport->getReportScheduleInfo();
|
|
$is_scheduled = $request->get('isReportScheduled');
|
|
$report_format = $request->get('scheduledReportFormat');
|
|
$selectedRecipientsHTML = $scheduledReport->getSelectedRecipientsHTML();
|
|
} else {
|
|
$scheduledReport->getReportScheduleInfo();
|
|
$is_scheduled = $scheduledReport->isScheduled;
|
|
$report_format = explode(";", $scheduledReport->scheduledFormat);
|
|
$selectedRecipientsHTML = $scheduledReport->getSelectedRecipientsHTML();
|
|
}
|
|
$viewer->assign('SCHEDULED_REPORT', $scheduledReport);
|
|
|
|
$viewer->assign('IS_SCHEDULED', $is_scheduled);
|
|
foreach ($report_format as $sh_format) {
|
|
$viewer->assign("REPORT_FORMAT_" . strtoupper($sh_format), true);
|
|
}
|
|
|
|
$viewer->assign('CSV_PATH', ('ChangeSteps' === $mode) ? $request->get('csv_path') : $scheduledReport->csvPath);
|
|
$viewer->assign('CSV_NAME', ('ChangeSteps' === $mode) ? $request->get('csv_name') : $scheduledReport->csvName);
|
|
$viewer->assign('CSV_SEPARATOR', ('ChangeSteps' === $mode) ? $request->get('csv_separator') : $scheduledReport->csvSeparator);
|
|
|
|
$viewer->assign("SELECTED_RECIPIENTS", $selectedRecipientsHTML);
|
|
|
|
$result = $adb->pquery('SELECT generate_subject, generate_text, generate_other, schedule_all_records, schedule_skip_empty FROM its4you_reports4you_scheduled_reports WHERE reportid=?', [$record]);
|
|
$generateInfo = [];
|
|
$generate_subject = $generate_text = $generate_other = $schedule_skip_empty = '';
|
|
if ($adb->num_rows($result) > 0) {
|
|
$generateInfo = $adb->raw_query_result_rowdata($result, 0);
|
|
$generate_subject = $generateInfo['generate_subject'];
|
|
$generate_text = trim($generateInfo['generate_text']);
|
|
$generate_other = $generateInfo['generate_other'];
|
|
$schedule_all_records = $generateInfo['schedule_all_records'];
|
|
$schedule_skip_empty = $generateInfo['schedule_skip_empty'];
|
|
}
|
|
$viewer->assign('generate_subject', $generate_subject);
|
|
$viewer->assign('generate_text', $generate_text);
|
|
$viewer->assign('generate_other', $generate_other);
|
|
$viewer->assign('schedule_all_records', $schedule_all_records);
|
|
$viewer->assign('schedule_skip_empty', $schedule_skip_empty);
|
|
|
|
$selectedForOptions = ITS4YouReports::getSchedulerGenerateFor($record);
|
|
$viewer->assign("selectedForOptions", $selectedForOptions);
|
|
|
|
$viewer->assign("schtypeid", $scheduledReport->scheduledInterval['scheduletype']);
|
|
$viewer->assign("schtime", $scheduledReport->scheduledInterval['time']);
|
|
$viewer->assign("schday", $scheduledReport->scheduledInterval['date']);
|
|
$viewer->assign("schweek", $scheduledReport->scheduledInterval['day']);
|
|
$viewer->assign("schmonth", $scheduledReport->scheduledInterval['month']);
|
|
/* SCHEDULE REPORTS END */
|
|
|
|
$LBL_INFORMATIONS_4YOU = vtranslate("LBL_STEP9_INFO", $moduleName);
|
|
$viewer->assign("LBL_INFORMATIONS_4YOU", $LBL_INFORMATIONS_4YOU);
|
|
|
|
if ($mode == "ChangeSteps") {
|
|
$tpl_name = "ReportSchedulerContent.tpl";
|
|
} else {
|
|
$tpl_name = "ReportScheduler.tpl";
|
|
}
|
|
|
|
// ITS4YOU-CR SlOl 1. 4. 2016 14:16:03
|
|
$primary_module = $reportModel->getPrimaryModule();
|
|
$generateForOptions = ITS4YouReports_EditView_Model::getGenerateForOptionsArray($reportModel, $primary_module);
|
|
$viewer->assign('generateForOptionsArray', $generateForOptions);
|
|
// ITS4YOU-END
|
|
|
|
return $viewer->view($tpl_name, $moduleName, true);
|
|
}
|
|
|
|
public static function ReportGraphs(Vtiger_Request $request, $viewer) {
|
|
|
|
$moduleName = $request->getModule();
|
|
$record = $request->get('record');
|
|
$R_Data = $request->getAll();
|
|
|
|
$viewer->assign("MODULE", $moduleName);
|
|
|
|
$LBL_INFORMATIONS_4YOU = vtranslate("LBL_STEP12_INFO", $moduleName);
|
|
$viewer->assign("LBL_INFORMATIONS_4YOU", $LBL_INFORMATIONS_4YOU);
|
|
// ITS4YOU-END 10. 9. 2013 16:13:50
|
|
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
$Report_Informations = $reportModel->getReportInformations();
|
|
if (!empty($Report_Informations["charts"])) {
|
|
$charts_array = $Report_Informations["charts"];
|
|
}
|
|
|
|
if (isset($R_Data["chartType1"])) {
|
|
for ($chi = 1; $chi < 4; $chi++) {
|
|
if (isset($R_Data["chartType$chi"])) {
|
|
$charts_array[$chi]['charttype'] = $R_Data["chartType$chi"];
|
|
$charts_array[$chi]['dataseries'] = $R_Data["data_series$chi"];
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isset($R_Data["chart_type"]) && $R_Data["chart_type"] != "" && $R_Data["chart_type"] != "none") {
|
|
$selected_chart_type = $R_Data["chart_type"];
|
|
} else {
|
|
$selected_chart_type = $Report_Informations["charts"]["charttype"];
|
|
}
|
|
$viewer->assign("IMAGE_PATH", $chart_type);
|
|
if (isset($R_Data["data_series"]) && $R_Data["data_series"] != "") {
|
|
$selected_data_series = $R_Data["data_series"];
|
|
} else {
|
|
$selected_data_series = $Report_Informations["charts"];
|
|
}
|
|
if (isset($R_Data["charttitle"]) && $R_Data["charttitle"] != "") {
|
|
$selected_charttitle = $R_Data["charttitle"];
|
|
} else {
|
|
$selected_charttitle = $Report_Informations["charts"][1]["charttitle"];
|
|
}
|
|
$viewer->assign("charttitle", $selected_charttitle);
|
|
|
|
/* bar / horizontal */
|
|
$chart_type['horizontal'] = [
|
|
'icon' => self::fetchChartIcon('horizontal'),
|
|
'value' => vtranslate('LBL_CHART_horizontal', $moduleName),
|
|
'selected' => ($selected_chart_type == 'horizontal' ? 'selected' : '')
|
|
];
|
|
/* stacked-bar / horizontalstacked */
|
|
$chart_type['horizontalstacked'] = [
|
|
'icon' => self::fetchChartIcon('horizontalstacked'),
|
|
'value' => vtranslate('LBL_CHART_horizontalstacked', $moduleName),
|
|
'selected' => ($selected_chart_type == 'horizontalstacked' ? 'selected' : '')
|
|
];
|
|
/* column / vertical */
|
|
$chart_type['vertical'] = [
|
|
'icon' => self::fetchChartIcon('vertical'),
|
|
'value' => vtranslate('LBL_CHART_vertical', $moduleName),
|
|
'selected' => ($selected_chart_type == "vertical" ? 'selected' : '')
|
|
];
|
|
$chart_type['verticalstacked'] = [
|
|
'icon' => self::fetchChartIcon('vertical'),
|
|
'value' => vtranslate('LBL_CHART_verticalstacked', $moduleName),
|
|
'selected' => ($selected_chart_type == 'verticalstacked' ? 'selected' : '')
|
|
];
|
|
/* line / linechart */
|
|
$chart_type['linechart'] = [
|
|
'icon' => self::fetchChartIcon('linechart'),
|
|
'value' => vtranslate('LBL_CHART_linechart', $moduleName),
|
|
'selected' => ($selected_chart_type == 'linechart' ? 'selected' : '')
|
|
];
|
|
/* pie */
|
|
$chart_type['pie'] = [
|
|
'icon' => self::fetchChartIcon('pie'),
|
|
'value' => vtranslate('LBL_CHART_pie', $moduleName),
|
|
'selected' => ($selected_chart_type == 'pie' ? 'selected' : '')
|
|
];
|
|
/* piepercentage */
|
|
$chart_type['piepercentage'] = [
|
|
'icon' => self::fetchChartIcon('piepercentage'),
|
|
'value' => vtranslate('LBL_CHART_piepercentage', $moduleName),
|
|
'selected' => ($selected_chart_type == 'piepercentage' ? 'selected' : '')
|
|
];
|
|
/* funnel */
|
|
$chart_type['funnel'] = [
|
|
'icon' => self::fetchChartIcon('funnel'),
|
|
'value' => vtranslate('LBL_CHART_funnel', $moduleName),
|
|
'selected' => ($selected_chart_type == 'funnel' ? 'selected' : '')
|
|
];
|
|
$viewer->assign('CHART_TYPE', $chart_type);
|
|
// column
|
|
// bar
|
|
// line
|
|
// pie
|
|
// funnel
|
|
|
|
// selected labels from url
|
|
if (isset($R_Data["lblurl"])) {
|
|
$lbl_url_string = html_entity_decode($R_Data["lblurl"]);
|
|
}
|
|
|
|
$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, 'hidden_') === false) {
|
|
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_url_selected["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_url_selected["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_url_selected["CT"][$lbl_key] = $lbl_value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// NEW WAY
|
|
$viewer->assign("CHARTS_ARRAY", $charts_array);
|
|
|
|
if ($request->has("selectedSummariesString")) {
|
|
$selectedSummariesString = $request->get("selectedSummariesString");
|
|
$selectedSummariesString = str_replace("@AMPKO@", "&", $selectedSummariesString);
|
|
$r_selectedSummariesArr = explode(";", $selectedSummariesString);
|
|
foreach ($r_selectedSummariesArr as $key => $summaries_col_str) {
|
|
if ($summaries_col_str != "") {
|
|
$selectedSummariesArr[] = ["value" => $summaries_col_str, "label" => $reportModel->report->getColumnStr_Label($summaries_col_str, "SM")];
|
|
}
|
|
}
|
|
} else {
|
|
if (!empty($Report_Informations["summaries_columns"])) {
|
|
foreach ($Report_Informations["summaries_columns"] as $key => $summaries_columns_arr) {
|
|
$selectedSummariesArr[] = ["value" => $summaries_columns_arr["columnname"], "label" => $reportModel->report->getColumnStr_Label($summaries_columns_arr["columnname"], "SM")];
|
|
}
|
|
}
|
|
}
|
|
if (empty($selectedSummariesArr)) {
|
|
$primarymodule = $reportModel->report->primarymodule;
|
|
$crmid_count_str = "vtiger_crmentity:crmid:" . $primarymodule . "_COUNT Records:" . $primarymodule . "_count:V";
|
|
$selectedSummariesArr[] = ["value" => $crmid_count_str, "label" => $reportModel->getColumnStr_Label($crmid_count_str, "SM")];
|
|
}
|
|
$viewer->assign("selected_summaries", $selectedSummariesArr);
|
|
|
|
$group_string = "";
|
|
|
|
if (isset($R_Data["group1"])) {
|
|
for ($gi = 1; $gi < 3; $gi++) {
|
|
if (isset($R_Data["group" . $gi]) && $R_Data["group" . $gi] != "none") {
|
|
if ($group_string != "") {
|
|
$group_string .= " - ";
|
|
}
|
|
$group_string .= $reportModel->getColumnStr_Label($R_Data["group" . $gi]);
|
|
$x_group["group" . $gi]['value'] = $group_string;
|
|
if ("group" . $gi == $R_Data["x_group"]) {
|
|
$x_group["group" . $gi]['selected'] = " selected='selected' ";
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
for ($gi = 1; $gi < 3; $gi++) {
|
|
if (isset($Report_Informations["Group" . $gi]) && $Report_Informations["Group" . $gi] != "none") {
|
|
if ($group_string != "") {
|
|
$group_string .= " - ";
|
|
}
|
|
$group_string .= $reportModel->getColumnStr_Label($Report_Informations["Group" . $gi]);
|
|
// $x_group[$Report_Informations["Group".$gi]]['value'] = $group_string;
|
|
$x_group["group" . $gi]['value'] = $group_string;
|
|
if ("group" . $gi == $Report_Informations["charts"][1]["x_group"]) {
|
|
$x_group["group" . $gi]['selected'] = " selected='selected' ";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$viewer->assign("X_GROUP", $x_group);
|
|
$viewer->assign("X_GROUP_COUNT", ITS4YouReports_Functions_Helper::count($x_group));
|
|
|
|
if (isset($R_Data["chart_position"]) && $R_Data["chart_position"] != "") {
|
|
$selected_chart_position = $R_Data["chart_position"];
|
|
} else {
|
|
$selected_chart_position = $Report_Informations["charts"][1]["chart_position"];
|
|
}
|
|
$viewer->assign("chart_position", $selected_chart_position);
|
|
|
|
if (isset($R_Data["collapse_data_block"]) && $R_Data["collapse_data_block"] != "") {
|
|
$selected_collapse_data_block = $R_Data["collapse_data_block"];
|
|
} else {
|
|
$selected_collapse_data_block = $Report_Informations["charts"][1]["collapse_data_block"];
|
|
}
|
|
$viewer->assign("collapse_data_block", (int) $selected_collapse_data_block);
|
|
|
|
if (!empty($R_Data['progress_line'])) {
|
|
$progressLine = $R_Data['progress_line'];
|
|
} else {
|
|
$progressLine = $Report_Informations['charts'][1]['progress_line'];
|
|
}
|
|
|
|
if (empty($progressLine)) {
|
|
$progressLine = [];
|
|
} else {
|
|
$progressLine = explode(',', $progressLine);
|
|
}
|
|
|
|
$viewer->assign('progress_line_array', $progressLine);
|
|
$viewer->assign('progress_line', implode(',', $progressLine));
|
|
|
|
return $viewer->view("ReportGraphs.tpl", $moduleName, true);
|
|
}
|
|
|
|
// ITS4YOU-CR SlOl 18. 3. 2016 10:41:34
|
|
public static function ReportDashboards(Vtiger_Request $request, $viewer) {
|
|
$moduleName = $request->getModule();
|
|
$record = $request->get('record');
|
|
$R_Data = $request->getAll();
|
|
|
|
$viewer->assign("MODULE", $moduleName);
|
|
|
|
$LBL_INFORMATIONS_4YOU = vtranslate("LBL_STEP13INFO", $moduleName);
|
|
$viewer->assign("LBL_INFORMATIONS_4YOU", $LBL_INFORMATIONS_4YOU);
|
|
// ITS4YOU-END 10. 9. 2013 16:13:50
|
|
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
if ($request->has("primarymodule") && !$request->isEmpty("primarymodule")) {
|
|
$primary_moduleid = $request->get("primarymodule");
|
|
$primary_module = vtlib_getModuleNameById($primary_moduleid);
|
|
} else {
|
|
$primary_module = $reportModel->getPrimaryModule();
|
|
$primary_moduleid = $reportModel->getPrimaryModuleId();
|
|
}
|
|
|
|
$Report_Informations = $reportModel->getReportInformations();
|
|
|
|
if ($request->has('primary_search')) {
|
|
$primary_search = $request->get("primary_search");
|
|
} else {
|
|
$primary_search = $Report_Informations["primary_search"];
|
|
}
|
|
$viewer->assign("primary_search", $primary_search);
|
|
|
|
$viewer->assign('REPORT_DASHBOARD_CHART', (bool)$request->get('dashboard_chart', $Report_Informations['dashboard_chart']));
|
|
$viewer->assign('REPORT_DASHBOARD_TABLE', (bool)$request->get('dashboard_table', $Report_Informations['dashboard_table']));
|
|
|
|
if ($request->has('reporttype') && !empty($request->get('reporttype'))) {
|
|
$reportType = $request->get('reporttype');
|
|
} else {
|
|
$reportType = $Report_Informations['reporttype'];
|
|
}
|
|
$viewer->assign('REPORT_TYPE', $reportType);
|
|
|
|
$pSearchOptions = $Options = [];
|
|
$Options = getPrimaryColumns($Options, $primary_module, true, $reportModel->report);
|
|
if (!empty($Options)) {
|
|
foreach ($Options as $blockName => $columnsArray) {
|
|
foreach ($columnsArray as $c_arr) {
|
|
$column_str = $c_arr['value'];
|
|
$sc_field_uitype = ITS4YouReports::getUITypeFromColumnStr($column_str);
|
|
if (in_array($sc_field_uitype, ITS4YouReports::$s_uitypes)) {
|
|
$pSearchOptions[] = $c_arr;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$viewer->assign("primary_search_options", $pSearchOptions);
|
|
|
|
// ITS4YOU-CR SlOl 21. 3. 2016 8:36:16
|
|
$adb = PearDatabase::getInstance();
|
|
$allModules = ["Home" => vtranslate("Home")];
|
|
|
|
$layout = Vtiger_Viewer::getDefaultLayoutName();
|
|
if ($layout !== "v7") {
|
|
$allModulesTemp = com_vtGetModules($adb);
|
|
if (!empty($allModulesTemp)) {
|
|
asort($allModulesTemp);
|
|
foreach ($allModulesTemp as $mName => $mLabel) {
|
|
$allModules[$mName] = vtranslate($mLabel, $mName);
|
|
}
|
|
}
|
|
}
|
|
$viewer->assign("allmodules", $allModules);
|
|
$allowedModules = array();
|
|
if ($request->has('allow_in_modules')) {
|
|
$allowedModules = $request->get('allow_in_modules');
|
|
} elseif ($Report_Informations["allow_in_modules"] != "") {
|
|
$allowedModules = explode(',', $Report_Informations["allow_in_modules"]);
|
|
} else {
|
|
$allowedModules[] = "";
|
|
}
|
|
$viewer->assign("allowedmodules", $allowedModules);
|
|
|
|
// ITS4YOU-END
|
|
|
|
return $viewer->view("ReportDashboards.tpl", $moduleName, true);
|
|
}
|
|
|
|
// ITS4YOU-END
|
|
|
|
public static function ReportCustomSql(Vtiger_Request $request, $viewer) {
|
|
$moduleName = $request->getModule();
|
|
$record = $request->get('record');
|
|
$mode = $request->get('mode');
|
|
|
|
$adb = PearDatabase::getInstance();
|
|
$current_user = Users_Record_Model::getCurrentUserModel();
|
|
|
|
$viewer->assign("MODULE", $moduleName);
|
|
|
|
$record = $request->get('record');
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
$viewer->assign("RECORDID", $record);
|
|
|
|
$report_custom_sql = ITS4YouReports::validateCustomSql($reportModel->report->reportinformations["custom_sql"]);
|
|
|
|
$viewer->assign("REPORT_CUSTOM_SQL", $report_custom_sql);
|
|
|
|
return $viewer->view("ReportCustomSQL.tpl", $moduleName, true);
|
|
}
|
|
|
|
// ITS4YOU-CR SlOl 4. 4. 2016 8:22:37
|
|
public static function getGenerateForOptionsArray($reportModel, $primary_module = "") {
|
|
$generateForOptions = $Options = [];
|
|
if ($primary_module != "") {
|
|
$Options = getPrimaryColumns($Options, $primary_module, true, $reportModel->report);
|
|
|
|
$secondarymodules = [];
|
|
if (!empty($reportModel->report->related_modules[$reportModel->report->primarymodule])) {
|
|
foreach ($reportModel->report->related_modules[$reportModel->report->primarymodule] as $key => $value) {
|
|
$exploded_mid = explode("x", $value["id"]);
|
|
if (strtolower($exploded_mid[1]) != "mif") {
|
|
$secondarymodules[] = $value["id"];
|
|
}
|
|
}
|
|
}
|
|
$secondarymodules_str = implode(":", $secondarymodules);
|
|
$Options_sec = getSecondaryColumns([], $secondarymodules_str, $reportModel->report);
|
|
|
|
if (!empty($Options_sec)) {
|
|
foreach ($Options_sec as $moduleid => $sec_options) {
|
|
$Options = array_merge($Options, $sec_options);
|
|
}
|
|
}
|
|
|
|
if (!empty($Options)) {
|
|
foreach ($Options as $blockName => $columnsArray) {
|
|
foreach ($columnsArray as $c_arr) {
|
|
$column_str = $c_arr['value'];
|
|
$sc_field_uitype = ITS4YouReports::getUITypeFromColumnStr($column_str);
|
|
if (in_array($sc_field_uitype, ITS4YouReports::$s_users_uitypes)) {
|
|
list($sc_tablename, $sc_columnname, $sc_modulestr) = explode(':', $column_str);
|
|
list($sc_module) = explode('_', $sc_modulestr);
|
|
if (vtlib_isModuleActive($sc_module) && ((isPermitted($sc_module, 'DetailView') == 'yes'))) {
|
|
$generateForOptions[$sc_module][] = $c_arr;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return $generateForOptions;
|
|
}
|
|
|
|
/**
|
|
* @param Vtiger_Request $request
|
|
* @param $viewer
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public static function ReportMaps(Vtiger_Request $request, $viewer) {
|
|
$default_charset = vglobal("default_charset");
|
|
$moduleName = $request->getModule();
|
|
$options = [];
|
|
$secondaryModules = [];
|
|
$viewer->assign('MODULE', $moduleName);
|
|
|
|
$R_Data = $request->getAll();
|
|
$record = $request->get('record');
|
|
$reportModel = ITS4YouReports_Record_Model::getCleanInstance($record);
|
|
|
|
$primaryModuleId = $request->get('primarymodule');
|
|
$primaryModule = vtlib_getModuleNameById($primaryModuleId);
|
|
$viewer->assign('reportModule', $primaryModule);
|
|
|
|
$related_modules = $reportModel->getReportRelatedModulesList();
|
|
|
|
if (!empty($related_modules[$primaryModule])) {
|
|
foreach ($related_modules[$primaryModule] as $key => $value) {
|
|
$exploded_mid = explode("x", $value["id"]);
|
|
if (strtolower($exploded_mid[1]) != "mif") {
|
|
$secondaryModules[] = $value["id"];
|
|
}
|
|
}
|
|
}
|
|
$options = $reportModel->getPrimaryColumns($options, $primaryModule, true);
|
|
|
|
$secondaryModulesStr = implode(":", $secondaryModules);
|
|
|
|
$reportModel->getSecModuleColumnsList($secondaryModulesStr);
|
|
$optionsSec = $reportModel->getSecondaryColumns([], $secondaryModulesStr);
|
|
|
|
foreach ($optionsSec as $moduleId => $secOptions) {
|
|
$options = array_merge($options, $secOptions);
|
|
}
|
|
|
|
// ITS4YOU-CR SlOl 16. 9. 2015 10:49:04 OTHER COLUMNS
|
|
if (array_key_exists('selectedColumnsStr', $R_Data) && !empty($R_Data['selectedColumnsStr'])) {
|
|
$selectedColumnsStr = $R_Data['selectedColumnsStr'];
|
|
$selectedColumnsStringDecoded = html_entity_decode($selectedColumnsStr, ENT_QUOTES, $default_charset);
|
|
$selectedColumns_arr = explode('<_@!@_>', $selectedColumnsStringDecoded);
|
|
} else {
|
|
$selectedColumnsStr = $reportModel->report->reportinformations['selectedColumnsString'];
|
|
$selectedColumnsStringDecoded = $selectedColumnsStr;
|
|
$selectedColumns_arr = explode(';', $selectedColumnsStringDecoded);
|
|
}
|
|
if (!empty($selectedColumns_arr)) {
|
|
$opt_label = vtranslate('LBL_Filter_SelectedColumnsGroup', $moduleName);
|
|
foreach ($selectedColumns_arr as $sc_key => $sc_col_str) {
|
|
if ($sc_col_str != "") {
|
|
$in_options = false;
|
|
foreach ($options as $opt_group => $opt_array) {
|
|
if ($reportModel->report->in_multiarray($sc_col_str, $opt_array, 'value') === true) {
|
|
$in_options = true;
|
|
continue;
|
|
}
|
|
}
|
|
if ($in_options) {
|
|
continue;
|
|
} else {
|
|
$options[$opt_label][] = ['value' => $sc_col_str, 'text' => $reportModel->report->getColumnStr_Label($sc_col_str)];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$viewer->assign('MODULE_OPTIONS', $options);
|
|
|
|
$viewer->assign('MAP_COLUMNS', $reportModel->report->reportinformations['maps']);
|
|
|
|
return $viewer->view('ReportOSMaps.tpl', $moduleName, true);
|
|
}
|
|
|
|
/**
|
|
* @param $chartName
|
|
*
|
|
* @return string
|
|
*/
|
|
private static function fetchChartIcon($chartName)
|
|
{
|
|
$icon = '';
|
|
$layout = Vtiger_Viewer::getDefaultLayoutName();
|
|
|
|
switch ($chartName) {
|
|
case 'horizontal':
|
|
case 'horizontalstacked':
|
|
/* bar / horizontal */
|
|
/* stacked-bar / horizontalstacked */
|
|
if ('v7' === $layout) {
|
|
$icon = 'fa fa-align-left';
|
|
} else {
|
|
$icon = 'icon-align-left';
|
|
}
|
|
break;
|
|
case 'vertical':
|
|
case 'verticalstacked':
|
|
/* column / vertical */
|
|
/* stacked-column / verticalstacked */
|
|
if ('v7' === $layout) {
|
|
$icon = 'fa fa-signal';
|
|
} else {
|
|
$icon = 'icon-signal';
|
|
}
|
|
break;
|
|
case 'linechart':
|
|
/* line / linechart */
|
|
if ('v7' === $layout) {
|
|
$icon = 'fa fa-random';
|
|
} else {
|
|
$icon = 'icon-random';
|
|
}
|
|
break;
|
|
case 'pie':
|
|
case 'piepercentage':
|
|
/* pie */
|
|
if ('v7' === $layout) {
|
|
$icon = 'fa fa-adjust';
|
|
} else {
|
|
$icon = 'icon-adjust';
|
|
}
|
|
break;
|
|
case 'funnel':
|
|
/* funnel */
|
|
if ('v7' === $layout) {
|
|
$icon = 'fa fa-filter';
|
|
} else {
|
|
$icon = 'icon-filter';
|
|
}
|
|
break;
|
|
}
|
|
|
|
return $icon;
|
|
}
|
|
}
|