Files
crm.clientright.ru/modules/ITS4YouReports/classes/UIFactory.php
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

529 lines
34 KiB
PHP

<?php
/*+********************************************************************************
* The content of this file is subject to the Reports 4 You license.
* ("License"); You may not use this file except in compliance with the License
* The Initial Developer of the Original Code is IT-Solutions4You s.r.o.
* Portions created by IT-Solutions4You s.r.o. are Copyright(C) IT-Solutions4You s.r.o.
* All Rights Reserved.
********************************************************************************/
require_once("modules/ITS4YouReports/classes/uitypes/UITypes.php");
require_once('modules/ITS4YouReports/classes/UIUtils.php');
require_once('modules/ITS4YouReports/ITS4YouReports.php');
class UIFactory {
protected $params = Array();
function __construct($params) {
$this->params = $params;
}
public function getJoinSQL($uitype, &$join_array, &$columns_array) {
$child = $this->getChildByUIType($uitype);
if ($child) {
return $child->getJoinSQL($join_array, $columns_array);
} else {
return false;
}
}
public function getInventoryJoinSQL($uitype, &$join_array, &$columns_array) {
$child = $this->getChildByUIType($uitype);
if ($child) {
return $child->getInventoryJoinSQL($join_array, $columns_array);
} else {
return false;
}
}
public function getModulesByUitype($uitype, $tablename, $columnname) {
$child = $this->getChildByUIType($uitype);
if ($child) {
return $child->getModulesByUitype($tablename, $columnname);
} else {
return false;
}
}
public function getMoreInfoJoinSQL($uitype, &$join_array, &$columns_array) {
$child = $this->getChildByUIType($uitype);
if ($child) {
return $child->getMoreInfoJoinSQL($join_array, $columns_array);
} else {
return false;
}
}
public function getAdvMoreInfoJoinSQL($uitype, &$join_array, &$columns_array) {
$child = $this->getChildByUIType($uitype);
if ($child) {
return $child->getAdvMoreInfoJoinSQL($join_array, $columns_array);
} else {
return false;
}
}
// ITS4YOU-CR SlOl 12. 11. 2013 14:50:11
public function getJoinSQLbyFieldRelation($uitype, &$join_array, &$columns_array) {
$child = $this->getChildByUIType($uitype);
if ($child) {
return $child->getJoinSQLbyFieldRelation($join_array, $columns_array);
} else {
return false;
}
}
public function getSelectedFieldCol($uitype, $selectedfields) {
$child = $this->getChildByUIType($uitype);
if ($child) {
return $child->getSelectedFieldCol($selectedfields);
} else {
return false;
}
}
// ITS4YOU-END 12. 11. 2013 14:50:12
private function getChildByUIType($uitype) {
$file_name = "modules/ITS4YouReports/classes/uitypes/UIType$uitype.php";
if (file_exists($file_name)) {
require_once($file_name);
$class_name = 'UIType' . $uitype;
return new $class_name($this->params);
} else {
require_once("modules/ITS4YouReports/classes/uitypes/UITypeDefault.php");
return new UITypeDefault($this->params);
}
}
public function getDisplaySQL($module, &$join_array, &$columns_array) {
$entity_field_info = getEntityFieldNames($module);
if (in_array($this->params["field_uitype"], array("52", "53", "531", "77"))) {
$join_tablename_alias = $this->params["join_tablename_alias"];
}/* elseif(isset($this->params["old_oth_fieldid"]) && $this->params["old_oth_fieldid"]!="" && $this->params["old_oth_fieldid"]!="mif"){
$join_tablename_alias=$this->params["using_array"]["join"]["tablename"];
} */ else {
$join_tablename_alias = $this->params["join_tablename_alias"];
}
$fieldid_alias = "";
if ($this->params["fieldid"] != "") {
$fieldid_alias = "_" . $this->params["fieldid"];
}
$old_oth_as = '';
if ('' !== $this->params['old_oth_as']) {
$old_oth_as = $this->params['old_oth_as'];
}
$fld_cond = "";
if (in_array($this->params["field_uitype"], array("52", "53", "531", "77"))) {
// User Names Start
// first name | last name -> syntax
$fld_cond .= "CASE WHEN vtiger_users$old_oth_as$fieldid_alias.id IS NOT NULL THEN CONCAT(vtiger_users$old_oth_as$fieldid_alias.first_name,IF(vtiger_users$old_oth_as$fieldid_alias.first_name != '' AND vtiger_users$old_oth_as$fieldid_alias.first_name IS NOT NULL,' ',''),vtiger_users$old_oth_as$fieldid_alias.last_name) WHEN vtiger_groups$old_oth_as$fieldid_alias.groupid IS NOT NULL THEN vtiger_groups$old_oth_as$fieldid_alias.groupname END ";
// last name | first name -> syntax
// $fld_cond .= "CASE WHEN vtiger_users$fieldid_alias.id IS NOT NULL THEN CONCAT(vtiger_users$fieldid_alias.last_name,IF(vtiger_users$fieldid_alias.first_name != '' AND vtiger_users$fieldid_alias.first_name IS NOT NULL,' ',''),vtiger_users$fieldid_alias.first_name) WHEN vtiger_groups$fieldid_alias.groupid IS NOT NULL THEN vtiger_groups$fieldid_alias.groupname END ";
// User Names End
$display = $fld_cond . " AS " . $this->params["columnname"] . $old_oth_as . $fieldid_alias;
$fld_string_h = "";
} else {
if (is_array($entity_field_info["fieldname"])) {
$fld_cond .= "CONCAT(";
$wi = 0;
foreach ($entity_field_info["fieldname"] as $fieldvalue) {
$fld_cond .= $join_tablename_alias . "." . $fieldvalue;
if ($wi == 0)
$fld_cond .= ",' ',";
$wi++;
}
$fld_cond .= ") ";
$display = $fld_cond . " AS " . $this->params["columnname"] . $old_oth_as . $fieldid_alias;
}else {
$fld_cond .= $join_tablename_alias . "." . $entity_field_info["fieldname"];
$display = $fld_cond . " AS " . $this->params["columnname"] . $old_oth_as . $fieldid_alias;
}
// $fld_string_h = $join_tablename_alias.".";
$fld_string_h = "";
}
$display_arr["display"] = $display;
$display_arr["fld_string"] = $fld_string_h . $this->params["columnname"] . $old_oth_as . $fieldid_alias;
$hrefid = $join_tablename_alias . "." . $entity_field_info["entityidfield"] . " AS " . $this->params["columnname"] . $old_oth_as . $fieldid_alias . "_hid";
$display_arr["hrefid"] = $hrefid;
$display_arr["fld_cond"] = $fld_cond;
return $display_arr;
}
public function getRelationTables(&$join_array, &$columns_array) {
$adb = PEARDatabase::getInstance();
$module = vtlib_getModuleNameById($this->params["primary_tableid"]);
$primary_obj = CRMEntity::getInstance($module);
$secmodule = vtlib_getModuleNameById($this->params["fieldtabid"]);
$secondary_obj = CRMEntity::getInstance($secmodule);
$related_join_array = $secondary_obj->tab_name_index;
$field_tablename = trim($this->params["tablename"], "_MIF");
$fieldid_alias = "";
if ($this->params["fieldtabid"] != "") {
$fieldid_alias = "_" . $this->params["fieldtabid"];
}
/* $ui10_query = $adb->pquery("SELECT vtiger_field.fieldid AS fieldid, vtiger_field.tabid AS tabid,vtiger_field.tablename AS tablename, vtiger_field.columnname AS columnname FROM vtiger_field INNER JOIN vtiger_fieldmodulerel ON vtiger_fieldmodulerel.fieldid = vtiger_field.fieldid WHERE vtiger_fieldmodulerel.module=? AND vtiger_fieldmodulerel.relmodule=?",array($module,$secmodule));
if($adb->num_rows($ui10_query)>0){
$ui10_tablename = $adb->query_result($ui10_query,0,'tablename');
$ui10_columnname = $adb->query_result($ui10_query,0,'columnname');
$ui10_tabid = $adb->query_result($ui10_query,0,'tabid');
$ui10_fieldid = $adb->query_result($ui10_query,0,'fieldid');
if($primary_obj->table_name == $ui10_tablename){
$reltables = array($ui10_tablename=>array("".$primary_obj->table_index."","$ui10_columnname"));
} else if($secondary_obj->table_name == $ui10_tablename){
$reltables = array($ui10_tablename=>array("$ui10_columnname","".$secondary_obj->table_index.""),"".$primary_obj->table_name."" => "".$primary_obj->table_index."");
} else {
if(isset($secondary_obj->tab_name_index[$ui10_tablename])){
$rel_field = $secondary_obj->tab_name_index[$ui10_tablename];
$reltables = array($ui10_tablename=>array("$ui10_columnname","$rel_field"),"".$primary_obj->table_name."" => "".$primary_obj->table_index."");
} else {
$rel_field = $primary_obj->tab_name_index[$ui10_tablename];
$reltables = array($ui10_tablename=>array("$rel_field","$ui10_columnname"),"".$primary_obj->table_name."" => "".$primary_obj->table_index."");
}
}
}else {
*/ if (method_exists($primary_obj, 'setRelationTables')) {
$reltables = $primary_obj->setRelationTables($secmodule);
} else {
$reltables = '';
}
//}
// ITS4YOU-UP SlOl 4. 12. 2014 13:56:43
if ('Potentials' === $module && 'Contacts' === $this->params["fieldmodule"]) {
$tab = array("vtiger_contpotentialrel" => array("potentialid", "contactid"), "" . $primary_obj->table_name . "" => "" . $primary_obj->table_index . "");
// ITS4YOU-UP SlOl 4. 12. 2014 13:56:43
} elseif ($this->params["fieldmodule"] == "ModComments") {
$tab = array("vtiger_modcomments" => array("related_to", $primary_obj->table_index), "" . $primary_obj->table_name . "" => "" . $primary_obj->table_index . "");
// ITS4YOU-END 4. 12. 2014 13:56:45
} elseif (in_array($this->params["columnname"], array("campaignrelstatus", "access_count"))) {
$tab = [];
} elseif (is_array($reltables) && !empty($reltables)) {
$tab = $reltables;
} elseif ($this->params["primary_tableid"] == "9") {
$tab = array("vtiger_seactivityrel" => array("activityid", "crmid"), "" . $primary_obj->table_name . "" => "" . $primary_obj->table_index . "");
} else {
$rl_params = array($this->params['primary_tableid'], $secmodule);
$get_list_name = $adb->pquery('SELECT name
FROM vtiger_relatedlists
WHERE tabid = ? AND related_tabid = (select tabid from vtiger_tab where name=?)
',$rl_params);
$list_name = $adb->query_result($get_list_name,0,'name');
if ('get_dependents_list' === $list_name) {
$tab = array();
} else {
$tab = array("vtiger_crmentityrel" => array("crmid", "relcrmid"), "" . $primary_obj->table_name . "" => "" . $primary_obj->table_index . "");
}
}
if (!empty($tab)){
foreach ($tab as $key => $value) {
$tables[] = $key;
$fields[] = $value;
}
$table_name = $secondary_obj->table_name;
$column_name = $secondary_obj->table_index;
$pritablename = $tables[0];
$sectablename = $tables[1];
$prifieldname = $fields[0][0];
$secfieldname = $fields[0][1];
/*if($table_name==$pritablename){
$sectablename = $table_name;
$secfieldname = $column_name;
}*/
$condvalue_t = "";
if (!empty($tables[1]) && !empty($fields[1])) {
$condvalue_t = $tables[1] . "." . $fields[1];
$condvalue_t_table = $tables[1];
$condvalue_t_column = $fields[1];
$condition_t = $pritablename . "_mif" . $fieldid_alias . ".$prifieldname";
//ITS4YouReports::sshow("MIF_EJ1");
} else {
$condvalue_t = $table_name . "." . $column_name;
$condvalue_t_table = $table_name;
$condvalue_t_column = $column_name;
$condition_t = $pritablename . "_mif" . $fieldid_alias . ".$secfieldname";
//ITS4YouReports::sshow("MIF_EJ2");
}
if($module=="Products" && $secmodule=="Products"){
$tables[] = array("vtiger_products","vtiger_seproductsrel");
$fields[0] = array("productid","productid");
$join_array[" vtiger_seproductsrel AS vtiger_seproductsrel_mif" . $fieldid_alias . " "]["joincol"] = "vtiger_seproductsrel_mif$fieldid_alias.productid";
$join_array[" vtiger_seproductsrel AS vtiger_seproductsrel_mif" . $fieldid_alias . " "]["using"] = $condvalue_t;
$join_array[" vtiger_products AS vtiger_products_mif" . $fieldid_alias . " "]["joincol"] = $pritablename . "_mif" . $fieldid_alias.".productid";
$join_array[" vtiger_products AS vtiger_products_mif" . $fieldid_alias . " "]["using"] = "vtiger_seproductsrel_mif$fieldid_alias.crmid";
}elseif ($pritablename == "vtiger_crmentityrel") {
// crmentityrel join
$join_array[" " . $pritablename . " AS " . $pritablename . "_mif" . $fieldid_alias . " "]["joincol"] = "";
$join_array[" " . $pritablename . " AS " . $pritablename . "_mif" . $fieldid_alias . " "]["using"] = "(" . $primary_obj->table_name . "." . $primary_obj->table_index . " = " . $pritablename . "_mif" . $fieldid_alias . ".crmid AND module='$module' AND relmodule='$secmodule' ) OR (" . $primary_obj->table_name . "." . $primary_obj->table_index . " = " . $pritablename . "_mif" . $fieldid_alias . ".relcrmid AND module='$secmodule' AND relmodule='$module')";
// secondary obj table join
$join_array[" " . $table_name . " AS " . $table_name . "_mif" . $fieldid_alias . " "]["joincol"] = "";
$join_array[" " . $table_name . " AS " . $table_name . "_mif" . $fieldid_alias . " "]["using"] = "(" . $table_name . "_mif" . $fieldid_alias . "." . $secondary_obj->table_index . " = " . $pritablename . "_mif" . $fieldid_alias . ".crmid AND module='$secmodule' AND relmodule='$module') OR (" . $table_name . "_mif" . $fieldid_alias . "." . $secondary_obj->table_index . " = " . $pritablename . "_mif" . $fieldid_alias . ".relcrmid AND module='$module' AND relmodule='$secmodule')";
// secondary obj crmentiry deleted=0 join for primary tables
if ($table_name == $secondary_obj->table_name) {
if (!array_key_exists(" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " ", $join_array)) {
$join_array[" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " "]["joincol"] = "vtiger_crmentity_mif" . $fieldid_alias . ".crmid";
$join_array[" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " "]["using"] = $table_name . "_mif" . $fieldid_alias . "." . $secondary_obj->tab_name_index[$table_name] . " ";
}
}
if ($field_tablename != $secondary_obj->table_name && isset($secondary_obj->tab_name_index[$field_tablename])) {
if (!array_key_exists(" $field_tablename AS $field_tablename"."_mif" . $fieldid_alias . " ", $join_array)) {
$join_array[" $field_tablename AS $field_tablename"."_mif" . $fieldid_alias . " "]["joincol"] = $field_tablename."_mif".$fieldid_alias . ".".$secondary_obj->tab_name_index[$field_tablename];
$join_array[" $field_tablename AS $field_tablename"."_mif" . $fieldid_alias . " "]["using"] = $table_name . "_mif" . $fieldid_alias . "." . $secondary_obj->tab_name_index[$table_name];
}
}
} elseif($this->params["fieldmodule"]=="Calendar" && vtlib_getModuleNameById($this->params["primary_tableid"])=="Contacts") {
$join_array[" vtiger_cntactivityrel AS vtiger_cntactivityrel_mif" . $fieldid_alias . " "]["joincol"] = "vtiger_cntactivityrel_mif$fieldid_alias.contactid";
$join_array[" vtiger_cntactivityrel AS vtiger_cntactivityrel_mif" . $fieldid_alias . " "]["using"] = $condvalue_t;
$join_array[" vtiger_seactivityrel AS vtiger_seactivityrel_mif" . $fieldid_alias . " "]["joincol"] = "vtiger_seactivityrel_mif$fieldid_alias.crmid";
$join_array[" vtiger_seactivityrel AS vtiger_seactivityrel_mif" . $fieldid_alias . " "]["using"] = $condvalue_t;
if ($pritablename == $secondary_obj->table_name) {
if (!array_key_exists(" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " ", $join_array)) {
$join_array[" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " "]["joincol"] = "vtiger_crmentity_mif" . $fieldid_alias . ".crmid";
$join_array[" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " "]["using"] = $pritablename . "_mif" . $fieldid_alias . ".$column_name ";
}
}
if ($pritablename != $table_name) {
//$join_array[" " . $table_name . " AS " . $table_name . "_mif" . $fieldid_alias . " "]["joincol"] = $table_name . "_mif" . $fieldid_alias . "." . $column_name;
$join_array[" " . $table_name . " AS " . $table_name . "_mif" . $fieldid_alias . " "]["joincol"] = "";
$join_array[" " . $table_name . " AS " . $table_name . "_mif" . $fieldid_alias . " "]["using"] = "(vtiger_activity_mif$fieldid_alias.activityid = vtiger_cntactivityrel_mif$fieldid_alias.activityid OR vtiger_activity_mif$fieldid_alias.activityid = vtiger_seactivityrel_mif$fieldid_alias.activityid)";
}
if ($table_name == $secondary_obj->table_name) {
if (!array_key_exists(" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " ", $join_array)) {
$join_array[" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " "]["joincol"] = "vtiger_crmentity_mif" . $fieldid_alias . ".crmid";
$join_array[" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " "]["using"] = $table_name . "_mif" . $fieldid_alias . "." . $secondary_obj->tab_name_index[$table_name] . " ";
}
}
if ($field_tablename != $table_name) {
if (!array_key_exists(" $field_tablename AS ".$field_tablename."_mif" . $fieldid_alias . " ", $join_array)) {
$join_array[" $field_tablename AS ".$field_tablename."_mif" . $fieldid_alias . " "]["joincol"] = $field_tablename."_mif" . $fieldid_alias . ".".$secondary_obj->tab_name_index[$field_tablename];
$join_array[" $field_tablename AS ".$field_tablename."_mif" . $fieldid_alias . " "]["using"] = $table_name . "_mif" . $fieldid_alias . "." . $secondary_obj->tab_name_index[$table_name];
}
}
} else {
$join_array[" " . $pritablename . " AS " . $pritablename . "_mif" . $fieldid_alias . " "]["joincol"] = $condition_t;
$join_array[" " . $pritablename . " AS " . $pritablename . "_mif" . $fieldid_alias . " "]["using"] = $condvalue_t;
if ($pritablename == $secondary_obj->table_name) {
if (!array_key_exists(" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " ", $join_array)) {
$join_array[" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " "]["joincol"] = "vtiger_crmentity_mif" . $fieldid_alias . ".crmid";
$join_array[" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " "]["using"] = $pritablename . "_mif" . $fieldid_alias . ".$column_name ";
}
}
if ($pritablename != $table_name) {
$join_array[" " . $table_name . " AS " . $table_name . "_mif" . $fieldid_alias . " "]["joincol"] = $table_name . "_mif" . $fieldid_alias . "." . $column_name;
$join_array[" " . $table_name . " AS " . $table_name . "_mif" . $fieldid_alias . " "]["using"] = $pritablename . "_mif" . $fieldid_alias . "." . $secfieldname;
}
if ($table_name == $secondary_obj->table_name) {
if (!array_key_exists(" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " ", $join_array)) {
$join_array[" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " "]["joincol"] = "vtiger_crmentity_mif" . $fieldid_alias . ".crmid";
$join_array[" vtiger_crmentity AS vtiger_crmentity_mif" . $fieldid_alias . " "]["using"] = $table_name . "_mif" . $fieldid_alias . "." . $secondary_obj->tab_name_index[$table_name] . " ";
}
}
if ($field_tablename != $table_name) {
if (!array_key_exists(" $field_tablename AS ".$field_tablename."_mif" . $fieldid_alias . " ", $join_array)) {
$join_array[" $field_tablename AS ".$field_tablename."_mif" . $fieldid_alias . " "]["joincol"] = $field_tablename."_mif" . $fieldid_alias . ".".$secondary_obj->tab_name_index[$field_tablename];
$join_array[" $field_tablename AS ".$field_tablename."_mif" . $fieldid_alias . " "]["using"] = $table_name . "_mif" . $fieldid_alias . "." . $secondary_obj->tab_name_index[$table_name];
}
}
}
}
$oth_as = "mif";
if ($this->params["columnname"]=="access_count") {
$rel_tabid = $this->params["fieldtabid"];
if (!array_key_exists(" vtiger_seactivityrel AS vtiger_seactivityrel_mif_$rel_tabid"."ac ", $join_array)) {
$join_array[" vtiger_seactivityrel AS vtiger_seactivityrel_mif_$rel_tabid"."ac "]["joincol"] = "vtiger_seactivityrel_mif_$rel_tabid"."ac.crmid";
$join_array[" vtiger_seactivityrel AS vtiger_seactivityrel_mif_$rel_tabid"."ac "]["using"] = "vtiger_crmentity.crmid";
}
if (!array_key_exists(" vtiger_activity AS vtiger_activity_mif_$rel_tabid"."ac ", $join_array)) {
$join_array[" vtiger_activity AS vtiger_activity_mif_$rel_tabid"."ac "]["joincol"] = "vtiger_activity_mif_$rel_tabid"."ac.activityid";
$join_array[" vtiger_activity AS vtiger_activity_mif_$rel_tabid"."ac "]["using"] = "vtiger_seactivityrel_mif_$rel_tabid"."ac.activityid";
}
if (!array_key_exists(" vtiger_email_track AS vtiger_email_track_mif_$rel_tabid ", $join_array)) {
$join_array[" vtiger_email_track AS vtiger_email_track_mif_$rel_tabid "]["joincol"] = "vtiger_email_track_mif_$rel_tabid.mailid";
$join_array[" vtiger_email_track AS vtiger_email_track_mif_$rel_tabid "]["using"] = "vtiger_seactivityrel_mif_$rel_tabid"."ac.activityid";
}
if(array_key_exists(" vtiger_email_track AS vtiger_email_track_mif_$rel_tabid ", $join_array)){
$access_count_sql .= " IF(vtiger_email_track_mif_$rel_tabid.access_count IS NOT NULL, vtiger_email_track_mif_$rel_tabid.access_count,0) ";
}
$fld_alias = "access_count_mif_".$this->params["fieldtabid"];
if($access_count_sql!=""){
$fld_cond = " $access_count_sql ";
$access_count_col_sql = "$fld_cond AS $fld_alias ";
}else{
$access_count_col_sql = " 0 AS $fld_alias ";
}
// if(!in_array($access_count_col_sql,$columns_array) && ($this->params["fieldmodule"]=="Accounts")){
if(!in_array($access_count_col_sql,$columns_array)){
$columns_array[] = $access_count_col_sql;
$columns_array[$this->params["fld_string"]]["fld_alias"] = $fld_alias;
$columns_array[$this->params["fld_string"]]["fld_sql_str"] = $access_count_col_sql;
$columns_array[$this->params["fld_string"]]["fld_cond"] = $fld_cond;
$columns_array["uitype_$fld_alias"] = $this->params["field_uitype"];
$columns_array[$fld_alias] = $this->params["fld_string"];
}
}elseif ($this->params["columnname"]=="campaignrelstatus") {
$campaignstatus_sql = "";
if($this->params["fieldmodule"]=="Contacts"){
if (!array_key_exists(" vtiger_campaigncontrel AS vtiger_campaigncontrel_mif_4 ", $join_array)) {
$join_array[" vtiger_campaigncontrel AS vtiger_campaigncontrel_mif_4 "]["joincol"] = "vtiger_campaigncontrel_mif_4.campaignid";
$join_array[" vtiger_campaigncontrel AS vtiger_campaigncontrel_mif_4 "]["using"] = "vtiger_campaign.campaignid";
}
if(array_key_exists(" vtiger_campaigncontrel AS vtiger_campaigncontrel_mif_4 ", $join_array)){
$campaignstatus_sql .= " IF(vtiger_campaigncontrel_mif_4.campaignrelstatusid IS NOT NULL, (SELECT campaignrelstatus FROM vtiger_campaignrelstatus WHERE vtiger_campaignrelstatus.campaignrelstatusid = vtiger_campaigncontrel_mif_4.campaignrelstatusid),NULL) ";
}
}
if($this->params["fieldmodule"]=="Accounts"){
if (!array_key_exists(" vtiger_campaignaccountrel AS vtiger_campaignaccountrel_mif_6 ", $join_array)) {
$join_array[" vtiger_campaignaccountrel AS vtiger_campaignaccountrel_mif_6 "]["joincol"] = "vtiger_campaignaccountrel_mif_6.campaignid";
$join_array[" vtiger_campaignaccountrel AS vtiger_campaignaccountrel_mif_6 "]["using"] = "vtiger_campaign.campaignid";
}
if(array_key_exists(" vtiger_campaignaccountrel AS vtiger_campaignaccountrel_mif_6 ", $join_array)){
$campaignstatus_sql .= " IF(vtiger_campaignaccountrel_mif_6.campaignrelstatusid IS NOT NULL, (SELECT campaignrelstatus FROM vtiger_campaignrelstatus WHERE vtiger_campaignrelstatus.campaignrelstatusid = vtiger_campaignaccountrel_mif_6.campaignrelstatusid),NULL) ";
}
}
if($this->params["fieldmodule"]=="Leads"){
if (!array_key_exists(" vtiger_campaignleadrel AS vtiger_campaignleadrel_mif_7 ", $join_array)) {
$join_array[" vtiger_campaignleadrel AS vtiger_campaignleadrel_mif_7 "]["joincol"] = "vtiger_campaignleadrel_mif_7.campaignid";
$join_array[" vtiger_campaignleadrel AS vtiger_campaignleadrel_mif_7 "]["using"] = "vtiger_campaign.campaignid";
}
if(array_key_exists(" vtiger_campaignleadrel AS vtiger_campaignleadrel_mif_7 ", $join_array)){
$campaignstatus_sql .= " IF(vtiger_campaignleadrel_mif_7.campaignrelstatusid IS NOT NULL, (SELECT campaignrelstatus FROM vtiger_campaignrelstatus WHERE vtiger_campaignrelstatus.campaignrelstatusid = vtiger_campaignleadrel_mif_7.campaignrelstatusid),NULL) ";
}
}
$fld_alias = "campaignrelstatus_mif_".$this->params["fieldtabid"];
if($campaignstatus_sql!=""){
$fld_cond = " $campaignstatus_sql ";
$campaignstatus_col_sql = "$fld_cond AS $fld_alias ";
}else{
$campaignstatus_col_sql = " NULL AS $fld_alias ";
}
// if(!in_array($campaignstatus_col_sql,$columns_array) && ($this->params["fieldmodule"]=="Accounts")){
if(!in_array($campaignstatus_col_sql,$columns_array)){
$columns_array[] = $campaignstatus_col_sql;
$columns_array[$this->params["fld_string"]]["fld_alias"] = $fld_alias;
$columns_array[$this->params["fld_string"]]["fld_sql_str"] = $campaignstatus_col_sql;
$columns_array[$this->params["fld_string"]]["fld_cond"] = $fld_cond;
$columns_array["uitype_$fld_alias"] = $this->params["field_uitype"];
$columns_array[$fld_alias] = $this->params["fld_string"];
}
}elseif (in_array($this->params["fieldname"], ITS4YouReports::$intentory_fields)) {
$field_uitype = "INV";
$params = Array('fieldid' => $oth_as . $fieldid_alias,
'fieldtabid' => $this->params["fieldtabid"],
'fieldmodule' => $secmodule,
'field_uitype' => $field_uitype,
'fieldname' => $this->params["fieldname"],
'columnname' => $this->params["columnname"],
'tablename' => $this->params["table_name"],
'table_index' => $secondary_obj->tab_name_index,
'report_primary_table' => $primary_obj->table_name,
'primary_table_name' => $secondary_obj->table_name,
'primary_table_index' => $secondary_obj->table_index,
'primary_tableid' => $this->params["primary_tableid"],
'using_aliastablename' => $secondary_obj->table_name."_".$oth_as . $fieldid_alias,
'using_columnname' => $secondary_obj->table_index,
'old_oth_as' => "",
'old_oth_fieldid' => $oth_as,
'join_type' => "MIF",
'fld_string' => $this->params["fld_string"],
);
$using_array["using"]["tablename"] = $pritablename . "_mif" . $fieldid_alias;
$using_array["using"]["columnname"] = $primary_obj->tab_name_index[$pritablename];
$params["using_array"] = $using_array;
$uifactory = new UIFactory($params);
// going to UITypeINV
$pritablename = $tables[0];
$sectablename = $tables[1];
$prifieldname = $fields[0][0];
$secfieldname = $fields[0][1];
// show("INV mif joining 0","_".$oth_as.$fieldid_alias,$pritablename,$sec);
$uifactory->getInventoryJoinSQL($field_uitype, $join_array, $columns_array);
$joined = true;
} else {
$uirel_row = $adb->fetchByAssoc($adb->pquery("SELECT * FROM vtiger_field WHERE tabid = ? AND fieldname = ?", array($this->params["fieldtabid"], $this->params["fieldname"])), 0);
$field_uitype = $uirel_row["uitype"];
/* COMMENTED FOR A REASON OF MOD COMMENTS PROBLEM RELATIONS
$params = Array('fieldid' => $uirel_row["fieldid"],
'fieldtabid' => $uirel_row["tabid"],
'field_uitype' => $field_uitype,
'fieldname' => $uirel_row["fieldname"],
'columnname' => $uirel_row["columnname"],
'tablename' => $uirel_row["tablename"],
'table_index' => $related_join_array,
'report_primary_table' => $this->params["report_primary_table"],
'primary_table_name' => $secondary_obj->table_name,
'primary_table_index' => $secondary_obj->table_index,
'primary_tableid' => $r_tabid,
'using_aliastablename' => $table_name . "_mif" . $fieldid_alias,
'using_columnname' => $secondary_obj->tab_name_index[$table_name],
'old_oth_as' => "",
'old_oth_fieldid' => $oth_as,
'join_type' => "MIF",
'fld_string' => $this->params["fld_string"],
);
*/
if ('get_dependents_list' === $list_name) {
$dependentFieldSql = $adb->pquery("SELECT tabid, tablename, fieldname, columnname FROM vtiger_field WHERE uitype='10' AND" .
" fieldid IN (SELECT fieldid FROM vtiger_fieldmodulerel WHERE relmodule=? AND module=?)", array($module, $secmodule));
$numOfFields = $adb->num_rows($dependentFieldSql);
if ($numOfFields > 0) {
$dependentColumn = $adb->query_result($dependentFieldSql, 0, 'columnname');
$table_name = $adb->query_result($dependentFieldSql, 0, 'tablename');
$related_join_array[$table_name] = $dependentColumn;
$using_columnname = $dependentColumn;
$related_join_array[$primary_obj->table_name] = $primary_obj->table_index;
}
} else {
$using_columnname = $related_join_array[$table_name];
}
$params = Array('fieldid' => $uirel_row["fieldid"],
'fieldtabid' => $uirel_row["tabid"],
'field_uitype' => $field_uitype,
'fieldname' => $uirel_row["fieldname"],
'columnname' => $uirel_row["columnname"],
'tablename' => $uirel_row["tablename"],
'table_index' => $related_join_array,
'report_primary_table' => $this->params["report_primary_table"],
'primary_table_name' => $primary_obj->table_name,
'primary_table_index' => $primary_obj->table_index,
'primary_tableid' => $r_tabid,
'using_aliastablename' => $table_name . "_mif" . $fieldid_alias,
//'using_columnname' => $primary_obj->tab_name_index[$table_name],
'using_columnname' => $using_columnname,
'old_oth_as' => "_mif".$fieldid_alias,
'old_oth_fieldid' => "",
'join_type' => "MIF",
'list_name' => $list_name,
'fld_string' => $this->params["fld_string"],
);
$using_array = getJoinInformation($params);
$params["using_array"] = $using_array;
$uifactory = new UIFactory($params);
$uifactory->getJoinSQL($field_uitype, $join_array, $columns_array);
}
return $tab;
}
}
?>