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);
}