You are here

function taxonomy_csv_vocabulary_field_add in Taxonomy CSV import/export 7.4

Add a field to a vocabulary.

Parameters

$vocabulary_machine_name: Vocabulary machine_name.

$field: Field array to add.

Return value

TRUE if success, FALSE else.

2 calls to taxonomy_csv_vocabulary_field_add()
taxonomy_csv_thesaurus_create in ./taxonomy_csv.vocabulary.api.inc
Prepare a regular thesaurus (Drupal 6 vocabulary) from a basic D7 vocabulary.
taxonomy_csv_vocabulary_duplicate in ./taxonomy_csv.vocabulary.api.inc
Duplicates a vocabulary object. If not exist, creates an empty vocabulary.

File

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

Code

function taxonomy_csv_vocabulary_field_add($vocabulary_machine_name, $field) {

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

    // Check if field exists already and create or update it if not exist.
    // No other check is made.
    $prior_field = field_info_field($field['field_name']);

    // Create field.
    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 exists 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' => $field['label'],
        'description' => $field['description'],
      ));
    }
    return TRUE;
  }
  return FALSE;
}