global_settings) { $global_settings = unserialize($field->global_settings); } $start_values = $global_settings['allowed_values']; $list = explode("\n", $start_values); $list = array_map('trim', $list); $list = array_filter($list, 'strlen'); $delta = 1; foreach ($list as $opt) { list ($key, $label) = explode('|', $opt); $delta_values[] = $delta .'|'. $key; $key_values[] = $key .'|'. $key; if ($label) { // this field has already been updated to use keys and labels, no change needed $updated = TRUE; } else { $keys[] = $key; $deltas[] = $delta; $delta++; } } if (!$updated && $global_settings['allowed_values']) { // see if current data is storing the delta or the allowed values value if (is_array($values[$field->field_name])) { $used_keys = array_intersect($keys, $values[$field->field_name]); $used_deltas = array_intersect($deltas, $values[$field->field_name]); } if (!$used_keys || sizeof($used_deltas) > sizeof($used_keys)) { $allowed_values = $delta_values; } else { $allowed_values = $key_values; } // update the allowed values setting to use the correct key|label combination $global_settings['allowed_values'] = implode("\n", $allowed_values); db_query("UPDATE {node_field} SET type = '%s', global_settings = '%s' WHERE field_name = '%s'", $field->type, serialize($global_settings), $field->field_name); drupal_set_message(t('
The allowed values list for %field was updated from
%start
to
%end
You can go to the field settings page to give each option a more user-friendly label.', array('%field' => $field->field_name, '%start' => $start_values, '%end' => $global_settings['allowed_values']))); } else { drupal_set_message(t('
The allowed values list for %field was not changed from
%start
', array('%field' => $field->field_name, '%start' => $start_values))); } } db_query('DELETE FROM {cache}'); return $ret; }