You are here

function taxonomy_csv_vocabulary_field_attach in Taxonomy CSV import/export 7.5

Add or create a field to attach to a vocabulary.

Parameters

$vocabulary_machine_name: Vocabulary machine_name.

$field: Field array to attach.

Return value

TRUE if success, FALSE else.

1 call to taxonomy_csv_vocabulary_field_attach()
_taxonomy_csv_import_vocabulary_prepare in import/taxonomy_csv.import.api.inc
Prepare a vocabulary for import.

File

./taxonomy_csv.vocabulary.api.inc, line 176
Prepare and manage vocabularies.

Code

function taxonomy_csv_vocabulary_field_attach($vocabulary_machine_name, $field) {

  // Check if vocabulary exist.
  $vocabulary = taxonomy_vocabulary_machine_name_load($vocabulary_machine_name);
  if ($vocabulary) {

    // Check if field exists in order to create or to update it.
    // No other check is made.
    $prior_field = field_info_field($field['field_name']);

    // The field doesn't exist, so creates it.
    if (empty($prior_field)) {
      $field = field_create_field($field);
    }
    elseif ($field['type'] == 'taxonomy_term_reference') {
      $flag = FALSE;
      foreach ($prior_field['settings']['allowed_values'] as $allowed_values) {

        // Don't add new allowed values if they exist already.
        if ($allowed_values == $field['settings']['allowed_values'][0]) {
          $flag = TRUE;
          break;
        }
      }
      if (!$flag) {
        $prior_field['settings']['allowed_values'][] = $field['settings']['allowed_values'][0];
        $result = field_update_field($prior_field);
      }
      $field = field_info_field($field['field_name']);
    }
    else {
      $field = $prior_field;
    }

    // Check if field is already instanced to vocabulary so attach it if needed.
    $prior_instance = field_info_instance('taxonomy_term', $field['field_name'], $vocabulary->machine_name);
    if (empty($prior_instance)) {
      $result = field_create_instance(array(
        'field_name' => $field['field_name'],
        'entity_type' => 'taxonomy_term',
        'bundle' => $vocabulary->machine_name,
        'label' => isset($field['label']) ? $field['label'] : $field['field_name'],
        'description' => isset($field['description']) ? $field['description'] : '',
      ));
    }
    return TRUE;
  }
  return FALSE;
}