[Legacy] Fix Relate Field Issue

This commit is contained in:
Jack Anderson 2023-03-06 20:54:36 +00:00 committed by Clemente Raposo
parent 757221031a
commit 2321b0a934
3 changed files with 24 additions and 2 deletions

View file

@ -949,6 +949,8 @@ class SugarBean
$replacement = substr_replace($query_array['select'], "SELECT count(", $select_position, 6);
$query_rows = "( " . $replacement . ")" . $subquery['from_min']
. $query_array['join'] . $subquery['where'] . ' )';
} elseif (!empty($subquery['params']['subpanel_relate_field_search'])) {
$query_rows = "( SELECT count(*)" . $subquery['from'] . $subquery['where'] . ' )';
} else {
//resort to default behavior.
$query_rows = "( SELECT count(*)" . $subquery['from_min']
@ -1171,8 +1173,10 @@ class SugarBean
if(!empty($union_related_list_columns) && array_key_exists($this_subpanel->name, $union_related_list_columns)) {
$list_fields = $union_related_list_columns[$this_subpanel->name];
}else{
}elseif($subpanel_def->isCollection()){
$list_fields = $this_subpanel->get_list_fields();
}else{
$list_fields = $submodule->field_defs;
}
foreach ($list_fields as $list_key => $list_field) {
@ -1209,6 +1213,16 @@ class SugarBean
$singleSelect = method_exists($submodule, 'is_relate_field')
? $submodule->is_relate_field($order_by) : null;
if (!$singleSelect && !empty($this_subpanel->searchByFields) && method_exists($submodule, 'is_relate_field')){
foreach($this_subpanel->searchByFields as $field){
if ($submodule->is_relate_field($field)){
$singleSelect = true;
$params['subpanel_relate_field_search'] = true;
break;
}
}
}
$subquery = method_exists($submodule, 'create_new_list_query')
? $submodule->create_new_list_query(
'',
@ -3956,7 +3970,7 @@ class SugarBean
}
if ($join['type'] == 'many-to-many') {
if ($join['type'] === 'many-to-many') {
if (empty($ret_array['secondary_select'])) {
$ret_array['secondary_select'] = " SELECT $this->table_name.id ref_id ";

View file

@ -78,6 +78,7 @@ class SearchForm
public $nbTabs = 0;
// hide saved searches drop and down near the search button
public $showSavedSearchesOptions = true;
public $searchByFields = [];
public $displayType = 'searchView';
@ -900,6 +901,7 @@ class SearchForm
global $timedate;
$db = $this->seed->db;
$this->searchByFields = [];
$this->searchColumns = array();
$values = $this->searchFields;
@ -996,6 +998,8 @@ class SearchForm
$operator = strtolower($parms['operator']);
}
$this->searchByFields[] = $field;
if (is_array($parms['value'])) {
$field_value = '';

View file

@ -62,6 +62,8 @@ class aSubPanel
public $panel_definition ;
public $sub_subpanels ;
public $parent_bean ;
public $searchByFields = [];
/**
* Can we display this subpanel?
@ -197,6 +199,8 @@ class aSubPanel
$where_clauses = $searchForm->generateSearchWhere(true, $seed->module_dir);
$this->searchByFields = $searchForm->searchByFields;
$GLOBALS['log']->info("Subpanel Where Clause: $this->search_query");
if (count($where_clauses) > 0) {