? drupal.machine.81.patch ? phpinfo.php ? sites/default/files ? sites/default/settings.php Index: modules/field/modules/list/list.module =================================================================== RCS file: /cvs/drupal/drupal/modules/field/modules/list/list.module,v retrieving revision 1.35 diff -r1.35 list.module 141a142,179 > * Implementation of hook_field_update_forbid( > */ > function list_field_update_forbid($field, $prior_field, $has_data) { > > // A 'list' field stores integer keys mapped to display values. If > // the new field has abandoned keys and data data exists for the > // abandoned keys, the field will have no way to display them. So, > // forbid such an update. > if (!empty($prior_field['settings']['allowed_values'])) { > $prior_field_allowed = list_extract_allowed_values($prior_field['settings']['allowed_values'], $prior_field['type'] == 'list'); > } > else { > $prior_field_allowed = array(); > } > > if (!empty($field['settings']['allowed_values'])) { > $field_allowed = list_extract_allowed_values($field['settings']['allowed_values'], $field['type'] == 'list'); > } > else { > $field_allowed = array(); > } > > if ($has_data && $lost_keys = array_diff(array_keys($prior_field_allowed), array_keys($field_allowed))) { > // If any data exist for those keys, forbid the update. > $query = new EntityFieldQuery(); > $found = $query > ->fieldCondition($prior_field['field_name'], 'value', $lost_keys) > ->range(0, 1) > ->execute(); > if ($found) { > throw new FieldUpdateForbiddenException("Cannot update a list field to remove keys that have existing data"); > } > } > } > > > > /** 162a201,229 > > if (!empty($form_state['values']['field']['field_name'])) { > // via manage fields tab > $field_name = $form_state['values']['field']['field_name']; > } > else { > // via edit tab > $field_name = $form_state['values']['instance']['field_name']; > } > > $prior_field = field_info_field($field_name); > > if (!empty($form_state['values']['field']['type'])) { > // via manage fields tab > $new_field = $form_state['values']['field']; > } > else { > // via edit tab > $new_field = $prior_field; > $new_field['settings']['allowed_values'] = $form_state['values']['field']['settings']['allowed_values']; > } > > try { > list_field_update_forbid($new_field, $prior_field, field_has_data($prior_field)); > } > catch (FieldUpdateForbiddenException $e) { > form_error($element, $e->getMessage()); > } > 245c312 < elseif (!$position_keys) { --- > elseif ($position_keys) {