You are here

function domain_entity_widget_multiple_values_form_validate in Domain Access Entity 7

Widget form validate.

Handle checkboxes to save it as multiple field values (delta).

1 string reference to 'domain_entity_widget_multiple_values_form_validate'
domain_entity_field_widget_form in ./domain_entity.module
Implements hook_field_widget_form().

File

./domain_entity.module, line 604
Defines field (e.g. domain_entity) for entities, and access query alter.

Code

function domain_entity_widget_multiple_values_form_validate($element, &$form_state, $form) {
  global $user;
  $user_granted_domain_ids = domain_get_user_domains($user);
  $entity_type = isset($element['#entity_type']) ? $element['#entity_type'] : FALSE;
  if (!in_array($entity_type, array_keys(domain_entity_allowed_entity_types()))) {
    return;
  }
  $default_values = $element['#default_value'];
  $values = $element['#value'];
  $active_domain = array();
  $domains = domain_domains();
  foreach ($domains as $domain) {
    if (!in_array($domain['domain_id'], $user_granted_domain_ids) && in_array($domain['domain_id'], $default_values)) {
      $active_domain[] = array(
        'domain_id' => $domain['domain_id'],
      );
    }
    elseif (in_array($domain['domain_id'], $user_granted_domain_ids) && in_array($domain['domain_id'], $values)) {
      $active_domain[] = array(
        'domain_id' => $domain['domain_id'],
      );
    }
  }
  $items = array();
  foreach ($active_domain as $domain) {
    $items[] = $domain;
  }

  // Emulate multivalue field. Unset last parent to prevent errors.
  array_pop($element['#parents']);

  // Put the value of DOMAIN_ENTITY_SEND_TO_ALL (e.g. 0) to the end of the array.
  $items = array_reverse($items);
  drupal_alter('domain_entity_widget_multiple_values_form_validate', $items, $form_state, $form, $element);

  // Set the domain values.
  form_set_value($element, $items, $form_state);
}