class EntityReferenceRevisions in GraphQL 8.4
Loads the entity reference revisions.
Plugin annotation
@DataProducer(
id = "entity_reference_revisions",
name = @Translation("Entity reference revisions"),
description = @Translation("Loads entities from an entity reference revisions field."),
provider = "entity_reference_revisions",
produces = @ContextDefinition("entity",
label = @Translation("Entity"),
multiple = TRUE
),
consumes = {
"entity" = @ContextDefinition("entity",
label = @Translation("Parent entity")
),
"field" = @ContextDefinition("string",
label = @Translation("Field name")
),
"language" = @ContextDefinition("string",
label = @Translation("Language"),
multiple = TRUE,
required = FALSE
),
"bundle" = @ContextDefinition("string",
label = @Translation("Entity bundle(s)"),
multiple = TRUE,
required = FALSE
),
"access" = @ContextDefinition("boolean",
label = @Translation("Check access"),
required = FALSE,
default_value = TRUE
),
"access_user" = @ContextDefinition("entity:user",
label = @Translation("User"),
required = FALSE,
default_value = NULL
),
"access_operation" = @ContextDefinition("string",
label = @Translation("Operation"),
required = FALSE,
default_value = "view"
)
}
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Component\Plugin\ContextAwarePluginBase implements ContextAwarePluginInterface
- class \Drupal\Core\Plugin\ContextAwarePluginBase implements CacheableDependencyInterface, ContextAwarePluginInterface uses DependencySerializationTrait, StringTranslationTrait, TypedDataTrait
- class \Drupal\graphql\Plugin\GraphQL\DataProducer\DataProducerPluginBase implements DataProducerPluginInterface uses DataProducerPluginCachingTrait
- class \Drupal\graphql\Plugin\GraphQL\DataProducer\Field\EntityReferenceRevisions implements ContainerFactoryPluginInterface uses EntityReferenceTrait
- class \Drupal\graphql\Plugin\GraphQL\DataProducer\DataProducerPluginBase implements DataProducerPluginInterface uses DataProducerPluginCachingTrait
- class \Drupal\Core\Plugin\ContextAwarePluginBase implements CacheableDependencyInterface, ContextAwarePluginInterface uses DependencySerializationTrait, StringTranslationTrait, TypedDataTrait
- class \Drupal\Component\Plugin\ContextAwarePluginBase implements ContextAwarePluginInterface
Expanded class hierarchy of EntityReferenceRevisions
File
- src/
Plugin/ GraphQL/ DataProducer/ Field/ EntityReferenceRevisions.php, line 64
Namespace
Drupal\graphql\Plugin\GraphQL\DataProducer\FieldView source
class EntityReferenceRevisions extends DataProducerPluginBase implements ContainerFactoryPluginInterface {
use EntityReferenceTrait;
/**
* The entity type manager service.
*
* @var \Drupal\Core\Entity\EntityTypeManager
*/
protected $entityTypeManager;
/**
* The entity revision buffer service.
*
* @var \Drupal\graphql\GraphQL\Buffers\EntityRevisionBuffer
*/
protected $entityRevisionBuffer;
/**
* {@inheritdoc}
*
* @codeCoverageIgnore
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('entity_type.manager'), $container
->get('graphql.buffer.entity_revision'));
}
/**
* EntityLoad constructor.
*
* @param array $configuration
* The plugin configuration array.
* @param string $pluginId
* The plugin id.
* @param array $pluginDefinition
* The plugin definition array.
* @param \Drupal\Core\Entity\EntityTypeManager $entityTypeManager
* The entity type manager service.
* @param \Drupal\graphql\GraphQL\Buffers\EntityRevisionBuffer $entityRevisionBuffer
* The entity revision buffer service.
*
* @codeCoverageIgnore
*/
public function __construct(array $configuration, string $pluginId, array $pluginDefinition, EntityTypeManager $entityTypeManager, EntityRevisionBuffer $entityRevisionBuffer) {
parent::__construct($configuration, $pluginId, $pluginDefinition);
$this->entityTypeManager = $entityTypeManager;
$this->entityRevisionBuffer = $entityRevisionBuffer;
}
/**
* Resolves entity reference revisions for a given field of a given entity.
*
* May optionally respect the entity bundles and language.
*
* @param \Drupal\Core\Entity\EntityInterface $entity
* The entity.
* @param string $field
* The field of a given entity to get entity reference revisions for.
* @param string|null $language
* Optional. Language to be respected for retrieved entities.
* @param array|null $bundles
* Optional. List of bundles to be respected for retrieved entities.
* @param bool $access
* Whether check for access or not. Default is true.
* @param \Drupal\Core\Session\AccountInterface|null $accessUser
* User entity to check access for. Default is null.
* @param string $accessOperation
* Operation to check access for. Default is view.
* @param \Drupal\graphql\GraphQL\Execution\FieldContext $context
* The caching context related to the current field.
*
* @return \GraphQL\Deferred|null
* A promise that will return entities or NULL if there aren't any.
*/
public function resolve(EntityInterface $entity, string $field, ?string $language, ?array $bundles, bool $access, ?AccountInterface $accessUser, string $accessOperation, FieldContext $context) : ?Deferred {
if (!$entity instanceof FieldableEntityInterface || !$entity
->hasField($field)) {
return NULL;
}
$definition = $entity
->getFieldDefinition($field);
if ($definition
->getType() !== 'entity_reference_revisions') {
return NULL;
}
$definition = $entity
->getFieldDefinition($field);
$type = $definition
->getSetting('target_type');
$values = $entity
->get($field);
if ($values instanceof EntityReferenceFieldItemListInterface) {
$vids = array_map(function ($value) {
return $value['target_revision_id'];
}, $values
->getValue());
$resolver = $this->entityRevisionBuffer
->add($type, $vids);
return new Deferred(function () use ($type, $language, $bundles, $access, $accessUser, $accessOperation, $resolver, $context) {
return $this
->getReferencedEntities($type, $language, $bundles, $access, $accessUser, $accessOperation, $resolver, $context);
});
}
return NULL;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ContextAwarePluginBase:: |
protected | property | The data objects representing the context of this plugin. | |
ContextAwarePluginBase:: |
private | property | Data objects representing the contexts passed in the plugin configuration. | |
ContextAwarePluginBase:: |
protected | function | Wraps the context handler. | |
ContextAwarePluginBase:: |
protected | function |
Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
The cache contexts associated with this object. Overrides CacheableDependencyInterface:: |
9 |
ContextAwarePluginBase:: |
public | function |
The maximum age for which this object may be cached. Overrides CacheableDependencyInterface:: |
7 |
ContextAwarePluginBase:: |
public | function |
The cache tags associated with this object. Overrides CacheableDependencyInterface:: |
4 |
ContextAwarePluginBase:: |
public | function |
This code is identical to the Component in order to pick up a different
Context class. Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Gets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Gets the defined contexts. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Gets the value for a defined context. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Set a context on this plugin. Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Sets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Sets the value for a defined context. Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Validates the set values for the defined contexts. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function | Implements magic __get() method. | |
DataProducerPluginBase:: |
public | function |
Overrides ContextAwarePluginBase:: |
|
DataProducerPluginBase:: |
public | function |
Gets the context definitions of the plugin. Overrides ContextAwarePluginBase:: |
|
DataProducerPluginBase:: |
public | function |
Resolves the queried field with the given context. Overrides DataProducerPluginInterface:: |
|
DataProducerPluginCachingTrait:: |
public | function | ||
DataProducerPluginCachingTrait:: |
abstract public | function | ||
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 | |
EntityReferenceRevisions:: |
protected | property | The entity revision buffer service. | |
EntityReferenceRevisions:: |
protected | property | The entity type manager service. | |
EntityReferenceRevisions:: |
public static | function |
@codeCoverageIgnore Overrides ContainerFactoryPluginInterface:: |
|
EntityReferenceRevisions:: |
public | function | Resolves entity reference revisions for a given field of a given entity. | |
EntityReferenceRevisions:: |
public | function |
EntityLoad constructor. Overrides ContextAwarePluginBase:: |
|
EntityReferenceTrait:: |
private | function | Filter out not accessible entities. | |
EntityReferenceTrait:: |
protected | function | Retrieves referenced entities from the given resolver. | |
EntityReferenceTrait:: |
private | function | Get the referenced entities in the specified language. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
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. | |
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 |