Programming Language PHP

Namespace Oro\Component\EntitySerializer

Class EntityConfig

Method/Function set

Total Examples 3

3 code examples of PHP Oro\Component\EntitySerializer\EntityConfig::set extracted from open source projects

Was this example useful?
0
                                                    /**
     * @return string[]
     */
    public function getFieldsToSerialize(string $entityClass, EntityConfig $config): array
    {
        // try to use cached result
        $result = $config->get(self::FIELDS_SERIALIZE);
        if (null !== $result) {
            return $result;
        }

        $result = [];
        $entityMetadata = $this->doctrineHelper->getEntityMetadata($entityClass);
        $fields = $this->getFields($entityClass, $config);
        foreach ($fields as $field) {
            $propertyPath = $this->getPropertyPath($field, $config->getField($field));
            if (!$entityMetadata->isCollectionValuedAssociation($propertyPath)) {
                $result[] = $field;
            }
        }
        // make sure identifier fields are added
        $idField = $this->getIdField($entityClass, $config);
        if (!\in_array($idField, $result, true)) {
            $result[] = $idField;
            if ($config->isExcludeAll()) {
                $excludedFields = $config->get(ConfigUtil::EXCLUDED_FIELDS);
                if (null === $excludedFields) {
                    $config->set(ConfigUtil::EXCLUDED_FIELDS, [$idField]);
                } elseif (!\in_array($idField, $excludedFields, true)) {
                    $excludedFields[] = $idField;
                    $config->set(ConfigUtil::EXCLUDED_FIELDS, $excludedFields);
                }
            }
        }
        // add result to cache
        $config->set(self::FIELDS_SERIALIZE, $result);

        return $result;
    }
                                            
Was this example useful?
0
                                                    /**
     * @return string[]
     */
    public function getFieldsToSelect(string $entityClass, EntityConfig $config, bool $withAssociations = false): array
    {
        $cacheKey = self::FIELDS_SELECT;
        if ($withAssociations) {
            $cacheKey = self::FIELDS_SELECT_WITH_ASSOCIATIONS;
        }

        // try to use cached result
        $result = $config->get($cacheKey);
        if (null !== $result) {
            return $result;
        }

        $result = [];
        $entityMetadata = $this->doctrineHelper->getEntityMetadata($entityClass);
        $fields = $this->getFields($entityClass, $config);
        foreach ($fields as $field) {
            $field = $this->getPropertyPath($field, $config->getField($field));
            if ($entityMetadata->isField($field)
                || ($withAssociations && $entityMetadata->isSingleValuedAssociation($field))
            ) {
                $result[] = $field;
            }
        }
        // make sure identifier fields are added
        $idFields = $entityMetadata->getIdentifierFieldNames();
        foreach ($idFields as $field) {
            if (!\in_array($field, $result, true)) {
                $result[] = $field;
            }
        }
        // add result to cache
        $config->set($cacheKey, $result);

        return $result;
    }
                                            
Was this example useful?
0
                                                    /**
     * @return string[]
     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
     */
    public function getFields(string $entityClass, EntityConfig $config): array
    {
        // try to use cached result
        $result = $config->get(self::FIELDS_ALL);
        if (null !== $result) {
            return $result;
        }

        $result = [];
        if ($config->isExcludeAll()) {
            $fieldConfigs = $config->getFields();
            foreach ($fieldConfigs as $field => $fieldConfig) {
                if (!$fieldConfig->isExcluded()) {
                    $result[] = $field;
                }
            }
        } else {
            $entityMetadata = $this->doctrineHelper->getEntityMetadata($entityClass);
            $properties = array_merge($entityMetadata->getFieldNames(), $entityMetadata->getAssociationNames());
            foreach ($properties as $property) {
                $field = $this->getField($config, $property);
                if ($config->hasField($field)) {
                    $fieldConfig = $config->getField($field);
                    if (!$fieldConfig->isExcluded()) {
                        $result[] = $field;
                    }
                } elseif ($this->isApplicableField($entityClass, $property)) {
                    // ignore not configured associations to avoid infinite loop
                    // this can be fixed when the identifier field will not be used by default for them
                    if (!$entityMetadata->isAssociation($field)) {
                        $result[] = $field;
                    }
                }
            }
            $fieldConfigs = $config->getFields();
            foreach ($fieldConfigs as $field => $fieldConfig) {
                if ($this->isMetadataProperty($fieldConfig->getPropertyPath($field))) {
                    $result[] = $field;
                }
            }
        }
        // add result to cache
        $config->set(self::FIELDS_ALL, $result);

        return $result;
    }
                                            
EntityConfig's Other Methods