/** * Returns a list of mapped properties for the passed content entity. * * @param \Drupal\Core\Entity\EntityInterface $entity * A content entity. * * @return array * An array of mappings between predicates and field properties. All * fields, and properties of the entity and the fields, that are available * will be returned. */ public function getEntityTypeMappedProperties(EntityInterface $entity) { $bundle = $entity->bundle(); $properties = []; // Collect impacted fields. $definitions = $this->entityManager->getFieldDefinitions($entity->getEntityTypeId(), $bundle); $base_field_definitions = $this->entityManager->getBaseFieldDefinitions($entity->getEntityTypeId()); $rdf_bundle_entity = $this->entityManager->getStorage($entity->getEntityType()->getBundleEntityType())->load($bundle); /** @var \Drupal\Core\Field\BaseFieldDefinition $field_definition */ foreach ($definitions as $field_name => $field_definition) { /** @var \Drupal\field\Entity\FieldStorageConfig $storage_definition */ $storage_definition = $field_definition->getFieldStorageDefinition(); if (!$storage_definition instanceof FieldStorageConfig) { continue; } foreach ($storage_definition->getColumns() as $column => $column_info) { if ($property = $storage_definition->getThirdPartySetting('rdf_entity', 'mapping_' . $column, FALSE)) { $properties['by_field'][$field_name][$column] = $property; $properties['flat'][$property] = $property; } } } foreach ($base_field_definitions as $field_name => $base_field_definition) { $field_data = $rdf_bundle_entity->getThirdPartySetting('rdf_entity', 'mapping_' . $field_name, FALSE); if (!$field_data) { continue; } foreach ($field_data as $column => $predicate) { if (empty($predicate)) { continue; } $properties['by_field'][$field_name][$column] = $predicate; $properties['flat'][$predicate] = $predicate; } } return $properties; }