/** * @param object $entity * * @return ConfigInterface[] */ protected function getEntityActivityContactFields($entity) { $fields = array_keys(ActivityScope::$fieldsConfiguration); return $this->extendProvider->filter(function (ConfigInterface $config) use($fields) { /** @var FieldConfigId $fieldConfigId */ $fieldConfigId = $config->getId(); return in_array($fieldConfigId->getFieldName(), $fields); }, ClassUtils::getClass($entity)); }
/** * @param object $entity * @param null|string $entityClass * @return array */ public function getFields($entity, $entityClass = null) { $dynamicRow = array(); if (null === $entityClass) { $entityClass = ClassUtils::getRealClass($entity); } $fields = $this->extendProvider->filter(array($this, 'filterFields'), $entityClass); foreach ($fields as $field) { /** @var FieldConfigId $fieldConfigId */ $fieldConfigId = $field->getId(); $fieldName = $fieldConfigId->getFieldName(); $fieldType = $fieldConfigId->getFieldType(); $underlyingFieldType = $this->fieldTypeHelper->getUnderlyingType($fieldType); $value = $this->propertyAccessor->getValue($entity, $fieldName); /** Prepare OptionSet field type */ if ($fieldType == 'optionSet') { $value = $this->getValueForOptionSet($entity, $fieldConfigId); } if ($value && $underlyingFieldType == 'manyToOne') { $value = $this->propertyAccessor->getValue(FieldAccessor::getValue($entity, $fieldName), $field->get('target_field')); } /** Prepare Relation field type */ if ($value && $value instanceof Collection) { $value = $this->getValueForCollection($value, $fieldConfigId); } $fieldConfig = $this->entityProvider->getConfigById($fieldConfigId); $label = $fieldConfig->get('label'); if (!$label) { $label = $fieldName; } $dynamicRow[$fieldName] = array('type' => $fieldType, 'label' => $label, 'value' => $value); } return $dynamicRow; }
/** * @param object $entity * @param null|string $entityClass * @return array */ public function getFields($entity, $entityClass = null) { $dynamicRow = []; $priorities = []; if (null === $entityClass) { $entityClass = ClassUtils::getRealClass($entity); } $fields = $this->extendProvider->filter([$this, 'filterFields'], $entityClass); foreach ($fields as $field) { /** @var FieldConfigId $fieldConfigId */ $fieldConfigId = $field->getId(); $fieldName = $fieldConfigId->getFieldName(); $fieldType = $fieldConfigId->getFieldType(); $value = $this->propertyAccessor->getValue($entity, $fieldName); $event = new ValueRenderEvent($entity, $value, $fieldConfigId); $this->eventDispatcher->dispatch(EntityExtendEvents::BEFORE_VALUE_RENDER, $event); $fieldConfig = $this->entityProvider->getConfigById($fieldConfigId); $dynamicRow[$fieldName] = ['type' => $fieldType, 'label' => $fieldConfig->get('label') ?: $fieldName, 'value' => $event->getFieldViewValue()]; $priorities[] = $this->viewProvider->getConfigById($fieldConfigId)->get('priority', false, 0); } array_multisort($priorities, SORT_DESC, $dynamicRow); return $dynamicRow; }