You are here

function uc_extra_fields_pane_form_validate in Extra Fields Checkout Pane 6

File

./uc_extra_fields_pane.module, line 134

Code

function uc_extra_fields_pane_form_validate($form, &$form_state) {
  $field = $form_state['values']['ucxf']['add_one_more_field'];

  // No label.
  if (!$field['label']) {
    form_set_error('ucxf][add_one_more_field][label', t('Add new field: you need to provide a label.'));
  }

  // No field name.
  if (!$field['field_name']) {
    form_set_error('ucxf][add_one_more_field][field_name', t('Add new field: you need to provide a field name.'));
  }
  else {
    $field_name = $field['field_name'];

    // Add the 'uc_extra_' prefix.
    if (substr($field_name, 0, 8) != 'uc_extra_') {
      $field_name = 'ucxf_' . $field_name;
      form_set_value($form['ucxf']['add_one_more_field']['field_name'], $field_name, $form_state);
    }

    // Invalid field name.
    if (!preg_match('!^ucxf_[a-z0-9_]+$!', $field_name)) {
      form_set_error('ucxf][add_one_more_field][field_name', t('Add new field: the field name %field_name is invalid. The name must include only lowercase unaccentuated letters, numbers, and underscores.', array(
        '%field_name' => $field_name,
      )));
    }

    // considering prefix uc_extra_ and suffix _billing/_delivery : no more than 23 characters (32 max for a db field)
    if (strlen($field_name) > 23) {
      form_set_error('ucxf][add_one_more_field][field_name', t('Add new field: the field name %field_name is too long. The name is limited to 23 characters, including the \'ucxf_\' prefix.', array(
        '%field_name' => $field_name,
      )));
    }

    // Field name already exists.
    $count = db_result(db_query("select count(*) from {uc_extra_fields} where field_db_name='%s'", $field_name));
    if ((int) $count > 0) {
      form_set_error('ucxf][add_one_more_field][field_name', t('Add new field: the field name %field_name already exists.', array(
        '%field_name' => $field_name,
      )));
    }
  }
}