/** * {@inheritdoc} */ public function getReferencingFieldIds() { if (!isset($this->field_ids)) { $this->field_ids = []; $entity_reference_fields = $this->fieldManager->getFieldMapByFieldType('entity_reference'); $update_entity_type = $this->updateEntityType(); if (empty($entity_reference_fields[$update_entity_type])) { return $this->field_ids; } $entity_reference_fields = $entity_reference_fields[$update_entity_type]; foreach ($entity_reference_fields as $field_id => $entity_reference_field) { foreach ($entity_reference_field['bundles'] as $bundle) { $field = $this->fieldManager->getFieldDefinitions($update_entity_type, $bundle)[$field_id]; if ($field instanceof FieldConfig) { if ($field->getSetting('target_type') == 'scheduled_update' && !empty($field->getSetting('handler_settings')['target_bundles']) && in_array($this->configuration['updater_type'], $field->getSetting('handler_settings')['target_bundles']) ) { $this->field_ids[] = $field_id; } } } } } return $this->field_ids; }
/** * Get existing entity reference field on target entity type that reference scheduled updates. * * @return array */ protected function existingReferenceFields() { $entity_type = $this->entity->getUpdateEntityType(); $fields = $this->entityFieldManager->getFieldMapByFieldType('entity_reference'); if (!isset($fields[$entity_type])) { return []; } $fields = $fields[$entity_type]; $ref_fields = []; foreach ($fields as $field_name => $field_info) { if ($definition = FieldStorageConfig::loadByName($entity_type, $field_name)) { $update_type = $definition->getSetting('target_type'); if ($update_type == 'scheduled_update') { $ref_fields[$field_name]['field_name'] = $field_name; $bundle_fields = []; foreach ($field_info['bundles'] as $bundle) { $field_config = FieldConfig::loadByName($entity_type, $bundle, $field_name); $bundle_fields[$bundle] = [ 'field_id' => $field_config->id(), 'label' => $field_config->label(), 'bundle' => $bundle, ]; } $ref_fields[$field_name]['bundles'] = $bundle_fields; } } } return $ref_fields; }