Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend
This commit is contained in:
@@ -445,30 +445,72 @@ class FieldManager
|
||||
*/
|
||||
protected function prepareFieldDefs($scope, $name, $fieldDefs)
|
||||
{
|
||||
$unnecessaryFields = array(
|
||||
'name',
|
||||
'label',
|
||||
'translatedOptions',
|
||||
'dynamicLogicVisible',
|
||||
'dynamicLogicReadOnly',
|
||||
'dynamicLogicRequired',
|
||||
'dynamicLogicOptions',
|
||||
);
|
||||
$additionalParamList = [
|
||||
'type' => [
|
||||
'type' => 'varchar',
|
||||
],
|
||||
'isCustom' => [
|
||||
'type' => 'bool',
|
||||
'default' => false,
|
||||
],
|
||||
'isPersonalData' => [
|
||||
'type' => 'bool',
|
||||
'default' => false,
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($unnecessaryFields as $fieldName) {
|
||||
if (isset($fieldDefs[$fieldName])) {
|
||||
unset($fieldDefs[$fieldName]);
|
||||
$fieldDefsByType = $this->getMetadataHelper()->getFieldDefsByType($fieldDefs);
|
||||
if (!isset($fieldDefsByType['params'])) {
|
||||
return $fieldDefs;
|
||||
}
|
||||
|
||||
$filteredFieldDefs = [];
|
||||
|
||||
$params = [];
|
||||
foreach ($fieldDefsByType['params'] as $paramData) {
|
||||
$params[ $paramData['name'] ] = $paramData;
|
||||
}
|
||||
foreach ($additionalParamList as $paramName => $paramValue) {
|
||||
if (!isset($params[$paramName])) {
|
||||
$params[$paramName] = array_merge(['name' => $paramName], $paramValue);
|
||||
}
|
||||
}
|
||||
$permittedParamList = array_keys($params);
|
||||
|
||||
foreach ($fieldDefs as $paramName => $paramValue) {
|
||||
if (!isset($paramValue) || $paramValue === '') {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (in_array($paramName, $permittedParamList)) {
|
||||
switch ($params[$paramName]['type']) {
|
||||
case 'bool':
|
||||
$fieldDefsDefaultValue = isset($params[$paramName]['default']) ? $params[$paramName]['default'] : false;
|
||||
|
||||
if ($fieldDefsDefaultValue !== $paramValue) {
|
||||
$filteredFieldDefs[$paramName] = $paramValue;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (!isset($params[$paramName]['default']) || $params[$paramName]['default'] !== $paramValue) {
|
||||
$filteredFieldDefs[$paramName] = $paramValue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$currentOptionList = array_keys((array) $this->getFieldDefs($scope, $name));
|
||||
foreach ($fieldDefs as $defName => $defValue) {
|
||||
if ( (!isset($defValue) || $defValue === '') && !in_array($defName, $currentOptionList) ) {
|
||||
unset($fieldDefs[$defName]);
|
||||
$actualFieldDefs = $this->getFieldDefs($scope, $name);
|
||||
if ($actualFieldDefs) {
|
||||
foreach ($actualFieldDefs as $paramName => $paramValue) {
|
||||
if (!array_key_exists($paramName, $filteredFieldDefs)) {
|
||||
$filteredFieldDefs[$paramName] = $paramValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $fieldDefs;
|
||||
return $filteredFieldDefs;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -679,4 +721,4 @@ class FieldManager
|
||||
$GLOBALS['log']->error("Field Manager hook class '{$className}' does not exist.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user