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 = ''; $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 .= '' . vtranslate('TL_DAYS') . ' '; $timelinecolumns .= '' . vtranslate('TL_WEEKS') . ' '; $timelinecolumns .= '' . vtranslate('TL_MONTHS') . ' '; $timelinecolumns .= '' . vtranslate('TL_YEARS') . ' '; $timelinecolumns .= '' . 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('
','
','
'); $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 = ""; $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 ""; //echo ""; $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; } }