You are here

function field_default_token_field_ui_field_edit_form_validate in Field default token 7

Form validation handler for field_ui_field_edit_form.

Replacement for field_ui_field_edit_form_validate().

1 string reference to 'field_default_token_field_ui_field_edit_form_validate'
field_default_token_form_field_ui_field_edit_form_alter in ./field_default_token.module
Implements hook_form_FORM_ID_alter().

File

./field_default_token.module, line 303
Enables to use tokens as field default values.

Code

function field_default_token_field_ui_field_edit_form_validate($form, &$form_state) {

  // Take the incoming values as the $instance definition, so that the 'default
  // value' gets validated using the instance settings being submitted.
  $instance = $form_state['values']['instance'];
  $field_name = $instance['field_name'];
  if (isset($form['instance']['default_value_widget'])) {
    $element = $form['instance']['default_value_widget'];
    $field_state = field_form_get_state($element['#parents'], $field_name, LANGUAGE_NONE, $form_state);
    $field = $field_state['field'];

    // Extract the 'default value'.
    $items = array();
    field_default_extract_form_values(NULL, NULL, $field, $instance, LANGUAGE_NONE, $items, $element, $form_state);
    foreach ($items as $item) {
      if (is_array($item)) {
        foreach ($item as $value) {
          if (is_scalar($value)) {
            if (strpos($value, '[') !== FALSE) {

              // Token in default value, do not validate.
              return;
            }
          }
        }
      }
    }

    // Validate the value and report errors.
    $errors = array();
    $function = $field['module'] . '_field_validate';
    if (function_exists($function)) {
      $function(NULL, NULL, $field, $instance, LANGUAGE_NONE, $items, $errors);
    }
    if (isset($errors[$field_name][LANGUAGE_NONE])) {

      // Store reported errors in $form_state.
      $field_state['errors'] = $errors[$field_name][LANGUAGE_NONE];
      field_form_set_state($element['#parents'], $field_name, LANGUAGE_NONE, $form_state, $field_state);

      // Assign reported errors to the correct form element.
      field_default_form_errors(NULL, NULL, $field, $instance, LANGUAGE_NONE, $items, $element, $form_state);
    }
  }
}