Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend

This commit is contained in:
yuri
2017-12-18 15:23:45 +02:00
2 changed files with 11 additions and 37 deletions

View File

@@ -155,8 +155,8 @@ class Metadata
$this->data = $this->getFileManager()->getPhpContents($this->cacheFile);
} else {
$this->clearVars();
$this->data = $this->getUnifier()->unify('metadata', $this->paths, true);
$this->data = $this->addAdditionalFields($this->data);
$objData = $this->getAllObjects(false, $reload);
$this->data = Util::objectToArray($objData);
if ($this->useCache) {
$isSaved = $this->getFileManager()->putPhpContents($this->cacheFile, $this->data);
@@ -206,7 +206,7 @@ class Metadata
public function getAll($isJSON = false, $reload = false)
{
if ($reload) {
$this->init(true);
$this->init($reload);
}
if ($isJSON) {
@@ -280,37 +280,6 @@ class Metadata
return $data;
}
/**
* todo: move to a separate file
* Add additional fields defined from metadata -> fields
*
* @param array $data
*/
protected function addAdditionalFields(array $data)
{
$dataCopy = $data;
$definitionList = $data['fields'];
foreach ($dataCopy['entityDefs'] as $entityName => $entityParams) {
foreach ($entityParams['fields'] as $fieldName => $fieldParams) {
$additionalFields = $this->getMetadataHelper()->getAdditionalFieldList($fieldName, $fieldParams, $definitionList);
if (!empty($additionalFields)) {
//merge or add to the end of data array
foreach ($additionalFields as $subFieldName => $subFieldParams) {
if (isset($entityParams['fields'][$subFieldName])) {
$data['entityDefs'][$entityName]['fields'][$subFieldName] = Util::merge($subFieldParams, $entityParams['fields'][$subFieldName]);
} else {
$data['entityDefs'][$entityName]['fields'][$subFieldName] = $subFieldParams;
}
}
}
}
}
return $data;
}
protected function addAdditionalFieldsObj($data)
{
if (!isset($data->entityDefs)) return $data;
@@ -319,6 +288,7 @@ class Metadata
if (!isset($entityDefsItem->fields)) continue;
foreach (get_object_vars($entityDefsItem->fields) as $field => $fieldDefsItem) {
$additionalFields = $this->getMetadataHelper()->getAdditionalFieldList($field, Util::objectToArray($fieldDefsItem), Util::objectToArray($data->fields));
if (!$additionalFields) continue;
foreach ($additionalFields as $subFieldName => $subFieldParams) {
if (isset($entityDefsItem->fields->$subFieldName)) {

View File

@@ -139,10 +139,14 @@ class Helper
return;
}
$fieldType = $fieldParams['type'];
$fieldDefinition = isset($definitionList[$fieldType]) ? $definitionList[$fieldType] : $this->getMetadata()->get('fields.'.$fieldType);
if (!isset($definitionList)) {
$definitionList = $this->getMetadata()->get('fields');
}
if (!empty($fieldDefinition['fields']) && is_array($fieldDefinition['fields'])) {
$fieldType = $fieldParams['type'];
$fieldDefinition = isset($definitionList[$fieldType]) ? $definitionList[$fieldType] : null;
if (isset($fieldDefinition) && !empty($fieldDefinition['fields']) && is_array($fieldDefinition['fields'])) {
$copiedParams = array_intersect_key($fieldParams, array_flip($this->copiedDefParams));