Loading modules/field/modules/field_sql_storage/field_sql_storage.module +12 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,18 @@ function _field_sql_storage_schema($field) { ), ); // If the target entity type uses a string for its entity ID then update // the fields entity_id and revision_id columns from INT to VARCHAR. if (!empty($field['entity_id_type']) && $field['entity_id_type'] === 'string') { $current['fields']['entity_id']['type'] = 'varchar'; $current['fields']['entity_id']['length'] = 128; unset($current['fields']['entity_id']['unsigned']); $current['fields']['revision_id']['type'] = 'varchar'; $current['fields']['revision_id']['length'] = 128; unset($current['fields']['revision_id']['unsigned']); } $field += array('columns' => array(), 'indexes' => array(), 'foreign keys' => array()); // Add field columns. foreach ($field['columns'] as $column_name => $attributes) { Loading modules/field/modules/field_sql_storage/field_sql_storage.test +23 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,29 @@ class FieldSqlStorageTestCase extends DrupalWebTestCase { $this->assertFalse(array_key_exists($unavailable_language, $entity->{$this->field_name}), 'Field translation in an unavailable language ignored'); } /** * Tests adding a field with an entity ID type of string. */ function testFieldSqlSchemaForEntityWithStringIdentifier() { // Test programmatically adding field with string ID. $field_name = 'string_id_example'; $field = array('field_name' => $field_name, 'type' => 'text', 'settings' => array('max_length' => 255), 'entity_id_type' => 'string'); field_create_field($field); $schema = drupal_get_schema('field_data_' . $field_name); $this->assertEqual($schema['fields']['entity_id']['type'], 'varchar'); $this->assertEqual($schema['fields']['revision_id']['type'], 'varchar'); // Test programmatically adding field with default ID(int). $field_name = 'default_id_example'; $field = array('field_name' => $field_name, 'type' => 'text', 'settings' => array('max_length' => 255)); field_create_field($field); $schema = drupal_get_schema('field_data_' . $field_name); $this->assertEqual($schema['fields']['entity_id']['type'], 'int'); $this->assertEqual($schema['fields']['revision_id']['type'], 'int'); } /** * Reads mysql to verify correct data is * written when using insert and update. Loading modules/field_ui/field_ui.admin.inc +9 −0 Original line number Diff line number Diff line Loading @@ -795,6 +795,14 @@ function field_ui_field_overview_form_submit($form, &$form_state) { $destinations = array(); // Check if the target entity uses a non numeric ID. $entity_info = entity_get_info($entity_type); if (!empty($entity_info['entity_id_type']) && $entity_info['entity_id_type'] === 'string') { $entity_id_type = 'string'; } else { $entity_id_type = NULL; } // Create new field. $field = array(); if (!empty($form_values['_add_new_field']['field_name'])) { Loading @@ -804,6 +812,7 @@ function field_ui_field_overview_form_submit($form, &$form_state) { 'field_name' => $values['field_name'], 'type' => $values['type'], 'translatable' => $values['translatable'], 'entity_id_type' => $entity_id_type, ); $instance = array( 'field_name' => $field['field_name'], Loading Loading
modules/field/modules/field_sql_storage/field_sql_storage.module +12 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,18 @@ function _field_sql_storage_schema($field) { ), ); // If the target entity type uses a string for its entity ID then update // the fields entity_id and revision_id columns from INT to VARCHAR. if (!empty($field['entity_id_type']) && $field['entity_id_type'] === 'string') { $current['fields']['entity_id']['type'] = 'varchar'; $current['fields']['entity_id']['length'] = 128; unset($current['fields']['entity_id']['unsigned']); $current['fields']['revision_id']['type'] = 'varchar'; $current['fields']['revision_id']['length'] = 128; unset($current['fields']['revision_id']['unsigned']); } $field += array('columns' => array(), 'indexes' => array(), 'foreign keys' => array()); // Add field columns. foreach ($field['columns'] as $column_name => $attributes) { Loading
modules/field/modules/field_sql_storage/field_sql_storage.test +23 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,29 @@ class FieldSqlStorageTestCase extends DrupalWebTestCase { $this->assertFalse(array_key_exists($unavailable_language, $entity->{$this->field_name}), 'Field translation in an unavailable language ignored'); } /** * Tests adding a field with an entity ID type of string. */ function testFieldSqlSchemaForEntityWithStringIdentifier() { // Test programmatically adding field with string ID. $field_name = 'string_id_example'; $field = array('field_name' => $field_name, 'type' => 'text', 'settings' => array('max_length' => 255), 'entity_id_type' => 'string'); field_create_field($field); $schema = drupal_get_schema('field_data_' . $field_name); $this->assertEqual($schema['fields']['entity_id']['type'], 'varchar'); $this->assertEqual($schema['fields']['revision_id']['type'], 'varchar'); // Test programmatically adding field with default ID(int). $field_name = 'default_id_example'; $field = array('field_name' => $field_name, 'type' => 'text', 'settings' => array('max_length' => 255)); field_create_field($field); $schema = drupal_get_schema('field_data_' . $field_name); $this->assertEqual($schema['fields']['entity_id']['type'], 'int'); $this->assertEqual($schema['fields']['revision_id']['type'], 'int'); } /** * Reads mysql to verify correct data is * written when using insert and update. Loading
modules/field_ui/field_ui.admin.inc +9 −0 Original line number Diff line number Diff line Loading @@ -795,6 +795,14 @@ function field_ui_field_overview_form_submit($form, &$form_state) { $destinations = array(); // Check if the target entity uses a non numeric ID. $entity_info = entity_get_info($entity_type); if (!empty($entity_info['entity_id_type']) && $entity_info['entity_id_type'] === 'string') { $entity_id_type = 'string'; } else { $entity_id_type = NULL; } // Create new field. $field = array(); if (!empty($form_values['_add_new_field']['field_name'])) { Loading @@ -804,6 +812,7 @@ function field_ui_field_overview_form_submit($form, &$form_state) { 'field_name' => $values['field_name'], 'type' => $values['type'], 'translatable' => $values['translatable'], 'entity_id_type' => $entity_id_type, ); $instance = array( 'field_name' => $field['field_name'], Loading