mirror of
https://github.com/SuiteCRM/SuiteCRM-Core.git
synced 2025-09-05 10:18:33 +08:00
Add relate field validation on ListDataHandler
- Check if relate fields are valid before adding to filter_fields - Do not add fields with missing definitions - Do not add non-db fields
This commit is contained in:
parent
d949b0421f
commit
56f434a9d4
1 changed files with 46 additions and 0 deletions
|
@ -260,10 +260,56 @@ abstract class BaseListDataHandler
|
|||
}
|
||||
}
|
||||
|
||||
if ($type === 'relate' && !$this->isValidRelate($fieldDefinition)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$parsedFilterFields[] = $fieldName;
|
||||
}
|
||||
|
||||
return array_diff($parsedFilterFields, $excludedRelationshipFields);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $fieldDefinition
|
||||
* @return void
|
||||
*/
|
||||
protected function isNonDbField($fieldDefinition): bool
|
||||
{
|
||||
$relateBean = BeanFactory::newBean($fieldDefinition['module']);
|
||||
|
||||
if (empty($relateBean)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$relateFieldDef = $relateBean->field_defs[$fieldDefinition['rname']] ?? [];
|
||||
$relateFieldSource = $relateFieldDef['source'] ?? '';
|
||||
|
||||
return empty($relateFieldDef) || $relateFieldSource === 'non-db';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $fieldDefinition
|
||||
* @return bool
|
||||
*/
|
||||
protected function isValidRelate($fieldDefinition): bool
|
||||
{
|
||||
if (isset($fieldDefinition['table']) && $fieldDefinition['table'] === '') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($fieldDefinition['join_name']) && $fieldDefinition['join_name'] === '') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!empty($fieldDefinition['module']) && !empty($fieldDefinition['rname'])) {
|
||||
$isNonDb = $this->isNonDbField($fieldDefinition);
|
||||
|
||||
if ($isNonDb === true) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue