class EntityReference in Multiversion 8
Same name and namespace in other branches
- 8.2 src/EntityReference.php \Drupal\multiversion\EntityReference
Alternative entity reference data type class.
This class is being altered in place of the core entity reference data type to allow references to deleted entities. This is needed as deleted entities still exist in the database when using Multiversion module.
@todo We have integrations tests that ensure this is working. But some unit tests would be good to ensure all possible scenarios are covered.
Hierarchy
- class \Drupal\Core\TypedData\TypedData implements PluginInspectionInterface, TypedDataInterface uses DependencySerializationTrait, StringTranslationTrait, TypedDataTrait
- class \Drupal\Core\TypedData\DataReferenceBase implements DataReferenceInterface
- class \Drupal\Core\Entity\Plugin\DataType\EntityReference
- class \Drupal\multiversion\EntityReference
- class \Drupal\Core\Entity\Plugin\DataType\EntityReference
- class \Drupal\Core\TypedData\DataReferenceBase implements DataReferenceInterface
Expanded class hierarchy of EntityReference
File
- src/
EntityReference.php, line 18
Namespace
Drupal\multiversionView source
class EntityReference extends CoreEntityReference {
/**
* {@inheritdoc}
*/
public function getTarget() {
// Try getting the target entity the default way. If no target was found
// this might mean it was deleted. In that case, we try to load the deleted
// entity instead.
parent::getTarget();
if (!isset($this->target) && isset($this->id)) {
/** @var EntityTypeManagerInterface $entity_type_manager */
$entity_type_manager = \Drupal::service('entity_type.manager');
/** @var \Drupal\multiversion\MultiversionManagerInterface $multiversion_manager */
$multiversion_manager = \Drupal::service('multiversion.manager');
$entity_type_id = $this
->getTargetDefinition()
->getEntityTypeId();
$entity_type = $entity_type_manager
->getDefinition($entity_type_id);
if ($multiversion_manager
->isEnabledEntityType($entity_type)) {
/** @var \Drupal\multiversion\Entity\Storage\ContentEntityStorageInterface $storage */
$storage = $entity_type_manager
->getStorage($entity_type_id);
$entity = $storage
->loadDeleted($this->id);
$this->target = isset($entity) ? $entity
->getTypedData() : NULL;
}
}
return $this->target;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DataReferenceBase:: |
protected | property | The referenced data. | |
DataReferenceBase:: |
public | function |
Gets the data value. Overrides TypedData:: |
|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
EntityReference:: |
protected | property | The entity ID. | |
EntityReference:: |
public | function |
Returns a string representation of the data. Overrides DataReferenceBase:: |
|
EntityReference:: |
public | function |
Gets the referenced data. Overrides EntityReference:: |
|
EntityReference:: |
public | function | Gets the definition of the referenced entity. | |
EntityReference:: |
public | function |
Gets the identifier of the referenced data. Overrides DataReferenceInterface:: |
|
EntityReference:: |
public | function | Checks whether the target entity has not been saved yet. | |
EntityReference:: |
public | function |
Sets the data value. Overrides DataReferenceBase:: |
|
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
TypedData:: |
protected | property | The data definition. | 1 |
TypedData:: |
protected | property | The property name. | |
TypedData:: |
protected | property | The parent typed data object. | |
TypedData:: |
public | function |
Applies the default value. Overrides TypedDataInterface:: |
3 |
TypedData:: |
public static | function |
Constructs a TypedData object given its definition and context. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Gets a list of validation constraints. Overrides TypedDataInterface:: |
9 |
TypedData:: |
public | function |
Gets the data definition. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Returns the name of a property or item. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Returns the parent data structure; i.e. either complex data or a list. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
|
TypedData:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
TypedData:: |
public | function |
Returns the property path of the data. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Returns the root of the typed data tree. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Sets the context of a property or item via a context aware parent. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Validates the currently set data value. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function | Constructs a TypedData object given its definition and context. | 3 |
TypedDataTrait:: |
protected | property | The typed data manager used for creating the data types. | |
TypedDataTrait:: |
public | function | Gets the typed data manager. | 2 |
TypedDataTrait:: |
public | function | Sets the typed data manager. | 2 |