You are here

function form_builder_property_key_form_validate in Form Builder 7

Same name and namespace in other branches
  1. 6 includes/form_builder.properties.inc \form_builder_property_key_form_validate()

Element validate function for the "key" property. Ensure safe characters.

@todo make part of this a form method.

2 string references to 'form_builder_property_key_form_validate'
FormBuilderWebformFormTest::testConfigurationForm in modules/webform/tests/FormBuilderWebformFormTest.php
form_builder_property_key_form in includes/form_builder.properties.inc
Configuration form for the "key" property.

File

includes/form_builder.properties.inc, line 40
form_builder.properties.inc Implementations of hook_form_builder_properties in separate functions.

Code

function form_builder_property_key_form_validate($element, $form_state) {
  if (!preg_match('/^[a-z0-9_]+$/', $element['#value'])) {
    form_error($element, t('The form key may only contain lowercase alphanumeric characters and underscores.'));
  }

  // Check that the new key does not conflict with an existing key.
  if ($element['#value'] != $element['#default_value']) {

    // Assuming to be called from form_builder_field_configure().
    list($form_type, $form_id, $element_id) = $form_state['build_info']['args'];
    $form_obj = FormBuilderLoader::instance()
      ->fromCache($form_type, $form_id);
    $parent = _form_builder_get_element_parent($form_obj, $element_id);
    $new_key = $form_state['values']['key'];
    if (isset($parent[$new_key])) {
      form_set_error('key', t('The form key %key is already in use.', array(
        '%key' => $new_key,
      )));
    }
  }
}