/**
  * 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;
 }
Esempio n. 2
0
 /**
  * {@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;
 }