Skip to content

Instantly share code, notes, and snippets.

@Calystod
Created August 25, 2021 14:49
Show Gist options
  • Save Calystod/28245d8e8b2118dfade3c70c61740efd to your computer and use it in GitHub Desktop.
Save Calystod/28245d8e8b2118dfade3c70c61740efd to your computer and use it in GitHub Desktop.
<?php
/**
* Search use of a paragraph type in fields for nodes and paragraphs.
*/
const SEARCH_PARAGRAPH_TYPE = 'my_paragraph_type';
$field_manager = \Drupal::service('entity_field.manager');
$storage_definitions_node = $field_manager->getFieldStorageDefinitions('node');
$list_fields_paragraph = [];
foreach ($storage_definitions_node as $key => $storage_definition) {
if ($storage_definition->getType() === 'entity_reference_revisions' && $storage_definition->getSetting("target_type") === "paragraph") {
$list_fields_paragraph[$key] = $storage_definition;
}
}
$types = \Drupal::entityTypeManager()->getStorage("node_type")->loadMultiple();
foreach ($types as $type) {
$definitions = \Drupal::service('entity_field.manager')
->getFieldDefinitions('node', $type->id());
$fields = array_intersect_key($definitions, $list_fields_paragraph);
foreach ($fields as $field) {
$handler_settings = $field->getSetting('handler_settings');
if (in_array(SEARCH_PARAGRAPH_TYPE, $handler_settings['target_bundles'], true)) {
ksm($type);
}
}
}
$storage_definitions_paragraph = $field_manager->getFieldStorageDefinitions('paragraph');
$list_fields_paragraph = [];
foreach ($storage_definitions_paragraph as $key => $storage_definition) {
if ($storage_definition->getType() === 'entity_reference_revisions' && $storage_definition->getSetting("target_type") === "paragraph") {
$list_fields_paragraph[$key] = $storage_definition;
}
}
$types = \Drupal::entityTypeManager()
->getStorage("paragraphs_type")
->loadMultiple();
foreach ($types as $type) {
$definitions = \Drupal::service('entity_field.manager')
->getFieldDefinitions('paragraph', $type->id());
$fields = array_intersect_key($definitions, $list_fields_paragraph);
foreach ($fields as $field) {
$handler_settings = $field->getSetting('handler_settings');
if (in_array(SEARCH_PARAGRAPH_TYPE, $handler_settings['target_bundles'], true)) {
ksm($type);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment