You are here

function viewreference_autocomplete_validate in View reference 6.3

Same name and namespace in other branches
  1. 6 viewreference.module \viewreference_autocomplete_validate()
  2. 6.2 viewreference.module \viewreference_autocomplete_validate()
  3. 7.3 viewreference.module \viewreference_autocomplete_validate()

Validate an autocomplete element.

Remove the wrapper layer and set the right element's value.

1 string reference to 'viewreference_autocomplete_validate'
viewreference_autocomplete_process in ./viewreference.module
Process an individual element.

File

./viewreference.module, line 585
Defines a field type for referencing a view from a node.

Code

function viewreference_autocomplete_validate($element, &$form_state) {
  $field_name = $element['#field_name'];
  $field = content_fields($field_name);
  $field_key = $element['#columns'][0];
  $value = $element['#value'][$field_key];
  $new_value = NULL;
  if (!empty($value)) {
    $regex = '/' . '(.*).*?' . '(\\[)' . '((?:[a-z][a-z0-9_]*))' . '(:)' . '((?:[a-z][a-z0-9_]*))' . '(\\])' . '/is';

    // End of string
    preg_match($regex, $value, $matches);
    if (!empty($matches)) {
      $new_value = $matches[3] . ':' . $matches[5];
      $allowed = viewreference_get_views(FALSE, $field['settings']['referenceable_views']);
      if (!isset($allowed[$new_value])) {
        form_error($element, t('%name: View display %value cannot be referenced.', array(
          '%name' => $element[$field_key]['#title'],
          '%value' => $new_value,
        )));
      }
    }
    else {
      form_error($element, t('%name: The value %value is in an unexpected format.  Expecting: %format', array(
        '%name' => $element[$field_key]['#title'],
        '%value' => $value,
        '%format' => '<em>View title [view:display_n]</em>',
      )));
    }
  }
  form_set_value($element, $new_value, $form_state);
}