class RightToAccessEntityTraversal in General Data Protection Regulation 8.2
Same name and namespace in other branches
- 8 modules/gdpr_tasks/src/Traversal/RightToAccessEntityTraversal.php \Drupal\gdpr_tasks\Traversal\RightToAccessEntityTraversal
- 3.0.x modules/gdpr_tasks/src/Traversal/RightToAccessEntityTraversal.php \Drupal\gdpr_tasks\Traversal\RightToAccessEntityTraversal
Entity traversal for performing Right to Access requests.
@package Drupal\gdpr_tasks
Hierarchy
- class \Drupal\gdpr_fields\EntityTraversal implements EntityTraversalInterface
- class \Drupal\gdpr_tasks\Traversal\RightToAccessEntityTraversal
Expanded class hierarchy of RightToAccessEntityTraversal
1 string reference to 'RightToAccessEntityTraversal'
- gdpr_tasks.services.yml in modules/
gdpr_tasks/ gdpr_tasks.services.yml - modules/gdpr_tasks/gdpr_tasks.services.yml
File
- modules/
gdpr_tasks/ src/ Traversal/ RightToAccessEntityTraversal.php, line 20
Namespace
Drupal\gdpr_tasks\TraversalView source
class RightToAccessEntityTraversal extends EntityTraversal {
/**
* Assets.
*
* @var array
*/
private $assets = [];
/**
* {@inheritdoc}
*/
protected function processEntity(FieldableEntityInterface $entity, GdprFieldConfigEntity $config, $row_id, GdprField $parent_config = NULL) {
$entityType = $entity
->getEntityTypeId();
$fields = $this->entityFieldManager
->getFieldDefinitions($entityType, $entity
->bundle());
$fieldConfigs = $config
->getFieldsForBundle($entity
->bundle());
foreach ($fields as $fieldId => $field) {
$fieldConfig = isset($fieldConfigs[$fieldId]) ? $fieldConfigs[$fieldId] : NULL;
// If the field is not configured, not enabled,
// or not enabled for RTA, then skip it.
if ($fieldConfig === NULL || !$fieldConfig->enabled || !in_array($fieldConfig->rta, [
'inc',
'maybe',
])) {
continue;
}
$pluginName = "{$entityType}|{$entity->bundle()}|{$fieldId}";
$filename = 'main';
if ($parent_config) {
$filename = !empty($parent_config->sarsFilename) ? $parent_config->sarsFilename : $filename;
}
$fieldValue = $this
->getFieldValue($entity, $field, $fieldId);
$data = [
'plugin_name' => $pluginName,
'entity_type' => $entityType,
'entity_id' => $entity
->id(),
'file' => $filename,
'row_id' => $row_id,
'label' => $field
->getLabel(),
'value' => $fieldValue,
'notes' => $fieldConfig->notes,
'rta' => $fieldConfig->rta,
];
$this->results["{$pluginName}|{$entity->id()}"] = $data;
}
}
/**
* Gets the field value, taking into account file references.
*
* @param \Drupal\Core\Entity\FieldableEntityInterface $entity
* The current entity being processed.
* @param \Drupal\Core\Field\FieldDefinitionInterface $field
* Field definition.
* @param string $fieldId
* Field ID.
*
* @return string
* Field value
*/
protected function getFieldValue(FieldableEntityInterface $entity, FieldDefinitionInterface $field, $fieldId) {
// Special handling for file references.
// For files, we want to add to the assets collection.
$labels = [];
if ($entity->{$fieldId} instanceof EntityReferenceFieldItemList) {
if ($field
->getSetting('target_type') === 'file') {
/* @var \Drupal\file\Entity\File $file */
foreach ($entity->{$fieldId}
->referencedEntities() as $file) {
$this->assets[] = [
'target_id' => $file
->id(),
'display' => 1,
];
$labels[] = "assets/{$file->id()}." . pathinfo($file
->getFileUri(), PATHINFO_EXTENSION);
}
}
else {
/* @var \Drupal\Core\Entity\EntityInterface $referenced_entity */
foreach ($entity->{$fieldId}
->referencedEntities() as $referenced_entity) {
if ($referenced_entity
->label()) {
$labels[] = "{$referenced_entity->label()} [{$referenced_entity->id()}]";
}
else {
$labels[] = $referenced_entity
->id();
}
}
}
}
else {
$labels[] = $entity
->get($fieldId)
->getString();
}
return implode(', ', $labels);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
EntityTraversal:: |
protected | property | The starting entity for the traversal. | |
EntityTraversal:: |
protected | property | Entity storage for GDPR config entities. | |
EntityTraversal:: |
protected | property | The processed entities. | |
EntityTraversal:: |
protected | property | Entity field manager. | |
EntityTraversal:: |
protected | property | Entity type manager. | |
EntityTraversal:: |
protected | property | The results of the traversal. | |
EntityTraversal:: |
private | property | Reverse relationship information. | |
EntityTraversal:: |
protected | property | Whether or not the traversal has happened successfully. | |
EntityTraversal:: |
public static | function |
Creates an instance of the traversal for this specific entity. Overrides EntityTraversalContainerInjectionInterface:: |
1 |
EntityTraversal:: |
protected | function | Traverses the entity relationship tree. | |
EntityTraversal:: |
protected | function | Gets all reverse relationships configured in the system. | |
EntityTraversal:: |
protected | function | Gets the entity bundle label. Useful for display traversal. | |
EntityTraversal:: |
public | function | Get the calculated actual calling points. | |
EntityTraversal:: |
public | function |
Get the traversal results. Overrides EntityTraversalInterface:: |
|
EntityTraversal:: |
public | function |
Traverses the entity relationship tree if not done before. Overrides EntityTraversalInterface:: |
|
EntityTraversal:: |
protected | function | Traverses the entity relationship tree. | 1 |
EntityTraversal:: |
public | function | EntityTraversal constructor. | 1 |
RightToAccessEntityTraversal:: |
private | property | Assets. | |
RightToAccessEntityTraversal:: |
protected | function | Gets the field value, taking into account file references. | |
RightToAccessEntityTraversal:: |
protected | function |
Handles the entity. Overrides EntityTraversal:: |