EntityDataDefinition.php in Zircon Profile 8.0
File
core/lib/Drupal/Core/Entity/TypedData/EntityDataDefinition.php
View source
<?php
namespace Drupal\Core\Entity\TypedData;
use Drupal\Core\TypedData\ComplexDataDefinitionBase;
class EntityDataDefinition extends ComplexDataDefinitionBase implements EntityDataDefinitionInterface {
public static function create($entity_type_id = NULL) {
$definition = new static(array());
if (isset($entity_type_id)) {
$definition
->setEntityTypeId($entity_type_id);
}
return $definition;
}
public static function createFromDataType($data_type) {
$parts = explode(':', $data_type);
if ($parts[0] != 'entity') {
throw new \InvalidArgumentException('Data type must be in the form of "entity:ENTITY_TYPE:BUNDLE."');
}
$definition = static::create();
if (isset($parts[1])) {
$definition
->setEntityTypeId($parts[1]);
}
if (isset($parts[2])) {
$definition
->setBundles(array(
$parts[2],
));
}
return $definition;
}
public function getPropertyDefinitions() {
if (!isset($this->propertyDefinitions)) {
if ($entity_type_id = $this
->getEntityTypeId()) {
$entity_type_class = \Drupal::entityManager()
->getDefinition($entity_type_id)
->getClass();
if (!in_array('Drupal\\Core\\Entity\\FieldableEntityInterface', class_implements($entity_type_class))) {
$this->propertyDefinitions = array();
}
else {
$bundles = $this
->getBundles();
if (is_array($bundles) && count($bundles) == 1) {
$this->propertyDefinitions = \Drupal::entityManager()
->getFieldDefinitions($entity_type_id, reset($bundles));
}
else {
$this->propertyDefinitions = \Drupal::entityManager()
->getBaseFieldDefinitions($entity_type_id);
}
}
}
else {
$this->propertyDefinitions = array();
}
}
return $this->propertyDefinitions;
}
public function getDataType() {
$type = 'entity';
if ($entity_type = $this
->getEntityTypeId()) {
$type .= ':' . $entity_type;
if (($bundles = $this
->getBundles()) && count($bundles) == 1) {
$bundle = reset($bundles);
if ($bundle != $entity_type) {
$type .= ':' . $bundle;
}
}
}
return $type;
}
public function getEntityTypeId() {
return isset($this->definition['constraints']['EntityType']) ? $this->definition['constraints']['EntityType'] : NULL;
}
public function setEntityTypeId($entity_type_id) {
return $this
->addConstraint('EntityType', $entity_type_id);
}
public function getBundles() {
$bundle = isset($this->definition['constraints']['Bundle']) ? $this->definition['constraints']['Bundle'] : NULL;
return is_string($bundle) ? array(
$bundle,
) : $bundle;
}
public function setBundles(array $bundles = NULL) {
if (isset($bundles)) {
$this
->addConstraint('Bundle', $bundles);
}
else {
unset($this->definition['constraints']['Bundle']);
}
return $this;
}
}