class QueryStringWebformSourceEntity in Webform 6.x
Same name and namespace in other branches
- 8.5 src/Plugin/WebformSourceEntity/QueryStringWebformSourceEntity.php \Drupal\webform\Plugin\WebformSourceEntity\QueryStringWebformSourceEntity
Detect source entity by examining query string.
Plugin annotation
@WebformSourceEntity(
id = "query_string",
label = @Translation("Query string"),
weight = 0
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\webform\Plugin\WebformSourceEntityBase implements ContainerFactoryPluginInterface, WebformSourceEntityInterface
- class \Drupal\webform\Plugin\WebformSourceEntity\QueryStringWebformSourceEntity
- class \Drupal\webform\Plugin\WebformSourceEntityBase implements ContainerFactoryPluginInterface, WebformSourceEntityInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of QueryStringWebformSourceEntity
5 files declare their use of QueryStringWebformSourceEntity
- QueryStringWebformSourceEntityTest.php in tests/
src/ Unit/ Plugin/ WebformSourceEntity/ QueryStringWebformSourceEntityTest.php - WebformEntityReferenceLinkFormatter.php in src/
Plugin/ Field/ FieldFormatter/ WebformEntityReferenceLinkFormatter.php - WebformEntityReferenceUrlFormatter.php in src/
Plugin/ Field/ FieldFormatter/ WebformEntityReferenceUrlFormatter.php - WebformShareIframe.php in modules/
webform_share/ src/ Element/ WebformShareIframe.php - WebformShareScript.php in modules/
webform_share/ src/ Element/ WebformShareScript.php
File
- src/
Plugin/ WebformSourceEntity/ QueryStringWebformSourceEntity.php, line 19
Namespace
Drupal\webform\Plugin\WebformSourceEntityView source
class QueryStringWebformSourceEntity extends WebformSourceEntityBase {
/**
* Entity type manager service.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* The current route match.
*
* @var \Drupal\Core\Routing\RouteMatchInterface
*/
protected $routeMatch;
/**
* The current request.
*
* @var \Symfony\Component\HttpFoundation\Request
*/
protected $request;
/**
* The language manager service.
*
* @var \Drupal\Core\Language\LanguageManagerInterface
*/
protected $languageManager;
/**
* The webform entity reference manager.
*
* @var \Drupal\webform\WebformEntityReferenceManagerInterface
*/
protected $webformEntityReferenceManager;
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
$instance = parent::create($container, $configuration, $plugin_id, $plugin_definition);
$instance->entityTypeManager = $container
->get('entity_type.manager');
$instance->routeMatch = $container
->get('current_route_match');
$instance->request = $container
->get('request_stack')
->getCurrentRequest();
$instance->languageManager = $container
->get('language_manager');
$instance->webformEntityReferenceManager = $container
->get('webform.entity_reference_manager');
return $instance;
}
/**
* {@inheritdoc}
*/
public function getSourceEntity(array $ignored_types) {
// Note: We deliberately discard $ignored_types because through query string
// any arbitrary entity can be injected as a source.
$webform = $this->routeMatch
->getParameter('webform');
if (!$webform) {
return NULL;
}
// Get and check source entity type.
$source_entity_type = $this->request->query
->get('source_entity_type');
if (!$source_entity_type || !$this->entityTypeManager
->hasDefinition($source_entity_type)) {
return NULL;
}
// Get and check source entity id.
$source_entity_id = $this->request->query
->get('source_entity_id');
if (!$source_entity_id) {
return NULL;
}
// Get and check source entity.
$source_entity = $this->entityTypeManager
->getStorage($source_entity_type)
->load($source_entity_id);
if (!$source_entity) {
return NULL;
}
// Get translated source entity.
if ($source_entity instanceof TranslatableInterface && $source_entity
->hasTranslation($this->languageManager
->getCurrentLanguage()
->getId())) {
$source_entity = $source_entity
->getTranslation($this->languageManager
->getCurrentLanguage()
->getId());
}
// Check source entity access.
if (!$source_entity
->access('view')) {
return NULL;
}
// Check that the webform is referenced by the source entity.
if (!$webform
->getSetting('form_prepopulate_source_entity')) {
// Get source entity's webform field.
$webform_field_names = $this->webformEntityReferenceManager
->getFieldNames($source_entity);
foreach ($webform_field_names as $webform_field_name) {
// Check that source entity's reference webform is the
// current webform.
foreach ($source_entity->{$webform_field_name} as $item) {
if ($item->target_id === $webform
->id()) {
return $source_entity;
}
}
}
return NULL;
}
return $source_entity;
}
/**
* Get source entity route options query string parameters.
*
* @param \Drupal\Core\Entity\EntityInterface|null $entity
* An entity.
*
* @return array
* An associative array contains a source entity's route options
* query string parameters.
*/
public static function getRouteOptionsQuery(EntityInterface $entity = NULL) {
if (!$entity) {
return [];
}
else {
return [
'query' => [
'source_entity_type' => $entity
->getEntityTypeId(),
'source_entity_id' => $entity
->id(),
],
];
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
public | function | 2 | |
DependencySerializationTrait:: |
public | function | 2 | |
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
MessengerTrait:: |
public | function | Sets the messenger. | |
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:: |
2 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
PluginBase:: |
public | function | Constructs a \Drupal\Component\Plugin\PluginBase object. | 98 |
QueryStringWebformSourceEntity:: |
protected | property | Entity type manager service. | |
QueryStringWebformSourceEntity:: |
protected | property | The language manager service. | |
QueryStringWebformSourceEntity:: |
protected | property | The current request. | |
QueryStringWebformSourceEntity:: |
protected | property | The current route match. | |
QueryStringWebformSourceEntity:: |
protected | property | The webform entity reference manager. | |
QueryStringWebformSourceEntity:: |
public static | function |
Creates an instance of the plugin. Overrides WebformSourceEntityBase:: |
|
QueryStringWebformSourceEntity:: |
public static | function | Get source entity route options query string parameters. | |
QueryStringWebformSourceEntity:: |
public | function |
Detect and return a source entity from current context. Overrides WebformSourceEntityInterface:: |
|
StringTranslationTrait:: |
protected | property | The string translation service. | 4 |
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. |