You are here

function select2widget_validate_field in Select2 Field Widget 7.2

Sets form value

Parameters

$element:

$form_state:

$form:

1 string reference to 'select2widget_validate_field'
select2widget_field_widget_form in ./select2widget.module
Implements hook_field_widget_form().

File

./select2widget.taxonomy.inc, line 235

Code

function select2widget_validate_field(&$element, &$form_state, $form) {
  $field = field_widget_field($element, $form_state);
  $settings = $element['#settings']['select2widgetajax'];
  $vocabularies = array();
  $default = array();
  $vocabulary_name = $field['settings']['allowed_values'][0]['vocabulary'];
  $vocabularies[] = $vocabulary_name;
  if ($settings['allow_new'] == 2) {
    $vocabulary_name = $field['settings']['allowed_values'][1]['vocabulary'];
    $vocabularies[] = $vocabulary_name;
  }
  $vid = taxonomy_vocabulary_machine_name_load($vocabulary_name)->vid;
  $terms = $element['#value'];
  $terms = str_replace('id' . chr(9), '', $terms);
  $terms = explode($settings['separator'], $terms);
  $terms = array_filter($terms);
  $value = array();
  foreach ($terms as $term) {

    // In case we received a tid
    $taxonomy = taxonomy_term_load($term);
    if ($taxonomy !== FALSE && in_array($taxonomy->vocabulary_machine_name, $vocabularies)) {
      $value[] = array(
        'tid' => $taxonomy->tid,
      );
    }
    else {

      //We don't have the term in our taxonomy, so we have to create it
      $taxonomy = (object) array(
        'vid' => $vid,
        'name' => $term,
        'status' => 0,
        'vocabulary_machine_name' => $vocabulary_name,
      );
      taxonomy_term_save($taxonomy);
      $value[] = array(
        'tid' => $taxonomy->tid,
      );
    }
    $default['id' . chr(9) . $taxonomy->tid] = $taxonomy->name;
  }
  $element['#attached']['js'][0]['data']['select2widgetajax']['elements'][$element['#id']]['init'] = $default;
  form_set_value($element, $value, $form_state);
}