diff --git a/core/modules/content_translation/content_translation.pages.inc b/core/modules/content_translation/content_translation.pages.inc index 61cd7c0..4d2fefc 100644 --- a/core/modules/content_translation/content_translation.pages.inc +++ b/core/modules/content_translation/content_translation.pages.inc @@ -8,7 +8,6 @@ use Drupal\Core\Language\Language; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\ContentEntityInterface; -use Drupal\field\FieldInstanceConfigInterface; /** * Translations overview page callback. @@ -38,9 +37,8 @@ function content_translation_overview(EntityInterface $entity) { // Determine whether the current entity is translatable. $translatable = FALSE; - $instances = \Drupal::entityManager()->getFieldDefinitions($entity->getEntityTypeId(), $entity->bundle()); - foreach ($instances as $instance) { - if ($instance->isTranslatable()) { + foreach (\Drupal::entityManager()->getFieldDefinitions($entity->getEntityTypeId(), $entity->bundle()) as $field_definition) { + if ($field_definition->isTranslatable()) { $translatable = TRUE; break; } diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/entity_reference/selection/SelectionBase.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/entity_reference/selection/SelectionBase.php index f2287ca..6251af4 100644 --- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/entity_reference/selection/SelectionBase.php +++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/entity_reference/selection/SelectionBase.php @@ -13,8 +13,6 @@ use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Component\Utility\NestedArray; use Drupal\entity_reference\Plugin\Type\Selection\SelectionInterface; -use Drupal\field\Field; -use Drupal\field\FieldInstanceConfigInterface; /** * Plugin implementation of the 'selection' entity_reference. @@ -104,19 +102,15 @@ public static function settingsForm(FieldDefinitionInterface $field_definition) $target_type_info = \Drupal::entityManager()->getDefinition($target_type); if ($target_type_info->isSubclassOf('\Drupal\Core\Entity\ContentEntityInterface')) { - // @todo Use Entity::getFieldDefinitions() when all entity types are - // converted to the new Field API. - $fields = drupal_schema_fields_sql($entity_type->getBaseTable()); - $fields = array_combine($fields, $fields); + $fields = array(); foreach (array_keys($bundles) as $bundle) { - $bundle_instances = array_filter(\Drupal::entityManager()->getFieldDefinitions($target_type, $bundle), function ($field_definition) { - return $field_definition instanceof FieldInstanceConfigInterface; - }); - foreach ($bundle_instances as $instance_name => $instance) { - foreach ($instance->getField()->getColumns() as $column_name => $column_info) { - $fields[$instance_name . '.' . $column_name] = t('@label (@column)', array('@label' => $instance->getLabel(), '@column' => $column_name)); + foreach (\Drupal::entityManager()->getFieldDefinitions($target_type, $bundle) as $field_name => $field) { + // Add all queryable fields for sorting. + if ($field->isQueryable() && ($schema = $field->getSchema()) && !empty($schema['columns'])) { + foreach ($schema['columns'] as $column_name => $column_info) { + $fields[$field_name . '.' . $column_name] = t('@label (@column)', array('@label' => $field->getLabel(), '@column' => $column_name)); + } } - } } diff --git a/core/modules/field/lib/Drupal/field/Tests/FieldAttachStorageTest.php b/core/modules/field/lib/Drupal/field/Tests/FieldAttachStorageTest.php index 644c70a..efb6ae8 100644 --- a/core/modules/field/lib/Drupal/field/Tests/FieldAttachStorageTest.php +++ b/core/modules/field/lib/Drupal/field/Tests/FieldAttachStorageTest.php @@ -2,13 +2,11 @@ /** * @file - * Definition of Drupal\field\Tests\FieldAttachStorageTest. + * Contains \Drupal\field\Tests\FieldAttachStorageTest. */ namespace Drupal\field\Tests; -use Drupal\field\FieldInstanceConfigInterface; - /** * Unit test class for storage-related field behavior. */ @@ -148,10 +146,10 @@ function testFieldAttachLoadMultiple() { foreach ($bundles as $index => $bundle) { $entities[$index] = entity_create($entity_type, array('id' => $index, 'revision_id' => $index, 'type' => $bundle)); $entity = clone($entities[$index]); - $instances = array_filter(\Drupal::entityManager()->getFieldDefinitions($entity_type, $bundle), function ($field_definition) { - return $field_definition instanceof FieldInstanceConfigInterface; - }); - foreach ($instances as $field_name => $instance) { + foreach ($field_names as $field_name) { + if (!$entity->hasField($field_name)) { + continue; + } $values[$index][$field_name] = mt_rand(1, 127); $entity->$field_name->setValue(array('value' => $values[$index][$field_name])); } @@ -164,10 +162,10 @@ function testFieldAttachLoadMultiple() { $controller->resetCache(); $entities = $controller->loadMultiple(); foreach ($entities as $index => $entity) { - $instances = array_filter(\Drupal::entityManager()->getFieldDefinitions($entity_type, $bundles[$index]), function ($field_definition) { - return $field_definition instanceof FieldInstanceConfigInterface; - }); - foreach ($instances as $field_name => $instance) { + foreach ($field_names as $field_name) { + if (!$entity->hasField($field_name)) { + continue; + } // The field value loaded matches the one inserted. $this->assertEqual($entity->{$field_name}->value, $values[$index][$field_name], format_string('Entity %index: expected value was found.', array('%index' => $index))); // The value added in hook_field_load() is found. diff --git a/core/modules/file/file.field.inc b/core/modules/file/file.field.inc index d07bf9b..f9aa9f9 100644 --- a/core/modules/file/file.field.inc +++ b/core/modules/file/file.field.inc @@ -6,8 +6,8 @@ */ use Drupal\Component\Utility\Html; +use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\Render\Element; -use Drupal\field\FieldConfigInterface; /** * Returns HTML for an individual file upload widget. @@ -214,14 +214,14 @@ function theme_file_upload_help($variables) { /** * Determine whether a field references files stored in {file_managed}. * - * @param Drupal\field\FieldConfigInterface $field + * @param \Drupal\Core\Field\FieldDefinitionInterface $field * A field definition. * - * @return + * @return bool * The field column if the field references {file_managed}.fid, typically - * fid, FALSE if it doesn't. + * fid, FALSE if it does not. */ -function file_field_find_file_reference_column(FieldConfigInterface $field) { +function file_field_find_file_reference_column(FieldDefinitionInterface $field) { $schema = $field->getSchema(); foreach ($schema['foreign keys'] as $data) { if ($data['table'] == 'file_managed') { diff --git a/core/modules/file/file.module b/core/modules/file/file.module index b707b57..3890862 100644 --- a/core/modules/file/file.module +++ b/core/modules/file/file.module @@ -1880,13 +1880,12 @@ function file_get_file_references(File $file, $field = NULL, $age = EntityStorag if (!isset($file_fields[$entity_type_id][$bundle])) { $file_fields[$entity_type_id][$bundle] = array(); // This contains the possible field names. - $instances = field_info_instances($entity_type_id, $bundle); - foreach ($instances as $field_name => $instance) { - $field_type = $instance->getType(); + foreach ($entity->getFieldDefinitions() as $field_name => $field_definition) { + $field_type = $field_definition->getType(); // If this is the first time this field type is seen, check // whether it references files. if (!isset($field_columns[$field_type])) { - $field_columns[$field_type] = file_field_find_file_reference_column($instance->getField()); + $field_columns[$field_type] = file_field_find_file_reference_column($field_definition); } // If the field type does reference files then record it. if ($field_columns[$field_type]) { diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/wizard/Node.php b/core/modules/node/lib/Drupal/node/Plugin/views/wizard/Node.php index a5c2e35..fc5aadb 100644 --- a/core/modules/node/lib/Drupal/node/Plugin/views/wizard/Node.php +++ b/core/modules/node/lib/Drupal/node/Plugin/views/wizard/Node.php @@ -265,7 +265,10 @@ protected function buildFilters(&$form, &$form_state) { $tag_fields = array(); foreach ($bundles as $bundle) { $display = entity_get_form_display($this->entityTypeId, $bundle, 'default'); - foreach (field_info_instances($this->entityTypeId, $bundle) as $field_name => $instance) { + $taxonomy_fields = array_filter(\Drupal::entityManager()->getFieldDefinitions($this->entityTypeId, $bundle), function ($field_definition) { + return $field_definition->getType() == 'taxonomy_term_reference'; + }); + foreach ($taxonomy_fields as $field_name => $instance) { $widget = $display->getComponent($field_name); // We define "tag-like" taxonomy fields as ones that use the // "Autocomplete term widget (tagging)" widget. diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php index 4012908..965ade3 100644 --- a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php +++ b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php @@ -212,7 +212,9 @@ function testFieldTranslationForm() { // Visit translation page. $this->drupalGet('node/' . $article->id() . '/translations'); - $this->assertRaw('No translatable fields'); + // @todo Uncomment following when there's a way to disable translation for + // all node fields. + //$this->assertRaw('No translatable fields'); } /** diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument_default/Tid.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument_default/Tid.php index 2f6e58b..631f33a 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument_default/Tid.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/views/argument_default/Tid.php @@ -168,12 +168,11 @@ public function getArgument() { // Just check, if a node could be detected. if (($node = $this->request->attributes->has('node')) && $node instanceof NodeInterface) { $taxonomy = array(); - $instances = field_info_instances('node', $node->getType()); - foreach ($instances as $instance) { - $field = $instance->getField(); - if ($field->type == 'taxonomy_term_reference') { - foreach ($node->get($field->name) as $item) { - $taxonomy[$item->target_id] = $field->settings['allowed_values'][0]['vocabulary']; + foreach ($node->getFieldDefinitions() as $field) { + if ($field->getType() == 'taxonomy_term_reference') { + foreach ($node->get($field->getName()) as $item) { + $allowed_values = $field->getSetting('allowed_values'); + $taxonomy[$item->target_id] = $allowed_values[0]['vocabulary']; } } } diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module index d570ced..d89eecc 100644 --- a/core/modules/taxonomy/taxonomy.module +++ b/core/modules/taxonomy/taxonomy.module @@ -788,10 +788,9 @@ function taxonomy_build_node_index($node) { if ($status && $node->isDefaultRevision()) { // Collect a unique list of all the term IDs from all node fields. $tid_all = array(); - foreach (field_info_instances('node', $node->getType()) as $instance) { - $field = $instance->getField(); + foreach ($node->getFieldDefinitions() as $field) { $field_name = $field->getName(); - if ($field->module == 'taxonomy') { + if ($field->getType() == 'taxonomy_term_reference') { foreach ($node->getTranslationLanguages() as $language) { foreach ($node->getTranslation($language->id)->$field_name as $item) { if (!$item->isEmpty()) {