/** * 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()]; } $ref_fields[$field_name]['bundles'] = $bundle_fields; } } } return $ref_fields; }
/** * {@inheritdoc} */ public function updateEntityType() { return $this->scheduled_update_type->getUpdateEntityType(); }
/** * Determine the default that should be used to create default value elements. * * @param \Drupal\Core\Form\FormStateInterface $form_state * * @return string */ protected function getDefaultBundle($field_selected, FormStateInterface $form_state) { $all_fields = $this->entityFieldManager->getFieldMap(); $entity_fields = $all_fields[$this->entity->getUpdateEntityType()]; $bundle = array_shift(array_keys($entity_fields[$field_selected]['bundles'])); return $bundle; }