### Eclipse Workspace Patch 1.0 #P Drop7 Index: modules/field/field.crud.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/field/field.crud.inc,v retrieving revision 1.21 diff -u -r1.21 field.crud.inc --- modules/field/field.crud.inc 14 Jul 2009 10:27:29 -0000 1.21 +++ modules/field/field.crud.inc 4 Aug 2009 20:16:16 -0000 @@ -228,6 +228,16 @@ throw new FieldException(t('Attempt to create field name %name which already exists.', array('%name' => $field['field_name']))); } + // Disallow reserved field names + // http://drupal.org/node/382464 + $fieldable_objects = module_invoke_all('fieldable_info'); + foreach ($fieldable_objects as $type => $fieldable_object) { + if (in_array($field['field_name'], $fieldable_object['object keys'])) { + throw new FieldException(t('Attempt to create field name %name which is reserved by entity type %type.', + array('%name' => $field['field_name'], '%type' => $type))); + } + } + $field += array( 'cardinality' => 1, 'locked' => FALSE, Index: modules/field/field.test =================================================================== RCS file: /cvs/drupal/drupal/modules/field/field.test,v retrieving revision 1.34 diff -u -r1.34 field.test --- modules/field/field.test 15 Jul 2009 17:55:18 -0000 1.34 +++ modules/field/field.test 4 Aug 2009 20:16:17 -0000 @@ -1296,6 +1296,17 @@ $this->pass(t('Cannot create an unnamed field.')); } + // Check that field name can not be an object key. + // "vid" is known as an object key from the "node" bundle. + try { + $field_definition = array('type' => 'test_field', 'field_name' => 'vid'); + field_create_field($field_definition); + $this->fail(t('Cannot create a field bearing the name of an object key.')); + } + catch (FieldException $e) { + $this->pass(t('Cannot create a field bearing the name of an object key.')); + } + $field_definition = array( 'field_name' => 'field_2', 'type' => 'test_field',