/** * Processes layout field by collecting its display parameters and processing nested fields * * @param MetaDataManager $metaDataManager Metadata manager * @param array $field The field being processed * @param array $fieldDefs Field definitions of the module the layout belongs to * @param array $fields Resulting set of fields * @param array $displayParams Resulting display parameters */ public function processLayoutField(MetaDataManager $metaDataManager, array $field, array $fieldDefs, array &$fields, array &$displayParams) { $isNamedField = isset($field['name']); if ($isNamedField) { $displayParams[$field['name']] = $field; unset($displayParams[$field['name']]['name']); } $fieldAttributes = array('fields', 'related_fields'); foreach ($fieldAttributes as $attribute) { if (isset($field[$attribute]) && is_array($field[$attribute])) { $fields = array_merge($fields, $metaDataManager->getFieldNames($field[$attribute], $fieldDefs, $displayParams)); if ($isNamedField) { unset($displayParams[$field['name']][$attribute]); } } } }