RdfMapping.php

Same filename in this branch
  1. 9 core/modules/rdf/src/Plugin/migrate/source/d7/RdfMapping.php
Same filename in other branches
  1. 8.9.x core/modules/rdf/src/Entity/RdfMapping.php
  2. 8.9.x core/modules/rdf/src/Plugin/migrate/source/d7/RdfMapping.php

Namespace

Drupal\rdf\Entity

File

core/modules/rdf/src/Entity/RdfMapping.php

View source
<?php

namespace Drupal\rdf\Entity;

use Drupal\Core\Config\Entity\ConfigEntityBase;
use Drupal\Core\Entity\EntityStorageInterface;
use Drupal\rdf\RdfMappingInterface;

/**
 * Config entity for working with RDF mappings.
 *
 * @ConfigEntityType(
 *   id = "rdf_mapping",
 *   label = @Translation("RDF mapping"),
 *   label_singular = @Translation("RDF mapping item"),
 *   label_plural = @Translation("RDF mappings items"),
 *   label_count = @PluralTranslation(
 *     singular = "@count RDF mapping item",
 *     plural = "@count RDF mapping items",
 *   ),
 *   config_prefix = "mapping",
 *   entity_keys = {
 *     "id" = "id"
 *   },
 *   admin_permission = "administer site configuration",
 *   config_export = {
 *     "id",
 *     "targetEntityType",
 *     "bundle",
 *     "types",
 *     "fieldMappings",
 *   }
 * )
 */
class RdfMapping extends ConfigEntityBase implements RdfMappingInterface {
    
    /**
     * Unique ID for the config entity.
     *
     * @var string
     */
    protected $id;
    
    /**
     * Entity type to be mapped.
     *
     * @var string
     */
    protected $targetEntityType;
    
    /**
     * Bundle to be mapped.
     *
     * @var string
     */
    protected $bundle;
    
    /**
     * The RDF type mapping for this bundle.
     *
     * @var array
     */
    protected $types = [];
    
    /**
     * The mappings for fields on this bundle.
     *
     * @var array
     */
    protected $fieldMappings = [];
    
    /**
     * {@inheritdoc}
     */
    public function getPreparedBundleMapping() {
        return [
            'types' => $this->types,
        ];
    }
    
    /**
     * {@inheritdoc}
     */
    public function getBundleMapping() {
        if (!empty($this->types)) {
            return [
                'types' => $this->types,
            ];
        }
        return [];
    }
    
    /**
     * {@inheritdoc}
     */
    public function setBundleMapping(array $mapping) {
        if (isset($mapping['types'])) {
            $this->types = $mapping['types'];
        }
        return $this;
    }
    
    /**
     * {@inheritdoc}
     */
    public function getPreparedFieldMapping($field_name) {
        $field_mapping = [
            'properties' => NULL,
            'datatype' => NULL,
            'datatype_callback' => NULL,
            'mapping_type' => NULL,
        ];
        if (isset($this->fieldMappings[$field_name])) {
            $field_mapping = array_merge($field_mapping, $this->fieldMappings[$field_name]);
        }
        return empty($field_mapping['properties']) ? [] : $field_mapping;
    }
    
    /**
     * {@inheritdoc}
     */
    public function getFieldMapping($field_name) {
        if (isset($this->fieldMappings[$field_name])) {
            return $this->fieldMappings[$field_name];
        }
        return [];
    }
    
    /**
     * {@inheritdoc}
     */
    public function setFieldMapping($field_name, array $mapping = []) {
        $this->fieldMappings[$field_name] = $mapping;
        return $this;
    }
    
    /**
     * {@inheritdoc}
     */
    public function id() {
        return $this->targetEntityType . '.' . $this->bundle;
    }
    
    /**
     * {@inheritdoc}
     */
    public function calculateDependencies() {
        parent::calculateDependencies();
        // Create dependency on the bundle.
        $entity_type = \Drupal::entityTypeManager()->getDefinition($this->targetEntityType);
        $this->addDependency('module', $entity_type->getProvider());
        $bundle_config_dependency = $entity_type->getBundleConfigDependency($this->bundle);
        $this->addDependency($bundle_config_dependency['type'], $bundle_config_dependency['name']);
        return $this;
    }
    
    /**
     * {@inheritdoc}
     */
    public function postSave(EntityStorageInterface $storage, $update = TRUE) {
        parent::postSave($storage, $update);
        if (\Drupal::entityTypeManager()->hasHandler($this->targetEntityType, 'view_builder')) {
            \Drupal::entityTypeManager()->getViewBuilder($this->targetEntityType)
                ->resetCache();
        }
    }

}

Classes

Title Deprecated Summary
RdfMapping Config entity for working with RDF mappings.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.