class Entity
Same name in this branch
- 11.x core/modules/views/src/Plugin/views/area/Entity.php \Drupal\views\Plugin\views\area\Entity
- 11.x core/modules/migrate/src/Plugin/migrate/destination/Entity.php \Drupal\migrate\Plugin\migrate\destination\Entity
- 11.x core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Test.php \Drupal\Tests\Component\Annotation\Doctrine\Ticket\Entity
- 11.x core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Entity.php \Entity
Same name in other branches
- 9 core/modules/views/src/Plugin/views/argument_validator/Entity.php \Drupal\views\Plugin\views\argument_validator\Entity
- 9 core/modules/views/src/Plugin/views/area/Entity.php \Drupal\views\Plugin\views\area\Entity
- 9 core/modules/migrate/src/Plugin/migrate/destination/Entity.php \Drupal\migrate\Plugin\migrate\destination\Entity
- 9 core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Test.php \Drupal\Tests\Component\Annotation\Doctrine\Ticket\Entity
- 9 core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Entity.php \Entity
- 8.9.x core/modules/views/src/Plugin/views/argument_validator/Entity.php \Drupal\views\Plugin\views\argument_validator\Entity
- 8.9.x core/modules/views/src/Plugin/views/area/Entity.php \Drupal\views\Plugin\views\area\Entity
- 8.9.x core/modules/migrate/src/Plugin/migrate/destination/Entity.php \Drupal\migrate\Plugin\migrate\destination\Entity
- 8.9.x core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Test.php \Drupal\Tests\Component\Annotation\Doctrine\Ticket\Entity
- 8.9.x core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Entity.php \Entity
- 8.9.x core/lib/Drupal/Core/Entity/Entity.php \Drupal\Core\Entity\Entity
- 10 core/modules/views/src/Plugin/views/argument_validator/Entity.php \Drupal\views\Plugin\views\argument_validator\Entity
- 10 core/modules/views/src/Plugin/views/area/Entity.php \Drupal\views\Plugin\views\area\Entity
- 10 core/modules/migrate/src/Plugin/migrate/destination/Entity.php \Drupal\migrate\Plugin\migrate\destination\Entity
- 10 core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Test.php \Drupal\Tests\Component\Annotation\Doctrine\Ticket\Entity
- 10 core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Entity.php \Entity
Defines an argument validator plugin for each entity type.
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements \Drupal\Component\Plugin\PluginInspectionInterface, \Drupal\Component\Plugin\DerivativeInspectionInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
- class \Drupal\views\Plugin\views\PluginBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\Core\Plugin\ContainerFactoryPluginInterface, \Drupal\views\Plugin\views\ViewsPluginInterface, \Drupal\Component\Plugin\DependentPluginInterface, \Drupal\Core\Security\TrustedCallbackInterface
- class \Drupal\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase extends \Drupal\views\Plugin\views\PluginBase
- class \Drupal\views\Plugin\views\argument_validator\Entity extends \Drupal\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase
- class \Drupal\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase extends \Drupal\views\Plugin\views\PluginBase
- class \Drupal\views\Plugin\views\PluginBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\Core\Plugin\ContainerFactoryPluginInterface, \Drupal\views\Plugin\views\ViewsPluginInterface, \Drupal\Component\Plugin\DependentPluginInterface, \Drupal\Core\Security\TrustedCallbackInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
Expanded class hierarchy of Entity
3 files declare their use of Entity
- EntityTest.php in core/
modules/ views/ tests/ src/ Unit/ Plugin/ argument_validator/ EntityTest.php - TermName.php in core/
modules/ taxonomy/ src/ Plugin/ views/ argument_validator/ TermName.php - User.php in core/
modules/ user/ src/ Plugin/ views/ argument_validator/ User.php
69 string references to 'Entity'
- CommentBreadcrumbBuilder::applies in core/
modules/ comment/ src/ CommentBreadcrumbBuilder.php - Whether this breadcrumb builder should be used to build the breadcrumb.
- CommentBreadcrumbBuilder::build in core/
modules/ comment/ src/ CommentBreadcrumbBuilder.php - Builds the breadcrumb.
- comment_tokens in core/
modules/ comment/ comment.tokens.inc - Implements hook_tokens().
- comment_token_info in core/
modules/ comment/ comment.tokens.inc - Implements hook_token_info().
- comment_token_info in core/
modules/ comment/ comment.tokens.inc - Implements hook_token_info().
File
-
core/
modules/ views/ src/ Plugin/ views/ argument_validator/ Entity.php, line 18
Namespace
Drupal\views\Plugin\views\argument_validatorView source
class Entity extends ArgumentValidatorPluginBase {
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* The entity bundle info.
*
* @var \Drupal\Core\Entity\EntityTypeBundleInfoInterface
*/
protected $entityTypeBundleInfo;
/**
* If this validator can handle multiple arguments.
*
* @var bool
*/
protected $multipleCapable = TRUE;
/**
* Constructs a \Drupal\views\Plugin\views\argument_validator\Entity object.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin ID for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager.
* @param \Drupal\Core\Entity\EntityTypeBundleInfoInterface $entity_type_bundle_info
* The entity type bundle info.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityTypeBundleInfoInterface $entity_type_bundle_info) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->entityTypeManager = $entity_type_manager;
$this->entityTypeBundleInfo = $entity_type_bundle_info;
}
/**
* {@inheritdoc}
*/
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('entity_type.bundle.info'));
}
/**
* {@inheritdoc}
*/
protected function defineOptions() {
$options = parent::defineOptions();
$options['bundles'] = [
'default' => [],
];
$options['access'] = [
'default' => FALSE,
];
$options['operation'] = [
'default' => 'view',
];
$options['multiple'] = [
'default' => FALSE,
];
return $options;
}
/**
* {@inheritdoc}
*/
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
parent::buildOptionsForm($form, $form_state);
$entity_type_id = $this->definition['entity_type'];
// Derivative IDs are all entity:entity_type. Sanitized for js.
// The ID is converted back on submission.
$sanitized_id = ArgumentPluginBase::encodeValidatorId($this->definition['id']);
$entity_type = $this->entityTypeManager
->getDefinition($entity_type_id);
// If the entity has bundles, allow option to restrict to bundle(s).
if ($entity_type->hasKey('bundle')) {
$bundle_options = [];
foreach ($this->entityTypeBundleInfo
->getBundleInfo($entity_type_id) as $bundle_id => $bundle_info) {
$bundle_options[$bundle_id] = $bundle_info['label'];
}
$form['bundles'] = [
'#title' => $entity_type->getBundleLabel() ?: $this->t('Bundles'),
'#default_value' => $this->options['bundles'],
'#type' => 'checkboxes',
'#options' => $bundle_options,
'#description' => $this->t('If none are selected, all are allowed.'),
];
}
// Offer the option to filter by access to the entity in the argument.
$form['access'] = [
'#type' => 'checkbox',
'#title' => $this->t('Validate user has access to the %name', [
'%name' => $entity_type->getLabel(),
]),
'#default_value' => $this->options['access'],
];
$form['operation'] = [
'#type' => 'radios',
'#title' => $this->t('Access operation to check'),
'#options' => [
'view' => $this->t('View'),
'update' => $this->t('Edit'),
'delete' => $this->t('Delete'),
],
'#default_value' => $this->options['operation'],
'#states' => [
'visible' => [
':input[name="options[validate][options][' . $sanitized_id . '][access]"]' => [
'checked' => TRUE,
],
],
],
];
// If class is multiple capable give the option to validate single/multiple.
if ($this->multipleCapable) {
$form['multiple'] = [
'#type' => 'radios',
'#title' => $this->t('Multiple arguments'),
'#options' => [
0 => $this->t('Single ID', [
'%type' => $entity_type->getLabel(),
]),
1 => $this->t('One or more IDs separated by , or +', [
'%type' => $entity_type->getLabel(),
]),
],
'#default_value' => (string) $this->options['multiple'],
];
}
}
/**
* {@inheritdoc}
*/
public function submitOptionsForm(&$form, FormStateInterface $form_state, &$options = []) {
// Filter out unused options so we don't store giant unnecessary arrays.
// Note that the bundles form option doesn't appear on the form if the
// entity type doesn't support bundles, so the option may not be set.
if (!empty($options['bundles'])) {
$options['bundles'] = array_filter($options['bundles']);
}
else {
// Set bundles back to its default empty value.
$options['bundles'] = [];
}
}
/**
* {@inheritdoc}
*/
public function validateArgument($argument) {
$entity_type = $this->definition['entity_type'];
if ($this->multipleCapable && $this->options['multiple'] && isset($argument)) {
// At this point only interested in individual IDs no matter what type,
// just splitting by the allowed delimiters.
$ids = array_filter(preg_split('/[,+ ]/', $argument));
}
elseif ($argument) {
$ids = [
$argument,
];
}
else {
return FALSE;
}
$entities = $this->entityTypeManager
->getStorage($entity_type)
->loadMultiple($ids);
// Validate each id => entity. If any fails break out and return false.
foreach ($ids as $id) {
// There is no entity for this ID.
if (!isset($entities[$id])) {
return FALSE;
}
if (!$this->validateEntity($entities[$id])) {
return FALSE;
}
}
return TRUE;
}
/**
* Validates an individual entity against class access settings.
*
* @param \Drupal\Core\Entity\EntityInterface $entity
* The entity.
*
* @return bool
* True if validated.
*/
protected function validateEntity(EntityInterface $entity) {
// If access restricted by entity operation.
if ($this->options['access'] && !$entity->access($this->options['operation'])) {
return FALSE;
}
// If restricted by bundle.
$bundles = $this->options['bundles'];
if (!empty($bundles) && empty($bundles[$entity->bundle()])) {
return FALSE;
}
return TRUE;
}
/**
* {@inheritdoc}
*/
public function calculateDependencies() {
$dependencies = parent::calculateDependencies();
$entity_type_id = $this->definition['entity_type'];
$bundle_entity_type = $this->entityTypeManager
->getDefinition($entity_type_id)
->getBundleEntityType();
// The bundle entity type might not exist. For example, users do not have
// bundles.
if ($this->entityTypeManager
->hasHandler($bundle_entity_type, 'storage')) {
$bundle_entity_storage = $this->entityTypeManager
->getStorage($bundle_entity_type);
foreach ($bundle_entity_storage->loadMultiple(array_keys($this->options['bundles'])) as $bundle_entity) {
$dependencies[$bundle_entity->getConfigDependencyKey()][] = $bundle_entity->getConfigDependencyName();
}
}
return $dependencies;
}
/**
* {@inheritdoc}
*/
public function getContextDefinition() {
return EntityContextDefinition::fromEntityTypeId($this->definition['entity_type'])
->setLabel($this->argument
->adminLabel())
->setRequired(FALSE);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
ArgumentValidatorPluginBase::$argument | protected | property | The argument handler instance associated with this plugin. | ||
ArgumentValidatorPluginBase::$option_name | public | property | |||
ArgumentValidatorPluginBase::access | public | function | Determines if the administrator has the privileges to use this plugin. | ||
ArgumentValidatorPluginBase::checkAccess | protected | function | Blocks user input when the form is shown but we donĀ“t have access. | ||
ArgumentValidatorPluginBase::processSummaryArguments | public | function | Processes the summary arguments for displaying. | 1 | |
ArgumentValidatorPluginBase::setArgument | public | function | Sets the parent argument this plugin is associated with. | ||
ArgumentValidatorPluginBase::validateOptionsForm | public | function | Provides the default form for validating options. | Overrides PluginBase::validateOptionsForm | |
DerivativeInspectionInterface::getBaseId | public | function | Gets the base_plugin_id of the plugin instance. | 1 | |
DerivativeInspectionInterface::getDerivativeId | public | function | Gets the derivative_id of the plugin instance. | 1 | |
Entity::$entityTypeBundleInfo | protected | property | The entity bundle info. | ||
Entity::$entityTypeManager | protected | property | The entity type manager. | ||
Entity::$multipleCapable | protected | property | If this validator can handle multiple arguments. | ||
Entity::buildOptionsForm | public | function | Overrides ArgumentValidatorPluginBase::buildOptionsForm | 2 | |
Entity::calculateDependencies | public | function | Overrides PluginBase::calculateDependencies | 1 | |
Entity::create | public static | function | Overrides PluginBase::create | ||
Entity::defineOptions | protected | function | Overrides ArgumentValidatorPluginBase::defineOptions | 2 | |
Entity::getContextDefinition | public | function | Overrides ArgumentValidatorPluginBase::getContextDefinition | ||
Entity::submitOptionsForm | public | function | Overrides ArgumentValidatorPluginBase::submitOptionsForm | 1 | |
Entity::validateArgument | public | function | Overrides ArgumentValidatorPluginBase::validateArgument | 2 | |
Entity::validateEntity | protected | function | Validates an individual entity against class access settings. | 1 | |
Entity::__construct | public | function | Constructs a \Drupal\views\Plugin\views\argument_validator\Entity object. | Overrides PluginBase::__construct | 2 |
PluginBase::$definition | public | property | Plugins' definition. | ||
PluginBase::$displayHandler | public | property | The display object this plugin is for. | ||
PluginBase::$options | public | property | Options for this plugin will be held here. | ||
PluginBase::$position | public | property | The handler position. | ||
PluginBase::$renderer | protected | property | Stores the render API renderer. | 3 | |
PluginBase::$usesOptions | protected | property | Denotes whether the plugin has an additional options form. | 8 | |
PluginBase::$view | public | property | The top object of a view. | 1 | |
PluginBase::destroy | public | function | Overrides ViewsPluginInterface::destroy | 2 | |
PluginBase::doFilterByDefinedOptions | protected | function | Do the work to filter out stored options depending on the defined options. | ||
PluginBase::filterByDefinedOptions | public | function | Overrides ViewsPluginInterface::filterByDefinedOptions | ||
PluginBase::getAvailableGlobalTokens | public | function | Overrides ViewsPluginInterface::getAvailableGlobalTokens | ||
PluginBase::getProvider | public | function | Overrides ViewsPluginInterface::getProvider | ||
PluginBase::getRenderer | protected | function | Returns the render API renderer. | 1 | |
PluginBase::globalTokenForm | public | function | Overrides ViewsPluginInterface::globalTokenForm | ||
PluginBase::globalTokenReplace | public | function | Overrides ViewsPluginInterface::globalTokenReplace | ||
PluginBase::INCLUDE_ENTITY | constant | Include entity row languages when listing languages. | |||
PluginBase::INCLUDE_NEGOTIATED | constant | Include negotiated languages when listing languages. | |||
PluginBase::init | public | function | Overrides ViewsPluginInterface::init | 6 | |
PluginBase::listLanguages | protected | function | Makes an array of languages, optionally including special languages. | ||
PluginBase::pluginTitle | public | function | Overrides ViewsPluginInterface::pluginTitle | ||
PluginBase::preRenderAddFieldsetMarkup | public static | function | Overrides ViewsPluginInterface::preRenderAddFieldsetMarkup | ||
PluginBase::preRenderFlattenData | public static | function | Overrides ViewsPluginInterface::preRenderFlattenData | ||
PluginBase::query | public | function | Overrides ViewsPluginInterface::query | 8 | |
PluginBase::queryLanguageSubstitutions | public static | function | Returns substitutions for Views queries for languages. | ||
PluginBase::setOptionDefaults | protected | function | Fills up the options of the plugin with defaults. | ||
PluginBase::summaryTitle | public | function | Overrides ViewsPluginInterface::summaryTitle | 6 | |
PluginBase::themeFunctions | public | function | Overrides ViewsPluginInterface::themeFunctions | 1 | |
PluginBase::trustedCallbacks | public static | function | Overrides TrustedCallbackInterface::trustedCallbacks | 6 | |
PluginBase::unpackOptions | public | function | Overrides ViewsPluginInterface::unpackOptions | ||
PluginBase::usesOptions | public | function | Overrides ViewsPluginInterface::usesOptions | 8 | |
PluginBase::validate | public | function | Overrides ViewsPluginInterface::validate | 6 | |
PluginBase::viewsTokenReplace | protected | function | Replaces Views' tokens in a given string. | 1 | |
PluginBase::VIEWS_QUERY_LANGUAGE_SITE_DEFAULT | constant | Query string to indicate the site default language. | |||
PluginInspectionInterface::getPluginDefinition | public | function | Gets the definition of the plugin implementation. | 6 | |
PluginInspectionInterface::getPluginId | public | function | Gets the plugin ID of the plugin instance. | 2 | |
TrustedCallbackInterface::THROW_EXCEPTION | constant | Untrusted callbacks throw exceptions. | |||
TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION | constant | Untrusted callbacks trigger silenced E_USER_DEPRECATION errors. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.