You are here

function oa_notifications_select2widget_entity_validate_field in Open Atrium Notifications 7.2

Sets form value

Parameters

$element:

$form_state:

$form:

File

./oa_notifications.module, line 742

Code

function oa_notifications_select2widget_entity_validate_field(&$element, &$form_state, $form) {
  $value = array();
  $entity_labels = array();
  $settings = $element['#settings']['select2widgetajax'];
  $field = field_widget_field($element, $form_state);
  $instance = field_info_instance($element['#entity_type'], $element['#field_name'], $element['#bundle']);
  $target_entities = explode(',', $element['#value']);
  foreach ($target_entities as &$target_entity) {
    if (is_numeric($target_entity)) {
      $value[$target_entity] = $target_entity;
      $entity = entity_load_single($field['settings']['target_type'], $target_entity);
      if ($entity !== FALSE) {
        $label = entity_label($field['settings']['target_type'], $entity);
        $key = "{$label} ({$target_entity})";
      }
      else {
        $key = "Anonymous ({$target_entity})";
      }

      // Labels containing commas or quotes must be wrapped in quotes.
      if (strpos($key, ',') !== FALSE || strpos($key, '"') !== FALSE) {
        $key = '"' . str_replace('"', '""', $key) . '"';
      }
      $entity_labels[$target_entity] = $key;
    }
    elseif (preg_match("/.+\\((\\d+)\\)/", $target_entity, $matches)) {
      $entity_labels[$matches[1]] = $target_entity;
      $value[$matches[1]] = $matches[1];
    }
  }
  $element['#attached']['js'][0]['data']['select2widgetajax']['elements'][$element['#id']]['init'] = $entity_labels;

  //Update default values
  form_set_value($element, $value, $form_state);
}