function wsfields_storage_edit_field_form_submit in Web Service Data 7
Save changes to the field
File
- modules/
wsfields_storage/ wsfields_storage.admin.inc, line 318 - Defines the wsfields storage forms
Code
function wsfields_storage_edit_field_form_submit($form, &$form_state) {
if (!isset($_GET['field'])) {
return $form;
}
$field = $_GET['field'];
$fields = field_info_fields();
if (!isset($fields[$field])) {
return $form;
}
$field = $fields[$field];
$field['storage']['settings']['processor'] = $form_state['values']['processor'];
$field['storage']['settings']['passaccepts'] = $form_state['values']['passaccepts'];
$field['storage']['settings']['remotekey'] = $form_state['values']['remotekey'];
$field['storage']['settings']['translation'] = (bool) $form_state['values']['translation'];
$wsconfig_name = $field['storage']['settings']['wsconfig_name'] = $form_state['values']['wsconfig_name'];
$field['storage']['settings']['propertymap'] = array();
$wstokens = wsconfig_get_list_tokens();
$wstokens = $wstokens[$wsconfig_name];
foreach ($wstokens as $call => $tokens) {
foreach ($tokens as $token) {
$formfieldname = "{$wsconfig_name}-{$call}-{$token}";
$field['storage']['settings']['propertymap'][$call][$token] = $form_state['values'][$formfieldname];
}
}
field_update_field($field);
drupal_set_message(t('WSField Storage settings for @field have been updated', array(
'@field' => $field['field_name'],
)));
if ($form_state['values']['addinstance'] != 'none') {
list($entity_type, $bundle_name) = explode(':', $form_state['values']['addinstance']);
$bundles = field_info_bundles($entity_type);
if (!isset($bundles[$bundle_name])) {
return;
}
$bundle_info = $bundles[$bundle_name];
if (isset($bundle_info['admin'])) {
$admin_path = isset($bundle_info['admin']['real path']) ? $bundle_info['admin']['real path'] : $bundle_info['admin']['path'];
}
$instance = array(
'field_name' => $field['field_name'],
'entity_type' => $entity_type,
'bundle' => $bundle_name,
);
try {
$existing = field_info_instance($entity_type, $field['field_name'], $bundle_name);
if (!isset($existing)) {
field_create_instance($instance);
}
if (module_exists('field_ui')) {
drupal_goto($admin_path . '/fields/' . $instance['field_name'] . '/edit');
}
} catch (Exception $e) {
drupal_set_message(t('There was a problem creating field instance %label: @message.', array(
'%label' => $instance['label'],
'@message' => $e
->getMessage(),
)), 'error');
}
}
}