diff --git a/core/modules/block_content/src/Tests/Views/BlockContentFieldFilterTest.php b/core/modules/block_content/src/Tests/Views/BlockContentFieldFilterTest.php index 5ca1a5b59fb4b7e021cfdd25437d8436675cc6fb..c1cef647a9c76d2f663ab7514952348ec7056e2b 100644 --- a/core/modules/block_content/src/Tests/Views/BlockContentFieldFilterTest.php +++ b/core/modules/block_content/src/Tests/Views/BlockContentFieldFilterTest.php @@ -50,7 +50,7 @@ function setUp() { // Make the body field translatable. The info is already translatable by // definition. $field_storage = FieldStorageConfig::loadByName('block_content', 'body'); - $field_storage->translatable = TRUE; + $field_storage->setTranslatable(TRUE); $field_storage->save(); // Set up block_content infos. diff --git a/core/modules/comment/src/Form/CommentTypeDeleteForm.php b/core/modules/comment/src/Form/CommentTypeDeleteForm.php index 9a859e8d4cab33867b4437a64d8b07485944443a..deac0acfb7d8a293b85b663ad4c38a2190e929b4 100644 --- a/core/modules/comment/src/Form/CommentTypeDeleteForm.php +++ b/core/modules/comment/src/Form/CommentTypeDeleteForm.php @@ -97,7 +97,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { $caption = ''; foreach (array_keys($this->commentManager->getFields($entity_type)) as $field_name) { /** @var \Drupal\field\FieldStorageConfigInterface $field_storage */ - if (($field_storage = FieldStorageConfig::loadByName($entity_type, $field_name)) && $field_storage->getSetting('comment_type') == $this->entity->id() && !$field_storage->deleted) { + if (($field_storage = FieldStorageConfig::loadByName($entity_type, $field_name)) && $field_storage->getSetting('comment_type') == $this->entity->id() && !$field_storage->isDeleted()) { $caption .= '

' . $this->t('%label is used by the %field field on your site. You can not remove this comment type until you have removed the field.', array( '%label' => $this->entity->label(), '%field' => $field_storage->label(), diff --git a/core/modules/comment/src/Tests/CommentLanguageTest.php b/core/modules/comment/src/Tests/CommentLanguageTest.php index 92f610e60fe73686f146e00598092a79a70bda1f..883eb1724377da74759ff3a4dd2929eec411a258 100644 --- a/core/modules/comment/src/Tests/CommentLanguageTest.php +++ b/core/modules/comment/src/Tests/CommentLanguageTest.php @@ -73,7 +73,7 @@ protected function setUp() { // Make comment body translatable. $field_storage = FieldStorageConfig::loadByName('comment', 'comment_body'); - $field_storage->translatable = TRUE; + $field_storage->setTranslatable(TRUE); $field_storage->save(); $this->assertTrue($field_storage->isTranslatable(), 'Comment body is translatable.'); } diff --git a/core/modules/config/src/Tests/ConfigExportImportUITest.php b/core/modules/config/src/Tests/ConfigExportImportUITest.php index a1726496c193c6a08020520af2a1dfe190de0cba..f3aa1ff1ab680c05f1d359448fa41012b7fedbe6 100644 --- a/core/modules/config/src/Tests/ConfigExportImportUITest.php +++ b/core/modules/config/src/Tests/ConfigExportImportUITest.php @@ -143,7 +143,7 @@ public function testExportImport() { } $field_storages = FieldStorageConfig::loadMultiple(); foreach ($field_storages as $field_storage) { - if ($field_storage->field_name == $this->fieldName) { + if ($field_storage->getName() == $this->fieldName) { $field_storage->delete(); } } diff --git a/core/modules/datetime/src/Tests/DateTimeFieldTest.php b/core/modules/datetime/src/Tests/DateTimeFieldTest.php index 07707b98f39591043fcda4545ee575dc5d03f313..1f3a409d89d9300e0684259c48b2ce84049fafd7 100644 --- a/core/modules/datetime/src/Tests/DateTimeFieldTest.php +++ b/core/modules/datetime/src/Tests/DateTimeFieldTest.php @@ -95,7 +95,7 @@ protected function setUp() { * Tests date field functionality. */ function testDateField() { - $field_name = $this->fieldStorage->field_name; + $field_name = $this->fieldStorage->getName(); // Display creation form. $this->drupalGet('entity_test/add'); @@ -163,7 +163,7 @@ function testDateField() { function testDatetimeField() { $field_name = $this->fieldStorage->getName(); // Change the field to a datetime field. - $this->fieldStorage->settings['datetime_type'] = 'datetime'; + $this->fieldStorage->setSetting('datetime_type', 'datetime'); $this->fieldStorage->save(); // Display creation form. @@ -229,7 +229,7 @@ function testDatetimeField() { function testDatelistWidget() { $field_name = $this->fieldStorage->getName(); // Change the field to a datetime field. - $this->fieldStorage->settings['datetime_type'] = 'datetime'; + $this->fieldStorage->setSetting('datetime_type', 'datetime'); $this->fieldStorage->save(); // Change the widget to a datelist widget. @@ -393,7 +393,7 @@ function testDefaultValue() { function testInvalidField() { // Change the field to a datetime field. - $this->fieldStorage->settings['datetime_type'] = 'datetime'; + $this->fieldStorage->setSetting('datetime_type', 'datetime'); $this->fieldStorage->save(); $field_name = $this->fieldStorage->getName(); diff --git a/core/modules/editor/src/Tests/QuickEditIntegrationTest.php b/core/modules/editor/src/Tests/QuickEditIntegrationTest.php index 33077c3414e6fcf801d472dde646558ed165a65a..ab482374686684edd85b07c74b861b40a28957c1 100644 --- a/core/modules/editor/src/Tests/QuickEditIntegrationTest.php +++ b/core/modules/editor/src/Tests/QuickEditIntegrationTest.php @@ -145,7 +145,7 @@ public function testEditorSelection() { $this->assertEqual('editor', $this->getSelectedEditor($entity->id(), $this->fieldName), "With cardinality 1, and the full_html text format, the 'editor' editor is selected."); // Editor selection with text processing, cardinality >1 - $this->fields->field_textarea_field_storage->cardinality = 2; + $this->fields->field_textarea_field_storage->setCardinality(2); $this->fields->field_textarea_field_storage->save(); $this->assertEqual('form', $this->getSelectedEditor($entity->id(), $this->fieldName), "With cardinality >1, and both items using the full_html text format, the 'form' editor is selected."); } diff --git a/core/modules/entity_reference/entity_reference.module b/core/modules/entity_reference/entity_reference.module index b1b0619f685af5cfc99fb88d12a95926276e63a7..526c60cc6705d71b1ae064dc418623f6dfd1b218 100644 --- a/core/modules/entity_reference/entity_reference.module +++ b/core/modules/entity_reference/entity_reference.module @@ -69,7 +69,7 @@ function entity_reference_field_widget_info_alter(&$info) { * Reset the instance handler settings, when the target type is changed. */ function entity_reference_field_storage_config_update(FieldStorageConfigInterface $field_storage) { - if ($field_storage->type != 'entity_reference') { + if ($field_storage->getType() != 'entity_reference') { // Only act on entity reference fields. return; } diff --git a/core/modules/field/field.api.php b/core/modules/field/field.api.php index bb39027a9fb5a1d731290ef8a25c035c99fcbe8e..55c239d7306caf218c641f631cfc918edbeb1a37 100644 --- a/core/modules/field/field.api.php +++ b/core/modules/field/field.api.php @@ -81,7 +81,7 @@ function hook_field_storage_config_update_forbid(\Drupal\field\FieldStorageConfi $allowed_values = $field_storage->getSetting('allowed_values'); $prior_allowed_values = $prior_field_storage->getSetting('allowed_values'); $lost_keys = array_keys(array_diff_key($prior_allowed_values,$allowed_values)); - if (_options_values_in_use($field_storage->entity_type, $field_storage->getName(), $lost_keys)) { + if (_options_values_in_use($field_storage->getTargetEntityTypeId(), $field_storage->getName(), $lost_keys)) { throw new \Drupal\Core\Entity\Exception\FieldStorageDefinitionUpdateForbiddenException(t('A list field (@field_name) with existing data cannot have its keys changed.', array('@field_name' => $field_storage->getName()))); } } diff --git a/core/modules/field/field.module b/core/modules/field/field.module index 5f95d50a9376b82fadfc7a0bd078692bc81d9491..3e9c9e0a35a6a518da5b4d8e2ddda2becaf088d5 100644 --- a/core/modules/field/field.module +++ b/core/modules/field/field.module @@ -153,7 +153,7 @@ function field_system_info_alter(&$info, Extension $file, $type) { // remains no actual, non-deleted fields) $non_deleted = FALSE; foreach ($field_storages as $field_storage) { - if (empty($field_storage->deleted)) { + if (!$field_storage->isDeleted()) { $non_deleted = TRUE; break; } diff --git a/core/modules/field/field.purge.inc b/core/modules/field/field.purge.inc index 73de63f200655e5416813468d6fc609f3a2b46ee..4af0f4e4ec452cb5aa2ebc3dd6c669689964ffab 100644 --- a/core/modules/field/field.purge.inc +++ b/core/modules/field/field.purge.inc @@ -84,7 +84,7 @@ function field_purge_batch($batch_size, $field_storage_uuid = NULL) { $info = \Drupal::entityManager()->getDefinitions(); foreach ($fields as $field) { - $entity_type = $field->entity_type; + $entity_type = $field->getTargetEntityTypeId(); // We cannot purge anything if the entity type is unknown (e.g. the // providing module was uninstalled). @@ -117,7 +117,7 @@ function field_purge_batch($batch_size, $field_storage_uuid = NULL) { // We cannot purge anything if the entity type is unknown (e.g. the // providing module was uninstalled). // @todo Revisit after https://drupal.org/node/2080823. - if (!isset($info[$field_storage->entity_type])) { + if (!isset($info[$field_storage->getTargetEntityTypeId()])) { continue; } @@ -170,7 +170,7 @@ function field_purge_field_storage(FieldStorageConfigInterface $field_storage) { $state->set('field.storage.deleted', $deleted_storages); // Notify the storage layer. - \Drupal::entityManager()->getStorage($field_storage->entity_type)->finalizePurge($field_storage); + \Drupal::entityManager()->getStorage($field_storage->getTargetEntityTypeId())->finalizePurge($field_storage); // Invoke external hooks after the cache is cleared for API consistency. \Drupal::moduleHandler()->invokeAll('field_purge_field_storage', array($field_storage)); diff --git a/core/modules/field/src/ConfigImporterFieldPurger.php b/core/modules/field/src/ConfigImporterFieldPurger.php index 55294b21a076633b63af20af337f9ff9a3218206..efc39a23f4a83123701f169d98d6a88ea737dcbd 100644 --- a/core/modules/field/src/ConfigImporterFieldPurger.php +++ b/core/modules/field/src/ConfigImporterFieldPurger.php @@ -40,7 +40,7 @@ public static function process(array &$context, ConfigImporter $config_importer) $context['sandbox']['field']['current_storage_id'] = $field_storage->id(); // If the storage has not been deleted yet we need to do that. This is the // case when the storage deletion is staged. - if (!$field_storage->deleted) { + if (!$field_storage->isDeleted()) { $field_storage->delete(); } } @@ -138,9 +138,10 @@ public static function getFieldStoragesToPurge(array $extensions, array $deletes } // Gather deleted fields from modules that are being uninstalled. + /** @var \Drupal\field\FieldStorageConfigInterface[] $field_storages */ $field_storages = entity_load_multiple_by_properties('field_storage_config', array('deleted' => TRUE, 'include_deleted' => TRUE)); foreach ($field_storages as $field_storage) { - if (!in_array($field_storage->module, $providers)) { + if (!in_array($field_storage->getTypeProvider(), $providers)) { $storages_to_delete[$field_storage->id()] = $field_storage; } } diff --git a/core/modules/field/src/Entity/FieldConfig.php b/core/modules/field/src/Entity/FieldConfig.php index dc5607a330bd8cea2e0d405d8ea76d0020fb48a4..c5b9ad5aa479540d9c6cba3d03218710effb1674 100644 --- a/core/modules/field/src/Entity/FieldConfig.php +++ b/core/modules/field/src/Entity/FieldConfig.php @@ -141,7 +141,7 @@ public function preSave(EntityStorageInterface $storage) { // Filter out unknown settings and make sure all settings are present, so // that a complete field definition is passed to the various hooks and // written to config. - $default_settings = $field_type_manager->getDefaultFieldSettings($storage_definition->type); + $default_settings = $field_type_manager->getDefaultFieldSettings($storage_definition->getType()); $this->settings = array_intersect_key($this->settings, $default_settings) + $default_settings; if ($this->isNew()) { diff --git a/core/modules/field/src/Entity/FieldStorageConfig.php b/core/modules/field/src/Entity/FieldStorageConfig.php index a64f7136099e5a0e1b81f5bcd32dab5b7b29a620..ab869db20ed99d7fbca6eec24c09b67700067100 100644 --- a/core/modules/field/src/Entity/FieldStorageConfig.php +++ b/core/modules/field/src/Entity/FieldStorageConfig.php @@ -51,7 +51,7 @@ class FieldStorageConfig extends ConfigEntityBase implements FieldStorageConfigI * * @var string */ - public $id; + protected $id; /** * The field name. @@ -64,14 +64,14 @@ class FieldStorageConfig extends ConfigEntityBase implements FieldStorageConfigI * * @var string */ - public $field_name; + protected $field_name; /** * The name of the entity type the field can be attached to. * * @var string */ - public $entity_type; + protected $entity_type; /** * The field type. @@ -80,14 +80,14 @@ class FieldStorageConfig extends ConfigEntityBase implements FieldStorageConfigI * * @var string */ - public $type; + protected $type; /** * The name of the module that provides the field type. * * @var string */ - public $module; + protected $module; /** * Field-type specific settings. @@ -97,7 +97,7 @@ class FieldStorageConfig extends ConfigEntityBase implements FieldStorageConfigI * * @var array */ - public $settings = array(); + protected $settings = []; /** * The field cardinality. @@ -108,7 +108,7 @@ class FieldStorageConfig extends ConfigEntityBase implements FieldStorageConfigI * * @var int */ - public $cardinality = 1; + protected $cardinality = 1; /** * Flag indicating whether the field is translatable. @@ -117,7 +117,7 @@ class FieldStorageConfig extends ConfigEntityBase implements FieldStorageConfigI * * @var bool */ - public $translatable = TRUE; + protected $translatable = TRUE; /** * Flag indicating whether the field is available for editing. @@ -131,7 +131,7 @@ class FieldStorageConfig extends ConfigEntityBase implements FieldStorageConfigI * * @var bool */ - public $locked = FALSE; + protected $locked = FALSE; /** * Flag indicating whether the field storage should be deleted when orphaned. @@ -164,7 +164,7 @@ class FieldStorageConfig extends ConfigEntityBase implements FieldStorageConfigI * * @var array */ - public $indexes = array(); + protected $indexes = []; /** * Flag indicating whether the field is deleted. @@ -179,7 +179,7 @@ class FieldStorageConfig extends ConfigEntityBase implements FieldStorageConfigI * * @var bool */ - public $deleted = FALSE; + protected $deleted = FALSE; /** * The field schema. @@ -238,7 +238,7 @@ public function __construct(array $values, $entity_type = 'field_storage_config' * {@inheritdoc} */ public function id() { - return $this->entity_type . '.' . $this->field_name; + return $this->getTargetEntityTypeId() . '.' . $this->getName(); } /** @@ -288,25 +288,25 @@ protected function preSaveNew(EntityStorageInterface $storage) { // Field name cannot be longer than FieldStorageConfig::NAME_MAX_LENGTH characters. // We use Unicode::strlen() because the DB layer assumes that column widths // are given in characters rather than bytes. - if (Unicode::strlen($this->field_name) > static::NAME_MAX_LENGTH) { + if (Unicode::strlen($this->getName()) > static::NAME_MAX_LENGTH) { throw new FieldException(String::format( 'Attempt to create a field storage with an name longer than @max characters: %name', array( '@max' => static::NAME_MAX_LENGTH, - '%name' => $this->field_name, + '%name' => $this->getName(), ) )); } // Disallow reserved field names. - $disallowed_field_names = array_keys($entity_manager->getBaseFieldDefinitions($this->entity_type)); - if (in_array($this->field_name, $disallowed_field_names)) { - throw new FieldException(String::format('Attempt to create field storage %name which is reserved by entity type %type.', array('%name' => $this->field_name, '%type' => $this->entity_type))); + $disallowed_field_names = array_keys($entity_manager->getBaseFieldDefinitions($this->getTargetEntityTypeId())); + if (in_array($this->getName(), $disallowed_field_names)) { + throw new FieldException(String::format('Attempt to create field storage %name which is reserved by entity type %type.', array('%name' => $this->getName(), '%type' => $this->getTargetEntityTypeId()))); } // Check that the field type is known. - $field_type = $field_type_manager->getDefinition($this->type, FALSE); + $field_type = $field_type_manager->getDefinition($this->getType(), FALSE); if (!$field_type) { - throw new FieldException(String::format('Attempt to create a field storage of unknown type %type.', array('%type' => $this->type))); + throw new FieldException(String::format('Attempt to create a field storage of unknown type %type.', array('%type' => $this->getType()))); } $this->module = $field_type['provider']; @@ -320,7 +320,7 @@ protected function preSaveNew(EntityStorageInterface $storage) { public function calculateDependencies() { parent::calculateDependencies(); // Ensure the field is dependent on the providing module. - $this->addDependency('module', $this->module); + $this->addDependency('module', $this->getTypeProvider()); // Ensure the field is dependent on the provider of the entity type. $entity_type = \Drupal::entityManager()->getDefinition($this->entity_type); $this->addDependency('module', $entity_type->getProvider()); @@ -338,10 +338,10 @@ protected function preSaveUpdated(EntityStorageInterface $storage) { $entity_manager = \Drupal::entityManager(); // Some updates are always disallowed. - if ($this->type != $this->original->type) { + if ($this->getType() != $this->original->getType()) { throw new FieldException("Cannot change the field type for an existing field storage."); } - if ($this->entity_type != $this->original->entity_type) { + if ($this->getTargetEntityTypeId() != $this->original->getTargetEntityTypeId()) { throw new FieldException("Cannot change the entity type for an existing field storage."); } @@ -383,7 +383,9 @@ public static function preDelete(EntityStorageInterface $storage, array $field_s foreach ($field_storages as $field_storage) { if (!$field_storage->deleted) { foreach ($field_storage->getBundles() as $bundle) { - $field_ids[] = "{$field_storage->entity_type}.$bundle.{$field_storage->field_name}"; + $entity_type = $field_storage->getTargetEntityTypeId(); + $field_name = $field_storage->getName(); + $field_ids[] = "{$entity_type}.$bundle.{$field_name}"; } } } @@ -481,10 +483,10 @@ public function getColumns() { * {@inheritdoc} */ public function getBundles() { - if (empty($this->deleted)) { + if (!$this->isDeleted()) { $map = \Drupal::entityManager()->getFieldMap(); - if (isset($map[$this->entity_type][$this->field_name]['bundles'])) { - return $map[$this->entity_type][$this->field_name]['bundles']; + if (isset($map[$this->getTargetEntityTypeId()][$this->getName()]['bundles'])) { + return $map[$this->getTargetEntityTypeId()][$this->getName()]['bundles']; } } return array(); @@ -497,6 +499,20 @@ public function getName() { return $this->field_name; } + /** + * {@inheritdoc} + */ + public function isDeleted() { + return $this->deleted; + } + + /** + * {@inheritdoc} + */ + public function getTypeProvider() { + return $this->module; + } + /** * {@inheritdoc} */ @@ -514,7 +530,7 @@ public function getSettings() { // within $this. $field_type_manager = \Drupal::service('plugin.manager.field.field_type'); - $settings = $field_type_manager->getDefaultStorageSettings($this->type); + $settings = $field_type_manager->getDefaultStorageSettings($this->getType()); return $this->settings + $settings; } @@ -537,6 +553,22 @@ public function getSetting($setting_name) { } } + /** + * {@inheritdoc} + */ + public function setSetting($setting_name, $value) { + $this->settings[$setting_name] = $value; + return $this; + } + + /** + * {@inheritdoc} + */ + public function setSettings(array $settings) { + $this->settings = $settings; + return $this; + } + /** * {@inheritdoc} */ @@ -588,6 +620,14 @@ public function getCardinality() { return $this->cardinality; } + /** + * {@inheritdoc} + */ + public function setCardinality($cardinality) { + $this->cardinality = $cardinality; + return $this; + } + /** * {@inheritdoc} */ @@ -618,6 +658,14 @@ public function isLocked() { return $this->locked; } + /** + * {@inheritdoc} + */ + public function setLocked($locked) { + $this->locked = $locked; + return $this; + } + /** * {@inheritdoc} */ @@ -750,4 +798,19 @@ public function isDeletable() { return !$this->deleted && !$this->persist_with_no_fields && count($this->getBundles()) == 0; } + /** + * {@inheritdoc} + */ + public function getIndexes() { + return $this->indexes; + } + + /** + * {@inheritdoc} + */ + public function setIndexes(array $indexes) { + $this->indexes = $indexes; + return $this; + } + } diff --git a/core/modules/field/src/FieldStorageConfigInterface.php b/core/modules/field/src/FieldStorageConfigInterface.php index de0406b5bea302e301b9a0f69e5eac94d868837f..116517aed3291aff1df9e5a8aad6f60ba700323f 100644 --- a/core/modules/field/src/FieldStorageConfigInterface.php +++ b/core/modules/field/src/FieldStorageConfigInterface.php @@ -15,6 +15,22 @@ */ interface FieldStorageConfigInterface extends ConfigEntityInterface, FieldStorageDefinitionInterface { + /** + * Returns the field type. + * + * @return string + * The field type, i.e. the id of a field type plugin. For example 'text'. + */ + public function getType(); + + /** + * Returns the name of the module providing the field type. + * + * @return string + * The name of the module that provides the field type. + */ + public function getTypeProvider(); + /** * Returns the list of bundles where the field storage has fields. * @@ -24,12 +40,12 @@ interface FieldStorageConfigInterface extends ConfigEntityInterface, FieldStorag public function getBundles(); /** - * Returns whether the field storage is locked or not. + * Returns whether the field is deleted or not. * * @return bool - * TRUE if the field storage is locked. + * TRUE if the field is deleted. */ - public function isLocked(); + public function isDeleted(); /** * Checks if the field storage can be deleted. @@ -39,4 +55,82 @@ public function isLocked(); */ public function isDeletable(); + /** + * Returns whether the field storage is locked or not. + * + * @return bool + * TRUE if the field storage is locked. + */ + public function isLocked(); + + /** + * Sets the locked flag. + * + * @param bool $locked + * Sets value of locked flag. + * + * @return $this + */ + public function setLocked($locked); + + /** + * Sets the maximum number of items allowed for the field. + * + * @param int $cardinality + * The cardinality value. + * + * @return $this + */ + public function setCardinality($cardinality); + + /** + * Sets the value for a field setting by name. + * + * @param string $setting_name + * The name of the setting. + * @param mixed $value + * The value of the setting. + * + * @return $this + */ + public function setSetting($setting_name, $value); + + /** + * Sets field settings (overwrites existing settings). + * + * @param array $settings + * The array of field settings. + * + * @return $this + */ + public function setSettings(array $settings); + + /** + * Sets whether the field is translatable. + * + * @param bool $translatable + * Whether the field is translatable. + * + * @return $this + */ + public function setTranslatable($translatable); + + /** + * Returns the custom storage indexes for the field data storage. + * + * @return array + * An array of custom indexes. + */ + public function getIndexes(); + + /** + * Sets the custom storage indexes for the field data storage.. + * + * @param array $indexes + * The array of custom indexes. + * + * @return $this + */ + public function setIndexes(array $indexes); + } diff --git a/core/modules/field/src/FieldStorageConfigStorage.php b/core/modules/field/src/FieldStorageConfigStorage.php index d865d851f3521fce858f56c15d674ce9cfd2e631..55800b36e6c1b837e020fd6ef04e2f7cbd8c95c8 100644 --- a/core/modules/field/src/FieldStorageConfigStorage.php +++ b/core/modules/field/src/FieldStorageConfigStorage.php @@ -104,6 +104,7 @@ public function loadByProperties(array $conditions = array()) { $include_deleted = isset($conditions['include_deleted']) ? $conditions['include_deleted'] : FALSE; unset($conditions['include_deleted']); + /** @var \Drupal\field\FieldStorageConfigInterface[] $storages */ $storages = array(); // Get field storages living in configuration. If we are explicitly looking @@ -134,16 +135,7 @@ public function loadByProperties(array $conditions = array()) { foreach ($storages as $field) { foreach ($conditions as $key => $value) { // Extract the actual value against which the condition is checked. - switch ($key) { - case 'uuid'; - $checked_value = $field->uuid(); - break; - - default: - $checked_value = $field->$key; - break; - } - + $checked_value = $field->get($key); // Skip to the next field as soon as one condition does not match. if ($checked_value != $value) { continue 2; diff --git a/core/modules/field/src/Tests/BulkDeleteTest.php b/core/modules/field/src/Tests/BulkDeleteTest.php index 4ae227b916b618d68c362a7fa96f2e266be75f5a..be306e5ace16dc449a2f14a91714f43cb422e3ed 100644 --- a/core/modules/field/src/Tests/BulkDeleteTest.php +++ b/core/modules/field/src/Tests/BulkDeleteTest.php @@ -314,7 +314,7 @@ function testPurgeFieldStorage() { $this->assertEqual(count($fields), 0, 'The field is purged.'); // The field storage still exists, not deleted. $storages = entity_load_multiple_by_properties('field_storage_config', array('uuid' => $field_storage->uuid(), 'include_deleted' => TRUE)); - $this->assertTrue(isset($storages[$field_storage->uuid()]) && !$storages[$field_storage->uuid()]->deleted, 'The field storage exists and is not deleted'); + $this->assertTrue(isset($storages[$field_storage->uuid()]) && !$storages[$field_storage->uuid()]->isDeleted(), 'The field storage exists and is not deleted'); // Delete the second field. $bundle = next($this->bundles); @@ -341,7 +341,7 @@ function testPurgeFieldStorage() { $fields = entity_load_multiple_by_properties('field_config', array('uuid' => $field->uuid(), 'include_deleted' => TRUE)); $this->assertTrue(isset($fields[$field->uuid()]) && $fields[$field->uuid()]->deleted, 'The field exists and is deleted'); $storages = entity_load_multiple_by_properties('field_storage_config', array('uuid' => $field_storage->uuid(), 'include_deleted' => TRUE)); - $this->assertTrue(isset($storages[$field_storage->uuid()]) && $storages[$field_storage->uuid()]->deleted, 'The field storage exists and is deleted'); + $this->assertTrue(isset($storages[$field_storage->uuid()]) && $storages[$field_storage->uuid()]->isDeleted(), 'The field storage exists and is deleted'); // Purge again to purge the field and the storage. field_purge_batch(0); diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceFormatterTest.php b/core/modules/field/src/Tests/EntityReference/EntityReferenceFormatterTest.php index 6cc771899179428f961b448926477cd8b052ff67..d940188d2d858da4cda5158503f6448aef3100b9 100644 --- a/core/modules/field/src/Tests/EntityReference/EntityReferenceFormatterTest.php +++ b/core/modules/field/src/Tests/EntityReference/EntityReferenceFormatterTest.php @@ -244,7 +244,7 @@ public function testLabelFormatter() { // \Drupal\Core\Entity\EntityInterface::urlInfo() will throw an exception // and the label formatter will output only the label instead of a link. $field_storage_config = FieldStorageConfig::loadByName($this->entityType, $this->fieldName); - $field_storage_config->settings['target_type'] = 'entity_test_label'; + $field_storage_config->setSetting('target_type', 'entity_test_label'); $field_storage_config->save(); $referenced_entity_with_no_link_template = entity_create('entity_test_label', array( diff --git a/core/modules/field/src/Tests/FieldCrudTest.php b/core/modules/field/src/Tests/FieldCrudTest.php index 94639e1de6b38cfcc0130095f7cf9f018691137c..33ace63b7371d95759f33b1cb4ed33ad8d30afe4 100644 --- a/core/modules/field/src/Tests/FieldCrudTest.php +++ b/core/modules/field/src/Tests/FieldCrudTest.php @@ -207,10 +207,10 @@ function testDeleteFieldCrossDeletion() { entity_create('field_config', $this->fieldDefinition)->save(); entity_create('field_config', $field_definition_2)->save(); $field_storage->delete(); - $this->assertFalse(FieldConfig::loadByName('entity_test', $this->fieldDefinition['bundle'], $field_storage->field_name)); - $this->assertFalse(FieldConfig::loadByName('entity_test', $field_definition_2['bundle'], $field_storage->field_name)); + $this->assertFalse(FieldConfig::loadByName('entity_test', $this->fieldDefinition['bundle'], $field_storage->getName())); + $this->assertFalse(FieldConfig::loadByName('entity_test', $field_definition_2['bundle'], $field_storage->getName())); - // Chack that deletion of the last field deletes the storage. + // Check that deletion of the last field deletes the storage. $field_storage = entity_create('field_storage_config', $this->fieldStorageDefinition); $field_storage->save(); $field = entity_create('field_config', $this->fieldDefinition); @@ -218,9 +218,9 @@ function testDeleteFieldCrossDeletion() { $field_2 = entity_create('field_config', $field_definition_2); $field_2->save(); $field->delete(); - $this->assertTrue(FieldStorageConfig::loadByName('entity_test', $field_storage->field_name)); + $this->assertTrue(FieldStorageConfig::loadByName('entity_test', $field_storage->getName())); $field_2->delete(); - $this->assertFalse(FieldStorageConfig::loadByName('entity_test', $field_storage->field_name)); + $this->assertFalse(FieldStorageConfig::loadByName('entity_test', $field_storage->getName())); // Check that deletion of all fields using a storage simultaneously deletes // the storage. @@ -231,7 +231,7 @@ function testDeleteFieldCrossDeletion() { $field_2 = entity_create('field_config', $field_definition_2); $field_2->save(); $this->container->get('entity.manager')->getStorage('field_config')->delete(array($field, $field_2)); - $this->assertFalse(FieldStorageConfig::loadByName('entity_test', $field_storage->field_name)); + $this->assertFalse(FieldStorageConfig::loadByName('entity_test', $field_storage->getName())); } /** diff --git a/core/modules/field/src/Tests/FieldStorageCrudTest.php b/core/modules/field/src/Tests/FieldStorageCrudTest.php index 365f1367fe65895f1acee2f504d2e90cd27f12e1..37e4afbe75af1a6e75916b21a842fe6eda8f20d7 100644 --- a/core/modules/field/src/Tests/FieldStorageCrudTest.php +++ b/core/modules/field/src/Tests/FieldStorageCrudTest.php @@ -305,13 +305,13 @@ function testDelete() { // Test that the first field is not deleted, and then delete it. $field_storage = current(entity_load_multiple_by_properties('field_storage_config', array('field_name' => $field_storage_definition['field_name'], 'include_deleted' => TRUE))); - $this->assertTrue(!empty($field_storage) && empty($field_storage->deleted), 'A new storage is not marked for deletion.'); + $this->assertTrue(!empty($field_storage) && !$field_storage->isDeleted(), 'A new storage is not marked for deletion.'); FieldStorageConfig::loadByName('entity_test', $field_storage_definition['field_name'])->delete(); // Make sure that the field is marked as deleted when it is specifically // loaded. $field_storage = current(entity_load_multiple_by_properties('field_storage_config', array('field_name' => $field_storage_definition['field_name'], 'include_deleted' => TRUE))); - $this->assertTrue(!empty($field_storage->deleted), 'A deleted storage is marked for deletion.'); + $this->assertTrue($field_storage->isDeleted(), 'A deleted storage is marked for deletion.'); // Make sure that this field is marked as deleted when it is // specifically loaded. @@ -328,7 +328,7 @@ function testDelete() { // Make sure the other field and its storage are not deleted. $another_field_storage = FieldStorageConfig::load('entity_test.' . $another_field_storage_definition['field_name']); - $this->assertTrue(!empty($another_field_storage) && empty($another_field_storage->deleted), 'A non-deleted storage is not marked for deletion.'); + $this->assertTrue(!empty($another_field_storage) && !$another_field_storage->isDeleted(), 'A non-deleted storage is not marked for deletion.'); $another_field = FieldConfig::load('entity_test.' . $another_field_definition['bundle'] . '.' . $another_field_definition['field_name']); $this->assertTrue(!empty($another_field) && empty($another_field->deleted), 'A field whose storage was not deleted is not marked for deletion.'); @@ -337,7 +337,7 @@ function testDelete() { entity_create('field_storage_config', $field_storage_definition)->save(); entity_create('field_config', $field_definition)->save(); $field_storage = FieldStorageConfig::load('entity_test.' . $field_storage_definition['field_name']); - $this->assertTrue(!empty($field_storage) && empty($field_storage->deleted), 'A new storage with a previously used name is created.'); + $this->assertTrue(!empty($field_storage) && !$field_storage->isDeleted(), 'A new storage with a previously used name is created.'); $field = FieldConfig::load('entity_test.' . $field_definition['bundle'] . '.' . $field_definition['field_name'] ); $this->assertTrue(!empty($field) && empty($field->deleted), 'A new field for a previously used field name is created.'); @@ -363,7 +363,7 @@ function testUpdateFieldType() { $field_storage->save(); try { - $field_storage->type = 'integer'; + $field_storage->set('type', 'integer'); $field_storage->save(); $this->fail(t('Cannot update a field to a different type.')); } @@ -403,13 +403,13 @@ function testUpdate() { } // Load back and assert there are $cardinality number of values. $entity = $this->entitySaveReload($entity); - $this->assertEqual(count($entity->field_update), $field_storage->cardinality); + $this->assertEqual(count($entity->field_update), $field_storage->getCardinality()); // Now check the values themselves. for ($delta = 0; $delta < $cardinality; $delta++) { $this->assertEqual($entity->field_update[$delta]->value, $delta + 1); } // Increase $cardinality and set the field cardinality to the new value. - $field_storage->cardinality = ++$cardinality; + $field_storage->setCardinality(++$cardinality); $field_storage->save(); } while ($cardinality < 6); } @@ -427,7 +427,7 @@ function testUpdateForbid() { 'unchangeable' => 0 ))); $field_storage->save(); - $field_storage->settings['changeable']++; + $field_storage->setSetting('changeable', $field_storage->getSetting('changeable') + 1); try { $field_storage->save(); $this->pass(t("A changeable setting can be updated.")); @@ -435,7 +435,7 @@ function testUpdateForbid() { catch (FieldStorageDefinitionUpdateForbiddenException $e) { $this->fail(t("An unchangeable setting cannot be updated.")); } - $field_storage->settings['unchangeable']++; + $field_storage->setSetting('unchangeable', $field_storage->getSetting('unchangeable') + 1); try { $field_storage->save(); $this->fail(t("An unchangeable setting can be updated.")); diff --git a/core/modules/field/src/Tests/FieldValidationTest.php b/core/modules/field/src/Tests/FieldValidationTest.php index 71bb8adbb46e2c6809e1fd0e268fb0a88fe3bcf6..8f51b7aa500db0086074aeaf9f4c4674ad908634 100644 --- a/core/modules/field/src/Tests/FieldValidationTest.php +++ b/core/modules/field/src/Tests/FieldValidationTest.php @@ -48,7 +48,7 @@ protected function setUp() { * Tests that the number of values is validated against the field cardinality. */ function testCardinalityConstraint() { - $cardinality = $this->fieldTestData->field_storage->cardinality; + $cardinality = $this->fieldTestData->field_storage->getCardinality(); $entity = $this->entity; for ($delta = 0; $delta < $cardinality + 1; $delta++) { diff --git a/core/modules/field/src/Tests/reEnableModuleFieldTest.php b/core/modules/field/src/Tests/reEnableModuleFieldTest.php index 2b8f4c14d3414fbf04a812220460b9da7fa15ee6..52ce2a36ce31e82acb5bbcaa16673242402f17e3 100644 --- a/core/modules/field/src/Tests/reEnableModuleFieldTest.php +++ b/core/modules/field/src/Tests/reEnableModuleFieldTest.php @@ -39,6 +39,8 @@ protected function setUp() { /** * Test the behavior of a field module after being disabled and re-enabled. + * + * @see field_system_info_alter() */ function testReEnabledField() { diff --git a/core/modules/field_ui/src/FieldConfigListBuilder.php b/core/modules/field_ui/src/FieldConfigListBuilder.php index 167d9f7269d195372fa4d5e377c3a6fa343c8f6c..e44bc69395ffbed7106b0a95fc7de534ea9e988a 100644 --- a/core/modules/field_ui/src/FieldConfigListBuilder.php +++ b/core/modules/field_ui/src/FieldConfigListBuilder.php @@ -149,7 +149,7 @@ public function buildRow(EntityInterface $field_config) { // Add the operations. $row['data'] = $row['data'] + parent::buildRow($field_config); - if (!empty($field_storage->locked)) { + if ($field_storage->isLocked()) { $row['data']['operations'] = array('data' => array('#markup' => $this->t('Locked'))); $row['class'][] = 'menu-disabled'; } diff --git a/core/modules/field_ui/src/FieldStorageConfigListBuilder.php b/core/modules/field_ui/src/FieldStorageConfigListBuilder.php index a5120464b61653077f6396a9f434a39818c69871..d0fe42f7195e0bd319a9cb14af3c705a480d4166 100644 --- a/core/modules/field_ui/src/FieldStorageConfigListBuilder.php +++ b/core/modules/field_ui/src/FieldStorageConfigListBuilder.php @@ -98,24 +98,25 @@ public function buildHeader() { * {@inheritdoc} */ public function buildRow(EntityInterface $field_storage) { - if ($field_storage->locked) { + if ($field_storage->isLocked()) { $row['class'] = array('menu-disabled'); - $row['data']['id'] = t('@field_name (Locked)', array('@field_name' => $field_storage->field_name)); + $row['data']['id'] = t('@field_name (Locked)', array('@field_name' => $field_storage->getName())); } else { - $row['data']['id'] = $field_storage->field_name; + $row['data']['id'] = $field_storage->getName(); } - $field_type = $this->fieldTypes[$field_storage->type]; + $field_type = $this->fieldTypes[$field_storage->getType()]; $row['data']['type'] = t('@type (module: @module)', array('@type' => $field_type['label'], '@module' => $field_type['provider'])); $usage = array(); foreach ($field_storage->getBundles() as $bundle) { - if ($route_info = FieldUI::getOverviewRouteInfo($field_storage->entity_type, $bundle)) { - $usage[] = \Drupal::l($this->bundles[$field_storage->entity_type][$bundle]['label'], $route_info); + $entity_type_id = $field_storage->getTargetEntityTypeId(); + if ($route_info = FieldUI::getOverviewRouteInfo($entity_type_id, $bundle)) { + $usage[] = \Drupal::l($this->bundles[$entity_type_id][$bundle]['label'], $route_info); } else { - $usage[] = $this->bundles[$field_storage->entity_type][$bundle]['label']; + $usage[] = $this->bundles[$entity_type_id][$bundle]['label']; } } $usage_escaped = ''; diff --git a/core/modules/field_ui/src/Form/FieldConfigDeleteForm.php b/core/modules/field_ui/src/Form/FieldConfigDeleteForm.php index 4afe0e3c493867f4696c3f65c674f40438af77bc..5baa57d16becdade6a1ce67edd21a713da93ed7d 100644 --- a/core/modules/field_ui/src/Form/FieldConfigDeleteForm.php +++ b/core/modules/field_ui/src/Form/FieldConfigDeleteForm.php @@ -59,7 +59,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) { $bundles = $this->entityManager->getBundleInfo($this->entity->entity_type); $bundle_label = $bundles[$this->entity->bundle]['label']; - if ($field_storage && !$field_storage->locked) { + if ($field_storage && !$field_storage->isLocked()) { $this->entity->delete(); drupal_set_message($this->t('The field %field has been deleted from the %type content type.', array('%field' => $this->entity->label(), '%type' => $bundle_label))); } diff --git a/core/modules/field_ui/src/Form/FieldStorageEditForm.php b/core/modules/field_ui/src/Form/FieldStorageEditForm.php index a89f0a753257cbe4baedee683040dc0010eadec8..92ddca16f29609a57cfab4a7eb0ac22a27d5c9d3 100644 --- a/core/modules/field_ui/src/Form/FieldStorageEditForm.php +++ b/core/modules/field_ui/src/Form/FieldStorageEditForm.php @@ -155,7 +155,7 @@ public function buildForm(array $form, FormStateInterface $form_state, FieldConf // Build the non-configurable field values. $form['field_storage']['field_name'] = array('#type' => 'value', '#value' => $field_storage->getName()); $form['field_storage']['type'] = array('#type' => 'value', '#value' => $field_storage->getType()); - $form['field_storage']['module'] = array('#type' => 'value', '#value' => $field_storage->module); + $form['field_storage']['module'] = array('#type' => 'value', '#value' => $field_storage->getTypeProvider()); $form['field_storage']['translatable'] = array('#type' => 'value', '#value' => $field_storage->isTranslatable()); $form['actions'] = array('#type' => 'actions'); @@ -199,7 +199,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) { // Merge incoming form values into the existing field. $field_storage = $this->field->getFieldStorageDefinition(); foreach ($field_values as $key => $value) { - $field_storage->{$key} = $value; + $field_storage->set($key, $value); } // Update the field. diff --git a/core/modules/field_ui/src/Tests/EntityDisplayTest.php b/core/modules/field_ui/src/Tests/EntityDisplayTest.php index 3bec41b68773a235d396a1ea1f4b93370cd0c5ea..c26b962b40d583890ce5f69efc52999982d536dc 100644 --- a/core/modules/field_ui/src/Tests/EntityDisplayTest.php +++ b/core/modules/field_ui/src/Tests/EntityDisplayTest.php @@ -173,7 +173,7 @@ public function testFieldComponent() { // Check that providing no options results in default values being used. $display->setComponent($field_name); - $field_type_info = \Drupal::service('plugin.manager.field.field_type')->getDefinition($field_storage->type); + $field_type_info = \Drupal::service('plugin.manager.field.field_type')->getDefinition($field_storage->getType()); $default_formatter = $field_type_info['default_formatter']; $formatter_settings = \Drupal::service('plugin.manager.field.formatter')->getDefaultSettings($default_formatter); $expected = array( diff --git a/core/modules/field_ui/src/Tests/EntityFormDisplayTest.php b/core/modules/field_ui/src/Tests/EntityFormDisplayTest.php index 0bd3e2b85ff1195907d174fc8532f394bfe8e0fb..6e84b95c610cac8c04e889a42f14e900ef290e31 100644 --- a/core/modules/field_ui/src/Tests/EntityFormDisplayTest.php +++ b/core/modules/field_ui/src/Tests/EntityFormDisplayTest.php @@ -74,7 +74,7 @@ public function testFieldComponent() { // Check that providing no options results in default values being used. $form_display->setComponent($field_name); - $field_type_info = \Drupal::service('plugin.manager.field.field_type')->getDefinition($field_storage->type); + $field_type_info = \Drupal::service('plugin.manager.field.field_type')->getDefinition($field_storage->getType()); $default_widget = $field_type_info['default_widget']; $widget_settings = \Drupal::service('plugin.manager.field.widget')->getDefaultSettings($default_widget); $expected = array( diff --git a/core/modules/field_ui/src/Tests/ManageFieldsTest.php b/core/modules/field_ui/src/Tests/ManageFieldsTest.php index 80dbfb93a865540823a21bf5cf8595a925894e04..1a42ce5905dbac2b9dc4a218ddce19d216628b2f 100644 --- a/core/modules/field_ui/src/Tests/ManageFieldsTest.php +++ b/core/modules/field_ui/src/Tests/ManageFieldsTest.php @@ -396,7 +396,7 @@ function testDefaultValue() { // Check that the default value can be empty when the field is marked as // required and can store unlimited values. $field_storage = FieldStorageConfig::loadByName('node', $field_name); - $field_storage->cardinality = FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED; + $field_storage->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED); $field_storage->save(); $this->drupalGet($admin_path); diff --git a/core/modules/file/file.views.inc b/core/modules/file/file.views.inc index a8fc0fe755cb472bf757aa2f7e1b02c8a71f8fcb..870a76a9b705590a1d00b7d9914d96db83693763 100644 --- a/core/modules/file/file.views.inc +++ b/core/modules/file/file.views.inc @@ -37,7 +37,7 @@ function file_field_views_data(FieldStorageConfigInterface $field_storage) { * Views integration to provide reverse relationships on file fields. */ function file_field_views_data_views_data_alter(array &$data, FieldStorageConfigInterface $field_storage) { - $entity_type_id = $field_storage->entity_type; + $entity_type_id = $field_storage->getTargetEntityTypeId(); $entity_manager = \Drupal::entityManager(); $entity_type = $entity_manager->getDefinition($entity_type_id); $field_name = $field_storage->getName(); diff --git a/core/modules/image/image.module b/core/modules/image/image.module index 76710300b284421e2e63fa5a04aabbb66f06a1c3..cc326b3e3e58fc5220a75325c00a6fd75a2d0161 100644 --- a/core/modules/image/image.module +++ b/core/modules/image/image.module @@ -7,6 +7,7 @@ use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Routing\RouteMatchInterface; +use Drupal\field\Entity\FieldConfig; use Drupal\file\Entity\File; use Drupal\field\FieldStorageConfigInterface; use Drupal\field\FieldConfigInterface; @@ -321,49 +322,51 @@ function image_filter_keyword($value, $current_pixels, $new_pixels) { * Transforms default image of image field from array into single value at save. */ function image_entity_presave(EntityInterface $entity) { - $field_storage = FALSE; - $entity_type_id = $entity->getEntityTypeId(); - if ($entity_type_id == 'field_config') { - $field_storage = $entity->getFieldStorageDefinition(); - $default_settings = \Drupal::service('plugin.manager.field.field_type')->getDefaultFieldSettings('image'); + // Get the default image settings, return if not saving an image field storage + // or image field entity. + if (($entity instanceof FieldStorageConfigInterface || $entity instanceof FieldConfigInterface) && $entity->getType() == 'image') { + $default_image = $entity->getSetting('default_image'); } - elseif ($entity_type_id == 'field_storage_config') { - $field_storage = $entity; - $default_settings = \Drupal::service('plugin.manager.field.field_type')->getDefaultStorageSettings('image'); - } - // Exit, if not saving an image field storage or image field entity. - if (!$field_storage || $field_storage->type != 'image') { + else { return; } - if ($field_storage->isSyncing()) { + if ($entity->isSyncing()) { return; } - $uuid = $entity->settings['default_image']['uuid']; + $uuid = $default_image['uuid']; if ($uuid) { - $original_uuid = isset($entity->original) ? $entity->original->settings['default_image']['uuid'] : NULL; + $original_uuid = isset($entity->original) ? $entity->original->getSetting('default_image')['uuid'] : NULL; if ($uuid != $original_uuid) { $file = \Drupal::entityManager()->loadEntityByUuid('file', $uuid); if ($file) { $image = \Drupal::service('image.factory')->get($file->getFileUri()); - $entity->settings['default_image']['width'] = $image->getWidth(); - $entity->settings['default_image']['height'] = $image->getHeight(); + $default_image['width'] = $image->getWidth(); + $default_image['height'] = $image->getHeight(); } else { - $entity->settings['default_image']['uuid'] = NULL; + $default_image['uuid'] = NULL; } } } - $entity->settings['default_image'] += $default_settings['default_image']; + // @todo Simplify this in https://www.drupal.org/node/2030637, when both + // interfaces have a setSetting() method. + if ($entity instanceof FieldStorageConfigInterface) { + $entity->setSetting('default_image', $default_image); + } + elseif ($entity instanceof FieldConfig) { + $entity->settings['default_image'] = $default_image; + } + } /** * Implements hook_ENTITY_TYPE_update() for 'field_storage_config'. */ function image_field_storage_config_update(FieldStorageConfigInterface $field_storage) { - if ($field_storage->type != 'image') { + if ($field_storage->getType() != 'image') { // Only act on image fields. return; } @@ -371,8 +374,8 @@ function image_field_storage_config_update(FieldStorageConfigInterface $field_st $prior_field_storage = $field_storage->original; // The value of a managed_file element can be an array if #extended == TRUE. - $uuid_new = $field_storage->settings['default_image']['uuid']; - $uuid_old = $prior_field_storage->settings['default_image']['uuid']; + $uuid_new = $field_storage->getSetting('default_image')['uuid']; + $uuid_old = $prior_field_storage->getSetting('default_image')['uuid']; $file_new = $uuid_new ? \Drupal::entityManager()->loadEntityByUuid('file', $uuid_new) : FALSE; @@ -392,8 +395,8 @@ function image_field_storage_config_update(FieldStorageConfigInterface $field_st } // If the upload destination changed, then move the file. - if ($file_new && (file_uri_scheme($file_new->getFileUri()) != $field_storage->settings['uri_scheme'])) { - $directory = $field_storage->settings['uri_scheme'] . '://default_images/'; + if ($file_new && (file_uri_scheme($file_new->getFileUri()) != $field_storage->getSetting('uri_scheme'))) { + $directory = $field_storage->getSetting('uri_scheme') . '://default_images/'; file_prepare_directory($directory, FILE_CREATE_DIRECTORY); file_move($file_new, $directory . $file_new->filename); } @@ -404,14 +407,14 @@ function image_field_storage_config_update(FieldStorageConfigInterface $field_st */ function image_field_config_update(FieldConfigInterface $field) { $field_storage = $field->getFieldStorageDefinition(); - if ($field_storage->type != 'image') { + if ($field_storage->getType() != 'image') { // Only act on image fields. return; } $prior_instance = $field->original; - $uuid_new = $field->settings['default_image']['uuid']; + $uuid_new = $field->getSetting('default_image')['uuid']; $uuid_old = $prior_instance->settings['default_image']['uuid']; // If the old and new files do not match, update the default accordingly. @@ -430,8 +433,8 @@ function image_field_config_update(FieldConfigInterface $field) { } // If the upload destination changed, then move the file. - if ($file_new && (file_uri_scheme($file_new->getFileUri()) != $field_storage->settings['uri_scheme'])) { - $directory = $field_storage->settings['uri_scheme'] . '://default_images/'; + if ($file_new && (file_uri_scheme($file_new->getFileUri()) != $field_storage->getSetting('uri_scheme'))) { + $directory = $field_storage->getSetting('uri_scheme') . '://default_images/'; file_prepare_directory($directory, FILE_CREATE_DIRECTORY); file_move($file_new, $directory . $file_new->filename); } @@ -441,13 +444,13 @@ function image_field_config_update(FieldConfigInterface $field) { * Implements hook_ENTITY_TYPE_delete() for 'field_storage_config'. */ function image_field_storage_config_delete(FieldStorageConfigInterface $field) { - if ($field->type != 'image') { + if ($field->getType() != 'image') { // Only act on image fields. return; } // The value of a managed_file element can be an array if #extended == TRUE. - $uuid = $field->settings['default_image']['uuid']; + $uuid = $field->getSetting('default_image')['uuid']; if ($uuid && ($file = \Drupal::entityManager()->loadEntityByUuid('file', $uuid))) { \Drupal::service('file.usage')->delete($file, 'image', 'default_image', $field->uuid()); } @@ -458,7 +461,7 @@ function image_field_storage_config_delete(FieldStorageConfigInterface $field) { */ function image_field_config_delete(FieldConfigInterface $field) { $field_storage = $field->getFieldStorageDefinition(); - if ($field_storage->type != 'image') { + if ($field_storage->getType() != 'image') { // Only act on image fields. return; } diff --git a/core/modules/image/src/Tests/ImageFieldDefaultImagesTest.php b/core/modules/image/src/Tests/ImageFieldDefaultImagesTest.php index a546590d421ded22eb1a4b65ca1ef851d97851e9..ce1e15f4987bf107584a05bac52d411b30e2f037 100644 --- a/core/modules/image/src/Tests/ImageFieldDefaultImagesTest.php +++ b/core/modules/image/src/Tests/ImageFieldDefaultImagesTest.php @@ -175,7 +175,9 @@ public function testDefaultImages() { ); // Upload a new default for the field storage. - $field_storage->settings['default_image']['uuid'] = $default_images['field_new']->uuid(); + $default_image_settings = $field_storage->getSetting('default_image'); + $default_image_settings['uuid'] = $default_images['field_new']->uuid(); + $field_storage->setSetting('default_image', $default_image_settings); $field_storage->save(); // Confirm that the new default is used on the article field settings form. diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldTest.php index 296ae36de99d0275290d4e7060417b896e62c0ec..bb919625ef1887760cef9bd9507e373ba13a6337 100644 --- a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldTest.php +++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldTest.php @@ -52,27 +52,27 @@ public function testFields() { /** @var \Drupal\field\Entity\FieldStorageConfig $field_storage */ $field_storage = FieldStorageConfig::load('node.field_test'); $expected = array('max_length' => 255); - $this->assertIdentical($field_storage->type, "text", t('Field type is @fieldtype. It should be text.', array('@fieldtype' => $field_storage->type))); - $this->assertIdentical($field_storage->settings, $expected, "Field type text settings are correct"); + $this->assertIdentical($field_storage->getType(), "text", t('Field type is @fieldtype. It should be text.', array('@fieldtype' => $field_storage->getType()))); + $this->assertIdentical($field_storage->getSettings(), $expected, "Field type text settings are correct"); // Integer field. $field_storage = FieldStorageConfig::load('node.field_test_two'); - $this->assertIdentical($field_storage->type, "integer", t('Field type is @fieldtype. It should be integer.', array('@fieldtype' => $field_storage->type))); + $this->assertIdentical($field_storage->getType(), "integer", t('Field type is @fieldtype. It should be integer.', array('@fieldtype' => $field_storage->getType()))); // Float field. $field_storage = FieldStorageConfig::load('node.field_test_three'); - $this->assertIdentical($field_storage->type, "decimal", t('Field type is @fieldtype. It should be decimal.', array('@fieldtype' => $field_storage->type))); + $this->assertIdentical($field_storage->getType(), "decimal", t('Field type is @fieldtype. It should be decimal.', array('@fieldtype' => $field_storage->getType()))); // Link field. $field_storage = FieldStorageConfig::load('node.field_test_link'); - $this->assertIdentical($field_storage->type, "link", t('Field type is @fieldtype. It should be link.', array('@fieldtype' => $field_storage->type))); + $this->assertIdentical($field_storage->getType(), "link", t('Field type is @fieldtype. It should be link.', array('@fieldtype' => $field_storage->getType()))); // File field. $field_storage = FieldStorageConfig::load('node.field_test_filefield'); - $this->assertIdentical($field_storage->type, "file", t('Field type is @fieldtype. It should be file.', array('@fieldtype' => $field_storage->type))); + $this->assertIdentical($field_storage->getType(), "file", t('Field type is @fieldtype. It should be file.', array('@fieldtype' => $field_storage->getType()))); $field_storage = FieldStorageConfig::load('node.field_test_imagefield'); - $this->assertIdentical($field_storage->type, "image", t('Field type is @fieldtype. It should be image.', array('@fieldtype' => $field_storage->type))); + $this->assertIdentical($field_storage->getType(), "image", t('Field type is @fieldtype. It should be image.', array('@fieldtype' => $field_storage->getType()))); $settings = $field_storage->getSettings(); $this->assertIdentical($settings['target_type'], 'file'); $this->assertIdentical($settings['uri_scheme'], 'public'); @@ -80,39 +80,39 @@ public function testFields() { // Phone field. $field_storage = FieldStorageConfig::load('node.field_test_phone'); - $this->assertIdentical($field_storage->type, "telephone", t('Field type is @fieldtype. It should be telephone.', array('@fieldtype' => $field_storage->type))); + $this->assertIdentical($field_storage->getType(), "telephone", t('Field type is @fieldtype. It should be telephone.', array('@fieldtype' => $field_storage->getType()))); // Date field. $field_storage = FieldStorageConfig::load('node.field_test_datetime'); - $this->assertIdentical($field_storage->type, "datetime", t('Field type is @fieldtype. It should be datetime.', array('@fieldtype' => $field_storage->type))); + $this->assertIdentical($field_storage->getType(), "datetime", t('Field type is @fieldtype. It should be datetime.', array('@fieldtype' => $field_storage->getType()))); // Decimal field with radio buttons. $field_storage = FieldStorageConfig::load('node.field_test_decimal_radio_buttons'); - $this->assertIdentical($field_storage->type, "list_float", t('Field type is @fieldtype. It should be list_float.', array('@fieldtype' => $field_storage->type))); - $this->assertNotNull($field_storage->settings['allowed_values']['1.2'], t('First allowed value key is set to 1.2')); - $this->assertNotNull($field_storage->settings['allowed_values']['2.1'], t('Second allowed value key is set to 2.1')); - $this->assertIdentical($field_storage->settings['allowed_values']['1.2'], '1.2', t('First allowed value is set to 1.2')); - $this->assertIdentical($field_storage->settings['allowed_values']['2.1'], '2.1', t('Second allowed value is set to 1.2')); + $this->assertIdentical($field_storage->getType(), "list_float", t('Field type is @fieldtype. It should be list_float.', array('@fieldtype' => $field_storage->getType()))); + $this->assertNotNull($field_storage->getSetting('allowed_values')['1.2'], t('First allowed value key is set to 1.2')); + $this->assertNotNull($field_storage->getSetting('allowed_values')['2.1'], t('Second allowed value key is set to 2.1')); + $this->assertIdentical($field_storage->getSetting('allowed_values')['1.2'], '1.2', t('First allowed value is set to 1.2')); + $this->assertIdentical($field_storage->getSetting('allowed_values')['2.1'], '2.1', t('Second allowed value is set to 1.2')); // Float field with a single checkbox. $field_storage = FieldStorageConfig::load('node.field_test_float_single_checkbox'); - $this->assertIdentical($field_storage->type, "boolean", t('Field type is @fieldtype. It should be boolean.', array('@fieldtype' => $field_storage->type))); + $this->assertIdentical($field_storage->getType(), "boolean", t('Field type is @fieldtype. It should be boolean.', array('@fieldtype' => $field_storage->getType()))); // Integer field with a select list. $field_storage = FieldStorageConfig::load('node.field_test_integer_selectlist'); - $this->assertIdentical($field_storage->type, "list_integer", t('Field type is @fieldtype. It should be list_integer.', array('@fieldtype' => $field_storage->type))); - $this->assertNotNull($field_storage->settings['allowed_values']['1234'], t('First allowed value key is set to 1234')); - $this->assertNotNull($field_storage->settings['allowed_values']['2341'], t('Second allowed value key is set to 2341')); - $this->assertNotNull($field_storage->settings['allowed_values']['3412'], t('Third allowed value key is set to 3412')); - $this->assertNotNull($field_storage->settings['allowed_values']['4123'], t('Fourth allowed value key is set to 4123')); - $this->assertIdentical($field_storage->settings['allowed_values']['1234'], '1234', t('First allowed value is set to 1234')); - $this->assertIdentical($field_storage->settings['allowed_values']['2341'], '2341', t('Second allowed value is set to 2341')); - $this->assertIdentical($field_storage->settings['allowed_values']['3412'], '3412', t('Third allowed value is set to 3412')); - $this->assertIdentical($field_storage->settings['allowed_values']['4123'], '4123', t('Fourth allowed value is set to 4123')); + $this->assertIdentical($field_storage->getType(), "list_integer", t('Field type is @fieldtype. It should be list_integer.', array('@fieldtype' => $field_storage->getType()))); + $this->assertNotNull($field_storage->getSetting('allowed_values')['1234'], t('First allowed value key is set to 1234')); + $this->assertNotNull($field_storage->getSetting('allowed_values')['2341'], t('Second allowed value key is set to 2341')); + $this->assertNotNull($field_storage->getSetting('allowed_values')['3412'], t('Third allowed value key is set to 3412')); + $this->assertNotNull($field_storage->getSetting('allowed_values')['4123'], t('Fourth allowed value key is set to 4123')); + $this->assertIdentical($field_storage->getSetting('allowed_values')['1234'], '1234', t('First allowed value is set to 1234')); + $this->assertIdentical($field_storage->getSetting('allowed_values')['2341'], '2341', t('Second allowed value is set to 2341')); + $this->assertIdentical($field_storage->getSetting('allowed_values')['3412'], '3412', t('Third allowed value is set to 3412')); + $this->assertIdentical($field_storage->getSetting('allowed_values')['4123'], '4123', t('Fourth allowed value is set to 4123')); // Text field with a single checkbox. $field_storage = FieldStorageConfig::load('node.field_test_text_single_checkbox'); - $this->assertIdentical($field_storage->type, "boolean", t('Field type is @fieldtype. It should be boolean.', array('@fieldtype' => $field_storage->type))); + $this->assertIdentical($field_storage->getType(), "boolean", t('Field type is @fieldtype. It should be boolean.', array('@fieldtype' => $field_storage->getType()))); } diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileFieldTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileFieldTest.php index 35644cea55430dc0c767b84be0a139a5634d7718..79a936259ef2ba8c31905b5b83fa57601223bd6e 100644 --- a/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileFieldTest.php +++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileFieldTest.php @@ -44,20 +44,20 @@ protected function setUp() { public function testUserProfileFields() { // Migrated a text field. $field_storage = FieldStorageConfig::load('user.profile_color'); - $this->assertIdentical($field_storage->type, 'text', 'Field type is text.'); - $this->assertIdentical($field_storage->cardinality, 1, 'Text field has correct cardinality'); + $this->assertIdentical($field_storage->getType(), 'text', 'Field type is text.'); + $this->assertIdentical($field_storage->getCardinality(), 1, 'Text field has correct cardinality'); // Migrated a textarea. $field_storage = FieldStorageConfig::load('user.profile_biography'); - $this->assertIdentical($field_storage->type, 'text_long', 'Field type is text_long.'); + $this->assertIdentical($field_storage->getType(), 'text_long', 'Field type is text_long.'); // Migrated checkbox field. $field_storage = FieldStorageConfig::load('user.profile_sell_address'); - $this->assertIdentical($field_storage->type, 'boolean', 'Field type is boolean.'); + $this->assertIdentical($field_storage->getType(), 'boolean', 'Field type is boolean.'); // Migrated selection field. $field_storage = FieldStorageConfig::load('user.profile_sold_to'); - $this->assertIdentical($field_storage->type, 'list_string', 'Field type is list_string.'); + $this->assertIdentical($field_storage->getType(), 'list_string', 'Field type is list_string.'); $settings = $field_storage->getSettings(); $this->assertIdentical($settings['allowed_values'], array( 'Pill spammers' => 'Pill spammers', @@ -68,23 +68,23 @@ public function testUserProfileFields() { 'Faithful servant' => 'Faithful servant', 'Anonymous donor' => 'Anonymous donor', )); - $this->assertIdentical($field_storage->type, 'list_string', 'Field type is list_string.'); + $this->assertIdentical($field_storage->getType(), 'list_string', 'Field type is list_string.'); // Migrated list field. $field_storage = FieldStorageConfig::load('user.profile_bands'); - $this->assertIdentical($field_storage->type, 'text', 'Field type is text.'); - $this->assertIdentical($field_storage->cardinality, -1, 'List field has correct cardinality'); + $this->assertIdentical($field_storage->getType(), 'text', 'Field type is text.'); + $this->assertIdentical($field_storage->getCardinality(), -1, 'List field has correct cardinality'); /* // Migrated URL field. $field_storage = FieldStorageConfig::load('user.profile_blog'); - $this->assertIdentical($field_storage->type, 'link', 'Field type is link.'); + $this->assertIdentical($field_storage->getType(), 'link', 'Field type is link.'); */ // Migrated date field. $field_storage = FieldStorageConfig::load('user.profile_birthdate'); - $this->assertIdentical($field_storage->type, 'datetime', 'Field type is datetime.'); - $this->assertIdentical($field_storage->settings['datetime_type'], 'date'); + $this->assertIdentical($field_storage->getType(), 'datetime', 'Field type is datetime.'); + $this->assertIdentical($field_storage->getSettings()['datetime_type'], 'date'); } } diff --git a/core/modules/node/src/Tests/NodeFieldMultilingualTest.php b/core/modules/node/src/Tests/NodeFieldMultilingualTest.php index dc8897b11bbeb372dce0f6ad5cee5c0b8f20b3e9..dd8aec223dae1f1950e28d419b68daefca7b24d5 100644 --- a/core/modules/node/src/Tests/NodeFieldMultilingualTest.php +++ b/core/modules/node/src/Tests/NodeFieldMultilingualTest.php @@ -53,7 +53,7 @@ protected function setUp() { // Make node body translatable. $field_storage = FieldStorageConfig::loadByName('node', 'body'); - $field_storage->translatable = TRUE; + $field_storage->setTranslatable(TRUE); $field_storage->save(); } diff --git a/core/modules/node/src/Tests/Views/NodeLanguageTest.php b/core/modules/node/src/Tests/Views/NodeLanguageTest.php index 0195b447ead237a56bc11e7e539cdce038330307..4ced144692a44e07159d1940fb901a5e90205ccb 100644 --- a/core/modules/node/src/Tests/Views/NodeLanguageTest.php +++ b/core/modules/node/src/Tests/Views/NodeLanguageTest.php @@ -57,7 +57,7 @@ protected function setUp() { // Make the body field translatable. The title is already translatable by // definition. $field_storage = FieldStorageConfig::loadByName('node', 'body'); - $field_storage->translatable = TRUE; + $field_storage->setTranslatable(TRUE); $field_storage->save(); // Set up node titles. They should not include the words "French", diff --git a/core/modules/options/options.module b/core/modules/options/options.module index a2e8f06aefc9c2eccaa9c608533a124f7675be1d..d221adbe1d07e0901a419ded758490b3e7ed3184 100644 --- a/core/modules/options/options.module +++ b/core/modules/options/options.module @@ -106,12 +106,12 @@ function options_allowed_values(FieldStorageDefinitionInterface $definition, Fie * Implements hook_field_storage_config_update_forbid(). */ function options_field_storage_config_update_forbid(FieldStorageConfigInterface $field_storage, FieldStorageConfigInterface $prior_field_storage) { - if ($field_storage->module == 'options' && $field_storage->hasData()) { + if ($field_storage->getTypeProvider() == 'options' && $field_storage->hasData()) { // Forbid any update that removes allowed values with actual data. $allowed_values = $field_storage->getSetting('allowed_values'); $prior_allowed_values = $prior_field_storage->getSetting('allowed_values'); $lost_keys = array_keys(array_diff_key($prior_allowed_values, $allowed_values)); - if (_options_values_in_use($field_storage->entity_type, $field_storage->getName(), $lost_keys)) { + if (_options_values_in_use($field_storage->getTargetEntityTypeId(), $field_storage->getName(), $lost_keys)) { throw new FieldStorageDefinitionUpdateForbiddenException(t('A list field (@field_name) with existing data cannot have its keys changed.', array('@field_name' => $field_storage->getName()))); } } diff --git a/core/modules/options/options.views.inc b/core/modules/options/options.views.inc index 95b8474c205267de3dcb87145caf2c2e3eb4ac48..8eb35c28ab421845b5f39aa8f070c3a940f54cfa 100644 --- a/core/modules/options/options.views.inc +++ b/core/modules/options/options.views.inc @@ -7,6 +7,8 @@ * @ingroup views_module_handlers */ +use Drupal\field\FieldStorageConfigInterface; + /** * Implements hook_field_views_data(). * @@ -14,7 +16,7 @@ * argument handlers for list fields. This should allow to select values of * the list. */ -function options_field_views_data($field) { +function options_field_views_data(FieldStorageConfigInterface $field) { $data = views_field_default_views_data($field); $function = $field->getSetting('allowed_values_function'); @@ -29,7 +31,7 @@ function options_field_views_data($field) { $data[$table_name][$field_name]['filter']['id'] = 'list_field'; } if (isset($field_data['argument']) && $field_name != 'delta') { - if ($field->type == 'list_string') { + if ($field->getType() == 'list_string') { $data[$table_name][$field_name]['argument']['id'] = 'string_list_field'; } else { diff --git a/core/modules/options/src/Tests/OptionsFieldTest.php b/core/modules/options/src/Tests/OptionsFieldTest.php index a6f0b97eb00f80174f24061a2ec68f50cdaebebb..5ad59539cda887e7ef108973e8c3474cf9c3b85e 100644 --- a/core/modules/options/src/Tests/OptionsFieldTest.php +++ b/core/modules/options/src/Tests/OptionsFieldTest.php @@ -39,7 +39,7 @@ function testUpdateAllowedValues() { $entity = entity_create('entity_test'); $entity->{$this->fieldName}->value = 1; $entity->save(); - $this->fieldStorage->settings['allowed_values'] = array(2 => 'Two'); + $this->fieldStorage->setSetting('allowed_values', [2 => 'Two']); try { $this->fieldStorage->save(); $this->fail(t('Cannot update a list field storage to not include keys with existing data.')); @@ -52,7 +52,7 @@ function testUpdateAllowedValues() { $entity->save(); // Removed options do not appear. - $this->fieldStorage->settings['allowed_values'] = array(2 => 'Two'); + $this->fieldStorage->setSetting('allowed_values', [2 => 'Two']); $this->fieldStorage->save(); $entity = entity_create('entity_test'); $form = \Drupal::service('entity.form_builder')->getForm($entity); @@ -61,7 +61,7 @@ function testUpdateAllowedValues() { $this->assertTrue(empty($form[$this->fieldName]['widget'][3]), 'Option 3 does not exist'); // Completely new options appear. - $this->fieldStorage->settings['allowed_values'] = array(10 => 'Update', 20 => 'Twenty'); + $this->fieldStorage->setSetting('allowed_values', [10 => 'Update', 20 => 'Twenty']); $this->fieldStorage->save(); // The entity holds an outdated field object with the old allowed values // setting, so we need to reintialize the entity object. diff --git a/core/modules/options/src/Tests/OptionsWidgetsTest.php b/core/modules/options/src/Tests/OptionsWidgetsTest.php index 3c2b68b065a0d5e4c3d482c6ee0876253ecd5769..0de54a5d5c7f5ee50032a04de2f47ea723dc63c9 100644 --- a/core/modules/options/src/Tests/OptionsWidgetsTest.php +++ b/core/modules/options/src/Tests/OptionsWidgetsTest.php @@ -132,7 +132,7 @@ function testRadioButtons() { $this->assertFieldValues($entity_init, 'card_1', array()); // Check that required radios with one option is auto-selected. - $this->card1->settings['allowed_values'] = [99 => 'Only allowed value']; + $this->card1->setSetting('allowed_values', [99 => 'Only allowed value']); $this->card1->save(); $field->required = TRUE; $field->save(); @@ -221,7 +221,7 @@ function testCheckBoxes() { $this->assertFieldValues($entity_init, 'card_2', array()); // Required checkbox with one option is auto-selected. - $this->card2->settings['allowed_values'] = array(99 => 'Only allowed value'); + $this->card2->setSetting('allowed_values', [99 => 'Only allowed value']); $this->card2->save(); $field->required = TRUE; $field->save(); @@ -299,8 +299,8 @@ function testSelectListSingle() { // Test optgroups. - $this->card1->settings['allowed_values'] = array(); - $this->card1->settings['allowed_values_function'] = 'options_test_allowed_values_callback'; + $this->card1->setSetting('allowed_values', []); + $this->card1->setSetting('allowed_values_function', 'options_test_allowed_values_callback'); $this->card1->save(); // Display form: with no field data, nothing is selected @@ -418,8 +418,8 @@ function testSelectListMultiple() { // Test optgroups. // Use a callback function defining optgroups. - $this->card2->settings['allowed_values'] = array(); - $this->card2->settings['allowed_values_function'] = 'options_test_allowed_values_callback'; + $this->card2->setSetting('allowed_values', []); + $this->card2->setSetting('allowed_values_function', 'options_test_allowed_values_callback'); $this->card2->save(); $field->required = FALSE; $field->save(); diff --git a/core/modules/quickedit/src/Tests/EditorSelectionTest.php b/core/modules/quickedit/src/Tests/EditorSelectionTest.php index 336fbecb9295a95eadb8ec190a2f9e681b27d7d0..d1484080c3ef88e74ee2a01c312155e426a5c2ac 100644 --- a/core/modules/quickedit/src/Tests/EditorSelectionTest.php +++ b/core/modules/quickedit/src/Tests/EditorSelectionTest.php @@ -74,7 +74,7 @@ public function testText() { $this->assertEqual('plain_text', $this->getSelectedEditor($entity->id(), $field_name), "With cardinality 1, the 'plain_text' editor is selected."); // With cardinality >1 - $this->fields->field_text_field_storage->cardinality = 2; + $this->fields->field_text_field_storage->setCardinality(2); $this->fields->field_text_field_storage->save(); $this->assertEqual('form', $this->getSelectedEditor($entity->id(), $field_name), "With cardinality >1, the 'form' editor is selected."); @@ -119,7 +119,7 @@ public function testTextWysiwyg() { $this->assertEqual('wysiwyg', $this->getSelectedEditor($entity->id(), $field_name), "With cardinality 1, and the full_html text format, the 'wysiwyg' editor is selected."); // Editor selection with text field, cardinality >1. - $this->fields->field_textarea_field_storage->cardinality = 2; + $this->fields->field_textarea_field_storage->setCardinality(2); $this->fields->field_textarea_field_storage->save(); $this->assertEqual('form', $this->getSelectedEditor($entity->id(), $field_name), "With cardinality >1, and both items using the full_html text format, the 'form' editor is selected."); } @@ -150,7 +150,7 @@ public function testNumber() { $this->assertEqual('form', $this->getSelectedEditor($entity->id(), $field_name), "With cardinality 1, the 'form' editor is selected."); // Editor selection with cardinality >1. - $this->fields->field_nr_field_storage->cardinality = 2; + $this->fields->field_nr_field_storage->setCardinality(2); $this->fields->field_nr_field_storage->save(); $this->assertEqual('form', $this->getSelectedEditor($entity->id(), $field_name), "With cardinality >1, the 'form' editor is selected."); } diff --git a/core/modules/search/src/Tests/SearchLanguageTest.php b/core/modules/search/src/Tests/SearchLanguageTest.php index b6f8d2b8ce3ab7b8abbcb58483448024103b573d..f4acf9ca3c93a387c862d0fd2d9bbbb2ad7d4016 100644 --- a/core/modules/search/src/Tests/SearchLanguageTest.php +++ b/core/modules/search/src/Tests/SearchLanguageTest.php @@ -45,7 +45,7 @@ protected function setUp() { // definition. The parent class has already created the article and page // content types. $field_storage = FieldStorageConfig::loadByName('node', 'body'); - $field_storage->translatable = TRUE; + $field_storage->setTranslatable(TRUE); $field_storage->save(); // Create a few page nodes with multilingual body values. diff --git a/core/modules/search/src/Tests/SearchMultilingualEntityTest.php b/core/modules/search/src/Tests/SearchMultilingualEntityTest.php index 0370ee2180a4acbd4c092d557d051b4c27aa688c..ad2445f91c22d80e87a60dcdfecf5ffa83dfcbe5 100644 --- a/core/modules/search/src/Tests/SearchMultilingualEntityTest.php +++ b/core/modules/search/src/Tests/SearchMultilingualEntityTest.php @@ -59,7 +59,7 @@ protected function setUp() { // definition. The parent class has already created the article and page // content types. $field_storage = FieldStorageConfig::loadByName('node', 'body'); - $field_storage->translatable = TRUE; + $field_storage->setTranslatable(TRUE); $field_storage->save(); // Create a few page nodes with multilingual body values. diff --git a/core/modules/system/src/Tests/Entity/EntityTranslationFormTest.php b/core/modules/system/src/Tests/Entity/EntityTranslationFormTest.php index cee9a0b7dcb34b69f27a590ad2668bba5e53be75..933f8dd8692baa14e37b2d59b9378c2883e25253 100644 --- a/core/modules/system/src/Tests/Entity/EntityTranslationFormTest.php +++ b/core/modules/system/src/Tests/Entity/EntityTranslationFormTest.php @@ -99,7 +99,7 @@ function testEntityFormLanguage() { // Make body translatable. $field_storage = FieldStorageConfig::loadByName('node', 'body'); - $field_storage->translatable = TRUE; + $field_storage->setTranslatable(TRUE); $field_storage->save(); $field_storage = FieldStorageConfig::loadByName('node', 'body'); $this->assertTrue($field_storage->isTranslatable(), 'Field body is translatable.'); diff --git a/core/modules/system/src/Tests/Entity/FieldSqlStorageTest.php b/core/modules/system/src/Tests/Entity/FieldSqlStorageTest.php index 8fdb484f3ee851f44f7da0a6961809f956427ae4..688daf203463ab33da049c7b28947144235e34bc 100644 --- a/core/modules/system/src/Tests/Entity/FieldSqlStorageTest.php +++ b/core/modules/system/src/Tests/Entity/FieldSqlStorageTest.php @@ -332,7 +332,7 @@ function testUpdateFieldSchemaWithData() { $entity->save(); // Attempt to update the field in a way that would work without data. - $field_storage->settings['scale'] = 3; + $field_storage->setSetting('scale', 3); try { $field_storage->save(); $this->fail(t('Cannot update field schema with data.')); @@ -357,7 +357,7 @@ function testFieldUpdateFailure() { // Attempt to update the field in a way that would break the storage. $prior_field_storage = $field_storage; - $field_storage->settings['max_length'] = -1; + $field_storage->setSetting('max_length', -1); try { $field_storage->save(); $this->fail(t('Update succeeded.')); @@ -412,14 +412,14 @@ function testFieldUpdateIndexesWithData() { $entity->save(); // Add an index. - $field_storage->indexes = array('value' => array(array('value', 255))); + $field_storage->setIndexes(['value' => [['value', 255]]]); $field_storage->save(); foreach ($tables as $table) { $this->assertTrue(Database::getConnection()->schema()->indexExists($table, "{$field_name}_value"), t("Index on value created in @table", array('@table' => $table))); } // Add a different index, removing the existing custom one. - $field_storage->indexes = array('value_format' => array(array('value', 127), array('format', 127))); + $field_storage->setIndexes(['value_format' => [['value', 127], ['format', 127]]]); $field_storage->save(); foreach ($tables as $table) { $this->assertTrue(Database::getConnection()->schema()->indexExists($table, "{$field_name}_value_format"), t("Index on value_format created in @table", array('@table' => $table))); @@ -455,7 +455,7 @@ function testFieldSqlStorageForeignKeys() { // Update the field settings, it should update the foreign key definition too. $foreign_key_name = 'color'; - $field_storage->settings['foreign_key_name'] = $foreign_key_name; + $field_storage->setSetting('foreign_key_name', $foreign_key_name); $field_storage->save(); // Reload the field schema after the update. $schema = $field_storage->getSchema(); diff --git a/core/modules/taxonomy/src/Entity/Vocabulary.php b/core/modules/taxonomy/src/Entity/Vocabulary.php index ae7b10f1e5d487339b3d701ee60a771af4228dd3..b8edfde693ba540b8e71103a9311f72843a6665a 100644 --- a/core/modules/taxonomy/src/Entity/Vocabulary.php +++ b/core/modules/taxonomy/src/Entity/Vocabulary.php @@ -137,12 +137,14 @@ public function postSave(EntityStorageInterface $storage, $update = TRUE) { foreach ($field_storages as $field_storage) { $update_storage = FALSE; - foreach ($field_storage->settings['allowed_values'] as &$value) { + $allowed_values = $field_storage->getSetting('allowed_values'); + foreach ($allowed_values as &$value) { if ($value['vocabulary'] == $this->getOriginalId()) { $value['vocabulary'] = $this->id(); $update_storage = TRUE; } } + $field_storage->setSetting('allowed_values', $allowed_values); if ($update_storage) { $field_storage->save(); @@ -186,14 +188,17 @@ public static function postDelete(EntityStorageInterface $storage, array $entiti $modified_storage = FALSE; // Term reference fields may reference terms from more than one // vocabulary. - foreach ($field_storage->settings['allowed_values'] as $key => $allowed_value) { + foreach ($field_storage->getSetting('allowed_values') as $key => $allowed_value) { if (isset($vocabularies[$allowed_value['vocabulary']])) { - unset($field_storage->settings['allowed_values'][$key]); + $allowed_values = $field_storage->getSetting('allowed_values'); + unset($allowed_values[$key]); + $field_storage->setSetting('allowed_values', $allowed_values); $modified_storage = TRUE; } } if ($modified_storage) { - if (empty($field_storage->settings['allowed_values'])) { + $allowed_values = $field_storage->getSetting('allowed_values'); + if (empty($allowed_values)) { $field_storage->delete(); } else { diff --git a/core/modules/taxonomy/src/Tests/TermFieldTest.php b/core/modules/taxonomy/src/Tests/TermFieldTest.php index e3f0abd77d6abc878f0a6dd9d6dd86723d552c8c..d41a0832aba9e1135ee7ca91491de2465a46d7de 100644 --- a/core/modules/taxonomy/src/Tests/TermFieldTest.php +++ b/core/modules/taxonomy/src/Tests/TermFieldTest.php @@ -161,7 +161,7 @@ function testTaxonomyTermFieldSettingsAutocompleteWidget() { function testTaxonomyTermFieldChangeMachineName() { // Add several entries in the 'allowed_values' setting, to make sure that // they all get updated. - $this->fieldStorage->settings['allowed_values'] = array( + $this->fieldStorage->setSetting('allowed_values', [ array( 'vocabulary' => $this->vocabulary->id(), 'parent' => '0', @@ -174,7 +174,7 @@ function testTaxonomyTermFieldChangeMachineName() { 'vocabulary' => 'foo', 'parent' => '0', ), - ); + ]); $this->fieldStorage->save(); // Change the machine name. $new_name = Unicode::strtolower($this->randomMachineName()); diff --git a/core/modules/user/src/Tests/UserRegistrationTest.php b/core/modules/user/src/Tests/UserRegistrationTest.php index 221667f9643d40067b20eeabaca3c994d8279ab9..f1eb6379d96473a353cfbc9ce6f79ac22491c48d 100644 --- a/core/modules/user/src/Tests/UserRegistrationTest.php +++ b/core/modules/user/src/Tests/UserRegistrationTest.php @@ -247,7 +247,7 @@ function testRegistrationWithUserFields() { $this->assertEqual($new_user->test_user_field->value, $value, 'The field value was correclty saved.'); // Check that the 'add more' button works. - $field_storage->cardinality = FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED; + $field_storage->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED); $field_storage->save(); foreach (array('js', 'nojs') as $js) { $this->drupalGet('user/register'); diff --git a/core/modules/views/views.api.php b/core/modules/views/views.api.php index 9f2813b395bb10ca53911f3dbe76f546d63f8dad..2001c83b010cdfdc03629c96261cf8264640bce9 100644 --- a/core/modules/views/views.api.php +++ b/core/modules/views/views.api.php @@ -500,7 +500,7 @@ function hook_field_views_data(\Drupal\field\FieldStorageConfigInterface $field_ * @see hook_field_views_data_views_data_alter() */ function hook_field_views_data_alter(array &$data, \Drupal\field\FieldStorageConfigInterface $field_storage) { - $entity_type_id = $field_storage->entity_type; + $entity_type_id = $field_storage->getTargetEntityTypeId(); $field_name = $field_storage->getName(); $entity_type = \Drupal::entityManager()->getDefinition($entity_type_id); $pseudo_field_name = 'reverse_' . $field_name . '_' . $entity_type_id; diff --git a/core/modules/views/views.views.inc b/core/modules/views/views.views.inc index 1e91727b642b98a1c525c1787f929d02896806c5..203764501267442073dfb97a6d854a40b20c063e 100644 --- a/core/modules/views/views.views.inc +++ b/core/modules/views/views.views.inc @@ -176,9 +176,10 @@ function views_views_data() { $entity_manager = \Drupal::entityManager(); if ($entity_manager->hasDefinition('field_storage_config')) { + /** @var \Drupal\field\FieldStorageConfigInterface $field_storage */ foreach ($entity_manager->getStorage('field_storage_config')->loadMultiple() as $field_storage) { if (_views_field_get_entity_type_storage($field_storage)) { - $result = (array) $module_handler->invoke($field_storage->module, 'field_views_data', array($field_storage)); + $result = (array) $module_handler->invoke($field_storage->getTypeProvider(), 'field_views_data', array($field_storage)); if (empty($result)) { $result = views_field_default_views_data($field_storage); } @@ -207,9 +208,10 @@ function views_views_data_alter(&$data) { if (!$entity_manager->hasDefinition('field_storage_config')) { return; } + /** @var \Drupal\field\FieldStorageConfigInterface $field_storage */ foreach ($entity_manager->getStorage('field_storage_config')->loadMultiple() as $field_storage) { if (_views_field_get_entity_type_storage($field_storage)) { - $function = $field_storage->module . '_field_views_data_views_data_alter'; + $function = $field_storage->getTypeProvider() . '_field_views_data_views_data_alter'; if (function_exists($function)) { $function($data, $field_storage); }