Loading src/Controller/UsageController.php +39 −7 Original line number Diff line number Diff line Loading @@ -155,15 +155,47 @@ class UsageController extends ControllerBase { })); // Get entities fro specific fields. $fields = $entity->getFieldDefinitions(); $fields = method_exists($entity, 'getFieldDefinitions') ? $entity->getFieldDefinitions() : []; // Recursive call for each paragraphs. $paragraph_fields = array_filter($fields, function ($field_definition) { return $field_definition->getType() == 'entity_reference_revisions'; // Recursive call for specific entity_reference. $entity_reference_fields = ['entity_reference', 'entity_reference_revisions', 'layout_section']; $entity_fields = array_filter($fields, function ($field_definition) use ($entity_reference_fields) { return in_array($field_definition->getType(), $entity_reference_fields); }); foreach (array_keys($paragraph_fields) as $field_name) { foreach ($entity->get($field_name)->referencedEntities() as $paragraph) { $ids = array_merge($ids, $this->extractEntityIdsFromEntity($entity_type_id, $paragraph)); foreach (array_keys($entity_fields) as $field_name) { // Skip. Field disappeared. if (!$entity->hasField($field_name)) { continue; } $items = $entity->get($field_name); switch ($items->getFieldDefinition()->getType()) { case 'layout_section': // Get inline block references from Layout Builder. $referenced_entities = []; foreach ($items->getSections() as $section) { foreach ($section->getComponents() as $component) { $plugin = $component->getPlugin(); switch ($plugin->getBaseId()) { case 'inline_block': $revision_id = $plugin->getConfiguration()['block_revision_id']; $this->referencedIds['block_content'] += [$revision_id]; break; default: // @todo What should we do if plugin unknown? break; } } } break; default: // Safely get referenced entities. $referenced_entities = method_exists($items, 'referencedEntities') ? $items->referencedEntities() : []; break; } foreach ($referenced_entities as $referenced_entity) { $ids = array_merge($ids, $this->extractEntityIdsFromEntity($entity_type_id, $referenced_entity)); } } Loading Loading
src/Controller/UsageController.php +39 −7 Original line number Diff line number Diff line Loading @@ -155,15 +155,47 @@ class UsageController extends ControllerBase { })); // Get entities fro specific fields. $fields = $entity->getFieldDefinitions(); $fields = method_exists($entity, 'getFieldDefinitions') ? $entity->getFieldDefinitions() : []; // Recursive call for each paragraphs. $paragraph_fields = array_filter($fields, function ($field_definition) { return $field_definition->getType() == 'entity_reference_revisions'; // Recursive call for specific entity_reference. $entity_reference_fields = ['entity_reference', 'entity_reference_revisions', 'layout_section']; $entity_fields = array_filter($fields, function ($field_definition) use ($entity_reference_fields) { return in_array($field_definition->getType(), $entity_reference_fields); }); foreach (array_keys($paragraph_fields) as $field_name) { foreach ($entity->get($field_name)->referencedEntities() as $paragraph) { $ids = array_merge($ids, $this->extractEntityIdsFromEntity($entity_type_id, $paragraph)); foreach (array_keys($entity_fields) as $field_name) { // Skip. Field disappeared. if (!$entity->hasField($field_name)) { continue; } $items = $entity->get($field_name); switch ($items->getFieldDefinition()->getType()) { case 'layout_section': // Get inline block references from Layout Builder. $referenced_entities = []; foreach ($items->getSections() as $section) { foreach ($section->getComponents() as $component) { $plugin = $component->getPlugin(); switch ($plugin->getBaseId()) { case 'inline_block': $revision_id = $plugin->getConfiguration()['block_revision_id']; $this->referencedIds['block_content'] += [$revision_id]; break; default: // @todo What should we do if plugin unknown? break; } } } break; default: // Safely get referenced entities. $referenced_entities = method_exists($items, 'referencedEntities') ? $items->referencedEntities() : []; break; } foreach ($referenced_entities as $referenced_entity) { $ids = array_merge($ids, $this->extractEntityIdsFromEntity($entity_type_id, $referenced_entity)); } } Loading